《Real-Time Rendering》第四版学习笔记——Chapter 9 Physically Based Shading

Posted 董小虫

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了《Real-Time Rendering》第四版学习笔记——Chapter 9 Physically Based Shading相关的知识,希望对你有一定的参考价值。

上接文章:《Real-Time Rendering》第四版学习笔记——Chapter 9 Physically Based Shading(一)


六、微观几何

每个可见的表面点都包含了很多为表面的法线,每个法线都会将光反射到不同方向。因为这些方向都是随机的,所以可以使用统计学分布来表示。这个分布是连续的,并且在宏观表面法线处有明显峰值。分布越“紧凑”,表面越光滑;分布越“平坦”,表面越粗糙。

因微观尺度的粗糙度上升而引起的视觉效果是,使反射的环境细节更加模糊。统计形态的不同,使得聚合高光的形状也不同。

对于大部分表面,微观表面法线分布是各向同性的,也就是说是旋转对称的,无内在的方向性。而各向异性的表面在不同方向上,微观表面法线分布不同,这导致模糊和高光在不同方向上不同。

一些表面有高度结构化的微几何,这使得微法线分布和表面外观呈现出很大的不同,如纤维就是最常见的情况。

除了不同的表面法线外,微几何也会产生其他的影响,如阴影(shadowing)和遮挡(masking),如图所示:

阴影和遮挡会很大程度上改变法线分布。对于所有的表面类型,当入射角 θ i \\theta_i θi增大时,宏观层面上的不规则度会降低。结合菲涅尔效应,使得在观察角度和光线角度都接近 9 0 ο ⁡ 90^\\operatorname\\omicron 90ο时,表面会变得高度反光,产生类似镜面的效果。

被微表面遮挡的光线不会消失,而是可能经过多次弹射后进入眼睛。

如果微表面的尺寸大于次表面散射的距离,那么阴影和遮挡会导致逆反射(retroreflection)效应,即光线会被反射回入射方向。

七、微表面理论

微表面理论(Microfacet)是对微几何的反射率的数学分析。微表面理论的基础是,将微几何体建模为微表面的集合。

每个微表面都是平坦的,有单独的法线 m \\mathbf m m;并且根据微BRDF f μ ( l , v , m ) f_\\mu(\\mathbf l,\\mathbf v,\\mathbf m) fμ(l,v,m)单独反射光线,最后将所有的反射率相加,得到总的表面BRDF。

微表面法线分布定义为表面的法线分布函数(normal distribution function,NDF), D ( m ) D(\\mathbf m) D(m)

D ( m ) D(\\mathbf m) D(m)微表面法线的整个球面进行积分,可以得到微表面的面积。更常用的是,对 D ( m ) ( n ⋅ m ) D(\\mathbf m)(\\mathbf n\\cdot\\mathbf m) D(m)(nm)(即 D ( m ) D(\\mathbf m) D(m)在宏观表面上投影)进行积分,可以得到宏观表面的面积,等于 1 1 1。公式如下:
∫ m ∈ Θ D ( m ) ( n ⋅ m ) d m = 1 \\int_\\mathbf m\\in\\ThetaD(\\mathbf m)(\\mathbf n\\cdot\\mathbf m)d\\mathbf m=1 mΘD(m)(nm)dm=1
要注意的是,这里的积分域是整个球面。

更普遍的情况,会将微表面和宏观表面投影到垂直于视线方向 v \\mathbf v v的平面:
∫ m ∈ Θ D ( m ) ( v ⋅ m ) d m = v ⋅ n \\int_\\mathbf m\\in\\ThetaD(\\mathbf m)(\\mathbf v\\cdot\\mathbf m)d\\mathbf m=\\mathbf v\\cdot\\mathbf n mΘD(m)(vm)dm=vn

