華為開發者大會主題演講:圖形引擎服務開啟圖形渲染的無限可能

  • 2021 年 11 月 9 日
  • 筆記


今天很高興來到這裡,跟大家分享我們圖形引擎服務這一年來開放的能力,也歡迎各位小夥伴共同交流。

華為圖形引擎服務簡單來說就是一個圖形3D的渲染引擎,實際上提供了兩種服務能力,第一種是輕量化的3D渲染引擎,就是可以將圖形引擎服務集成在一個輕量級的3D應用當中,提供3D的渲染能力和交互能力;第二種是增強型的插件能力,圖形引擎服務根據特性的拆分做成了插件,集成在遊戲引擎里,提供給遊戲夥伴一些差異化的能力。

輕量化的3D渲染引擎能力

我先快速介紹下第一個能力——圖形3D渲染引擎輕量化的解決方案,輕量化解決方案就是包含一些基本的3D要素和功能,比如PBR渲染管線、動畫物理引擎和粒子特效。它可以允許我們的開發者在無需理解尤為高深的圖形渲染技術的前提下,可以很輕鬆地創建出理想的3D效果,並集成在應用里。

首先,我們實現了標準的輕量化的PBR管線,這個管線支援標準PBR物理材質,包括三方導出的物理材質,比如Substance、3D Max Maya這些標準材質庫的導入,它可以從開發到運行,精準地表達出物體表面所表現的物理材質。

其次,圖形引擎服務也實現了動畫的系統,這個動畫系統是一個骨骼的動畫,包括GRTF或IBS裡面標準骨骼元素的驅動,同時圖形引擎服務也支援IK動畫的技術。

此外,我們還自研了一套輕量化的物理引擎,可以模擬一些剛體簡單碰撞、墜落、運動的效果,同時我們今年也首次在移動端做了一些流體的模擬模擬。

為了增強我們圖形引擎服務的表達,我們也實現了一套粒子系統,這套粒子系統可以實現一些自然效果的模擬,比如火焰、煙霧、泡沫、瀑布這些通過粒子來表達的真實物理效果。

我們可以通過以下三個場景的列舉,更具體的說明輕量化的渲染引擎的功能。

第一個是很簡單的電子商務場景,圖形引擎服務輕量化體積大小不到1M,所以便於集成在應用開發中,同時我們提供了一個教材,即使你不懂編程,也能10分鐘集成完圖形引擎服務,這樣電商的小夥伴就很方便地能夠展示出他想要的內容。

第二個是我們3D物理模擬流體的效果,這個是今年在手機主題上集成圖形引擎服務的能力,當手機晃動的時候流體實時在做一些物理的模擬,可以增強我們主題的一些趣味性。
最後一個是華為AR Engine和圖形引擎服務結合做的一個AR應用,AR Engine提供了一個環境檢測的能力,華為圖形引擎服務提供一些高清的渲染,利用管線的一些技術,呈現了一個虛實融合的效果。

以上就是輕量化的渲染引擎和管線能夠為我們小夥伴提供的一些基本功能和能力。

增強型的插件能力

再說圖形增強的服務能力和插件,相對於輕量化的應用,我們遊戲的應用是比較複雜的,但是通過HMS Core把相關的技術和能力開放,為遊戲的開發者提供一些效果上、性能上的提升,所以推出了當前遊戲增強的能力和插件。

下面我逐一介紹一下。

第一個是光線追蹤技術(Ray Shop),光線追蹤技術是圖形引擎服務非常重要的特性,也是我們全力打造的模組。大家都知道光線追蹤是可以呈現一些非常好的3D真實的效果,可以實現一些不規則表面反射或折射的效果,比如湖面的倒影、曲面的反射。

但是光線追蹤因為算力的要求,很多都是應用在PC和主機端,對於移動端的算力實現難度較大。基於這一點,我們結合華為自有的專利級的RT技術把它提煉開放出來,因為相比於PC端的RT的技術,我們優化到的能耗比是1:10,原先需要10倍的光線追蹤算力,現在只需1倍就可以完成,這省出了一大部分的資源和算力,能夠保證RT對光柵化管線做一個補充,從而實現我們能夠在移動端應用的效果。

