再探PBR--微表面模型
还记得面试被问到是否了解PBR的时候,我每次都能吟唱而出:“PBR基于能量守恒理论,能保证入射能量和出射能量一致,其中,漫反射由Lambert项模拟,而金属材质由Cook-Torrance项模拟,Cook-Torrance基于微表面模型包括法线分布,几何遮蔽以及菲涅尔反射项。”每当被问到这些问题,我心里都在祈祷面试官不会继续追问下去,因为我并不清楚这几个神奇的式子究竟是从哪里冒出来的,和它声称的“微表面”模型的联系在哪里(实际上工业界可能确实不关心这些问题)。
最近刷了一下UCSD CSE 272,并阅读了Eric[1],在这方面又有些新的感悟,随撰文记录。
1.再探微表面模型
微表面模型假设了物体表面由无数微小表面构成的,这些微小表面的表现累积成了宏观上物体表面的表现。目前,网上很多流行的PBR教程都是这么描述的。然而,目前鲜有资料说明用更严谨的数学语言描述这些微表面的行为,微表面模型中法线分布D, 菲涅尔F以及几何遮蔽项G这些描述宏观统计表现的项是怎么”统计”出来的。而这就是本节的重点。
考虑一个微表面分布,如图1所示。
对于一个法线为
由了以上定义,我们可以定义法线分布(Distribution of Normal)。该项统计了在物体表面上朝向指定方向的微表面法线占整个区域的面积。如公式(2)所示。
其中,
在Eric[1]原文中,特意强调了这里Distribution of Normal与Normal Distribution的差异。但在后文关于BRDF的推导中,又直接使用这里的Distribution of Normal作为BRDF方程中的Normal Distribution,导致一定歧义。个人认为,Distribution of Normal与Normal Distribution主要在于一个是在确定面积下的确定面积量,一个是无限小微元上的密度,两者在一定程度上是等价的。
此外,考虑一块微表面区域
其中,A为 微表面区域面积。该关系可以通过积分换序证得,如公式(4)所示。
同样的对于定义在方向角上的任意函数
公式(5)的证明过程和公式(4)类似,这里不再赘述。
而对于定义在微表面上的任意函数
将其带入到公式(7)中便可验证。
公式(6)提供了统计了微表面中的某项属性并将其转到宏观表面尺度,进而使微表面模型转为我们可以计算的宏观表面模型。
2.从微表面模型到BRDF
本节将从微表面模型建立对应的宏观BRDF模型。
首先考虑对于物体表面
其中
在图2中,可以观察到微表面存在自成阴影的黑色区域,而这些黑色区域是不对最终的投影面积做贡献。因此,可以考虑在投影项
受限于算力,直接计算几何遮蔽项的显式解析式是不可能的。因此,我们需要考虑从一些宏观属性上约束几何遮蔽项。
观察图2,可以看到无论其微表面如何分布,在宏观表面不变的情况下,其投影区域的面积(绿色区域)是不变的。因此,我们可以通过公式(9)约束几何遮蔽
其中
代入公式(9)可以进一步化简为公式(11)。
根据公式(5)所述的几何关系,可得公式(12)。
其中为了简单记,
有了宏观出射辐射度与微表面出射辐射度之间的关系,只需计算微表面入射辐射度与入射辐射度之间的关系,我们便完成了BRDF推导的最后一块拼图。
定义微表面BRDF函数为公式(14)。
根据(13)的定义,可以写出
接着在公式(12)中,对
与公式(14)类似,定义宏观BRDF函数
其中
将(17)以及(13)带入(16)中可得公式(18)。
终于,经过繁琐的推导,我们得到了微表面BRDF与宏观BRDF之间的关系。这里,需要特别注意的是目前常见的几何遮蔽项一般会被分解为
下面,考虑如何定义微表面的BRDF。对于某块微表面,假设其只发生镜面反射,如公式(19)所示。
其中
将(19)带入到公式(14)中得公式(20)。
其中关于
将公式(20)带入到公式(18)中得公式(21)。
需要注意的是,在Eric[1]的原文中公式(20)被写为
可以看到公式(21) 就是Cook-Torrance 模型,而上述计算过程验证了Cook-Torrance模型即为假设所有反射为镜面反射的微表面模型 。
3.法线分布函数
本节将详细讨论微表面模型中
在开始前,我们需要重新定义法线分布函数
对于单位面积区域
其中
在BRDF理论中,法线分布一般定义在斜率空间(Slope Space)中。Slope Space是一个2D平面空间,其x, y坐标分别对应平面在x方向以及y方向上的斜率
可以看到,图中蓝色三角形与黑色三角形相似,角度相等。因此,物体表面斜率与法线存在如公式(23)的关系。
其中
使用斜率空间定义法线分布有几点好处: 1. 由于微表面模型一般假设微表面的法线分布在上半球上,而斜率空间刚好对应上半球分布,因此定义在该空间下的法线分布不存在越界问题。2. slope space与直角坐标系之间的转化十分简单,计算开销较小。
对于法线分布,一般我们会将其定义成在slope space下的概率分布,接着根据几何关系将其转到直角坐标系下使用。具体来说,对于
法线方向以及对应slope space坐标在球极坐标系下的表达式如公式(24), (25)所示。
由于
计算2-form
用公式 (27)除以公式(26) ,可以得到雅可比项如公式(28)所示。
对于任意定义在斜率空间中的概率分布,乘上公式(28)后便可得到对应的直角坐标系下的法线分布。
例如,对于2D高斯分布,乘上公式(28)后有公式(29)。
可以看到,公式(29)就是Beckmann法线分布,而
另一方面,目前在实践中一般更常用GGX分布。其各项同性形式如公式(30)所示。
重新整理该公式得公式(31)。
将(31) 中雅可比项
而公式(32)恰好对应自由度为2的t-分布。该公式验证了GGX法线分布实际是定义在slope space空间下的t-分布。由于GGX分布相比Beckmann分布具有更大的边缘拖尾区域,更能模拟现实现象,因此目前主流的渲染器均采用GGX分布。而t-分布相比正太分布也存在面积更大的拖尾区域。这从侧面也印证了GGX分布就是t-分布的观点。
基于以上讨论,我们可以看到各种千奇百怪的法线分布函数只是经过雅可比变换过后的概率密度函数,它们实际上都是在假定物体表面的法线分布满足某种特殊的概率分布。
4.几何遮蔽项
在法线分布确定后,下面需要做的是确定其空间排布,以计算微表面的几何遮蔽信息。
公式(9)展示了几何遮蔽项必须满足的性质,然而这对于唯一确定发现分布,仍远远不够。对于相同的法线分布,如图4所示,其可以存在多种不同的排布方式,而不同的排布方式对应不同的几何遮蔽函数。因此,为了保证系统的唯一解,需要对法线分布做出进一步限制。
目前,工业界最常用的假设是Smith Microsurface Profile,如图4中右边所演示的,该模型假设任意两个微表面之间的高度相互独立,这意味这即使是两个相邻的微表面,其高度依旧可能差距很大。
基于以上假设,其对应的几何遮蔽项可以分为两个部分:1. 由于微表面方向与出射方向大于90,导致的自遮蔽阴影 2. 被远距离未表面遮蔽导致的阴影。两者结合如公式(33)所示。
其中,
将(33), (34)带入到公式(9)中得。
根据公式(35),
则几何遮蔽函数
而在实战过程中,几何遮蔽项一般使用 Smith Masking Function近似,如公式(38)所示。
其中
其中
5. 结语
写这段短文的时候,不禁感概一个看似简单的微表面模型背后竟有如此复杂的数学建模和推导。一方面,该模型面对无穷复杂的现实世界大刀阔斧的简化了大量细节,使材质能简单高效计算的同时与现实材质有较高匹配度。另一方面,如此精巧的模型也只是对有限材质数据集的拟合,并在推导过程中做了大量简化,这对于完全建模真实世界仍存在一定距离。而近年来神经材质的崛起意味着我们可以用复杂的模型准确模拟传统方法难以建模的材质,这可能是突破我们传统建模方式的关键所在。
[1]Eric Heitz.Understanding the Masking-Shadowing Function in Microfacet-Based BRDFs
[2] Nathan Reed. Slope Space in BRDF Theory