模拟/建模/设计

借助 OpenUSD、MaterialX 和 OpenPBR,为虚拟世界解锁无缝材质交换

今天,NVIDIA 和 OpenUSD 联盟 (AOUSD) 宣布成立 AOUSD 材质工作组,专注于 Universal Scene Description (通用场景描述,简称 OpenUSD)。OpenUSD 是一个可扩展的框架和生态系统,用于在 3D 世界中描述、合成、模拟和协作,帮助开发者构建可互操作的 3D 工作流程,开启工业数字化的新时代。

此外,NVIDIA Omniverse 将支持新推出的 OpenPBR 材质模型,这是由 Adobe 和 Autodesk 共同开发的基于 MaterialX 的超级着色器模型。这种集成将为用户提供一个可在各种应用程序中使用的统一材质界面。

标准化材质交换

AOUSD 材质工作组的首要任务是定义 OpenUSD 中材质表示策略,UsdShade

任何符合规范的 OpenUSD 实现都可以访问一组通用的标准化着色器节点,用于构建跨渲染器的材质,而无需依赖特定的着色器后端。需要长期稳定的标准定义的行业将受益于此更新。开发者可以使用 OpenUSD 材质,并确信它们会在当前和未来的生态系统中发挥作用。

什么是着色器,为什么它们很重要?

为了描述计算机图形中的材质,我们使用着色器。着色器是渲染器运行的程序,用于构建材质定义。着色器必须告诉渲染器材质的结构如何构建,即材质层面的表面外观由多向散射分布函数 (BSDF) 组成,以及光线如何在它们之间传输。然后,着色器描述了 BSDF 如何在物体表面的层面上发生变化,通常通过阅读和组合纹理来变化表面外观。

有许多不同的语言用于编写这些程序,并且各种渲染器对这些程序提供不同程度的支持。例如,许多离线渲染器允许直接在 C++中编写着色器,这意味着它们不能与其他渲染器进行互操作。

在实时应用程序中,着色器通常使用 GLSL 或 HLSL 编写 .GLSL 和 HLSL 不仅可以描述材质,还可以在 Vulkan 和 DirectX 中运行计算工作负载 .GLSL 和 HLSL 是低级着色语言示例,用户必须直接在语言中编写材质的组成部分 BSDF。

另一端则是 NVIDIA 材质定义语言 (MDL),这是一种高级着色语言。MDL 提供了 BSDF 作为关联,用户可以描述如何组合和变化它们以产生所需的外观。

MDL 负责将高级定义转换为低级着色代码,以便在 HLSL、PTX、C++或其他语言中实施该材质。然后,渲染器使用该代码直接评估材质的外观。同一材质定义可在不同硬件平台上的不同渲染器中使用,同时保持相同的外观。

这种方式描述的材质可以写成单个独立的着色器,但是用户通常会使用 着色器图形(Shader Graph)。着色器图形允许用户在图形编辑器中插入 着色器节点(Shader Node)。着色器节点通常映射到底层着色语言中的单个函数。

Nodes such as text_roughness, text_color, OpenPBRBase, and material output connected in the Omniverse Material Editor Extension, representing a UsdShade graph.
图 1.Omniverse 材质编辑器扩展程序中连接节点构建的 UsdShade 图形

通过使用 OpenUSD 的 UsdShade 基元作为节点,直接将材质描述为着色器图形。节点的表示形式未指定。用户必须为每个着色器提供实现,以确保它们能够与用户计划使用的应用程序一起打开 USD 层 .OpenUSD 支持在不同应用程序之间交换 3D 场景,为此,必须使用通用材质描述。

使用 MaterialX 将材质描述为着色器图形

托管于学院软件基金会 (ASWF)MaterialX 是一种独立于渲染器的开源文件格式和库,用于以着色器图形形式描述材质。它定义了标准库中的一组通用节点。它还描述了如何将节点插入到一个图形中。MaterialX 可以以 XML 文档的形式呈现(.mtlx 格式)或直接在 OpenUSD 中作为 UsdShade 节点图形。

