Introduction to BRDFs
1 Phong Mode and Concepts of Illumination Models and BRDF
1.1 The Phong Model
在之前的博客中,我们了解了如何模拟镜面/漫反射材质,那光滑表面的着色要如何实现呢?如下图所示,现实中的绝大多数物体同时具备漫反射与镜面反射:
材质具有这种双重性质的原因比较复杂。某些材质本身就是多种材质的复合构成物,而有些物质则具有层级结构。但总而言之,对于这种同时具有漫反射部分与镜面反射部分的材质,我们可以用下面这个数学表达式进行说明:
\[S_P=\text{diffuse()}*K_d+\text{specular()}*K_s\]其中$S_P$表示$P$的着色,$\text{diffuse()}$项就是我们在上一篇博客中所讨论了漫反射着色,$\text{specular()}$项则是用于模拟物体光滑外观的项。我们通过两个参数$K_d$与$K_s$来分别控制两个项的强弱。我们将在后面深入讨论如何确定这两个参数的值,不过在那之前,我们需要先对$\text{specular()}$项有一个较为清楚的认识。
首先我们可以得出下一两点观察结果:
在相同的光源条件下,光滑材质的所观察到的反射相较于镜面材质的反射会弱一些。这是因为,光滑材质的表面只有一部分微表面能将光线反射到观察方向,而镜面材质表面的所有微表面的朝向是一致的,所有反射光线都会到达人眼。
当观察方向与理想的反射方向之间的夹角变大时,光滑材质的反射亮度会进一步减弱。这是因为能够将光线反射到观察方向的微表面数量进一步减少。
Phong指出,通过计算理想反射方向与实际观察方向之间的夹角,能够在某种程度上模拟出这种镜面反射效果。但通过简单的点积运算,还是会得到一个较大的镜面反射面积,为了解决这个问题,Phong在点积运算的结果上执行幂运算,从而能够有效地控制镜面反射的面积,即:
\[\text{Specular} \approx (V \cdot R)^n.\]虽然Phong模型可以在一定程度上模拟出漫反射与镜面反射的材质效果,但它仍然是一个经验模型,$n$与$K_s$并没有实际的物理意义。
1.2 Shading/Reflection Models
材质的外观是光线与构成材质的微观结构之间复杂的相互作用的结果。我们只能通过数学模型来模拟这些复杂的相互作用,这些模型在计算机图形学被称为Shading Model或Reflection Model,我们在上一章节所讨论的Phong模型就是其中一个经典模型。常见的还有Lafortune, the Torrance-Sparrow, the Cook-Torrance, the Ward anisotropy, the Oren-Nayar model
1.3 Concept of BRDF
正如我们前面所提到的,Phong模型在本质上用于模拟光滑材质外观的是一个函数,该函数包含了一系列参数,通过修改参数,就能够影响最终的着色效果。但最重要的是,函数结果取决于这两个变量:入射光线的方向与观察方向。
由此,该函数本质上可以用如下数学表达式描述:
\[f_R(\omega_o, \omega_i)\]其中,$\omega_o$与$\omega_i$分别表示观察方向与入射方向和shading point处法线向量的夹角。
在计算机图形学中,我们将这个函数称为双向反射分布函数,简称为BRDF。BRDF的意义在于,对于给定的入射方向,BRDF返回在观察方向上反射的光量。
BRDFs有很多实现方式,而一个差的BRDF无法满足下面的要求中的一项或者多项:
- 在入射方向与反射方向的有效范围内,BRDF始终是一个正函数
- 满足对称性,当入射方向与观察方向交换时,函数返回的结果不变
- 满足能量守恒定律,即反射光线的能量小于等于入射光线的能量
而好的BRDF不仅需要满足上述这些要求,还需要符合物理精准、计算效率高(这里同时包含计算速度与内存友好)。我们前面讨论的Phong模型是一个能量不守恒的模型,但是计算快速精准,所以在过去是一个应用范围很广的模型。
1.4 Specular and Diffuse Lobes
让我们以”镜面反射瓣”这一你可能听说过或读到过的概念来结束本章。当表面粗糙时,它会将光线反射到与完美反射方向略有不同但围绕其中心的方向。你可以通过绘制围绕反射方向的某种延伸形状来描绘或可视化这个过程。这在某种程度上代表了表面可能反射光线的方向集合。这就是我们在计算机图形学中所说的镜面反射瓣。在图7中,我们将其表示为二维形状,但实际上应该是三维的。这个反射瓣的形状会随着入射光方向而变化,这是大多数材料共有的特性——每种入射方向都有独特的反射方式。对于真实材料来说,这种反射瓣的形状可能非常复杂,可以通过测角反射仪来测量。该仪器能记录特定入射光下材料在所有可能方向的反射强度,生成的三维数据形态取决于材料属性:漫反射材料呈半球形,镜面材料则呈现沿反射方向延伸的瓣状结构。这些实测数据既能用于推导模拟材料的数学模型,也能验证BRDF模型的准确性。值得注意的是,实测材料常呈现多个反射瓣,因此在计算机图形学中我们通过组合不同参数和权重的多个瓣来模拟(例如图7下部展示的漫反射+镜面反射组合,类似Phong模型的效果)。更多细节将在后续章节展开。
1.5 Should I Tint Specular Reflections with the Objects’ Color?
对于绝缘体材质来说,镜面反射只是光源所发出的光线的反射。所以绝缘体材质的镜面反射的颜色,与光源的颜色一致。
而某些金属本身是具有颜色的,例如黄金、铜。它们能够改变反射光线的颜色,我们就需要将反射光线乘以物体自身的颜色。