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

来源:https://www.cnblogs.com/hmscore/archive/2022/12/20/16993856.html
-Advertisement-
Play Games

在先前舉辦的華為開發者大會2022(HDC)上,華為通過3D數字溪村展示了自有3D引擎“HMS Core 3D Engine”(以下簡稱3D Engine)的強大能力。作為一款高性能、高畫質、高擴展性的3D引擎,3D Engine不僅能通過實時光追、水體渲染、體積雲霧、多維GPU粒子系統等技術還原真 ...


在先前舉辦的華為開發者大會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 最新技術資訊~


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 一:背景 1.講故事 今天是🐏的第四天,頭終於不巨疼了,寫文章已經沒什麼問題,趕緊爬起來寫。 這個月初有位朋友找到我,說他的程式出現了CPU爆高,讓我幫忙看下怎麼回事,簡單分析了下有兩點比較有意思。 這是一個安全生產的信息管理平臺,第一次聽說,我的格局小了。 這是一個經典的 CPU 爆高問題,過往 ...
  • 一 引入 在設計設備界面時,經常會有一種需求,展示一個閥門,閥門有通斷兩種狀態: 二 CommonValveControl 考慮實現一個自定義控制項,CommonValveControl。 使用自定義控制項比用戶控制項更靈活,更具擴展性,可以使用不同的樣式和模板。 CommonValveControl定義 ...
  • 說明 基於微服務項目,產生的的多項目倉庫管理腳本。可直接保存 shell 腳本後酌情修改後試用 目錄結構 xxxx Xxx1Api/ Xxx2Api/ git_clone_api.sh git_branch_dev.sh git_pull_all.sh git_status.sh api-build ...
  • 1. 查看當做操作目錄位置 > pwd2. 查看(當前)目錄裡邊的文件內容 > ls //list > ls -l 或ll //顯示文件的詳細信息 > ls -al //all顯示文件的詳細信息(包括隱藏文件) > ls -a //顯示目錄全部文件名字(包括隱藏文件) > ls [-al] 目錄 / ...
  • “數據湖”、“湖倉一體”及“流批一體”等概念,是近年來大數據領域熱度最高的辭彙,在各大互聯網公司掀起了一波波的熱潮,各家公司紛紛推出了自己的技術方案,其中作為全鏈路數字化技術與服務提供商的袋鼠雲,在探索數據湖架構的早期,就調研並選用了Iceberg作為基礎框架,在落地過程中深度使用了Iceberg並 ...
  • 摘要:openGemini的設計和優化都是根據時序數據特點而來,在面對海量運維監控數據處理需求時,openGemini顯然更加有針對性。 IT運維誕生於最早的信息化時代。在信息化時代,企業的信息化系統,主要為了滿足企業內部管理的需求。通常是集中、可控和固化的煙囪式架構。傳統IT運維,以人力運維為主, ...
  • 說說幾種薅免費伺服器羊毛的方法吧 經過我多年的薅羊毛經驗,總結得知,編程只需要: Terminal + VPS主機 + 網路 為了達到這些目的,肯定需要Vim搭建IDE,安裝環境等等操作 當時記得使用的是ChromeOS的筆記本,所有的應用都是在Chrome瀏覽器當中的,續航時間長,又輕薄屬實快得飛 ...
  • 主要闡述InnoDB存儲引擎(MySQL5以後的預設引擎)。 資料庫中最基本的組成結構是數據表,視覺上的表和其對應的磁碟結構如下: 此圖參考了廈門大學課堂:MySQL原理 。但是視頻中一些更多細節沒有涉及,比如Leaf node segment和Non-leaf node segment其實就是葉子 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...