因為光線追蹤技術本身算力比較大,我們在實現的時候也做了工具,讓我們的開發小夥伴方便地集成插件,結合我們的管線,如果你要應用我們的光線追蹤技術,你可以通過工具把場景裡面的物體遍歷出來,選擇你要做光線追蹤的反射或被反射物,這樣就可以在光柵化的基礎上做出光線追蹤的特效。

這個影片是我們今年跟天諭合作在天諭手游上集成的光線追蹤效果。

第二個是動態漫反射全局光照(DDGI)技術,是一種使用光線追蹤計算漫反射照明的技術,對比其他靜態GI技術,可以實時呈現動態的光影變化,使遊戲光照更加真實,氛圍感更強。
下面這個Demo是我們在手機上做了一個類似於拉窗的場景,分別有IBL和平面光在這個場景里,當它拉窗時後面的牆面和地面會有一些光的照射效果,如果沒有這個DDGI的加持,後面這一塊點亮的效果就不明顯。

DDGI,特別是動態DDGI技術本身,也需要很大的算力,在傳統的像素是一個Probe的計算要求每個像素一個方向的radiance,每個像素再積分所有方向的radiance,相當於NN的radiance的計算。 但手機上遠遠達不到計算量,所以我們做了一定的優化,將radiance投影到9個係數的SH上,這樣project To SH,再積分查詢SH,我們的計算量相當於是9N,計算量的下降,這樣帶來一定的算力支撐,性能得到提升。

同時DDGI也能支援多種光源,比如平行光、點光、面光源,也是可以支援動態的場景。

我們也在嘗試跟小夥伴去做一些對接和調試,希望很快能和大家在實際的產品應用中見面。

前面主要講的是提升渲染的效果,接下來講一下圖形渲染插件能力增強性能相關的插件。

第一個Slim LOD技術,傳統的LOD技術需要高精度的模型,需要對這個模型做一些減面或減模的處理,生成一些不同級別的模型,這樣會產生一個問題,包體積會增加20%,再加上傳統的LOD技術需要做頂點的合併、刪除,會有一些線段連線的拓撲圖更改,需要不斷做一些調整。我們的Slim LOD技術,實際上打破了原先LOD技術本身,我們選擇了模型中的一些部分的頂點做了Index的保留,這樣就不會產生新的模型,相當於頂點數並沒有改變,貼圖也不需要重新配,因此設計師的工作量會大幅下降,這也是我們跟三七互娛這邊做的一個效果,應用在三七互娛的《斗羅大陸·魂師對決》,其中面數和頂點數有20%的下降。

最後一個就是Good Culling的技術,優化剔除的方案,這個方案在遊戲裡面用得比較多,為了保障性能,在遊戲場景裡面很多模型都需要做一些預處理,把螢幕上看不見的模型去除掉。可能大家基本上採用的優化剔除方案都是GPU的方案,但會帶來一些時延跳動的問題。在相機或者物體移動過程中,我們往往使用的是前1幀,甚至前2幀的深度資訊,那麼GPU處理當前幀的時候,如果發生了遮擋關係的變化,這一幀的計算結果就會出錯,只能等下一幀或下2幀處理正確,因此會有一些跳變現象。

我們提出了一個優化剔除的方案,採用了一個CPU的軟光柵的方案,相當於把遮擋物寫到我們的Z-Buffer(音)當中,被遮擋物根據Z-Buffer來進行深度的比較。

CPU這一塊剔除的優勢是沒有了GPU跳動和兼容性的問題,在低端手機上也能夠運行得很好,從實驗測試的數據來看,前後的幀率通過這個應用得到了大概10%-15%的提升。
以上是我們華為圖形引擎服務開放能力的介紹,非常感謝大家能夠百忙之中來到HDC大會,也歡迎大家多跟我們聯繫和交流。

謝謝!

了解更多詳情>>

訪問華為開發者聯盟官網
獲取開發指導文檔
華為移動服務開源倉庫地址:GitHubGitee

關注我們,第一時間了解 HMS Core 最新技術資訊~