【翻译】PBR基本理论

原文:https://www.marmoset.co/posts/basic-theory-of-physically-based-rendering/


Physically-based rendering (PBR) 说起来是令人兴奋的,如果不负责任的说,它是未来实时渲染的趋势。 这个术语经常被人提及, 也让人产生疑惑:具体到底是个什么鬼呢。 简单的说:“很多东西”取决于你怎么用。当然这种说法相当让人不满意。所以我试着用自己的经验来解释它,以及它和传统的渲染模式的区别。 这篇文章不是针对工程师的(更倾向美术),不会有任何数学公式和代码。

相较于传统的着色系统PBR最大的区别是光和表面的行为。它着色的能力高级到足以安全的丢弃以往的近似算法,以及旧的美术制作的方法。这意味着美术和工程师都需要知晓这些变化的动机。

在我们介绍新的定义之前,我们先介绍一下基础。 可能是你已经了解的内容,但你会发现它也很值得一读。 你也可以直接查看我们关于creating PBR artwork 的文章。

DIFFUSION & REFLECTION

散射和反射也被称为“diffuse” and “specular” 是两个描述表面和光交互的基本属性。 大部分人都很熟悉这些概念,并也曾运用过。但可能不知道他们的物理特性。

当光线接触到物体表面,他的一部分会发生反射,以发现分界的相反反向离开。这个行为非常类似一个球仍到地面或者墙上,会反弹到另一个相反的方向。一个很光滑的表面就像一面镜子。 单词“specular”就是派生字拉丁文“mirror” 。

并不是所有的光都从表面反射出去,然后,通常一些光会深入到介质内。他们或者被介质吸收(转化成热量)或者散射出来。散射出来的一部分可能又照射到眼睛里或者摄像机上,这一部分有很多名字比如:Diffuse light,Diffusion,“Subsurface Scattering”等。所有都描述的这一效果。


这种吸收或者散射会根据光的波长有很大的区别,所以不同的物体,就看起来有不同的颜色。(比如说一个物体能吸收除了蓝色之外的大部分光,那它看起来就是蓝色的)。这种反射一般是无序混乱的,也可以说是各个方向均匀的。和镜子的情况非常不同。一个shader定义一个颜色(albedo)来近似的模拟这种从表面散射出来的颜色。也有人用diffuse color来定义。

Translucency & Transparent (透明&透明度)

某些情况diffuse要更复杂一些。材质应有更宽泛的散射距离,比如皮肤和蜡质物体。在这些情况下,一个简单的diffuse color是不能满足的,而且shader也必须考虑到物体的形状和厚度。如果他们足够的薄,它可以散射出它背面的的光线,这种被称做为半透明。如果它本身的散射小到极致,(比如说玻璃),机会没有本身的散射,可以透过它看到它后面的实体。这些行为和典型的“Close to the surface(表面封闭的)”截然相反。但是shader也需要模拟这种行为。

ENERGY CONSERVATION

通过上面的描述,我们有足够的信息可以去做一个总结了:散射和反射是怎么相互作用的。就是说光线为了散射,首先要渗透入物体表面,(也就是说反射失败的)。这也是shader中执行的能量守恒。也就是说散射后离开物体的光线,不可能比它落在物体上的光线更亮。

着在shader中很容易实现,一个简单的减法就可以,减去反射的光,就是要发生散射的光,也就是说越高的反射,呈现的散射就越弱。


能量守恒是物理着色的一个重要方面。它允许艺术家们调整散射和反射值而不会偶然的违反这个规律(这往往看起来不好看)。对于呈现好看的艺术感来说,这种强制限制在代码里,严格来说不是必要的。但是它确实起到了一定的作用,作为一种“nanny physicist”。它阻止艺术家们在复杂的光照条件下,偏离规律太远,或者变得不一致。

METALS

导电材料,特别是金属,在这一点上值得特别提及,原因如下。