可见微表面的投影之和等于宏观表面的投影面积。在数学表达上,可以定义一个遮挡函数(masking function) G 1 ( m , v ) G_1(\\mathbf m,\\mathbf v) G1(m,v),定义了在 v \\mathbf v v方向上可见的部分的法线 m \\mathbf m m;可得如下定义:
∫ ∈ Θ G 1 ( m , v ) D ( m ) ( v ⋅ m ) + d m = v ⋅ n \\int_\\in\\ThetaG_1(\\mathbf m,\\mathbf v)D(\\mathbf m)(\\mathbf v\\cdot\\mathbf m)^+d\\mathbf m=\\mathbf v\\cdot\\mathbf n ΘG1(m,v)D(m)(vm)+dm=vn

其中 G 1 ( m , v ) D ( m ) G_1(\\mathbf m,\\mathbf v)D(\\mathbf m) G1(m,v)D(m)称为可见法线分布(distribution of visible normals)。

满足条件的 G 1 ( m , v ) G_1(\\mathbf m,\\mathbf v) G1(m,v)函数并不唯一,因为 D ( m ) D(\\mathbf m) D(m)并不能完全定义微表面; D ( m ) D(\\mathbf m) D(m)只定义了法线指向特定方向的微表面数量,却没有定义如何排布。

只有Smith函数是唯一一个既符合上述公式,且是法线遮挡独立的(normal-masking independence)。在 m ⋅ v ≥ 0 \\mathbf m\\cdot\\mathbf v\\ge 0 mv0时,Smith函数不依赖于 m \\mathbf m m,其定义如下:
G 1 ( m , v ) = χ + ( m ⋅ v ) 1 + Λ ( v ) G_1(\\mathbf m,\\mathbf v)=\\cfrac\\chi^+(\\mathbf m\\cdot\\mathbf v)1+\\Lambda(\\mathbf v) G1(m,v)=1+Λ(v)χ+(mv)
其中, χ + ( x ) \\chi^+(x) χ+(x)是正特征函数;而 Λ \\Lambda Λ函数则对不同NDF有不同函数。

Smith函数的缺点:对于不同的实际表面结构,有不同的满足条件,甚至有些在物理上是无法实现的。

给定微BRDF f μ ( l , v , m ) f_\\mu(\\mathbf l,\\mathbf v,\\mathbf m) fμ(l,v,m),法线分布函数 D ( m ) D(\\mathbf m) D(m),遮挡函数 G 1 ( m , v ) G_1(\\mathbf m,\\mathbf v) G1(m,v),则宏观表面的BRDF可以表示为:
f ( l , v ) = ∫ m ∈ Ω f μ ( l , v , m ) G 2 ( l , v , m ) D ( m ) ( m ⋅ l ) + ∣ n ⋅ l ∣ ( m ⋅ v ) + ∣ n ⋅ v ∣ d m f(\\mathbf l,\\mathbf v)=\\int_\\mathbf m\\in\\Omegaf_\\mu(\\mathbf l,\\mathbf v,\\mathbf m)G_2(\\mathbf l,\\mathbf v,\\mathbf m)D(\\mathbf m)\\cfrac(\\mathbf m\\cdot\\mathbf l)^+|\\mathbf n\\cdot\\mathbf l|\\cfrac(\\mathbf m\\cdot\\mathbf v)^+|\\mathbf n\\cdot\\mathbf v|d\\mathbf m f(l,v)=mΩfμ(l,v,m)G2(l,v,m)D(m)nl(ml)+nv(mv)+dm
这个积分是的积分域是 Ω \\Omega Ω,即 n \\mathbf n n侧的半球面; G 2 ( l , v , m ) G_2(\\mathbf l,\\mathbf v,\\mathbf m) G2(l,v,m)是联合遮挡阴影函数(joint masking-shadowing function),从 G 1 ( m , v ) G_1(\\mathbf m,\\mathbf v) G1(m,v)推导而来。这使得BRDF引入了遮挡和阴影;缺点是没有微表面之间的内部反射,这使得渲染结果会显得更暗。

G 2 G_2 G2函数的几个版本: