[Translation]Basic Theory of Physically-Based Rendering | [译]基于物理渲染的基本理论

原文是Jeff Russell所写的Basic Theory of Physically-Based Rendering

广义上的基于物理渲染(PBR)是最近在实时渲染领域激动人心的潮流。这个术语的广泛传播常常让人误解它的准确定义。简短的定义是“很多事”和“看情况”,当然这不令人满意。所以我决定自己些功夫解释PBR到底代表什么,以及它和传统渲染方法有哪些区别。这篇文档的主要对象是非工程师(主要是美术),而且不会展示任何的数学或者代码。

基于物理着色系统与之前方法的主要区别在于对光线和表面行为更细致的推理。这种着色方法已经足够先进,可以抛弃以前的近似方法,抛弃以前制作艺术的方法了。这意味着工程师和美术人员应当理解这些改变的动机。

我们将会从一些基本概念开始,它们已经有了很好的定义。之后我们会着重于新的部分。但如果你已经忍受过我的文章就会发现它们非常值得阅读。你也许会对看Joe Wilson的《创造PBR艺术品》这篇文章感兴趣。

漫射(Diffusion)与反射(Reflection)

漫射和反射——也分别称为“漫射”(Diffuse)和“高光”(Specular)——是两个描述物体表面与光线互动的基本区别的属于。很多人在实际经验中对这个概念很熟悉,但不一定知道它们物理上的区别。

pbr_theory_microsurf

当光线到达物体表面的边界,一部分会反射——从表面弹开——然后从法线另一侧方向离开。这种行为非常像篮球撞击地面或者墙体——从相反的角度弹走。在光滑表面上这会产生镜子一样的效果。

“高光”(Specular)这个词通常用来描述这种现象,这个词源自拉丁语的“镜子”。

然而不是所有的光都从表面反射。通常一些会穿透进入被照亮物体的内部。这些光或者被物体吸收(成为热)或者在内部散射。一些散射光会从物体表面逃逸,从而对相机或者人眼可见。这种现象有很多名字来描述:“漫射光”,“漫射”,“次表面散射”(Subsurface Scattering)。

pbr_theory_refl_diff

漫射光的吸收和散射通常在不同波段区别很大,这给予了物体颜色(比如物体吸收了大部分但反射了蓝光,就会表现为蓝色)。这些散射通常非常一致地混乱,从任何角度看都差不多——这和玻璃差别很大!使用这种近似的着色器只需要一个输入:“反色系数”(albedo),一个颜色描述光线的那一部分会被散射回去。”漫射颜色”(Diffuse Color)通常是一个同义词。

半透明(Translucency)和透明(Transparency)

在一些情况下漫射比较复杂,一些散射距离比较大的材料比如皮肤或蜡。这些情况中单一的颜色难以描述漫射,着色系统还需要考虑被照亮物体的形状和厚度。如果它们足够薄,这种物体的背面通常能看到光线透过,被称为半透明。如果漫射更小的话(比如玻璃)那么散射几乎不明显,整个影像都可以从一侧完好地透过物体到另一侧。这些行为和典型的靠近表面的漫射非常不同,因此需要独特的着色器来模拟它们。

能量守恒

有了以上的描述,我们有足够的信息推出一个重要的结论——反射和漫射互相排他。这是因为光线如果漫射就必须首先穿透表面(也就是没有发生反射)。这在着色的话语中是能量守恒的一个例子,意思是离开一个物体的光不会到达它的光更亮。这在着色系统中很好实现,在散射发生前把反射光减掉。这意味着高反射性的物体会有比较少的漫射光,仅仅因为又很少的光穿透了表面,大部分都反射了。反过来也是如此,如果物体的漫射更亮,那么就不会太反射。

pbr_theory_conservation

这样的能量守恒是基于物理着色的一个重要方面。它允许美术调整反射率和漫射颜色而不会意外的违反物理定律。虽然强制这些限制并不一定会产生漂亮的艺术,但它是有帮助的角色,就像物理学保姆一样防止艺术品脱离物理规则太远或者在不同的光照条件下显得不一致。

