NVIDIA Omniverse 将为全新 OpenPBR 材质模型提供原生支持

描述

 

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)来创建新的材质。着色器节点通常映射到底层着色语言中的单个函数。

NVIDIA

图 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 在高级描述中创建材质,这些材质可在任何目标平台上任何支持的渲染器之间共享,因此确保了视觉外观的一致性。

NVIDIA

图 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 等其他系统之间的交换。

        审核编辑:彭菁

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分