物理渲染数学(s2013_pbs_physics_math_notes)

资料来自:s2013_pbs_physics_math_notes.pdf

物理渲染数学

本章节课程笔记,我们将回顾物理基础着色背后的基础知识模型,首先是对物理基础的事实性描述,然后是描述一些相关的数学模型,最后讨论如何试用这些数学模型实现着色。

物理着色:

着色背后的物理现象是光与物质相互作用有关的物理现象。理解这些现象,有助于对大自然的光有个基本的理解。
物理渲染数学(s2013_pbs_physics_math_notes)
图1 光是一种电磁横波

光是一种电磁横波,这意味着它在垂直方向上振荡-与它的传播有关(见图1)。因为它是一种波,光的特征是它的波长从波顶到波谷的距离。电磁波的覆盖范围很广,但只有很小的一部分范围内(大约400到700纳米)对人类是可见的,因此着色只需要关注这部分(见
图2)。
物理渲染数学(s2013_pbs_physics_math_notes)
图2 可见光光谱范围

索引是一个复数:它的实部衡量物质如何影响光速(相对于真空中减慢光速)它的虚部决定了光是否被吸收(转化为其他形式的能量)当它传播的时候。折射率可能随着波长变化。

媒介现象

光与物质相互作用的最简单情况是光通过均匀介质传播。这个是具有均匀折射率的物质区域(在光波长的尺度上;在这种情况下这意味着任何小于100纳米的介质变化都不算在内)。

物理渲染数学(s2013_pbs_physics_math_notes)

图3:光在透明介质如水和玻璃(左)中继续沿直线传播相同强度和颜色的线条(右)。

透明介质是在可见光波长中折射率的复数部分非常低的介质。这意味着光在介质没有明显的吸收和分散传播只是沿着一条直线前进,没有变化。透明介质示例包括水和玻璃(见图3)

如果一个均匀介质在可见光谱中确实具有显著的吸收率,它就会吸收一些光线穿过它。传播的距离越远,就越高吸收。但是,光的方向不会改变,只改变其强度(如果吸收率对某些可见波长(颜色)是有选择性的-见图4
物理渲染数学(s2013_pbs_physics_math_notes)

图4:光通过透明的吸收性介质(左)继续沿直线传播,但会丢失
强度(并可能改变颜色)与距离(右)。

物理渲染数学(s2013_pbs_physics_math_notes)

图5:水的微吸收率在更远的距离上变得显著。

需要注意的是介质的吸收率。例如,实际上是水吸收一点可见光,尤其是光谱的红色部分。在以英寸为单位距离内可以忽略不计(如图3所示),但在很多英尺上的距离上它还是相当明显的,见图5。

散射:

在均匀介质中,光总是沿直线传播,并且不改变其方向(尽管它的量可以通过吸收而减少)。非均匀介质的折射率有变化。如果折射率变化缓慢且连续,那么光就会发生拐弯。但是,如果折射率突然变化(即在比光短的距离内波长),然后光散射:它分裂成多个方向。请注意,散射不会改变光的总量。

微观粒子在折射率与周围环境不同的地方形成一个孤立的“岛”区域。这会导致光在所有可能的传出方向上连续散射(见图6)。注意,散射光在不同方向上的分布通常是不均匀的取决于粒子的类型。有些会导致前向散射(更多的光在前方传播方向),有些会导致后向散射(更多的光反向传播),以及有些具有复杂的分布,在某些方向上有“尖峰”。

物理渲染数学(s2013_pbs_physics_math_notes)
图6:粒子造成光线在所有方向上散射

在多云类介质中,光的传播在散射元素的密度足以使方向发生某种程度的随机性(图7)。在半透明或不透明介质中,散射元素的密度为如此之高以至于光的方向完全随机(图8)。

物理渲染数学(s2013_pbs_physics_math_notes)
图7:光线在多云介质中(左)某种程度上有它自己的方向,随着它的传播有着类似有图的随机性。
物理渲染数学(s2013_pbs_physics_math_notes)
图8:半透明或不透明介质中的灯光(左)的方向完全随机化传播(右)

物理渲染数学(s2013_pbs_physics_math_notes)
图9:即使是干净的空气也会在数英里的距离上产生相当大的光散射。在几英尺的距离上的散射会导致大量的光散射超过数英里。

介质介绍

前面的章节讨论了物质和光之间的两种不同的相互作用模式。区域具有复数折射率的物质的吸收会使光的数量在距离的增加上减少(如果在某些情况下优先发生吸收,在某些波长上也可能改变光的颜色),但光的方向不变。另一方面,指数变化迅速折射导致散射光的方向改变(分裂成多个方向),但光的总量或光谱分布并没有改变。
还有第三种模式相互作用:自发光。
从其他形式的能量中产生新的光(与吸收相反)。这发生在光源中,但在着色中不常出现。
图10说明了这三种情况互动模式。

物理渲染数学(s2013_pbs_physics_math_notes)
图10:光与物质相互作用的三种模式:吸收(左)、散射
(中间)和发射(右)。

物理渲染数学(s2013_pbs_physics_math_notes)
图11:具有不同光吸收和散射量的介质。外观取决于两种属性;例如,白色外观(右下角)是高散射组合的结果吸收率低。

大多数介质都在一定程度上散射和吸收光。每种介质的外观取决于关于散射和吸收的相对量。图11显示了散射和吸收的结合。

平面范围上的散射:

Maxwell方程可以用来计算折射率改变时光的行为,但在大多数情况下,不存在解。有一个特殊的做法能确保有一个解,尤其是表面着色相关。假设这是一个无限的,完全平坦的平面,作为折射率不同的两个体块之间的边界。空气的折射率在平面边界的一侧,另一个对象反射率在另一侧。在这种特殊情况下,Maxwell方程组的解称为菲涅耳方程。

物理渲染数学(s2013_pbs_physics_math_notes)
图12:平面边界的折射率变化导致光在两个方向上散射。

虽然真实物体的表面不是无限的,但与可见光的波长相比可以这样对待。至于“完全平坦”,可能会有人反对说没有物体表面真的可以是平坦的,单个微粒也会形成微微尺度的“凸点”。然而,与其他任何事物一样,相对于光波长的尺度也很重要。确实有可能使表面在几百纳米的尺度上完全平坦,这样的表面被称为光学平坦的,通常用于高质量的光学仪器,如望远镜。

在平面折射率边界的特殊情况下,向各个方向的持续散射可能被覆盖,光分为两个方向:反射和折射(图12)。
如图12所示,反射角等于入射角,但折射不同,取决于介质1的折射率。反射的比例折射光由菲涅耳方程描述,将在后面的章节中讨论。

非光学平面(Non-Optically-Flat Surfaces)

当然,大多数真实世界的表面并没有像望远镜反射镜那样抛光到相同的公差。在光学上不平坦的表面上会怎么样?在大多数情况下,确实存在许多不平整且幅度比光的波长大得多,但太小,无法直接看到或呈现(即,它们小于单个像素或着色采样的覆盖区域)。在这种情况下,表面其行为类似于一个微小的光学平面的大集合。在这种情况下,表面其行为类似于一个微小的光学平面的大集合。表面外观是许多具有不同表面方向的点的聚合结果每个点都以轻微的方式反射入射光到不同方向(图13)。
物理渲染数学(s2013_pbs_physics_math_notes)
图13:非光学平面的可见反射是从许多不同方向的表面点反射的聚合结果。
物理渲染数学(s2013_pbs_physics_math_notes)
图14:上图,表面相对光滑;表面方向只是略有变化,导致反射光方向的微小变化,从而使反射更加清晰。下图是粗糙的;表面上不同的点有着广泛不同的方向,结果反射光的方向变化很大,因此反射模糊。注意两个表面在可见的尺度上显得光滑粗糙的差别在微观尺度上。

在这个微观尺度上,表面越粗糙,反射越模糊,就像表面一样方向与整体宏观表面方向的偏离更大(图14)。为着色目的,通常将此微观几何体视为在每个点的多个方向反射(和折射)光(图15)。
物理渲染数学(s2013_pbs_physics_math_notes)
图15从宏观上看,非光学平面可被视为反射(和折射)多个方向的光。

次表面散射

折射光会发生什么?这取决于物体的成分。在金属中,折射的光会立即被吸收,能量会被自由电子吸收。另一方面,在非金属(也被称为电介质或绝缘体)中,表现为规律参与的介质,在一次光照中会在其内部发生折射。一次光线反射在其内部中, 光线在其内部表现出一些规律性的折射。表现出范围性的吸收和散射行为,也就是我们在前面几节中讨论过的散射行为。在大多数情况下,一些折射光是分散到足以从同一表面重新发射出来。这两种情况都在中进行了说明。如图16。

物理渲染数学(s2013_pbs_physics_math_notes)
图16:在金属中(左边),所有折射的光能立即被自由电子吸收;在非金属(右边)中,折射的光能会散射,直到它在接受部分吸收后从表面重新出现。

在图16的右侧,可以看到次表面散射光(用蓝色表示箭头)从表面的不同点发射,与原始入口的距离不同光点。

图17显示了这些距离和像素大小之间的关系的例子。
在图17左上角,像素大于从入口到出口的次表面散射距离。在在这种情况下,可以忽略入口到出口的距离,并且可以假设次表面散射光在同一点进入和退出曲面,如右上角所示。这允许着色作为一个完全的局部过程来处理:一个点的出射光只依赖于入射光在同一点上。
在图17的底部,像素小于入口到出口的距离。在这种情况下,每个点的阴影都会受到其他点上的光的影响。为获得这个效果,靠局部着色是不够的,需要使用专门的渲染技术。这些是通常被称为“次表面散射”技术。需要注意的是“普通”漫反射着色是相同物理现象(折射光的次表面散射)的结果。唯一的区别是相对于观测尺度的散射距离。这告诉我们通常认为表现出“次表面散射”行为的材质可以在更远的距离上用规则的漫反射阴影处理(例如,远距离角色的皮肤)。上另一方面,被认为表现出“规则的漫反射阴影”行为的材料将具有在非常近距离观察时的“次表面散射”外观(例如,小的塑料玩具)。

物理渲染数学(s2013_pbs_physics_math_notes)
图17:在左上角,像素(带红色边框的绿色圆圈)大于距离在它离开表面之前被光移动。在这种情况下,可以假设出射光是从入口点(右上角)发射。在底部,像素比散射要小距离;如果需要真实着色,则不能忽略这些距离。

数学着色

一般电磁辐射(包括可见光)的测量称为辐射测量。有各种各样的辐射量被用来测量表面上的光,包括方向等等;我们只关心自己的辐射度,它是被用来量化沿着单射线的。我们将使用常用的辐射计符号L来表示辐射;当对表面的点进行着色时,L i表示入射到曲面的辐亮度,lo表示出射的辐亮度。
辐射量(和其他辐射量一样)是一个光谱量:这个量是一个函数波长。从理论上讲,要表达可见光的辐射强度,需要一个连续的光谱分布待储存。密集光谱采样确实在一些特殊的渲染应用程序中使用,但是对于制作(电影和游戏)渲染,将使用RGB三元组。如何解释这些与光谱分布有关的三元组也可以在许多资料中找到。

BRDF

通常假设着色可以在本地处理,如右上角所示图17。在这种情况下,给定的曲面点如何响应光只取决于入射光和出射光(视角)方向。在本文档中,我们将使用v表示指向出射方向的单位长度向量,使用l表示指向与入射方向相反的单位长度向量方向。表面对光的函数量化被称为BRDF(双向反射分布函数)。
我们将表示为f(l,v)。每个方向(入射和出射)都可以参数化为两个数字(例如极坐标),因此BRDF的总的参数为4个。在许多方面在这种情况下,围绕曲面法线旋转光线向量和视角向量不会影响BRDF。这种各向同性brdf可以用三个角度参数化,如图18所示。实际上用于计算给定BRDF的角度数从1到5;一些常用角度如图19所示。
物理渲染数学(s2013_pbs_physics_math_notes)
图18:BRDF依赖于传入和传出方向;可以使用四个角表达,或者在各向同性BRDFs的情况下是三个角。这里n是曲面法向量,l是入射光方向向量,v是出射(视角)方向向量,t是切线向量定义曲面上的首选方向(这仅用于各向异性BRDF,其中当灯光和视图矢量围绕n)旋转时,反射行为会发生变化。

物理渲染数学(s2013_pbs_physics_math_notes)
图19:BRDF评估中常用的一些角度示例。作为图18的补充。

原则上,BRDF仅针对表面上方的光和视图方向进行定义;换句话说,点积n•l和n•v(通常在BRDF表达式中找到)必须都是非负。为避免光线方向是向背面,方法很简单的:要么只聚集从正面方向入射光,或通过设置来自任何背面的光方向为零。背向视图方向理论上不应该发生,但生成的法线或法线贴图(在游戏中都很常见)会发生这种情况。BRDF计算中nvw为负值,可以通过clamping(nv, 0, n*v)或用它的绝对值来表示。
在某些情况下,简单地评估BRDF的负值可能会产生更好的结果。但是,必须注意确保数学上能够成立(如被除数不能为0)。
BRDF可以直观地用两种方式解释,这两种方式都是有效的。
第一个解释是,给定从某个方向入射的光线,BRDF给出了该光线在表面上所有反射光和散射光的分布。
第二个解释是,对于给定的观察方向,BRDF给出了来自每个入射光方向所贡献的出射光。
这两种解释如图20所示。
物理渲染数学(s2013_pbs_physics_math_notes)
图20

BRDF是一个光谱量。理论上,输入和输出的波长是额外的BRDF的输入,大大增加了它的维数。然而,在实践中各个独立的波长并没有干扰,因此每个波长的出射光只受同一个波长的影响-入射光的长度。这意味着,与其将输入和输出波长视为BRDF输入,我们(更简单地)将BRDF视为与光谱值的光的颜色。在产品级着色中,这意味着RGB值BRDF乘以RGB值浅色。
BRDF的反射方程式:
物理渲染数学(s2013_pbs_physics_math_notes)

虽然这个等式看起来有点让人望而生畏,但它的含义很简单:出射的光线等于BRDF叉乘上入射光线乘以余弦系数的入射辐射的次数积分(表面以上所有方向)。如果你不熟悉积分,你可以把它们看作是一种连续的加权平均数。这里使用⊗符号表示分量矢量乘法;这是因为BRDF和光线颜色都是光谱(RGB)向量。
并不是每个有光线传入和传出方向的函数都可以称为BRDF。BRDF必须具有物理上合理 的两个性质:
1、相互性,相互性简单地说,BRDF的l和v值可互换。

物理渲染数学(s2013_pbs_physics_math_notes)

2、能量守恒,是指一个表面不能反射超过100%的入射光能量。在数学上,它通过以下等式表示:

物理渲染数学(s2013_pbs_physics_math_notes)

这意味着对于任何可能的光方向l,BRDF的积分乘以余弦因子输出方向v不得超过1。
物理渲染数学(s2013_pbs_physics_math_notes)
图21: BRDF高光反射项通常用于表面反射,BRDF漫反射项的次表面散射。

BRDF描述的现象包括(至少对于非金属)两种不同的物理现象现象:表面反射和次表面散射。因为每一种现象都有不同的行为,BRDF通用一个单独的项来描述。描述表面的BRDF项反射通常称为高光反射项,描述次表面散射的项称为反射项漫反射项见图21。

表面反射(高光反射项)

基于物理的反射BRDF项通常基于微表面理论。这个理论是用于描述一般(非光学平面)表面的反射。基于假设微表面理论的微小变化值(微观几何)小于观测尺度(如阴影分辨率),但大于可见尺度光波长(因此几何光学适用,衍射等波效应可以忽略)。所以到目前为止,微区理论仅用于推导单次弹跳表面反射的表达式,多弹跳表面反射的综合理论仍然是一个尚未解决的问题。
由于微几何结构被假定比可见光波长的尺度大得多,因此,每个表面点都可以被视为光学平面。如前所述,截面,一个光学平面将光分成两个方向:反射和折射。只有那些恰好正确地将l映射为v的元素才有可能做出贡献到BRDF值。在图22中,我们可以看到这些“正确定向”的曲面点在它们自己的法线m精准的在向量l和向量v的中间。称为半向量或半角向量;我们将其表示为h。
物理渲染数学(s2013_pbs_physics_math_notes)
图22:m=h的曲面点的方向是将l反射到v中—其他曲面点则不为BRDF作出贡献。

物理渲染数学(s2013_pbs_physics_math_notes)
图23:在左边,我们看到一些曲面点被l方向遮挡,所以它们是有阴影且不接收光(因此它们不能反射任何光)。在中心,我们看到一些表面从视图方向v看不到点,因此从这些点反射的任何光都不可见看到。在这两种情况下,这些表面点对BRDF没有贡献。事实上,尽管有阴影区域不接收来自l的任何直接光,它们确实接收(并因此反射)从l反射的光其他表面区域(如右图所示)。微区理论忽略了这些相互作用。

并非所有m=h的表面点都会对反射作出积极贡献;有些表面点被阻塞从l方向(阴影)、v方向(遮罩)的其他曲面区域,或两者兼而有之。微面理论假设所有的阴影光都会从高光反射项中消失;实际上,由于多个表面反射,其中一些最终将可见,但这在微区理论。各种类型的光与表面的相互作用如图23所示。

在这些假设下(局部光学平坦表面,无相互反射),一个反射BRDF项可以从第一原理推导出来。高光反射BRDF的形式为:

物理渲染数学(s2013_pbs_physics_math_notes)

我们将更详细地讨论每一项,但首先是一个简短的总结。
D(h)是微几何法线分布函数(mi-crogeometry normal distribution function NDF),用于计算在半向量h处求值的法线分布函数(NDF);换句话说,就是表面点的浓度(相对于表面积),这些表面点的定向应使其能够反射从l到v的光。
G(l,v,h)是几何函数;它告诉我们以光线方向l和视角v中m=h未被阴影或遮罩的曲面点的百分比的函数。因此,通过反射的表面点从l到v,D(h)和G(l,v,h)的乘积给出了活性表面的浓度点。
F(l,h)是活动表面点的菲涅耳反射系数,作为光的函数方向l和有效的微几何法线m=h。它告诉我们入射光的多少从每个有效的曲面点反射。
最后,分母4(n•l)(n•v)是一个修正因子,表示在微观几何的局部空间之间转换的量以及整个宏观表面。

菲涅尔反射:

菲涅耳反射函数计算从光学平面反射的光的量。它的值取决于两个因素:入射角(光向量和曲面法线之间的角度)和折射材质。由于折射率可能在可见光谱中变化,菲涅耳反射系数产生的光是光谱上的RGB三元色。每个RGB值必须位于0到1的范围内,因为曲面不能反射小于0%或大于100%的入射光。
整个菲涅耳方程有点复杂,所需的材料参数(复杂至少可以说,在可见光谱上密集采样的折射率对艺术家来说并不方便。但是,可以通过更简单的表达方式,通过检测这些方程式对真实世界材质的行为结果参数化。基于这一点,让我们看看图表在图24中。

这个图表选择的材料代表了各种各样的东西。 尽管如此,一些共同的因素
可以看到。 对于0◦到45◦之间的入射角,反射几乎是恒定的。 反射率在45◦之间变化更显著(通常,但不总是有所增加大约75◦。 最后,在75◦到90之间◦反射率总是迅速达到1(白色)。

看这些值和角度范围在一个简单的3D场景中是如何变化的,把微表面理论物体放进场景,我们将看到一个简单的情况:反射从一个光学光滑的金属表面发出。 这样的表面能准确地反射出每一条入射光线方向。 将此行为表示为BRDF是不合理的(它折叠了增量的函数),但是有一种更简单的方法来模拟它的渲染:如从方向的入射辐射反射到视角方向向量,将其乘以菲涅耳反射率以获得输出辐射。 这在光照模型下效果很好,可以呈现任意方向的入射光(照明模型将在这些说明的后面进一步讨论)。 在这种情况下,菲涅耳的“入射角反射率应使用表面法线n与视图向量v之间的角度计算 (本例中的传入向量是v绕n的反射,并具有相同的角度)。 图25显示这个角度(以及由此产生的菲涅耳反射率)是如何在一个简单的三维场景中变化的。 我们可以看到绿色和黄色区域占主导地位-菲涅耳反射率几乎没有变化超过大多数可见像素,仅在边缘显著增加。

在微表面理论中,我们处理的不只是光滑的表面,还有局部光滑的微表面理论。 在这种情况下,我们对单个表面点的菲涅耳反射率关注,因为贡献BRDF的表面点都有等于半向量的微表面法线h(回想图22),h是用来计算菲涅耳反射率的向量的。菲涅耳入射角为h与l之间的夹角。

物理渲染数学(s2013_pbs_physics_math_notes)
图24:各种物质的菲涅耳反射率,绘制(y轴)作为传入的函数角度(x轴)。 由于铜和铝的反射率有很大的变化可见光谱,它们的反射率显示为R、G和B的三条独立曲线。铜的R曲线最高,其次是G,最后是B(因此它的红色)。 铝的B曲线最高,其次是G,最后是R。

物理渲染数学(s2013_pbs_physics_math_notes)
图25:在左边,我们可以从图24中看到菲涅尔图,其中有三种覆盖的颜色
基于光滑表面法线与视图或光方向之间的角度的区域。 绿色对于反射率几乎恒定的区域(0◦到45◦),黄色的区域(45◦到75◦)在哪里反射率逐渐变化,红色区域(75◦至90◦)的反射率迅速上升到1。在中心图像中,这些区域被可视化在三维物体上,以表示n和v之间的角度(这一点是在光学平坦表面情况下菲涅耳反射率的相关角度)。 在右边我们可以看到玻璃的菲涅耳反射率(图24中的绿色曲线)显示为相同的颜色对象。

图26以图25的方式可视化h和l之间的角度在n和v之间。从图中可以看出,对于某些光线角度,黄色甚至红色区域为主。 然而,正如我们在图27中所看到的,这是误导性的:当剩下的BRDF加入,那么很明显,红色区域(反射率增加的地方显著地)仅限于边缘。

物理渲染数学(s2013_pbs_physics_math_notes)
图26:此图显示了h向量的菲涅耳区域,法线n使用了与图25中相同的方法。 由于h矢量依赖于光方向l以及视图方向v,该图包含四幅图像-每幅图像的光线方向不同。 我们可以看到对于确定的光线角度,整个物体可能在黄色甚至红色区域。 正如我们将在图27中看到的,这是有点误导。

物理渲染数学(s2013_pbs_physics_math_notes)
图27:在此图中,菲涅耳区域颜色(如图26所示)乘以其他部分微表面BRDF(法线分布函数、几何函数等。)。 光的方向进去这四幅图像与图26中的图像相匹配。 我们可以看到,当完整的BRDF被纳入由于绿色区域占主导地位,红色区域只能在极端边缘看到。 在这个场景中对于光滑的表面有温和的光泽,这种效果甚至更强。

3D场景中由于菲涅耳反射率在给定的大多数可见部分上保持接近0◦的值
,我们可以认为这个值(我们将表示F0)是高光反射材质的。 这个值具有的属性通常被认为是“颜色”属性-它是由0到1之间的RGB值组成,是光的选择性反射率的度量。出于这个原因,我们也将这个值称为表面的高光颜色。

F0看起来是菲涅耳反射率近似的理想参数,实际上是Schlick给出一个廉价和合理准确的近似,使用它:

物理渲染数学(s2013_pbs_physics_math_notes)

这种近似在计算机图形学中得到了广泛的应用。 微表面BRDF中使用时,有效的微表面理论法线h必须代替表面法线n:

要知道哪些值分配给F0是合理的,查看真实世界中的材料各种值是很有用的。 这些可以在表1中找到。 值在线性空间和伽马空间中都给出;我们推荐任何不熟悉线性空间中着色的重要性的人(和从伽马空间转换阴影输入所涉及的问题)查阅一些相关资料。

物理渲染数学(s2013_pbs_physics_math_notes)
表1

在检查表1时,有几个明显的现象。 一是金属与非金属相比,F0的值偏高。 即使是铁,一种相对较暗的金属,在0◦时也能反射50%以上的光。 回想一下,金属没有次表面反射;明亮的镜面颜色,没有漫射颜色是金属的显著视觉特征。 另一方面是钻石,其中最亮的非金属之一,在0◦时只反射17%的入射光;比大多数非金属反射明显还少。 少数材料在“无人之地”的值在20%到40%之间;这些是通常是半导体和其他外来材料,它们不太可能出现在着色情况中情况。 低于2%的值(水的F0值)也是如此)。 实际上,除了金属,宝石和晶体,几乎任何你可能在实验室之外看到的材料有一个窄范围的F0值,在2%和5%之间。

法线分布函数

大多数微几何表面没有均匀的表面点取向分布。更多的表面点有法线指向“向上”(指向宏观表面法线n“侧”。 通过微表面定义了表面取向的统计分布-法线分布函数D(m)。 与F()不同,D()的值不限于在0到1之间-尽管值必须是非负的,但它们可以任意大(表示在法线指向特定的方向非常高浓度的表面点)。 也不像F(),函数D()不是谱值,也不是RGB值,而是标量值。 在微表面BRDF中,D()是对方向h进行评估,以帮助确定潜在活性表面的浓度点(m=h的点)。 这就是为什么法线分布函 数出现在方程4中作为D(h)的原因。

函数D()决定了高光的大小、亮度和形状。 几个不同的法线分布函数出现在图形学文献中。许多是类似高斯模糊,有某种“粗糙度”或方差参数,而各向异性函数通常是有两个粗糙度参数(就像一些先前发表的各向同性参数一样)。 作为表面粗糙度降低,微表面法线的浓度在整个表面法线n增加,D(M)的值可以变得很高。 Walter等人讨论正确的对分布函数进行归一化,并给出了几个例子;可以找到更多的例子其他文献。

几何函数

几何函数G(l,v,h)表示给定微几何法线m,从光方向l和视角方向v都相互可见。在微表面BRDF中,m替换成h(原因和前两项一样)。G()表示概率,它的值是标量,限制在0到1之间。就像在在D()的情况下,各种文献中有不同的G()解析表达式,这通常是基于表面的一些简化模型的近似。 几何函数通常不会向BRDF引入任何新参数;它要么没有参数,要么使用D()函数的粗糙度参数。 在许多情况下,几何函数部分取消方程4中的(n•l)(n•v)分母,用其他表达式代替它。
几何函数对于BRDF能量守恒是必不可少的,没有这样一个术语约束BRDF可以任意反射比它接收到的更多的光能。 微表面BRDF推导的关键部分与有效表面积(反射光的表面积所覆盖的面积)与(能量从l到v)和宏观表面的总表面积之间的比率有关。 如果是阴影或蒙版则忽略,那么有效面积可能超过总面积,这是一个明显的不可行的,可能导致BRDF不遵循能量守恒,在某些情况下这是个很大的数额(见图28)。

物理渲染数学(s2013_pbs_physics_math_notes)
图28:在顶部,平坦的宏表面呈绿色,粗糙的微表面呈黑色。 用红色标记m=h的表面区域。投影宏表面积(在这个二维侧面插图中的长度)到视图方向(换句话说,它缩短的表面积)显示为左上方的绿线(视图方向本身由图形中间的紫色箭头显示)。个别红色的投影区域表面区域显示为单独的红线,在左上角,我们看到添加上它们后,有效微几何区域(长红线)的投影大于投影宏观区域(绿线)。这是不合逻辑的,更重要的是可以导致BRDF反射比它收到的更多的能量。 在底部,红线只显示可见的部分有效的表面区域。活动微几何区域的投影现在小于宏观区域,这是正确的。 当视角较低时,那么这个效果就会更明显,忽略掩蔽的效果可能导致BRDF反射数千时,接收到的能量数量或更多(反射能量的数量将达到无穷大当角度达到90◦时,极限)。

微表面模型的局限性

这种微相理论的表述是相当强大和灵活的,允许大量的不同的表面通过改变参数值(镜面颜色,粗糙度的法线分布)或某些表格确定的值项(法线分布函数、几何函数)。 但是,有几种现象它没有建模。 如果这些是重要的,那么需要修改或对模型进行扩展。

微表面模型没有考虑明显的波光学效应,如衍射还有干扰。 这在实践中不是一个大问题,因为这种效果并不经常发生在生产渲染中。 当它们出现时,通常使用临时技术来解决它们,而不是基于物理的模型。 更微妙的波光学效应可以发生在“光滑的表面”尺寸接近可见波长的时候,或更大的表面特征,有效地变小由于放牧角度的缩短效应。 已发布的解决这些影响的模型有通常是full wave-optic光学模型,但没有看到太多的在生产中使用,因为他们复杂性。 开发更便于生产的模型来解决这些影响将是欢迎的。 光学工程领域(例如,[12])的有希望的模型已经开始影响图形文献[51]。

此外,微表面模型是基于相对有限的表面微地块模型尝试,有几个未说明的假设。 例如法线分布函数的定义,假设微几何表面取向的可见分布不随其变化观察的方向。 这相当于假设微几何高度和法线是不相关的。 然而,这个假设并不总是正确的,这会影响BRDF。 想象一下表面最初是均匀粗糙的,但凸起的部分已经通过摩擦抛光。在一瞥角度,只有凸起的部分将是可见的,使表面比其他角度更光滑。 见图29。

物理渲染数学(s2013_pbs_physics_math_notes)
图29:高度和方向之间有很强相关性的表面(凸起的区域是光滑的,较低的区域是粗糙的)。 顶:光线方向接近宏观表面法线。很多人射光线到达粗糙的坑,并分散在广泛不同的方向。 底:光线来自一个低角度的方向。 凹坑被遮挡,所以大多数射线都是从光滑表面的部分反射出来的。这导致照明中有效的法线分布函数随角度的变化很大。

最近的研究表明,替代结构或修改基本的微表面模型可能在某些情况下产生更好的拟合测量数据,这很可能是由于一些上述影响的组合。 需要进一步的研究来理解这些结果。
虽然最终微相理论可能需要被替换(或至少扩展)作为理论建模表面反射率的基础,目前它是我们最了解和最成功的工具已经。

次表面反射(反射项)

文献中有几种用于次表面局部反射的模型;Lambertian模型是最简单也是使用最广泛的之一。 Lambertian BRDF实际上是一个常量;众所周知的余弦或(n•l)因子是反射方程的一部分,不是BRDF(公式1所示)。Lambertian BRDF的准确值是:

物理渲染数学(s2013_pbs_physics_math_notes)

这里,Cdiff是漫反射光线的分数。 与F0的情况一样,它是一个RGB值,R,G,B限制在0−1范围内,并与多数人认为的对应“表面颜色”。 这个参数通常被称为漫射颜色。

其他漫射模型试图解决Lambertian模型没有建模的现象,例如在低角度时作为高光反射项和漫射项之间能量的权衡。 漫反射项模型次表面反射,它只能利用输入的能量,而这些能量没有反射回来表面。 从某种意义上说,高光可以在入射光能和漫射项上获取“我要的”,但漫反射只有“剩菜”。 由于菲涅耳效应导致镜面反射率在低角度时增加,因此漫反射项必须在这些角度下减小。 有各种办法模型这种权衡,从简单(将漫反射项乘以1减去菲涅耳因子)到更复杂和准确的方法。

其他漫射模型试图解释表面粗糙度的影响。了解尺度在这一现象中的作用很重要。正如我们所看到的,次表面散射使光在重新发射之前在表面下旅行一定距离。 任何表面不规则小于这个距离不会对地下反射率产生影响, 在区域表面大于不规则大小的,光被发射从任何表面点都将分散。 然而,某些表面粗糙的尺度大于散射距离,这些表现出明显不同于Lambertian模型的外观。 各种模型已开发以处理这些案例。 这是一个常见的误差,这些模型是用来渲染特别粗糙的表面,但这不是真的-关键的标准不是程度粗糙度,只是粗糙表面细节的大小相对于次表面散射距离。

其它项

如前所述,有两类反射率现象“介于裂缝之间”由漫射项(多弹跳次表面散射)和微表面项(单反射表面反射率)。
一种是次表面单次次散射,光被折射到表面,经历一个单一的散射事件,然后被折射回表面。 这种现象表现出一些漫反射和镜面反射的特点;它有很高的角度依赖性,但它是受物体表面下介质性质的影响。
另一种现象是多次次表面反射,其中光在两者之间反射离开表面之前有多个表面点。 如前所述,微表面模型忽略多个表面反弹效果,假设所有被遮挡的射线都丢失了,与现实世界的相比会导致能量损失。
不过,不妨引入更多的BRDF术语,以涵盖这两种情况他们缺乏良好的公布模型。 值得注意的是,这些现象也会产生影响从地下反射率中分离表面的常用方法如偏光法。

生产中实现物理模型着色

在上一节中,我们看到了通常用于描述表面的数学模型着色。 在本节中,我们将简要讨论如何在电影和游戏制作中使用这些模型。要实现着色模型,需要与光照模型相结合。 在下main各章节中,我们会结合最常见的照明模型类型来使用BRDFs。

通用照明

在最一般的情况下,BRDF必须与来自各个方向的入射光集成在一起。这包括天窗和场景中其他物体的精确反射。 为全面解决这个问题,需要全局照明算法,如蒙特卡罗射线跟踪。 对这些的详细描述算法超出了这篇演讲的范围,但更多的细节可以在各种参考文献中找到。

基于图像(烘培)的照明

基于图像的照明通常以代表远距离照明的环境地图的形式存储。环境(烘培)图可以很容易地表示来自非常光滑(像镜子一样)物体的反射。通过方程5对菲涅耳反射率进行建模,用视角向量代替光向量进行调整(镜子法线的角度保持不变,所以两者是等价的)。 当表面法线向后朝向视角方向时可能会出现困难(这可能是由插值顶点引起的法线和/或凸点映射);这既影响反射方向,也影响菲涅耳反射率值,虽然不正确的反射方向很少被注意到。 如前所述,要么a夹紧至0或绝对值可用于避免视角向量和法线的点乘为负值;在这种具体情况下,取绝对值可能更好。 不像clamping,取绝对值将限制与极视角相关的菲涅尔值到窄像素波段,这在视觉上更可信。

环境映射图也可以与任意的BRDF一起使用,但可能需要准确的结果许多样品以避免噪点。 映射图的采样重要性有助于将样本数量保持在更容易管理的数字(至少对于电影渲染)。 环境映射图预过滤是另一种可以在生产中有效的方法,要么本身(即执行单个预过滤样本-游戏中的一种常见技术,但通常不用于电影制作),或在结合重新抽样。 原则上,单个预过滤样本是粗近似的反射率方程,小心使用可以是相当有效的。 这很重要确保预过滤过程占用的环境映射表示以及NDF叶的形状和大小。 然后,当读取预过滤样本时,它应该乘以一个合理近似反射率积分的因子。 可能是这样视为将积分分解为两个因素的乘积,预过滤环境映射查找以及在着色器中应用的第二个因素。

从理论上讲,环境映射图只能用于表示对象的反射。从靠近物体和反射点的角度看的场景(没有反射物体)物体凸出并与反射场景相距较远。这些假设中有许多被打破了实践。非凸面对象应自我遮挡环境-这可以忽略(常见于游戏),用一些简单的遮挡项(例如AO [29])进行近似,或更准确地建模通过对物体的某些表示跟踪光线[22、57、67]。反射物体也可能是足够近以在不同的表面点上具有明显的视差-特别是当反射物体很大。最后,可以从以下位置的不同位置采样环境图场景,甚至完全来自另一个场景。事实证明,在许多情况下,人眼是对视差或使用远离其样本的环境贴图引起的错误不敏感位置。只要总体颜色和强度正确,被反射的形状通常可以在没有引起观众注意的情况下完全是错误的。整体匹配非常简单环境图的颜色和强度与局部场景照明的关系[50],使环境图成为在许多情况下都是有效的工具。反射不明显的实例(例如,发亮的地板,通常可以解决赛车游戏中玩家的汽车,电影中闪亮的金属英雄角色)通过使反射变形作为校正步骤。

区域光源

诸如太阳和灯之类的光源具有强度和面积。 从理论上讲,它们可能是在环境映射图中使用HDR纹理像素补丁处理,但是将它们分开处理具有优势。 与基于图像的照明相比,从区域光源计算阴影要容易得多,视差可以得到更正确的处理,并且艺术家可以更轻松地调整灯光位置,亮度和大小,而无需编辑基于图像的照明表示。与基于图像的照明相比,使用面光源对任意BRDF进行着色也更容易。多重重要性采样可以大大降低噪声(此技术可以与以及基于图像的照明使用,但对于区域照明尤其有效)。 实时近似存在,并且越来越受欢迎。

守时光源

通常可以用(尤其是在游戏中,尽管电影也使用了此功能)来估计区域光守时光源的光源。 这些是经典的计算机图形学计算点光源、方向光和聚光灯(也使用更复杂的变体)。 由于它们无限小且无限明亮,守时的灯光在物理上无法实现或逼真,但它们在许多情况下确实可以产生合理的效果,并且计算方便。

点光源对给定表面点的影响由两个量定义:
颜色C light和光方向向量l c。 根据守时灯的类型,这些数量在整个场景中可能是恒定的(即在使用全局方向光的情况下),也可能会变化(例如,对于点光源c的光会随着距离的增加而减小,而l c将取决于到光位置的方向。为了便于观察,通常将Clight光定义为来自理想化表面的反射辐射。即100%白色Lambertian表面,其法线平行于光方向矢量(n = l c)。像我们看到的其他颜色数量一样,c光是光谱(RGB)值,但与它们不同的是,它的范围是无界的。

守时光源的主要优点是可以大大简化反射率,(方程式1),如我们在此处所示。 我们将从仅由一个(很小)面光源。 光源包含在一个锥角为ε的圆锥体内以l c为中心,因此没有光从此圆锥体外部的方向入射:

物理渲染数学(s2013_pbs_physics_math_notes)

我们根据给定的表面点测量面光源的照明度。Clight光的定义; 换句话说,Clight光等于表面点所具有的反射辐射,如果其材料是100%白色Lambertian模型,并且其法线等于l c:

物理渲染数学(s2013_pbs_physics_math_notes)

这只是c diff = 1且n = l c的等式1和7的结果。 现在我们将ε驱动为0,保持c light的值恒定。 由于我们将ε(l c和l之间的最大角度)驱动到0,在极限条件下,我们可以假设(l c•l)= 1,从而得出:

物理渲染数学(s2013_pbs_physics_math_notes)

简单的重新排列将积分的值隔离在极限范围内:

物理渲染数学(s2013_pbs_physics_math_notes)

现在,我们将我们的微小区域光应用于一般的BRDF,并将其行为视为ε转到0:

物理渲染数学(s2013_pbs_physics_math_notes)

请注意,在公式12中,通过隔离f(l c,v)和(n•l c),我们有效地切换了极限和积分; 只要BRDF f()的行为合理(对于任何实际使用的BRDF)都是有效的。 将公式11代入公式12的右侧给我们最终的守时光方程:

物理渲染数学(s2013_pbs_physics_math_notes)

与原始反射率方程相比,我们已将积分替换为单个BRDF评估,计算起来便宜得多。 在游戏中,通常将点积钳入将该方程设为0是跳过背面光贡献的便捷方法。

如上所述,在定向光源(例如太阳)的情况下,l c和Clight都是在场景中为常量。 对于其他点光源,例如点光源和聚光灯,两者都会有所不同。 实际上,Clight会与光的倒数平方到光的距离成反比地下降(减小)。但实际上通常使用其他衰减功能。

如果多个守时光源正在照亮表面,则公式13的计算将是多次和结果相加。 由于缺乏标点光源,守时光源很少仅自己单个使用, 因为这样很缺乏各个方向的照明,尤其是在高镜面的情况下。因此,通常将守时灯与某种环境或基于图像的照明相结合灯光; 后者已经讨论过,而前者将在下一节中讨论。

环境光

在这里,我们将环境照明定义为低频照明的一些数值表示,范围为从在所有入射方向上的单一恒定的灯光颜色和强度到更复杂的表示-诸如球谐(SH)之类的状态。 通常,这种照明环境仅适用于漫反射BRDF项; 对于高频,用基于图像(映射)的照明应用于镜面反射项。 然而,也可以将环境照明环境应用于镜面BRDF项。 大部分的公开的执行此操作的方法源自游戏行业。

建立基于物理的着色模型

在本节中,我们将讨论从头开始构建模型。 讨论有关转换非物理模型转换为基于物理模型的模型,请参见我们的SIGGRAPH 2010课程介绍[35]。
根据前面讨论的原理构建基于物理的着色模型的几个原则,有几个选择。 漫反射模型是必选的,以及D()(法线分布函数)和G()(几何函数)用于微表面镜面反射模型。 本节的其余部分将重点介绍两个镜面反射函数。
D()和G()函数的选择在某种程度上是独立的。 大多数提出新建议的论文
微表面BRDF模型最好理解为引入了新的D()和/或G()函数。

选择法线分布函数

最常见的NDFs(正态分布函数)是各向同性的,它们是旋转对称的,围绕由宏观表面法线n定义的轴的圆锥形。 这意味着这些NDF可以被定义为一个变量的函数:m(微观几何法线)和n之间的夹角。在着色器中,处理角余弦最方便,因为可以轻松地使用点产品。 因此,各向同性NDF通常写为n•m的函数。 各种这样在文献中已经提出了用作NDF的功能; 但是,他们都必须正确标准化后用作微面BRDF的一部分。 几个已发表的各向异性NDF在游戏和电影制作中也有使用,但出于篇幅原因,我们将讨论范围限制这里是各向同性的NDFs。

任何微几何法线分布都需要满足从任何角度看的要求角度,可见的微几何面积加起来就是可见的宏观表面积。 更确切地说,微几何的符号投影面积之和必须等于微几何的符号投影面积。宏观表面 这对于任何观察方向都必须成立[73]。 从数学上讲,这意味着该函数必须满足任何v的以下等式:

物理渲染数学(s2013_pbs_physics_math_notes)

请注意,积分不仅覆盖半球,还覆盖整个球体,因为余弦系数未在背面有负值分布。 这个等式适用于任何一种微观表面,而不仅仅是较高区域。 在特殊情况下,v = n:

物理渲染数学(s2013_pbs_physics_math_notes)

对于直接的BRDF评估,NDF评估性能更优,尤其是在游戏中和其他实时渲染应用程序。 对于光线追踪,重要性采样的难易程度至关重要。

我们将在此处查看的所有微观几何法线分布均经过评估仅适用于正面的微几何法线(即n•m≥0-这可以解释为建模高度场表面,微观几何体法线和法线之间的夹角绝不能超过90°
宏观表面法线)。

这些函数无意评估n•m的负值,如果产生负值,将产生不良结果。 在强制光和视角都前向的渲染器中方向,这不是问题,因为half-vector(将对其评估NDF)将是也是正面的。 否则,在视角方向下法线插值和法线贴图可能会导致背向,因此是后向的半向量。 通常通过将n•m钳位为0或(如果出现在分母中,请避免被零除)为较小的正ε值。

Phong着色公式是最早(也是绝对影响最大)的计算机图形学文献中提出的方程之一。 几年后,Blinn对其进行了修改,以更好地适应微面BRDF的结构(此修改通常称为Blinn-Phong BRDF,但我们将生成的NDF简称为“ Phong NDF”。 Blinn没有指定归一化因子,很容易计算:

物理渲染数学(s2013_pbs_physics_math_notes)

能量αp是Phong NDF的“粗糙度参数”;高值表示光滑的表面低值表示粗糙值。对于非常光滑的表面,值可以任意高(完美镜将需要αp =∞),并且可以通过以下方法获得最大随机表面(均匀NDF)将αp设置为0。由αp参数不方便于艺术家无法直接操纵,因为它的视觉效果非常不均匀。较小的数值变化对于较小的αp具有巨大的视觉效果值,但是可以在不产生太大视觉影响的情况下大幅更改大值。因此,它让艺术家操纵“接口值”是很常见的,通过非线性可以从中得出αp功能。例如:αp = m s,其中s是介于0和1之间的艺术家操作值,而m是给定表演或游戏中αp的上限。这种“接口功能”通常在以下情况下有用:BRDF本机参数的行为不便于生产使用。图30显示了Phong余弦功率的分布曲线根据对数刻度均匀分布。

在同一论文中,Blinn将Phong阴影功能改编为微面NDF,他还提出了另外两个NDF。 其中之一源自Torrance-Sparrow BRDF [70]。将Torrance-Sparrow NDF与Phong进行比较时,它的总体行为似乎非常相似以更高的计算成本(请参阅这些说明随附的Mathematica笔记本以获取详细信息),所以有点死胡同。 Cook and Torrance [15,16]后来的工作建议替换它。

物理渲染数学(s2013_pbs_physics_math_notes)
图30:具有对数间隔的余弦幂的Phong分布。 在左边,αp(余弦功率)值从0到8不等。中间是16到128,右边是从256到2048。

具有不同的NDF,通常称为贝克曼(Beckmann)分布。 正确归一化后Beckmann分布具有以下形式:

物理渲染数学(s2013_pbs_physics_math_notes)

Beckmann分布在某些方面与Phong分布非常相似,并且基本原理-完全不同于其他人。 这两个参数的等效值可以使用关系物理渲染数学(s2013_pbs_physics_math_notes)
,它们对于相对光滑的表面(αb <0.5或17左右)非常匹配,如图31左侧所示。对于更平滑的表面(αb <0.1左右),匹配为
几乎完美。
物理渲染数学(s2013_pbs_physics_math_notes)
图31:Beckmann(品红色)和Phong(蓝色)分布的比较。 在左侧,我们看到两者对于光滑表面非常相似(αb的值范围从0.2到0.5)。 在右边,我们发现它们在中等粗糙度的表面上有所不同(αb的值范围从0.6到1.0)。

考虑到贝克曼(Beckmann)与Phong的明显相似性以及较高的计算量成本,这似乎也是一个死胡同。但是,两者之间有根本的区别两者是由于它们不同的参数设置所致。 αb参数等于均方根微观几何表面的平方(RMS)斜率。所以增加αb意味着增加平均值微观几何斜率,即“粗糙度”与“αp减小导致的“随机性增加””的不同含义。而Phong分布具有“最大粗糙”参数值(αp = 0,对应于微观几何法线相等的均匀分布指向上半球任何地方的概率),相应的值(αb = 1)没有对于贝克曼(Beckmann)的特殊含义-仅表示RMS微几何斜率是1或45°。对于αb的中等粗略值,我们可以看到贝克曼在分布的中间得到了“浸入”而不是像Phong那样扁平化(请参见图31的右侧)。当αb超过1时,您得到具有高RMS微观几何斜率的“超粗糙”表面-与均匀表面相比,这些表面的随机性较小分布,但在某种意义上说“较粗糙”,因为它们不那么平坦。查看曲线(图32),我们可以看到,随着粗糙度的增加,分布中的“倾斜”变为“反向峰值”(实际上是一个环)在90度。
物理渲染数学(s2013_pbs_physics_math_notes)
图32:Beckmann分布可以构建出具有大部分陡峭的倾斜的微几何形状(此图中αb的值范围为1到7)。

这样的“超粗糙”分布对建模任何现实表面有用吗? 也许,许多尖锐的朝上的线会组成类似纤维和绒毛似的微观结构,其他材料也可能如此。 在任何在这种情况下,对于高αb值,贝克曼分布的这种行为是已知的,否则别的方式基本上是Phong NDF的较昂贵版本。

Blinn的论文中讨论的最后一个NDF(以及Blinn建议使用的NDF)来自Trowbridge和Reitz 。 Blinn没有为Trowbridge-Reitz NDF指定归一化因子,但是后来的论文(将其称为“ GGX分布”)给出了正确的因子。 由于“ GGX”分母的形式略为复杂(但等效),因此我们使用原始,简单的形式如下:

物理渲染数学(s2013_pbs_physics_math_notes)

图33展示了αtr参数值变动的效果。 参数控制与贝克曼(Beckmann)的相似之处在于,增加该值会使表面更粗糙。 Trowbridge-Reitz可以对均匀分布(例如Phong)和“超粗糙”曲面(例如Beckmann)建模。

将Trowbridge-Reitz分布与Phong分布进行比较(图34)时,显然,这两个分布具有根本不同的形状。 在整个参数空间中Trowbridge-Reitz始终具有比Phong窄的峰(对于在高光中心处产生相同值的参数值)以及围绕这些峰的较长“尾部”。

物理渲染数学(s2013_pbs_physics_math_notes)
图33:左侧显示了从0.4到1的αtr值的Trowbridge-Reitz分布。就其参数而言,分布的行为类似于Beckmann:较高的参数值会产生更粗糙的表面。 与Beckmann不同的是,值为1表示均匀分布。 在右边,我们看到像Beckmann一样,Trowbridge-Reitz对于较高的参数显示“超粗”行为值(此图中的αtr值范围为1到7)。

物理渲染数学(s2013_pbs_physics_math_notes)
图34:Trowbridge-Reitz(红色)和Phong(蓝色)分布的比较。 左图显示出粗糙到中等的表面(αtr值在0.4到1.0之间)。 右图显示更流畅表面(αtr值介于0.1和0.4之间)。 在这两个图中,Trowbridge-Reitz显然具有不同的形状比Phong的“峰值”更窄,“尾巴”更长。

Burley 为Trowbridge-Reitz建议了一个简单的“接口函数”:αtr = s 2,其中s是艺术家操纵的值,介于0和1之间。

在对真实表面建模时,着色模型需要表现良好。 几位研究人员已发布了测量的BRDF数据,其他人已经针对多个着色模型比较了该测量数据(或它们自己的度量)。 这些比较倾向于
表明许多材质不能通过现有模型很好地建模。 而最近,有开发出了有效的模型,特别是为了更好地表达精准的表面。我们鉴定了NDFs分布的三种描述。

Löw等。 使用丘奇等首先引入的ABC分布。 在两个不同方法。 ABC分布最初用作表面的光谱功率分布高度场(用于考虑了波浪效应的光滑表面BRDF),并且也被重新指定为微型NDF。 非规范分布函数具有以下形式:

物理渲染数学(s2013_pbs_physics_math_notes)

它有两个参数,αabc(对应于原始论文中的“ B”参数)和γabc(对应于原始论文中的“ C”参数,“ A”参数是比例因子,因此归入规范化)。 作者没有发布标准化因子,但是我能够使用Mathematica生成一个:

物理渲染数学(s2013_pbs_physics_math_notes)

此函数在γabc = 1和γabc = 2时具有奇点。但是,我们可以为这些值计算出特定的标准化值。这些与相邻的值的通用函数的限制值一样, 表明可删除那些奇点:

物理渲染数学(s2013_pbs_physics_math_notes)

归一化的BRDF等于k abc D uabc。 k abc的表达式有些复杂(尤其是(当考虑奇点情况时),但在绘制时会产生平滑曲线,使用类似的方法会更适合。
物理渲染数学(s2013_pbs_physics_math_notes)
图35:具有各种参数值的标准化ABC NDF。 最上面一行的每个图都不同αabc(B)参数(从1到1000),同时保持γabc(C)值恒定。 每个情节最下面一行在保持αabc(B)值恒定的同时,改变γabc(C)参数(从0.1到1.5)。该图中使用的参数值范围涵盖了由Matsik拟合的大多数Matusik数据集材料Löw等。

图35显示了两个参数都有不同值的ABC NDF。 我们看到的NDF以前只有一个参数; 改变ABC NDF的两个参数使其能够形成各种形状,从而改进了BRDF对许多不同测量材料的适合性。一些实验表明,通过更改γabc参数的值,ABC分布可以模仿Trowbridge-Reitz和Phong(图36)。 此外,降低γabc的值参数所产生的曲线甚至比Trowbridge-更“尖锐”(峰值更窄,尾部更长),Reitz,如图37所示。

物理渲染数学(s2013_pbs_physics_math_notes)
图36:通过更改γabc参数的值,将显示ABC分布(绿色虚线)以匹配Trowbridge-Reitz(红色,左侧)和Phong(蓝色,右侧)。 左图显示Trowbridge-Reitz的αtr值介于0.3和0.7之间,ABC的γabc值为1.75(已手动调整αabc以匹配相应的Trowbridge-Reitz曲线的峰值。
右图显示的Phong的αp值在2到20之间,ABC的γabc值为1000(当γabc达到无穷大时,ABC似乎渐近逼近Phong;如左图所示,手动调整了abc值)。 尽管未显示更平滑的表面,但对应关系也适合他们。 请注意,与Phong完全匹配所需的γabc值要高得多比Löw等人在Matusik数据库拟合中使用的任何数据都要多。 这可能表明现实世界材料倾向于不具有高斯正态分布。

Bagher等人的最新论文。 提出了偏移的伽马分布(SGD)作为微面
NDF。 NDF具有以下形式:

物理渲染数学(s2013_pbs_physics_math_notes)

P22定义为:

物理渲染数学(s2013_pbs_physics_math_notes)

其中Γ()是不完整的伽玛函数:物理渲染数学(s2013_pbs_physics_math_notes)
。注意,αsgd和γsgd参数在原始论文中分别称为α和p。像ABC NDF一样,SGD是各向同性的,并具有两个参数,并且主要是为了适合测量的BRDF(例如Matusik数据库。但是,它所使用的BRDF具有一些不同寻常的品质-它们是分开的红色,绿色和蓝色通道的参数,“菲涅耳”函数是一条广义曲线,通常表现出与实际菲涅耳完全不同的表现。由于这些原因,可能很难直接将SGD与其他NDF(例如ABC)进行比较。例如,我们可以在图38中看到SGD即使对于中等光滑的表面,NDF也会迅速变为0,并且无法描述其他NDF的“长尾巴”特征,例如ABC;这可以通过一些独特的属性来补偿使用它的BRDF的名称。在图38中,我们还看到,与ABC不同,SGD NDF可以建模有点“超粗糙”的表面,尽管(如前所述)尚不清楚此功能的用处是(而且,同样,在材质拟合中也找不到产生此行为的参数组合。无论如何,p22 都非常复杂(很少有着色语言包括Γ()作为内置函数),但由于它是一维的,因此可以用更简单的方法近似功能或查询表。

物理渲染数学(s2013_pbs_physics_math_notes)
图38:具有各种参数值的归一化SGD NDF。 最上面一行的每个图都不同αsgd(纸张中的α)参数(从1到0.1),同时保持γsgd(纸张中的p)值不变。 最底行的每个图都会改变γsgd(p)参数(从0.0到1.5),同时保持αsgd(α)值常数。 该图中使用的参数值范围涵盖了粗略的Bagher等人拟合的Matusik数据集中的中等光滑材料。

本节讨论的最后一个NDF(以及最新开发的NDF)是Burley提出的Trowbridge-Reitz NDF 。 该提议的灵感来自于以下事实:Berry分布是原始论文中讨论的其他分布之一,其形式与Trowbridge-Reitz分布非常相似,但指数为1而不是2-结果是更长的尾巴 这促使Burley提出了通用行人桥Reitz(GTR)分布,具有可变的指数。 非规范分布函数具有以下形式:

物理渲染数学(s2013_pbs_physics_math_notes)

有两个参数,αgtr(对应于原始Trowbridge-Reitz分布中的αtr参数,Bution)和γgtr,当它们等于2时,GTR分布与TR相同,并且与其他值会产生不同形状的分布。 白肋烟还给出了归一化因子,在一般情况是:

物理渲染数学(s2013_pbs_physics_math_notes)

该函数在γgtr = 1和αgtr = 1时具有奇异性。但是(与ABC一样)特定的归一化可以为这些值计算因子。 再次,这些与常规的极限值相同这些值附近的函数,表明奇异点是可移除的:

物理渲染数学(s2013_pbs_physics_math_notes)

归一化的BRDF等于k gtr D ugtr。 k gtr的表达式有点复杂(尤其是当考虑了奇异情况),但在绘制时会产生平滑曲线,因此很可能(针对先前讨论的NDF),可以为其安装更简单的功能。

图39显示了GTR NDF,两个参数的值都不同。 GTR可以表达广泛各种NDF行为。 通过设置γgtr = 2,GTR当然可以轻松地与Trowbridge-Reitz相匹配。一些实验表明,通过增加γgtr参数的值,GTR分布也可以模仿Phong(图40)。 GTR还可以匹配ABC曲线的“更尖锐”版本γabc = 0.5(在前面的图37中可以看到),如图41所示。
物理渲染数学(s2013_pbs_physics_math_notes)
图40:像ABC一样,随着γgtr的值达到无限。 这两个图都显示了GTR分布,其中γgtr = 10000(棕色,左侧为实线,虚线为右侧)与Phong分布(蓝色)相比。 在左侧,我们看到分布
中度粗糙的表面略有差异(αp的值在1到8之间)。 在右边,我们看到它们几乎完全适合中等光滑的表面(αp的值介于8到100之间,尽管没有显示更平滑的表面,匹配也适用于它们)。 在这两种情况下,αgtr的值均为手动调整以匹配相应Phong曲线的峰值。

物理渲染数学(s2013_pbs_physics_math_notes)
图41:通过将γgtr参数的值设置为0.54,GTR(虚线棕色)可以相当与γabc = 0.5(绿色)的ABC分布的“尖峰”曲线紧密匹配。 在左边,我们对于相对粗糙的表面(αabc的值介于5到100之间)看到合理的良好匹配,右边是平滑材料(αabc在100到4000之间)的几乎完全匹配。 同时在这种情况下,手动调整αgtr的值以匹配相应ABC曲线的峰值。

列出所有这些NDF之后,问题是要推荐哪个。 经常发生空间变化在任何给定点,镜面反射性比精确的高光形状更重要。 在这些情况下,使用Phong NDF可能是最简单的,它在计算上是简单且合理的富有表现力的。 如果需要更逼真的高光形状,那么Trowbridge-Reitz可能是一个很好的选择。它的“宽边帽”形状可能比高斯人字形更适合实际材料叶。 Trowbridge-Reitz的另一个优势是已成功用于电影和游戏中生产[10,38,54,59]。 如果需要更具表现力的NDF,则在两参数各向同性中在此讨论的NDF(ABC,SGD和GTR)我建议使用GTR分配。 它是在某种程度上比其他两个更简单,并且也已用于电影制作中[10]。 然而,对于艺术家而言,此类NDF的空间变化可能难以管理。 一种可能有用的方法是通过定义通过(αgtr的一维线来减小参数空间的维数γgtr)空间(基于艺术品味或材料测量),并公开参数化,对艺术家而言。 另一种方法是仅公开其中一个参数(可能αgtr)用于通过纹理绘画进行空间变化,并且仅允许设置其他(最可能的γgtr)作为每个材料的常数。 在这种情况下,可能需要重新参数化以创建更清洁的“平滑度”和“形状”之间的分离。 一种可能的方法是使用统计概率分布的度量,例如方差和峰度(可能在某种程度上视觉上对应于“平滑度”和“尖锐度”)。

选择一种多边形函数

许多公开的微面BRDF取代了分子项G(l,v,h)和分母带有单个子表达式的(n• l)(n•v)项,因此为其命名是有必要的; 分母可以被认为是“缩短系数”,而这两个部分都与可见性有关,我喜欢称之为“可见度项”。 一些BRDF(通常用于游戏或电影制作中的那些)没有可见度项,这等效于将可见性项设置为1,从而隐式定义以下内容几何函数:

物理渲染数学(s2013_pbs_physics_math_notes)

实际上,这是一个针对高度场微表面的合理的几何函数(Blinn-Phong法线分布函数与之相对应,因为对于所有背面微几何形状,它均为零表面区域)。 当l = n和v = n时,G implicit()等于1,这对于高度场是正确的(否则微表面区域从宏观表面法线方向被遮挡)。 它去对于扫视视角或扫光角度均为0,这也是正确的(在增加至100%内时,被其他表面区域遮挡的表面点随视角的增加而增加)。 给定的几何函数实际上花费不到零个着色器周期计算(它抵消了缩短因子,因此我们不需要除以它)。

当将G implicit()与图形文献中的几何函数进行比较时,我们发现到0的速度太快以至于在适度的掠射角度它太暗。 换句话说,添加显式几何函数将具有使镜面反射项变亮的结果(这似乎与直觉不符合,直到我们回想起同时也引入了缩短因子)。 这个隐函数不受表面粗糙度的影响,这是直觉不符合的-我们期望粗糙表面具有比平滑表面更高的荫蔽和蒙版概率。图形文献中最早的几何函数之一称为“ Cook-Torrance”,并出现在那两位作者的著名论文中:

物理渲染数学(s2013_pbs_physics_math_notes)

然而,它早在几年前就出现在Blinn 的论文中,作为几何的重新表述。Torrance和Sparrow 仍在早期引入了功能。 Cook-Torrance几何函数多年来(特别是在电影中)已经使用了很多,但是它存在一些问题:它基于不切实际的微观几何模型(由无限长的凹槽组成的各向同性表面)及其也不受粗糙度影响。

除此之外的其它问题,Cook-Torrance在游戏方面还有些昂贵。 然而,Kelemen等。提出了一种非常便宜和有效的近似方法:

物理渲染数学(s2013_pbs_physics_math_notes)

这几乎和隐式几何函数一样省计算。 它近似于Cook-Torrance几何函数,除以缩短因子,只需要除以菲涅耳项无论如何都需要计算的点积的平方。

考虑到最终性能的准确性时,我个人推荐Smith系列几何函数。人们普遍认为它们比Cook-Torrance函数更准确,并考虑到法线分布的粗糙度和形状。 原始Smith函数是为Beckmann NDF设计的,但是Brown 和后来的Bourlier等人。 概括了将Smith函数转换为一种用于计算几何函数以匹配任何NDF的方法。 Walter等总结这些结果,并为相应的Smith函数提供有效的近似值。例如Beckmann和Trowbridge-Reitz(GGX)NDF 20和Bagher等人的文章。 给出一个近似值对应于他们建议的SGD NDF的Smith函数。

在我之前的陈述中,“Smith几何函数” 系列函数,几何函数的选择“某种程度上”独立于
NDF。 选择Smith函数系列时(例如与Cook-Torrance几何图形相反的函数)决定是否与所使用的NDF无关,一旦做出此选择,您应该使用正确的NDF Smith功能。

Smith系列功能用于电影制作,效果很好。前一篇文章的作者建议调整使用的粗糙度值。 已公布的各种Smith函数的近似值仍然比Kelemen昂贵得多函数,尽管很可能在游戏中找到更便宜的近似值Kelemen函数成功近似(更复杂)Cook-Torrance的方式几何函数。