MaterialX 使用可插入的后端来生成可执行代码,其中最完整的是 MDL。当渲染器通过 OpenUSD 加载 MaterialX 材质时,它会向后端发出代码生成请求。后端会为目标平台生成低级代码,渲染器可以执行这些代码来评估材质。

OpenUSD、MaterialX 和 MDL 在高级描述中创建材质,这些材质可在任何目标平台上的任何支持渲染器上共享,从而确保视觉效果相同。

A diagram of how MaterialX uses the MDL backend to generate code from physically based visual materials and physically based non-visual materials for different platforms, including HLSL, x86, ARM, PTX, and LLVM IR.
图。描述 MaterialX 如何使用 MDL 后端为不同平台生成代码的图表

通过使用 MDL 后端,Omniverse 本地支持 MaterialX,可以直接加载为 UsdShade 图形,也可以通过参考mtlx将文档导入 OpenUSD 层。

MaterialX 图形可以任意大小和复杂,在极端情况下,它们可能不适合实时使用。NVIDIA Omniverse RTX 渲染器使用 MDL 的蒸馏技术将任意复杂的材质转换为紧凑的材质表示形式,以确保实时性能,同时保留材质外观。

OpenPBR:Omniverse 和 MaterialX 中提供的超级着色器

MaterialX 材质图形为用户提供了创建各种材质的最大灵活性,但在复杂的工作流程中,往往更倾向于使用一个统治全局的材质定义,即“uber-shader”。这种着色器可以直接使用扫描的 PBR 纹理数据,也可以作为着色器图形的基础,用于进一步定制,从而节省用户构建整个材质的麻烦。

去年,Academy Software Foundation、Autodesk 和 Adobe 宣布推出全新超级着色器模型 OpenPBR,开发为 MaterialX 内的开放规格和参考实现。NVIDIA Omniverse 团队正在与 OpenPBR 团队合作,完善新的着色模型,并在首个生产版着色模型发布后在 Omniverse 中提供 OpenPBR 实现。

Four examples of OpenPBR materials rendered in Omniverse RTX.
图 3.在 Omniverse RTX 中渲染的 OpenPBR 材质选择

Omniverse 还将推出一个新的 OpenPBR 材质库。开发者可以在任何 OpenUSD 阶段使用这些材质,这些材质可以作为 OpenUSD 和 MaterialX 材质提供。这个库提供一个即用型物理级准确的材质库,可加速构建视觉应用。

Two angles of a warehouse simulation featuring a forklift retrieving boxes from storage racks using the new Omniverse OpenPBR material library.
图 4.使用新的 Omniverse OpenPBR 材质库进行仓库模拟

开始使用材质交换

了解各种技术及其互连关系对于使用计算机图形处理材质的开发者和内容创作者至关重要 .OpenUSD、MaterialX 和 MDL 提供了一种解决方案,可实现材质在不同应用程序和渲染器之间的无缝交换,从而实现材质共享。

借助 Omniverse 的支持和 AOUSD 材质工作组的持续努力,无缝互换、完整、物理级准确的材质描述将成为现实。

未来,该团队将专注于在 OpenUSD 中添加完整的物理材质定义,其中包括 LiDAR、声学和热性质等非视觉数据。他们还将探索新的材质描述,如神经材质,并与 glTF 等其他系统交换 OpenUSD 材质。

要开始使用 NVIDIA Omniverse 中的材质,请下载 NVIDIA Omniverse。

如果您想贡献力量或对 OpenUSD 中的材质发展感兴趣,请加入 AOUSD 和材质工作组。要了解有关 OpenUSD 的更多信息,请参加即将举办的 OpenUSD 日,届时将发布 NVIDIA RTX 40 系列显卡的信息,活动将于 2024 年 3 月 19 日线下或线上举行。

 

Tags