Chapter 9 – Physically Based Shading 基于物理的着色

9.12 层级材质

在现实生活中,材质通常分层叠加的。例如,表面上可能盖有灰尘,水,雪或者其他东西。最简单或者说最明显的例子就是clear coat(透明图层),也就是说光滑的透明层覆盖在其他材质之上。其中一个例子就是,光滑的透明漆覆盖在粗糙的木头表面之上。Disney着色模型包含了一个clear coat项。

clear-coat最明显的外观特点就是由clear-coat与其下方材质所造成的双重反射。如果clear-coat下方是金属材质,那么这一种双重反射最为明显,这是因为金属材质的折射率与绝缘体clear-coat的折射率有着较大的差别。如果clear-coat覆盖在绝缘体之上,由于绝缘体之间的折射率差别本身就比较小,双重反射的效果也会相对较为微弱。具体我们可以参考那些位于水中的材质。

clear coat也能够带有颜色。从物理的角度来看,图层带有颜色是因为其对于光的吸收性。被吸收的光的数量则取决于光在clear-coat中穿越的路径长度,这是基于Beer-Lamber原理(我们将在第十四章中学习)。而光在clear-coat中的路径则取决于我们之前提到的视野角度,光的入射角度,以及材质的折射率。Disney与UE4所使用的clear-coat模型并不会考虑上述这些因素。

在大多数情况下,不同层级的材质能够拥有不同的表面法线。例如,小溪在平面上流动,粗糙的土地上覆盖了光滑的冰块。电影行业所使用的层级材质模型基本上会支持每一个层级都拥有独立的法线。但是在实时渲染中,这中做法并不多见。

Weidlich与Wilkie提出了一个层级的微面模型,其假设层级的厚度较小(以微面的尺寸作为参考)。该模型支持任意数量的层级,并且能够模拟出每一个层级所发生的反射与折射。其实现方法能够用于实时渲染,但是该模型并不会考虑层级之间的多重反射。Jakob则提出了一种精确度更高的模型用于模拟层级材质,包括材质之间的多重反射。虽然该模型并不适合实时渲染,但是我们可以使用该模型渲染的画面作为参照物,来判定我们实时渲染的画面是否准确。

在游戏使命召唤:无限战争中也使用了层级材质系统,其允许用户通过任意数量的材质层来构建材质系统。其支持折射,散射和基于光的路径长度的材质间的吸收率,此外该系统还支持每一个材质层使用不同的表面法线。

留下评论

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据