简介
作者:Iliyan Georgiev, Jamie Portsmouth, Zap Andersson, Adrien Herubel, Alan King, Shinji Ogaki, Frederic Servant
本文档是Uber 表面着色器(Uber Surface Shader)的规范,旨在提供一种能够精确建模实际视觉效果,和动画制作中使用的绝大多数材质的表示方法。
它遵循 Arnold 渲染器中的标准表面着色器(Standard Surface Shader)的设计,其实现过程相对简单,用户界面提供一组具有直观意义和范围参数设置。
本文档随着版本发展而更新。
我们提供了一个 OSL 实现方法的参考,意图指定足够的细节,以便在别的渲染器上实现,根据目的让效果匹配导一个合理的保真度级别。
一、历史背景与目标
计算鸡图形场景的资产,在不同设施之间的交换,在今天仍然是一个重要的问题,特别是在外观表现方面。不同的渲染器和 3D 渲染引擎,使用不同的着色系统、着色语言和固定的管道功能,这也是一个积极的可续研究课题。 然鹅,现在业界迫切需要找到一个标准化的材质模型,该模型既涵盖日常工作流程中,最常见的用例,又易于使用。
多年来,随着不同的供应商达成共识,将材料的定义与场景中的光传输模拟分离开来,出现了一些事实上的标准外观定义框架。这些通用框架包括 MaterialX、Material Definition Language (MDL)和 Open Language (OSL) [Gritz2010],它们允许将材料指定为原始表面反射率模型的组合。但是,仅使用这些框架是不够的,最终用户不应该期望从头开始构建用于日常任务的表面着色器。所以有必要使用一组良好的参数定义,来实现标准着色器的参数化,这些参数可以被调整,且用来表现大多数真实世界(以及假想的)材质。在这项提案中,我们的目标是填补这一空白;我们的参考实现是用 OSL [Georgiev2019]编写的。
我们提出的模型是基于 Arnold 5 标准表面着色器的,其中融合了 Anders Langlands 的 alSurface 和 Autodesk 3ds Max 的物理材质的强大威力。然而 alSurface 着色器作为行业的实际标准已经有一段时间了,但不再是积极开发的。而 3ds Max 的物理材料则受到 Allegorithmic 的 PBR 着色模型、迪斯尼的原则性着色器、以及多个实时 3D 引擎的行业趋势的强烈启发,并在 3ds Max 等所有主要渲染引擎的支持下得到了生产证明。
在这个建议中,我们并没有为每个可能出现的情况提供参数,而是有意地将实践中最有用的参数归结在一起。我们还修复了原始反射模型的组合,以确保用户工作中,尽可能保持在合理的物理范围内。我们的目标是使整个行为变得简单、合乎逻辑、直观和可理解,这样模型就涵盖了大多数日常用例。对于少数它没有覆盖的,你也可以独立开发特定的着色器,或建立一个定制的着色节点。
二、分层混合模型
我们的目标是创建一个表面着色模型,能够忠实地表现各种真实世界的材质。我们研究了金属、玻璃、墙漆等基本材料表面的光散射特性,并通过简单的分析模型得到了精确的表征。还有其他材料,如成品木材、布料或皮肤,由半透明的物质层叠加而成。这种材质的行为更复杂,是这些层介质之间的光散射和通过它们传播的结果,每一个这样的散射介质通常可以用一个分析模型来表示。
此外,许多现实世界中的物体是由几种不同的材质制成的,例如金属和塑料,通过在物体表面上对每种类型的材质,进行纹理处理,可以方便地对这些物体的外观进行开发。虽然材质转换通常来的很突然,但连续混合材质的能力,对于艺术目的和抗锯齿都是有用的。
四、论述
在介绍了我们提出的模型之后,在本节中,我们将讨论一些潜在的微妙之处、注意事项和未来改进的领域。
4.1 标量与 RGB 闭包权重 Scalar vs. RGB closure weighting
仔细考虑一下我们的镜面反射层公式,其中有闭包组合:
specular_reflection_layer = specular * specular_color * specular_brdf(...) + (1 - specular_color * specular * reflectance(specular_brdf)) * transmission_sheen_mix
镜面 _ 反射 _ 层=镜面*镜面 _ 颜色*镜面 Brdf(...)+(1-镜面 _ 颜色*镜面*反射(镜面 Brdf))*透射 _ 光泽 _ 混合
这里包含了反射镜面颜色(Specular_color)因子乘以反射率(specular_brdf),以确保能量守恒。例如,如果反射是纯红色,则只有互补的青色被传输到底层。这样可以在组合模型中防止能量损失,并创建具有高反照率的多层材料。但是,虽然它在物理上是正确的,但它也会使艺术家更难控制波瓣的互补色色调的外观。
我们考虑的另一种方法(例如在 3ds Max 的物理材质模型中使用)是将乘法闭包因子保留为标量,例如在本例中闭包权重中忽略了镜面颜色(specular_color)。这在技术上违反了能源的守恒(即能源的非物理耗散),使它难以创建高反射率材料与彩色镜面反射。然而,这样的行为对艺术家来说更直观。
总的来说,我们更喜欢物理上正确的行为,然而这是有争议的。
4.2 互相作用 Reciprocity
一个物理上正确的 BSDF 必须满足互易性(即输入和输出方向交换下的对称性)。然而,在我们提出的模型中,即使叶(leaf-level)BSDFs 是相对应的,但闭包组合不是。这是由于引入了反射 reflectance(…)函数,它只依赖于入射方向。如果将阴影模型合并到某些光传输算法中,这可能会出现问题,比如双向路径追踪(bidirectional path tracin),而双向路径追踪依赖于该属性来保持。
然而,如果不产生上更好的视觉外观品质,强制互相作用可能会使我们的模型的数学形式显著复杂化。对于许多渲染器,包括单向路径跟踪器 Arnold,即使在 leaf BSDFs 中,也可以违反互相作用的物理约束,而不会造成任何实际问题。此外,以一种真正正确的物理方式实现分层材质的对等性(Jakob2014)目前过于复杂和繁琐,无法在生产渲染器中实现。在实际生产中使用的实现互相作用的模型,如 Kulla 和 Estevez 的涂层方案[Kulla2017],通过引入类似于本文描述的非互相作用的方法,用强大的近似来实现互相作用,但不精确。
因此,目前我们并不认为在模型中加入互相作用是绝对必要的。
4.3 层模型 Layering model
我们的分层模式确保结构上节能,并在可能的情况下能量守恒。然而,作为一个相对简单的模型,仅仅是闭包的线性组合,并根据近似反射率 reflectance(…)函数调整权值,它并不是我们所描述的层间光传输的物理精确模拟。
最近出现了许多关于分层介质中,全光传输的更精确的处理方法[Jakob2014] [Belcour2018] [Zeltner2018]。这些模型包含了通过整个层堆栈的各种反射和传输模式的影响,从而生成最终的 BSDF(或一般的 BSSRDF),这不是每层 BSDFs 的简单线性组合。
在未来,我们将研究如何过渡到更精确的模型。然而,目前似乎所有可用的模型计算起来都更加昂贵,实现起来也更加复杂。
我们尝试至少在我们的模型中包含一些最重要的影响,这些影响是由手工的层间交互产生的。例如,我们允许涂层的粗糙度影响(一些)底层的粗糙度。
4.4 表面方向 Surface orientation
在透射的情况下,光可以从正常的表面上方或表面下方入射。透射层对此很敏感,并确保光线通过介质正确折射。然而,其他层是面向 w.r.t.法向的,所以当物体从外部和内部被击中时,散射行为是相同的。这也是一种非物理近似,在实践中非常有用,因为它简化了逻辑,而没有引入明显的人工痕迹视觉。
4.5 用户友好性和灵活性 User-friendliness vs. flexibility
我们的模型目前有固定的层数,其中只包括两个镜面层,而其他一些流行的模型(例如皮克斯的 PxrSurface [Hery2017])允许更多的可配置层。在生产环境中,这种将模型对于自由度,在某些情况下是有用的。
然而,正如前面提到的,我们这里的一般原则是,最好提供一组具有直观意义、相对最少、对用户友好的参数,并使用一种组合方案来确保任何给定的参数集都在物理合理性的范围内。在模型不能产生所需结果的边缘情况下,可以创建自定义着色器图像。
五、结论
在本文档中,我们描述了一个标准的、通用的表面着色器的建议,该着色器可用于各种生产渲染环境。该模型基于 Arnold 渲染器中标准表面着色器的当前实现。我们详细描述了组成模型的十个闭包,以及如何将它们组合起来生成最终着色器。
我们希望这个建议,可以作为一个被广泛采用的标准表面着色器实现的有用基础。
六、鸣谢
作者要感谢 Mike Farnsworth、Lee Griggs、Arvid Schneider、Milos Hasan、Michael Nickelsky、Henrik Edstrom、Karl Schmidt、Niklas Harrysson、Marcel Reinhard 和 Davide Pesare 提供了有用的录入反馈
七、参考书目
[Andersson2016] Zap Andersson. 2016. Physical Material (v1.01). Autodesk white paper.
[Belcour2017] Laurent Belcour and Pascal Barla. 2017. A Practical Extension to Microfacet Theory for the Modeling of Varying Iridescence. ACM Transactions on Graphics, 36, 4.
[Belcour2018] Laurent Belcour. 2018. Efficient Rendering of Layered Materials using an Atomic Decomposition with Statistical Operators. ACM Transactions on Graphics, 37, 4.
[Burley2012] Brent Burley. 2016. Physically-based Shading at Disney. In ACM SIGGRAPH 2012 Courses: Practical Physically Based Shading in Film and Game Production.
[McDermott2018] Wes McDermott. 2018. The PBR Guide. Allegorithmic. https://www.allegorithmic.com/pbr-guide.
[Estevez2017] Alejandro Conty Estevez and Christopher Kulla. 2017. Production Friendly Microfacet Sheen BRDF. Sony Pictures Imageworks technical report.
[Georgiev2019] Iliyan Georgiev, Jamie Portsmouth, Zap Andersson, Adrien Herubel, Alan King, Shinji Ogaki, Frederic Servant. 2019. A Surface Standard: OSL reference implementation. https://github.com/Autodesk/standard-surface/blob/master/reference/standard_surface.osl.
[Gritz2010] Larry Gritz, Clifford Stein, Chris Kulla, and Alejandro Conty. 2010. Open Shading Language. In ACM SIGGRAPH 2010 Talks.
[Gulbrandsen2014] Ole Gulbrandsen. 2014. Artist Friendly Metallic Fresnel. Journal of Computer Graphics Techniques, 3, 4.
[Hery2017] Christophe Hery, Ryusuke Villemin, Junyi Ling. 2017. Pixar's Foundation for Materials. Pixar technical report.
[Jakob2014] Wenzel Jakob, Eugene d'Eon, Otto Jakob, and Steve Marschner. 2014. A Comprehensive Framework for Rendering Layered Materials. ACM Transactions on Graphics, 33, 4.
[Langlands2014] Anders Langlands. 2014. Physically Based Shader Design in Arnold. In ACM SIGGRAPH 2014 Talks.
[Kulla2017] Christopher Kulla and Alejandro Conty Estevez. 2017. Revisiting Physically Based Shading at Imageworks. In ACM SIGGRAPH 2017 Courses: Physically Based Shading in Theory and Practice.
[Zeltner2018] Tizian Zeltner and Wenzel Jakob. 2018. The Layer Laboratory: A Calculus for Additive and Subtractive Composition of Anisotropic Surface Reflectance. ACM Transactions on Graphics, 37, 4.
注释:为了方便起见,我们闭包列表允许的不仅仅是 BSDF,而且还包括一个发射分布函数(EDF)和一个双向次表面散射分布函数(BSSRDF)。渲染器理解为识别这些,并适当地处理它们。
6
123
想要积分,留言试试
666
666
66666
6666
6666
谢谢分享
谢谢分享
谢谢分享
谢谢分享
谢谢分享