如何優化大場景實時渲染?HMS Core 3D Engine這麼做

2022-12-20 12:00:35

在先前舉辦的華為開發者大會2022(HDC)上,華為通過3D數位溪村展示了自有3D引擎「HMS Core 3D Engine」(以下簡稱3D Engine)的強大能力。作為一款高效能、高畫質、高擴充套件性的3D引擎,3D Engine不僅能通過實時光追、水體渲染、體積雲霧、多維GPU粒子系統等技術還原真實世界的物理表現,對於大規模數位世界的實時渲染,3D Engine同樣也能為開發者提供有力的技術支援。

大規模數位世界的需求與挑戰

今天,如何更好地實現大場景下的實時渲染,已經成為行業的熱門話題,相關技術在眾多領域都有著廣闊的應用前景。我們可以明顯感受到,從3D遊戲到虛擬現實,從三維GIS到數位城市,涉及場景的規模都在呈指數級增長,部分遊戲中的世界地圖甚至沒有邊界。可以說,大規模場景的實時互動渲染能力正在成為構築數位世界的基礎設施

然而,這並非易事。

場景規模的擴大帶來的結果就是海量的內容和資料。一個城市涉及的物件數差不多是百萬級,面片數更是可能達到億級,而硬體設定卻始終是相對有限的,即使再高階的硬體設定也有力不從心的時候。

資料和硬體之間的矛盾,對3D引擎的大場景實時渲染能力提出了挑戰:

• 由於物件、網格、材質等內容數量太多,受限於視訊記憶體容量,傳統的全場景預先載入方式無法實現;

• 在傳統3D繪製模式下,GPU的算力不足以支撐萬級規模物件數和億級規模面片的實時渲染;

• 如果使用流式載入場景的方式,可以實現一邊渲染一邊載入資料,但需要預處理場景資料,諸如分割區分層、模型合併、材質合併、紋理烘焙等預處理往往極為耗時,幾萬個物件就需要小時級的等待,且僅支援場景中靜止不動的物件。

譬如上圖這個伺服器大樓,三角面片數達到了千萬級,並且有將近萬件的模型。為了實現實時渲染,通常需要通過HLOD的方式將整個場景進行Spatial-Coherent的層次重組。

類似於右圖紅圈所示,以不同半徑為一個空間節點,將圈圈內的模型進行合併處理,從而降低場景物件的遍歷數量,提高繪製效能。而這個預處理操作本身就需要耗費近一個小時,大大增加了偵錯和開發成本。

那麼,HMS Core 3D Engine將如何應對挑戰,構建大規模場景的實時渲染能力?

Hi-Mesh層級網格渲染加速技術

為了解決這三個「放不下」、「算不了」、「等不起」的問題,華為2012菲爾茲實驗室基於HMS Core 3D Engine自研了「Hi-Mesh」層級網格渲染加速技術,針對場景中的資產進行多維度、多層級的結構優化,確保場景結構在生成、遍歷、處理過程中的高效。譬如針對一個大規模場景,可將其數位內容進行多維分割區:

  1. 按空間結構分割區

3D場景中利用物件原生隱含的空間屬性,進行快速位置編碼和索引,大幅降低傳統樹形結構的線性遍歷耗時;

  1. 按視角空間分層

利用視角的侷限性,對場景中的物件進行不同細節層次的區分或合併處理,從而降低場景的資料量;

  1. 按內容特徵分組

利用場景物件的特徵,如按網格、材質的同源性進行分組,從而使用特定優化的繪製指令來強化它們的繪製效率;

  1. 按拓撲連線分片

將模型網格進行更精細粒度的分片,實現高效率的剔除和遮擋操作,優化實時渲染的效能。

Hi-Mesh架構圖

基於將場景化整為散的原則,以高效率的空間/視角結構來實現多層級的資料優化,並以GPU驅動的方式,最終實現百萬級物件、億級片面的數位世界的實時渲染。

一千個物件實時動態更新

為了實現上述的操作,3D Engine使用了一種隱式編碼樹的空間層次結構——「Hi-Mesh Tree」。不同於傳統基於連結串列形式的空間結點樹的方式,3D Engine通過一種常數級效能的構造和遍歷方法,相較現有的商業引擎,大規模場景的實時渲染效能可提升15%~120%。此外,還可以大幅提升三維空間場景組織結構的生成效率,甚至達到毫秒級,大大降低了工作流的時間成本。

資料來源: 華為內部實驗室測試結果

同時,3D Engine還使用了基於GPU驅動的Cluster Rendering (GDCR)繪製技術

GPU驅動在業界已有一些探索和應用,其理想目標是用一個Draw Call(DC)來繪製整個場景,以充分發揮GPU的並行流水線能力,實現渲染效能的提高。下圖是Ubisoft 在Siggraph 15上提出的GPU驅動管線的架構圖,其核心思想就是將原本基於CPU的可視性檢測處理遷徙到GPU上,利用GPU的並行和可程式化能力,提供高並行、不同粒度的可視性檢測能力,從而大幅提高渲染效能。

3D Engine為了更充分的實現GPU驅動的效率,對GPU驅動的管線節點、資料傳輸、圖形資產進行深度優化和耦合,將場景下的所有3D物件在GPU上進行各個維度(包圍盒、範例、片區、三角面)的可視性剔除,配合多層的重組(材質、頂點),從而實現以最少量的繪製指令來實現場景的光柵化和著色,同等規模場景下相比傳統模式的渲染效能實現了翻倍。

同等規模場景下渲染效能對比

可以預見,未來的數位世界無論是元宇宙、數位孿生、還是開放大世界,趨於龐大的豐富多彩場景都將會是不可或缺的組成部分。在Hi-Mesh技術的加持下,3D Engine得以通過高效的空間層級結構和GPU友好的繪製管線,大幅提高大規模數位場景下的實時渲染能力,使場景中的3D內容「盡情放」、「更快看」、「少等待」,幫助開發者大大提升生產力。

關於HMS Core 3D Engine

3D Engine是HMS Core面向行業夥伴推出的重要圖形能力,不僅提供高效能、高畫質、高擴充套件性的實時3D引擎,配合低程式碼的視覺化開發,能夠幫助開發者便捷高效地創造出高品質的3D內容和體驗。如需進一步瞭解更多資訊,請存取: developer.huawei.com/consumer/cn/hms/3d-engine/?ha_source=hms1

瞭解更多詳情>>

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

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