NVIDIA 與 OpenUSD 聯盟(AOUSD)早前共同宣布成立 OpenUSD 聯盟材質工作組,推動通用場景描述(OpenUSD)格式材質交換的標準化。作為用于在 3D 世界內進行描述、組合、模擬和協作的可擴展框架和生態系統,OpenUSD 使開發者能夠構建可互操作的 3D 工作流,開啟了工業數字化的新時代。
此外,NVIDIA Omniverse 還將為全新 OpenPBR 材質模型提供原生支持,該模型是一個由 Adobe 和 Autodesk 共同開發的基于 MaterialX 的 uber-shader 模型。該集成將為用戶提供可在各種應用中使用的統一材質界面。
標準化材質交換
建立 OpenUSD 聯盟材質工作組的初衷是為了定義 OpenUSD 中的材質表示策略。該工作組的首要任務是利用 UsdShade 中的 OpenUSD 標準化 MaterialX 標準庫。
任何符合標準的 OpenUSD 實現都可以訪問一套通用的標準化著色器節點,無需依賴特定的著色器后端就能構建可跨渲染器工作的材質。需要長期穩定標準定義的行業將受益于這一更新。開發者可以使用這些 OpenUSD 材質,并確信它們會在當前和未來的生態系統中發揮作用。
什么是著色器,它為什么重要?
我們使用著色器來描述計算機圖形中的材質。著色器是一種由渲染器運行的程序,用于構建材質定義。著色器必須告訴渲染器材質的結構,查看構成其表面外觀各層的雙向散射分布函數(BSDF)以及光線如何在它們之間傳輸,然后描述如何在物體表面修改雙向散射分布函數,通常的方式是通過讀取和組合紋理來改變表面外觀。
編寫這些程序的語言有很多種,不同的渲染器對它們的支持也各不相同。例如許多離線渲染器可以直接使用 C++ 編寫著色器并與它們的 API 相兼容,這意味著它們無法與其他渲染器互操作。
在實時應用中,著色器通常使用 GLSL 或 HLSL 編寫。GLSL 和 HLSL 不止是能夠描述材質,比如在 Vulkan 和 DirectX 中運行計算工作負載等。GLSL 和 HLSL 是低級著色語言的例子,用戶必須直接用這種語言來編寫材質的組成 BSDF。
NVIDIA 材質定義語言(MDL)則是一種高級著色語言。MDL 將 BSDF 作為 Closure 提供給用戶,由用戶描述如何組合和改變 BSDF 以生成所需的外觀。
MDL 負責將高級定義轉換為底層著色代碼,以 HLSL、PTX、C++ 或其他語言實現該材質。然后,渲染器直接使用生成的代碼評估材質的外觀。相同的材質定義可以在不同硬件平臺的渲染器上使用,并同時保持相同的外觀。
以這種方式描述的材質可以編寫成單一的著色器,但用戶更常用 shader graph 來編寫材質。借助 Shader graph,用戶能夠通過在圖形編輯器中插入著色器節點(shader node)來創建新的材質。著色器節點通常映射到底層著色語言中的單個函數。
圖 1. 由 Omniverse 材質編輯器擴展中的連接節點構建而成的 UsdShade 圖形
通過使用 OpenUSD 的 UsdShade 基元作為節點,直接將材質描述為 shader graph。節點的表示方法未指定。用戶必須為每個著色器提供一個實現方式,以確保它能與計劃使用的應用程序一起打開 USD 圖層。OpenUSD 支持在不同應用之間交換 3D 場景。為此,通用的材質描述是必須的。
使用 MaterialX 將材質描述為 shader graph
MaterialX 由學院軟件基金會(ASWF)托管,是一種獨立于渲染器的開源文件格式和庫,其用途是將材質描述為 shader graph。它在標準庫中定義了一組通用節點。還描述了如何將節點連接成圖。MaterialX 可以表示為帶有自定義模式(.mtlx格式)的 XML 文檔,也可以直接在 OpenUSD 中表示為 UsdShade 節點圖。
MaterialX 使用可插拔的后端來生成可執行代碼,其中最完整的是 MDL。當渲染器通過 OpenUSD 加載 MaterialX 材質時,它會請求后端生成代碼。然后,后端為目標平臺生成底層代碼,渲染器可以執行這些代碼來評估材質。
OpenUSD、MaterialX 和 MDL 在高級描述中創建材質,這些材質可在任何目標平臺上任何支持的渲染器之間共享,因此確保了視覺外觀的一致性。
圖 2. MaterialX 如何使用 MDL 后端為不同平臺生成代碼的示意圖
Omniverse 通過 MDL 后端原生支持 MaterialX,并可直接加載為 UsdShade 圖形,或者通過將 .mtlx 文檔引用到 OpenUSD 圖層中。
MaterialX 圖形可以任意大小且復雜,在極端情況下可能不適合實時使用。NVIDIA Omniverse RTX 渲染器使用 MDL distilling technology 將任意復雜的材質轉換成緊湊的材質表示方式,在保證最佳實時性能的同時保留材質外觀。
OpenPBR:可在 Omniverse 和 MaterialX 中使用的 uber-shader
材質圖形為用戶提供了創建各種材質的最大靈活性。但在復雜的工作流中,往往更傾向于使用一個統治全局的材質定義,即“uber-shader”。這種著色器可以直接使用,比如用于掃描的 PBR 紋理數據,也可以作為在 shader graph 中進行進一步自定義的基礎,省去了用戶從頭開始構建整個材質的麻煩。
去年,ASFA、Autodesk 和 Adobe 宣布推出新 uber-shader 模型 OpenPBR,并將其作為 MaterialX 內的開放規范和參考實現進行開發。NVIDIA Omniverse 團隊正與 OpenPBR 工作組合作,完善新的著色模型,并在發布首個著色模型生產版本后在 Omniverse 中提供 OpenPBR 實現。
Omniverse 還將擁有一個新的 OpenPBR 材質庫。開發者可以在任何 OpenUSD 階段使用這些以 OpenUSD 和 MaterialX 形式提供的材質。該材質庫提供了一個隨時可用、物理精確的材質庫,可加速可視化應用的構建。
開始使用材質交換
了解各種技術及其相互聯系對于使用計算機圖形處理材質的開發者和內容創作者至關重要。OpenUSD 與 MaterialX 和 MDL 提供了一種解決方案,可實現材質在不同應用程序和渲染器之間的無縫交換,從而實現材質共享。
在 Omniverse 的支持和 OpenUSD 聯盟材質工作組的不懈努力下,無縫交換、完整且物理精確的材質描述將成為現實。
未來,該工作組將致力于在 OpenUSD 中添加完整的物理材質定義,包括激光雷達、聲學和熱學特性等非可視數據。他們還將探索神經材質等新的材質描述,并努力實現 OpenUSD 材質與 glTF 等其他系統之間的交換。
審核編輯:彭菁
-
3D
+關注
關注
9文章
2910瀏覽量
107993 -
NVIDIA
+關注
關注
14文章
5076瀏覽量
103718 -
模型
+關注
關注
1文章
3305瀏覽量
49220 -
渲染器
+關注
關注
0文章
18瀏覽量
3261
原文標題:利用 OpenUSD、MaterialX 和 OpenPBR 實現虛擬世界中的無縫材質交換
文章出處:【微信號:NVIDIA-Enterprise,微信公眾號:NVIDIA英偉達企業解決方案】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論