盗摄一区二区三区,亚洲精品98久久久久久中文字幕,欧美日韩国产一区二区,亚洲欧洲精品一区二区三区四区

渲染引擎T3D:WebGL端數字孿生應用最優解

為ThingWebGL端數字孿生應用最優解,JS提供Web平臺的3D渲染能力。

大家都知道,Web平臺有很多的開源引擎,如:three.js,BabylonJS,PlayCanvas,ClayGL,Oasis等,以及在CS端也有,如:Unity、UE、CryEngine、Ogre等引擎,我們對其中一些引擎做了較深入的研究和項目實踐,但發現這些引擎并不能完全滿足我們所面對的數字孿生領域的需求。這種情況下,我們結合了之前使用C++開發的引擎經驗、WebGL的開發經驗、上述引擎的使用經驗、以及項目中的實踐經驗,開發了WebGL版的T3D引擎,以便更好地服務于Web平臺的3D渲染。
image.png

T3D引擎框架

image.png
在T3D引擎的框架設計中,主要分為四層:標準封裝層,渲染邏輯層,場景資源層和擴展層。

標準封裝層,渲染邏輯層,場景資源層構成核心庫 t3d.js。
核心庫是一個Web優先的,最小可運行的通用圖形渲染庫。Web優先指的是t3d.js主要基于WebGL和WebGPU作為底層繪圖標準。通用圖形渲染庫指的是t3d.js并不限定圖形渲染以外的其它邏輯,適用性與擴展性比較好。

另外,官方提供常用需求的擴展,作為第二方庫供開發者使用。至于定制化的需求,支持由開發者基于T3D開發第三方庫。

改進
渲染引擎封裝的功能,從大的分類來說,可以分為:場景樹,幾何體,材質,渲染管線,下面我來簡要介紹一下T3D在這些方面的改進。

場景樹

改進了場景樹矩陣更新的邏輯,基于內置的矩陣標臟系統,可以進行觸發式更新。簡單理解就是,有改變再更新,不改變不更新,在大多數項目中,可以極大提高矩陣更新效率,從而提升渲染幀率。

優化Uniform的預處理,場景中全局參數,燈光參數,可以單獨進行更新并cache,提高Uniform上傳效率。

可擴展的渲染層級列表,更方便的渲染排序。基于渲染層級,可方便地實現背景,場景,覆蓋物的排序分離,并基于深度緩沖分層,滿足特定渲染需求。能一定程度上解決透明圖標遮擋問題,滿足alwaysOnTop,Overlay的需求等等。(three.js由于沒有渲染分層功能,同一場景內的渲染節點不能通過一次遍歷分發到不同的渲染數組中,很難高效地實現上述功能。)

image.png

幾何體

核心庫提供Geometry,Attribute,Buffer類,提供逐頂點的幾何體描述。同時支持Instance繪制。基于幾何體的封裝,我們可以接收多種類型的數據進行渲染:

模型加載器,例如核心庫示例部分提供的GLTFLoader,VoxLoader等。

程序生成,例如:點,線,面,管,擠出等。

自定義數據,例如第三方GIS數據,實時傳輸數據等。

image.png

在點線面的擴展上,t3d.js的官方示例部分,會提供業務場景(ThingJS)中常用的幾何體生成計算模塊。

image.png

材質

一般的Web渲染引擎中,很難基于內置材質進行擴展。例如three.js,材質的Uniform上傳與材質類型是深度耦合的,因此很難基于Standard材質實現掃光等材質特效。T3D提供了材質繼承機制,只需要簡單插入著色器邏輯,即可實現對PBR材質的快捷修改。
image.png

渲染管線

在常見的WebGL引擎中,渲染器的渲染功能容易是過度耦合的。T3D面向基于GPU加速的圖形接口,即WebGL與WebGPU,基于這樣的思路,我們抽離出RenderPass的概念。

目前我們提供WebGLRenderPass作為默認的渲染通道,未來,幾乎可以無縫切換到WebGPURenderPass。這樣在我們推出WebGPU渲染器后,不需要改變上層代碼邏輯,即可直接實現WebGPU的渲染。

image.png

另外,T3D提供的接口可以單獨處理“場景圖信息的收集”與“渲染列表的生成”,并可以執行粒度更低的渲染命令。便于實現高性能的后處理流程擴展。在實際渲染中,物體勾邊,發光等后期,往往需要多通道的渲染。在下圖中,同樣是執行兩通道的渲染,t3d執行的流程,能避免很多冗余的邏輯。

image.png

基于這樣的設計,我們提供了高級渲染器(EffectComposer)的擴展。高級渲染器是一個后期混合器,并內置了常用的后期處理模塊。高級渲染器為ThingJS提供了豐富的后期特效支持。
image.png

除了全屏幕的后期處理效果,EffectComposer還提供逐物體的特效解決方案。

image.png

未來,T3D還在快速迭代中,未來我們還要做:

基于Transform Feedback特性的更強大的粒子系統。

節點式材質系統。

更加強大的WebGPURenderPass。

綜上所述,T3D為Web平臺提供強大的3D渲染能力。基于T3D引擎,能實現豐富的幾何體定制,材質定制和渲染管線定制。未來T3D將本著開放,共享的原則,不斷演進,為用戶提升渲染效果和渲染性能,保證ThingJS在Web端優異的渲染能力。

關于UINO優锘科技

UINO優锘科技成立于2012年,總部位于北京,目前團隊已超過千人,在上海、廣州、深圳、杭州、南京等地均設有分支。

自成立至今,UINO秉承數字孿生的理念,以多維空間大數據為基礎,致力于打通邏輯世界和物理世界,并憑借三維可視化交互為核心特點的數字孿生運維管理能力,形成了數據中心可視化智慧園區智慧城市、智慧消防等多種數字孿生運運場景群。

迄今為止,UINO優锘科技已服務了2,000+行業領軍企業,并不斷為全行業客戶提供數字孿生可視化解決方案。

主站蜘蛛池模板: 曲阳县| 伊金霍洛旗| 安多县| 建宁县| 威远县| 五寨县| 伊金霍洛旗| 丽水市| 邵东县| 平顺县| 车险| 太谷县| 即墨市| 随州市| 原阳县| 四会市| 舞阳县| 始兴县| 南江县| 咸丰县| 平江县| 五莲县| 商都县| 慈溪市| 灵台县| 临夏市| 岑巩县| 南和县| 阿图什市| 宝坻区| 札达县| 通海县| 柳州市| 安康市| 静宁县| 杂多县| 安塞县| 昭通市| 和林格尔县| 曲沃县| 吕梁市|