金属

出于一些原因,电导的材料比如金属,需要特殊关照。

首先,它们通常比绝缘体有更高的反射性。导体通常会展现出高达60%-90%的反射率,然而绝缘体通常会低些,在0-20%区间中。高反射率组织大部分光抵达物体内部散射,给了金属光泽的外表。

其次,导体的反射率在不同波段可能会差别很大,所以反射看上去好像被染了色。这种带颜色的反射通常在导体中比较稀少,但日常生活中的材料就有(比如金、紫铜、黄铜)。绝缘体通常不表现这样的特性,所以反射一般是没有颜色的。

最后,电导体通常吸收而不是散射进入它表面的光。这意味着理论上导体不太会表现出散射光。而实际上通常由于氧化或者表面杂质的原因它们会散射少量的光。
这种金属与其他物体的二元性使得一些渲染系统直接采用了“金属度”(metalness)作为输入。这种系统中美术可以指定材料在多大程度上表现的像金属,而不是仅仅显式指定漫射颜色和反射率。这通常是一种简单的创建材质的方法,但不是基于物理渲染的必要特征。

菲涅尔(Fresnel)

奥古斯丁·让·菲涅尔(Augustin-Jean Fresnel)是我们不应该忘记的的死白佬之一,主要因为他的名字被贴在了一堆他首先精确描述的现象上。所以讨论光线的反射而不提他的名字会很难。

在计算机图形学中“菲涅尔”这个词主要指在不同角度产生不同的反射率。具体来说,光线从切线方向射入会比从法线方向射入有着更强的反射。这意味着以菲涅尔现象来渲染物体会在边界的地方有更亮的反射。大部分人对这种现象会有些熟悉,它的存在在计算机图形学中不新了。然而,PBR着色器对菲涅尔方程的几个重要纠正做了普及。

首先是对所有材料,在切线方向反射率都会达到最大——任何光滑物体的“边缘视角”都应该想完美的镜子一样,无论何种材料。是的,任何材料如果足够光滑,从合适的角度看都会像完美的镜子一样。这可能与常识不符,但物理上是明确的。

第二个观察是菲涅尔角度特性曲线在材料和材料间变化不大。金属更多样,但能被分析解释。

这对我们的意义是,如果希望写实风格,那么美术对于菲涅尔行为的控制应当降低,而不是扩展。至少,我们知道设置什么默认值了。

这在某种程度上是好消息,因为这简化了内容的制造。着色系统现在可以独立处理菲涅尔现象,而只需参考其他的材料特性,比如光泽度和反射度。

pbr_theory_fresnel

PBR工作流由美术设定“基准反射率”(base reflectivity)——无论通过什么方法。这提供了光线和颜色的最小量。菲涅尔现象,在渲染中会在美术指定的值上根据角度增加反射率,直到切线方向的100%(白色)。所以基本上材质描述了基准反射率,菲涅尔方程接管了其他的计算,使得表面在不同角度获得所需的反射度。

对菲涅尔现象有一个警告是——当表面变得越来越不光滑是现象会越来越不明显。更多的信息请见下文。

微表面(Microsurface)

上述对反射和漫射的描述取决于表面的朝向。大尺度上来说,这由被渲染的网格决定,也利用法线贴图描述更好的细节。使用了这些信息,任何渲染系统都可以把漫射和反射渲染的相当好。

然而,我们仍缺了一大块内容。大部分真实世界的表面都有微小的残缺:肉眼难以观察的沟槽,裂缝,凸块。而这些可能太过微小,无法用法线贴图在合理的解析度表示。尽管它们对肉眼不可见,但这些微小的特征仍然影响着光的反射与漫射。

微表面细节对于反射有着相当显著的影响(次表面散射就不怎么受影响,但这里不会细致讨论)。在上面的图解中,可以看到平行的入射光从粗糙表面反射时分散了,因为每一束光线都射到了不同朝向的表面。这在球/墙的比喻中可以类比为悬崖或者其它不平的表面。球仍然会反弹,但从一个难以预测的角度反弹。简单来说,表面越粗糙,反射光会越分散,就显得越模糊。

不幸的是,为了着色而评估每一个微表面的特征对于艺术创造不是很现实,考虑到内存利用和计算量。怎么办呢?结果是如果我们直接描述微表面,并用一个粗糙度来概括。我们可以写出相当精确的着色器,来得到近似的效果。这种方法通常被称为“光泽度”(Gloss),“光滑度”(Smoothness),”粗糙度”(Roughness).对给定材料它可以被指定为一张纹理或者一个常数。

这些微表面细节是材料的重要特征,就像真实世界里充满各种微表面特征。光泽度贴图不是一个新的概念,但它在基于物理渲染中发挥着至关重要的角色,因为微表面细节对于光线反射有着如此重大的影响。我们很快就会看到,PBR着色系统的提升考虑了很多有关微表面特征的方面。

能量守恒(又一次)

由于我们假设的着色系统现在考虑了微表面细节,为了正确地反射光线,就必须考虑反射正确量的光线。遗憾的是,很多以前的着色系统把这个搞错了,根据粗糙度反射了太多或者太少的光。

如果等式平衡地比较好,那么对于粗糙的表面,高光会比较大而且比较暗淡,光滑表面会有更小更锐利的表面。这种亮度明显的区别是关键——两种材料反射相同量的光线,但粗糙表面在更多方向反射光,而光滑表面的反射更集中为光束。

pbr_theory_micro_cons

这里我们有了第二种形式的必须被遵守的能量守恒,除了前面说的反射/漫射平衡。把这点弄对对于任何目标是“基于物理”的渲染方法至关重要。

微表面万岁

有了上面的知识,我们会意识到一个重要的事情:微表面关泽度直接影响反射的亮度。这意味着美术可以直接在光泽度忒图上画任何东西——抓痕,凹部,磨损,打磨区域。PBR系统不仅会在反射形状上表现出这些变化,也会表现相对强度。而不需要改变反射度。

这很重要因为真实世界中两个有着物理关系的属性——微表面细节和反射度——现在在艺术创作和渲染过程中被合理联系在一起。这就像之前的漫射/反射平衡,我们可以独立改变任意一个,但二者相互关联。但因为二者相互关联,困难只是他们需要区别对待它们。

更进一步,对真实世界材料的研究会发现物体的反射率变化并不太大(参见前面导体一节)。一个好的例子是水和泥土:二者有相似的反射率,但泥土比较粗糙,而水面非常光滑,所以二者在反射上差异很大。美术在PBR系统中创造这样的场景主要改变光泽度或粗糙图贴图,而不是调整反射度。

pbr_theory_watermud

微表面特征对于反射也有其他微妙的效果。比如“边缘更亮”的菲涅尔特征在粗糙表面上会消失(粗糙表面混乱的本质散射了菲涅尔效果,防止观者清晰观察到)。更进一步,大的或凹的微表面会困住光线——造成它在表面反射多次,增加光线的吸收并减少亮度。不同的渲染系统对于这些细节有着不同的处理方式和不同的处理程度,但总体趋势表面越粗糙,看上去越暗淡是一致的。

结论

有很多课程讲解基于物理渲染的话题。这个文档仅仅是一个最基本的介绍。如果你还没准备好,读读Joe Wilson的教程《创造PBR艺术品》。对于希望更多技术方面信息的,我推荐下面的阅读:

John Hable’s绝妙的博客:任何都是光泽的
John Hable’s更绝妙的博客:任何都有菲涅尔
Sebastien Lagarde的总结:渲染勿忘
现在想来Sebastien Lagarde所有的博客都很好
SIGGRAPH 2010的PBR课程
最后需要提醒:线性工作流的重要性

发表评论

邮箱地址不会被公开。 必填项已用*标注