首先,它们比绝缘体(非导体)有更高的反射性。导体的反射率通常会高达60-90%,而绝缘体通常要低得多,在0-20%的范围内。这些高反射率防止大部分光线到达内部并散射,从而使金属成为非常“闪亮”的外观。

第二,
导体的反射有时候在可见光谱中是发生变化的。也就是说,他们的反射可能会出现染色。导体中的这种反射染色可以说是罕见的,但它确实发生在某些日常材料(例如金,铜和黄铜)中。绝缘题符合一般规则并不表现出这样的效果,它们的反射是无色的。

最后
导体通常吸收而不是散射任何渗入它的光。意思说理论上导体不显示散射光。然而,在实践中,通常在金属表面上存在氧化物或其它残留物,其将散射出少量的光。

因为金属的这种二元性和其他一切导致一些因素导致渲染系统直接采用“matalness”属性作为直接输入。在这种系统中,艺术家指定材料表现的金属的程度,而不是明确指定反照率和反射率。这有时被选择为创建材料的更简单的手段,但并不是是基于物理的渲染的特征。

FRESNEL(菲涅尔)

Augustin-Jean Fresnel 是我们不能忘记的那些老死的白人之一.主要是因为他是第一个准确描述这一系列表象的人。在没有他的名字出现的情况下,很难讨论光的反射。

在计算机图形学中,菲涅耳是指以不同角度发生的不同反射率。具体来说,以放射角度落在表面上的光将比起表面死角的光更有可能反映出来。这意味着使用菲涅尔效果渲染的物体将在边缘附近看起来更有光泽的反射。我们大多数人已经熟悉了一段时间了,而且它在计算机图形学方面的存在并不新鲜。然而,PBR着色器在菲涅耳方程上做了一些重要修正。

首先是对于所有的材料,反射率总体上是放射角度的 - 任何平滑物体上观察到的“边缘”都应该是完美的(未着色的)镜面,无论材料如何。是的,任何物质都可以作为一个完美的镜面,如果它是平滑的,从正确的角度看!这可能是违反直觉的,但物理学是严格的。

关于菲涅尔属性的第二个观察是,角度之间的曲线或梯度在材料之间没有太大变化。金属是最有分歧的,但它们也可以在分析上解释。

这对我们来说意味着,假设现实是理想的,艺术家对菲涅尔行为的控制通常应该减少,而不是扩大。或者至少,我们现在知道在哪里设置我们的默认值!

这是一个好消息,因为它可以简化生成的内容,shader现在几乎完全可以自己处理菲涅尔效应; 只需要参考一些其他预先存在的材料性质,如光泽度和反射率。


备注:Chrome镀铬 Rubber橡胶

一个PBR工作流使艺术家通过一种方式指定“基本反射率”。这提供了反射的光的最小值和颜色。菲涅耳效果渲染的时候将在艺术家指定值的基础上增加反射率,在最大视角高达100%(白色)的反射率。本质上,内容描述了基础,菲涅尔的方程从那里开始接管,使得表面在各种需要的角度反射更强。

对于菲涅耳散射有一个比较重要的提示:反射会比表面光滑度的降低变的更加不明显。随后会给出更多的交互信息。

MICROSURFACE(微表面)

上面描述反射和扩散的描述取决于表面的方向。大体来说,这是由被渲染的网格的形状提供的,也可以利用法线贴图来描述较小的细节,有了这些信息shader可以把它渲染的更好。但是,还有一块还没提及。大多数现实世界的表面都有很小的缺陷:细小的凹槽,裂纹和块状物,很小以至于我们眼睛看不到。而且无法在任何正常分辨率的法线贴图中表示。尽管肉眼看不见,但这些微观特征仍然影响光的扩散和反射。


微观表面细节对反射影响最大。在上图中,当从较粗糙的表面反射时,可以看到入射光的平行线开始发散,每个射线以不同的方向从物体表面反射出去。就像球撞上一个类似悬崖边上这种不平坦的面上球会反弹,但是角度是不可预测的。简而言之,表面越粗糙,反射光越发分散或出现“blurry(模糊)”。

