使用 OpenUSD、MaterialX 和 OpenPBR 解锁虚拟世界的无缝材质交换

使用 OpenUSD、MaterialX 和 OpenPBR 解锁虚拟世界的无缝材质交换-LMLPHP

今天,NVIDIA 和 OpenUSD 联盟 (AOUSD) 宣布成立 AOUSD 材质工作组,这是一项标准化通用场景描述(称为 OpenUSD)中材质交换的倡议。 作为一个用于在 3D 世界中描述、组合、模拟和协作的可扩展框架和生态系统,OpenUSD 使开发人员能够构建可互操作的 3D 工作流程,开启工业数字化的新时代。

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

标准化材料交换

AOUSD 材料工作组的创建目的是定义 OpenUSD 中材料表示的策略,其第一项任务是使用 UsdShade 中的 OpenUSD 标准化 MaterialX 标准库。

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

什么是着色器以及它们为何重要?

为了描述计算机图形学中的材质,我们使用着色器,它们是渲染器运行来构造材质定义的程序。 着色器必须告诉渲染器材质的结构如何,查看构成其表面外观各层的双向散射分布函数 (BSDF) 以及光线如何在它们之间传输。 然后,它描述了如何在对象表面修改 BSDF,通常是通过读取和组合纹理来改变表面外观。

有许多不同的语言可以编写这些程序,并且不同的渲染器对它们的支持也不同。 例如,许多离线渲染器允许直接在 C++ 中针对其 API 编写着色器,这意味着它们不能与其他渲染器互操作。

在实时应用程序中,着色器通常用 GLSL 或 HLSL 编写。 GLSL 和 HLSL 的功能不仅仅是描述材料,例如在 Vulkan 和 DirectX 中运行计算工作负载。 GLSL 和 HLSL 是低级着色语言的示例,其中材质的 BSDF 的实现必须由用户直接用该语言编写。

另一方面是 NVIDIA 材质定义语言 (MDL),一种高级着色语言。 MDL 提供 BSDF 作为闭包,用户描述如何组合和改变它们以产生所需的外观。

MDL 负责采用高级定义并生成低级着色代码以使用 HLSL、PTX、C++ 或其他语言实现该材质。 然后渲染器直接使用生成的代码来评估材质的外观。 相同的材质定义可以在不同硬件平台上的渲染器之间使用,同时保持相同的外观。

以这种方式描述的材质可以编写为单个整体着色器,但用户更常见的是使用着色器图来创作它们。 着色器图表使用户能够通过在图表编辑器中插入着色器节点来创建新材质。 着色器节点通常映射到底层着色语言中的各个函数。

使用 OpenUSD、MaterialX 和 OpenPBR 解锁虚拟世界的无缝材质交换-LMLPHP

材质可以使用 OpenUSD 使用其 UsdShade 原语作为节点直接描述为着色器图。 节点的表示形式未指定。 用户必须为每个着色器提供一个实现,以确保它能够与他们计划用来打开 USD 层的应用程序配合使用。 OpenUSD 能够在不同应用程序之间交换 3D 场景,为此,需要通用的材质描述。

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

MaterialX 由学院软件基金会 (ASWF) 托管,是一种与渲染器无关的开源文件格式和库,用于将材质描述为着色器图。 它在其标准库中定义了一组通用节点。 它还描述了如何将节点连接在一起以形成图。 MaterialX 可以表示为具有自定义架构(.mtlx 格式)的 XML 文档,也可以直接在 OpenUSD 中表示为 UsdShade 节点图。

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

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

使用 OpenUSD、MaterialX 和 OpenPBR 解锁虚拟世界的无缝材质交换-LMLPHP

使用 MDL 后端在 Omniverse 中原生支持 MaterialX,并且可以直接作为 UsdShade 图表加载,或者通过将 .mtlx 文档引用到 OpenUSD 层中来加载。

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

OpenPBR:Omniverse 和 MaterialX 中可用的超级着色器

材质图为用户提供了创建各种材质的最大灵活性,但在复杂的工作流程中,通常更可取的是采用称为“超级着色器”的单一总体材质定义。 该着色器可以直接使用,例如扫描 PBR 纹理数据。 它还可以作为着色器图表中进一步自定义的基础,从而节省用户从头开始构建整个材质的麻烦。

去年,学院软件基金会、Autodesk 和 Adobe 宣布推出一种新的超级着色器模型 OpenPBR,该模型正在开发为 MaterialX 中的开放规范和参考实现。 NVIDIA Omniverse 团队正在与 OpenPBR 小组合作,最终确定新的着色模型,并在发布着色模型的第一个生产版本时在 Omniverse 中提供 OpenPBR 实现。

使用 OpenUSD、MaterialX 和 OpenPBR 解锁虚拟世界的无缝材质交换-LMLPHP

Omniverse 还将拥有一个新的 OpenPBR 材质库。 开发人员可以在任何 OpenUSD 阶段使用这些材料(以 OpenUSD 和 MaterialX 材料的形式提供)。 该库提供了一个即用型、物理精确的材料库,以加速构建视觉应用程序。

使用 OpenUSD、MaterialX 和 OpenPBR 解锁虚拟世界的无缝材质交换-LMLPHP

材质交换入门

了解各种技术及其互连对于使用计算机图形材料的开发人员和内容创建者至关重要。 OpenUSD 与 MaterialX 和 MDL 一起提供了无缝材质交换的解决方案,实现了不同应用程序和渲染器之间的材质共享。

在 Omniverse 的支持和 AOUSD 材料工作组的持续努力下,无缝可互换、完整、物理准确的材料描述的承诺将成为现实。

未来,该小组将致力于在 OpenUSD 中添加完整的物理材料定义。 这包括非视觉数据,如激光雷达、声学和热属性。 他们还将探索神经材料等新材料描述,并致力于与 glTF 等其他系统交换 OpenUSD 材料。

03-18 11:55