Orillusion首頁、文檔和下載- WebGPU 輕量級3D 渲染引擎- 程式开发

Orillusion 引擎是一款完全支持WebGPU 標準的輕量級渲染引擎。基於最新的Web 圖形API標準,做了大量的探索和嘗試,實現了很多曾經在Web 中很難實現或者根本實現不了的技術和功能。

WebGPU 支持

引擎底層沒有考慮到兼容現有的 WebGL 標準,而是完全向最新的 WebGPU 標準看齊。隨著WebGPU APIWGSL 的持續發展,開發團隊也將快速更新迭代引擎底層 WebGPU 的計算和渲染能力,提升引擎性能優勢。

ECS 組件式系統

引擎框架發展至今,業內普遍開始採用 组合优于继承 的開發設計原則。因此,開發團隊放棄繼承式架構,而選擇了最新的 ECS 組件式架構做為引擎的成體設計思路。消除了繼承模式中的繼承鏈複雜,功能交織的問題,通過解耦,封裝和模塊化重新的設計,開發者可以更靈活的進行功能組合及擴展。

面向數據(DO)設計

嚴格的 ECS 架構要求,要求 Entity, ComponentSystem 要完全獨立分隔。這種設計範式下對於數據優化和性能是可以得到更大的提升。但是同時也會帶來很大的負面問題就是開發成本和難度非常大。因此考慮到開發者的使用難度,以及Web開發者的開發習慣。採用了 ECS 中核心 Data Oritented (面向数据开发) 理念,實現按需 DO 的結構。目前的使用方式為,在 GPU 中創建連續內存,同時在 CPUGPU 之間通過內存映射的方式,實現數據的連續高效傳遞,減少 CPUGPU 之間數據交換的等待時間和次數。既能提高緩存命中率,實現性能的提升,也同時可以保證整體引擎開發和使用的易用性。

集群光照剔除

這裡也就是 Clustered Forward Rendering 中的光照剔除方案。在二維 (Tile) 和三維 (Cluster) 同時對於空間進行塊狀分割,最後只計算對這個塊狀空間有光照貢獻的光源,完成無效光源的剔除過程,提高計算效率。基於 WebGLUniform Buffer 有很多限制,光源數量支持比較少,一般在10個以內。WebGPU 有了具備了 Storage Buffer,基本上就是直接對標 GPU 顯存的限制。只要做好自身的內存管理和優化,就可以充分利用GPU的能力,實現多光源渲染的場景。

物理仿真係統

首先接入了 ammo.js,做為CPU端的基本物理仿真功能實現。同時正在搭建基於Compute ShaderGPU 端物理仿真引擎,包括粒子,流體,軟體,剛體,布料等。在WebGL 時期,只能依靠頂點和紋理的數據結構進行相應的計算過程,實現複雜,效率不高。通過WebGPUCompute Shader,內存和數據結構更加靈活,給了很大的想像空間。目前已經實現了很多優秀的物理仿真案例,更多更強的物理仿真的功能正在快速迭代過程中。

基於物理的材質渲染

實現了最基本的 Blinn-phong 模型材質渲染。為了增加更好的真實感渲染效果,依靠 HDR Light ,也實現了基於 PBR (Physically-based rendering) 的材質渲染。也是目前主流引擎的標配了,是一項比較普及的基本引擎要求。

豐富的後處理特效

后处理特效 是使得渲染內容氛圍感提升的重要處理方式。基於 WebGPUcompute shader,目前實現了 HDR 泛光屏幕空间反射, 环境光屏蔽 等常用的後處理效果。依靠 WebGPU 的通用計算能力可以更高效的利用 GPU 計算優勢,實現非常好的效果。

例如,屏幕空間反射(SSR) 是基於屏幕空間大小來實現反射效果。相比平面反射,可以實現場景任意表面反射,而且不需要額外的 DrawCall,是非常流行的實時反射技術。首先,屏幕空間物體的每個像素需要計算其反射向量。然後,需要判斷屏幕空間的 Ray Marching 坐標的深度和深度緩存中存儲的物體深度是否相交。最後,適當的調節粗糙度,把交點的顏色做為反射顏色完成著色。這個過程中的計算過程,都通過 WebGPUCompute Shader 來實現,避免了 CPU 的消耗。最終在瀏覽器中可以呈現出非常良好的反射效果。

更多擴展後處理特效參考 PostEffects

#Orillusion首頁文檔和下載 #WebGPU #輕量級3D #渲染引擎 #程式开发

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *