本帖最后由 别问我是谁 于 2019-7-26 19:18 编辑
物理渲染的基础理论 作者:Jeff Russell
基于物理的渲染(PBR)是一个令人兴奋的,如果定义松散,最近的趋势在实时渲染。这个词流传甚广,常常让人搞不清它到底是什么意思。简短的回答就是:“很多事情”和“视情况而定”,这个回答是相当不令人满意的,所以我自己开始尝试解释PBR代表了什么,以及它与旧的渲染方法有何不同。本文档面向非工程师(或者可以说是艺术家),而且也不会提供任何数字或代码。
让基于物理的遮蔽系统不同于其前身的主要原因是对光线和表面的行为的更详细的论证。遮蔽能力已经足够先进,一些旧的近似方法现在可以安全的丢弃,包括一些旧的艺术创作方法。这意味着工程师和艺术家都应该理解这些变化的驱动力。
我们必须先从一些基础知识开始,这样在我们开始强调什么是新的之前,它们就有了很好的解释,但是如果你能容忍我讲完你可能已经知道的部分,我想你会发现它很值得一读。然后,您可能还想查看我们Joe Wilson关于创建PBR艺术品的文章。
扩散和反射
扩散和反射——也分别被称为“漫反射“和“高光”——是描述最基本的分离表面/光相互作用的两个术语。大多数人在实际操作中会熟悉这些概念,但可能不知道它们在物理上是如何区别的。
当光线照射到表面边界时,其中一些光线会从表面反射回来,也就是说,会被反射回去,使光线朝着与表面法线相反的方向运动。这种行为非常类似于把球扔向地面或墙壁——它会以相反的角度弹回来。在光滑的表面,这将导致一个像镜子一样的出现。“镜面”这个词,经常被用来描述这种效果,来源于拉丁语中“镜子”的意思(看起来“镜面”听起来没有“镜子效果”那么别扭)。
然而,并非所有的光都能从表面反射。通常一些会穿透被照亮物体的内部。在那里,它要么被材料吸收(通常转化为热量),要么在内部分散。其中一些散射光可能会回到表面,然后再次被眼球和相机看到。这是众所周知的许多名称“漫射光”,“扩散”,“地下散射”——描述的都是相同的效果。
对于不同波长的光,漫反射光的吸收和散射常常是不同的,这就是物体的颜色(例如,如果一个物体吸收了大部分的光,但散射出蓝色,它就会出现蓝色)。散射常常是如此均匀混沌,以至于可以说它从各个方向看起来都是一样的——与镜子的情况不同!使用这种近似的着色器只需要一个输入“反照率”,这是一种颜色,用来描述从表面散射回来的各种颜色的光的组成部分。“漫射颜色”是一个有时会用的同义词。
半透明和透明
在某些情况下,扩散更为复杂——在散射距离更大的材料中,例如皮肤或蜡。在这种情况下,简单的颜色通常是不行的,阴影系统必须考虑被照亮物体的形状和厚度。如果它们足够薄,这样的物体经常 看光从背面散射,然后可以被称为半透明。如果扩散更低(例如,玻璃),那么几乎没有散射是明显的,整个图像可以通过一个物体从一边到另一边完好无损。这些行为与典型的“接近表面”扩散有很大的不同,通常需要独特的着色器来模拟它们。
能量守恒
有了这些描述,我们现在有足够的信息得出一个重要的结论,那就是反射和扩散是相互排斥的。这是因为,为了使光扩散,光必须首先穿透表面(即不能反射)。这在阴影的术语中被称为“能量守恒”的一个例子,这仅仅意味着离开表面的光永远不会比原来照在表面上的光更亮。
这在阴影系统中很容易实现:在允许漫反射阴影发生前,只需减少反射光。这意味着高度反射的物体将显示很少或没有漫射光,仅仅是因为很少或者没有光穿透表面,而这些光大部分是反射的。反之亦然,如果一个物体具有明亮的扩散,它就不能特别具有反射性。
这种类型的能量守恒是基于物理的阴影的一个重要方面。它允许艺术家使用反射率和反照率值来处理材料,而不会意外的违反物理定律(这往往看起来很糟糕)。虽然在代码中强制执行这些约束对于生成好看的艺术品并不是严格必需的,但它确实扮演了一种“保姆物理学家”的角色,可以防止艺术品在不同的光照条件下过分扭曲规则或变得不一致。
金属
导电材料,尤其是金属,在这一点上值得特别提及,有几个原因。
首先,它们往往比绝缘体(非导体)反射性更强。导体的反射率通常高达60-90%,而绝缘体的反射率通常要低得多,在0-20%范围内。这些高反射率阻止了大部分光线到达内部并散射,使金属看起来非常“闪亮”。
其次,导体的反射率有时会随着可见光谱的变化而变化,这意味着它们的反射会呈现有色。这种反射色即使在导体中也很少见,但在一些日常材料(如金、铜和黄铜)中确实存在。绝缘体一般不表现这种效果,而且它们的反射是无色的。
最后,导体通常会吸收而不是散射任何穿透表面的光。这意味着在理论上导体不会显示出漫射光的任何证据。然而,在实际操作中,金属表面经常有氧化物或其他残留物,它们会散射少量的光。
正是这种金属和其他所有东西之间的二元性,导致一些渲染系统采用“金属性”作为直接输入。在这样的系统中,艺术家指定材料作为金属行为程度,而不是只明确指定反射率和反射率明确。有时候,这是一种更简单的创建材料的方法,但并不一定是基于物理的渲染的特性。
菲涅耳(Fresnel)
Augustin-Jean Fresnel 似乎是那些我们不太可能忘记的老一代白人之一,主要是因为他的名字被印刻在一系列现象上,他是第一个准确描述这些现象的人,如果没有他的名字,我们很难讨论光的反射。
在计算机图形学中,“菲涅耳”一词指的是发生在不同角度的不同反射率。具体地说,以掠射角度落在表面上的光比完全落在表面上的光更容易反射。这意味着用适当的菲涅耳效应渲染的物体在边缘附近会有更明亮的反射。我们大多数人已经熟悉它有一段时间了,它在计算机图形学中的出现并不新鲜。然而,PBR着色器在菲涅耳方程的计算中做了一些重要的修正。
首先,对于所有的材料,反射率变成了掠射角的总和——任何光滑物体上的“边缘”都应该充当完美的(非彩色)镜子,无论材质如何。是真的任何物质都可以作为一个完美的镜子,如果它是光滑的,并在正确的角度观看!这可能违反直觉,但物理学是清楚的。
关于菲涅耳特性的第二个观察是,角度之间的曲线或梯度在不同材料之间变化不大。金属是最不同的,但它们也可以用分析的方法来解释。
这对我们来说意味着,假设现实主义是最需要的,艺术家对菲涅耳行为的控制一般应该减少,而不是扩大。或者至少,我们现在知道哪里设置默认值了!
这在某种程度上是个好消息,因为它可以简化内容生成。阴影系统现在几乎可以完全独立处理菲涅耳效应,它只需参考一些其他已经存在的材料特性,如光泽和反射率。
PBR工作流让艺术家通过某种方式指定“基本反射率”。这提供了反射光的最小数量和颜色。菲涅耳效应,一旦渲染,将增加反射率在艺术家指定的值之上,达到100%(白色)在斜视角度。本质上,内容描述了基础,菲涅耳方程从那里接管,使表面在不同角度反射更多的需要。
菲涅耳效应应有一个重要的警告——当表面变得不那么光滑时,它很快变得不那么明显。稍后将给出关于这种交互的更多信息。
微观表面
上述对反射和扩散的描述都依赖于表面的方向。在大尺度上,这是由渲染网格的形状提供的,它也可以使用法线贴图来描述更小的细节。有了这些信息,任何渲染系统都可以很好的进行渲染扩散和反射。
然而,还有一大块仍然缺失。大多数真实世界的表面都有非常小的缺陷:微小的凹槽、裂缝和肿块,小到肉眼无法看到,小到无法用任何正常分辨率的法线贴图表示。尽管肉眼看不见,这些微观特征仍然影响光的扩散和反射。
微观表面细节对反射的影响最为显著(表面下的扩散影响不大,这里不再讨论)。在上面的图表中,你可以看到平行线入射光开始发散时,从粗糙的表面反射,因为每一束光线击中表面的一部分与不同的方向。在球/墙的类比将是一个悬崖边或类似的东西不均匀球仍然会反弹,但在一个不可预测的角度。简而言之,表面越粗糙,反射光发散或出现“模糊”的几率就越大。
不幸的是,评估每个用于着色的微表面特征在艺术制作、内存使用和计算方面都是禁止的。那我们该怎么办?事实证明,如果我们放弃直接描述微表面细节,而是指定一个一般的粗糙度度量,我们可以编写相当精确的着色器,产生类似的结果。这种测量方法通常被称为“光泽度”、“平滑度”或“粗糙度”。它指定为纹理,也可以指定为给定材质的常量。
这种微表面细节对任何材料来说都是非常重要的特征,因为现实世界充满了各种各样的微表面特征。光泽度映射并不是一个新的概念,但它在基于物理的阴影中起着至关重要的作用,因为微表面细节对光的反射有很大的影响。我们很快就会看到,有几个与PBR着色系统改进的微表面特性有关的考虑。
能量守恒(再一次)
由于我们假设的阴影系统现在正在考虑微表面细节,并适当地传播反射光,它必须注意反射正确数量的光。遗憾的是,许多较老的渲染系统都犯了这个错误,反射过多或过少的光,这取决于微表面粗糙度。
当方程式得到适当的平衡时,渲染器应该显示粗糙的表面,因为它有较大的反射高光,比光滑表面更小、更清晰的高光看起来更暗淡。这种亮度上的明显差异是关键:两种材料反射的光量相同,但粗糙的表面向不同方向扩散,而光滑的表面反射的“光束”更集中。
在我们必须保持第二种形式的能量守恒之前,除了前面描述的扩散/反射平衡。对于任何想要“基于物理”渲染器的渲染器来说,正确处理这一点是非常重要的。
为微表面欢呼
正是有了以上的认识,我们才认识到,其实是一个很大的认识:微表面光泽度直接影响到反射的表现亮度。这意味着艺术家可以直接在光泽度贴图上绘制变化——划痕、凹痕、磨损或抛光区域等等——PBR系统不仅可以显示反射形状的变化,还可以显示相对强度的变化。没有“规格掩饰”/反射率的变化需要!
这一点很重要,因为两个物理上相关的真实世界量——微表面细节和反射率——现在第一次在艺术内容和渲染过程中正确的结合在一起。这很像前面描述的扩散/反射平衡操作:我们可以独立的编写这两个值,但是由于它们是相关的,尝试分别处理它们只会使任务变得更加困难。
此外,对真实世界材料的研究将表明反射率值不会有很大的变化(参见前面关于电导率的部分)。水和泥就是一个很好的例子:它们的反射率非常相似,但是由于泥很粗糙,而且水坑的表面很光滑,所以它们的反射率看起来非常不同。在PBR系统中创建这样一个场景的艺术家将主要通过光泽或粗糙度贴图而不是调整反射率来产生差异,如下图所示:
微表面性质对反射也有其他微妙的影响、例如,“边缘更亮”的菲涅耳效应会随着粗糙表面的出现而减弱(粗糙表面的混沌特性会“分散”菲涅耳效应,使观者无法清晰地分辨出来)。此外,大的或凹的微表面特征可以“捕获”光,使其对表面反射多次,增加吸收和降低亮度。不同的渲染系统以不同的方式和程度处理这些细节,但粗糙表面出现调光的大趋势是相同的。
结论
当然,关于基于物理的渲染还有很多要说的,这份文件只是作为一个基本的介绍。如果您还没有阅读过Joe Wilson关于创建PBR艺术品的教程。对于那些想要更多技术信息的人,我可以推荐一些阅读材料:
如果有任何遗留问题,请大家踊跃留言哦,我们一起来探讨吧!
|