不幸的是,在艺术生产上评估微表面的这些特征是不现实的,考虑到计算机的内存,和处理量。那我们怎么办呢?因此,如果我们放弃直接描述微观表面细节,而是指定一般的粗糙度,我们可以写出相当准确的着色器,产生类似的结果。这种手段通常用 “Gloss”, “Smoothness”, or “Roughness”来表现。它可以指定为纹理或作为给定材料的常数。

对于任何材质,微表面的细节都是一个很重要的特征,因为现实世界充满了各种各样的微表面特征。Gloss(光泽)映射不是一个新的概念,但它在物理上的阴影中起着关键作用,因为微观表面细节对光反射有极大的影响。正如我们即将看到的那样,PBR Shader中改进并提供了一些内容,来表现微表面的特性。

ENERGY CONSERVATION (AGAIN)(又一次能量守恒)

现在我们假设的shader系统,讨论了微表面的细节也要考虑进去,延伸到合理的反射光,所以必须注意反映正确的光量。 很遗憾的是,很多传统的shader在这方面并不正确,在微表面的Roughness上反射的要么过多要么过少。

当公式趋于平衡的时候,渲染在呈现出来的,应该是高光在粗糙表面上表现的更黯淡,范围更大的反射,而光滑表面上,表现的更锐利,范围较小的反射。这种对高亮反射截然不同的原因在于:两种材料都反射相同的光量,但是较粗糙的表面在不同的方向上散开,而较光滑的表面反映出更集中的“光束”。


除了先前描述的散射/反射平衡之外,我们还要保持第二种能量平衡,是这方面正确是任何想实现PBR渲染的重要条件之一。

ALL HAIL MICROSURFACE

正是在上述知识的基础上,我们做了一个实现,一个大胆的实现:微观表面光泽度直接影响反射率。这意味着一个艺术家可以直接将变化的因子直接绘制到光泽图中 - 划痕,凹痕,磨损或抛光区域,而且PBR系统不仅会根据形状作反射的变化,而且还会显示相对强度。

这是重要的,因为物理相关的两个真实世界的参量 - 微观表面细节和反射率 - 现在在第一次在艺术内容和渲染过程中妥善地结合在一起。这与前面所述的扩散/反射平衡行为非常相似:我们可以独立地创造这两个值,但是由于它们是相关的,所以如果尝试单独对待它们,会使任务变得更加困难。

此外,对现实世界的调查显示材料的反射率值没有很大变化,一个很好的例子是水和泥土:两者都具有非常相似的反射率,但是由于泥土相当粗糙,水坑表面非常光滑,它们在反射方面显得非常不同。艺术家在PBR系统中创建下图中这个场景主要通过光泽或粗糙度图来作出差异,而不是调整反射率,如下所示:


微表面性质对反射也有其他微妙的影响,例如,“边缘更亮” 菲涅尔效应在较粗糙的表面上有所减少,此外,微表面大的凹面的可以光“陷入”,使光在里面多次反射。增加了渗入,减少了亮度。不同的系统使用不同的方法处理,也有微妙的差异。但是和粗糙的表面呈现的暗淡趋势是一样的。

CONCLUSION

对于基于物理渲染的话题当然有更多的要说的,本文仅作为基本介绍。对于那些想要更多技术信息的人,我可以推荐几片文章阅读:

John Hable’s excellent blog post: Everything Is Shiny
John Hable’s even better blog post: Everything Has Fresnel
Sébastien Lagarde’s summary of Rendering Remember Me
Come to think of it, all of Sébastien Lagarde’s Blog is good stuff
The SIGGRAPH 2010 course on PBR
Always worth mentioning: The Importance of Being Linear

本文转自:CSDN,为博主 yelfield 翻译
原文:https://www.marmoset.co/posts/basic-theory-of-physically-based-rendering/
转载此文目的在于传递更多信息,版权归原作者所有。

推荐阅读