Real-Time Rendering 4th 译文《九 基于物理渲染(中)》

9.5.3 内部反射

虽然在渲染中经常遇到外部反射,但内部反射有时也很重要。n1>n2时发生内反射。换句话说,当光在透明对象的内部传播并“从内部”遇到对象的表面时,会发生内反射见图9.23。

图9.23。平面上的内反射,其中n1>n2。

斯内尔定律表明,对于内反射,sinθt>sinθi。因为这些值都在0之间◦ 和90◦ , 这种关系也意味着θt>θi,如图9.23所示。在外部反射的情况下,情况正好相反,将其与第302页的图9.9进行比较。这种差异是理解内部反射和外部反射如何不同的关键。在外反射中,sinθt的有效(较小)值存在于0和1之间的sinθi的每个可能值。对于内部反射,情况并非如此。对于θi大于临界角θc的值,斯内尔定律意味着sinθt>1,这是不可能的。实际情况是没有θt。当θi>θc时,不会发生透射,所有入射光都会反射。这种现象称为全内反射。

      菲涅耳方程是对称的,即入射和透射矢量可以切换,反射率保持不变。结合斯内尔定律,这种对称性意味着内反射的F(θi)曲线类似于外反射曲线的“压缩”版本。F0的值对于这两种情况都是相同的,内反射曲线在θc而不是在90时达到完美反射率◦ 这如图9.24所示,图9.24还表明,在内反射的情况下,平均反射率更高。例如,这就是为什么空气在水下看到的气泡具有高度反光的银色外观。

      内反射只发生在绝缘体中,因为金属和半导体会迅速吸收在其内部传播的任何光[285286]。由于绝缘体具有实值折射率,从折射率或从F0计算临界角很简单:

   

    方程9.16中所示的Schlick近似对于外部反射是正确的。通过用透射角θt代替θi,可将其用于内反射。如果已计算了透射方向向量t(例如,对于渲染折射,请参见第14.5.2节),则可将其用于查找θt。否则,可使用斯内尔定律从θi计算θt,但这很昂贵,并且需要折射率,这可能不可用。

 图9.24。玻璃-空气界面处内外反射曲线的比较。在临界角θc处,内反射曲线变为1.0。

9.6 微观几何

      正如我们之前在第9.1.3节中所讨论的那样,比像素小得多的表面不规则性无法明确建模,因此BRDF被用来替代对其聚集效应进行统计建模。现在我们继续研究几何光学领域,它假设这些不规则性要么小于光波长(因此对光的行为没有影响),或者大得多。第9.11节将讨论“波光学域”(约1–100个波长)中不规则性的影响。

      每个可见曲面点都包含许多微曲面法线,这些法线在不同方向上反射反射光。由于单个微相的方向有些随机,因此将其建模为统计分布是有意义的。对于大多数曲面,微观几何曲面法线的分布是连续的,在宏观曲面法线处有一个很强的峰值。这种分布的“紧密性”由表面粗糙度决定。表面越粗糙,微观几何法线将越“分散”。

      增加微小的粗糙度的可见效果是反射的环境细节更加模糊。对于小而明亮的光源,这种模糊会导致更宽、更暗的镜面反射高光。由于光能被传播到更宽的方向锥中,所以来自粗糙表面的光线更暗。这种现象可以在305页图9.12中的照片中看到。

 图9.25。从可见细节到微尺度的逐渐过渡。图像序列从左到右依次为第一行,然后从左到右依次为第二行。曲面形状和照明是恒定的。只有曲面细节的比例会更改。

      图9.25显示了单个微尺度表面细节的聚合反射如何产生可见反射率。这一系列图像显示了一个由单一灯光照亮的曲面,凹凸的比例不断减小,直到最后一张图像中的凹凸比单个像素小得多。许多小高光中的统计模式最终成为最终聚集高光形状中的细节。例如,外围中单个凹凸高光的相对稀疏性将变为远离其中心的聚合高光的相对暗度。

      对于大多数曲面,微尺度曲面法线的分布是各向同性的,这意味着它是旋转对称的,没有任何固有的方向性。其他曲面具有各向异性的微尺度结构。此类曲面具有各向异性曲面正态分布,导致反射和强光的方向模糊。见图9.26。

 图9.26。左侧是各向异性曲面(拉丝金属)。请注意反射的方向模糊。右侧是一张显示类似表面的显微照片。注意细节的方向性。(显微照片由康奈尔大学计算机图形学专业提供。)

       一些表面具有高度结构化的微观几何结构,导致各种微尺度正态分布和表面外观。织物是一个常见的反例。天鹅绒和缎子的独特外观是由于其微观几何结构造成的【78】。织物模型将在第9.10节中讨论。

      虽然多重曲面法线是微观几何对反射率初始效应,其他影响也很重要。阴影是指光源被微尺度表面细节遮挡,如图9.27左侧所示。遮罩显示在图形的中心,其中一些面将其他面隐藏在相机之外。

 图9.27:微尺度结构的几何效应。在左侧,黑色虚线箭头表示被其他微观几何体遮挡的区域。在中间,红色虚线箭头表示被其他微观几何体遮挡(从视图中遮挡)的区域。上右图显示了光在微尺度结构之间的相互反射。

      如果微几何高度与曲面法线之间存在相关性,则阴影和遮罩可以有效地改变正态分布。例如,想象一个曲面,其中凸起的部分已通过风化或其他过程变得平滑,而下部仍保持粗糙。在观察角度下,曲面的下部将趋向于被阴影或遮罩,从而形成更平滑的曲面。见图9.28

 

图9.28:。所示的微观几何结构在高度和表面法线之间具有很强的相关性,其中凸起区域是平滑的,而较低区域是粗糙的。在顶部图像中,从接近宏观曲面法线的角度照亮曲面。在此角度下,粗糙凹坑为可以接触到许多入射光线,因此许多光线在不同方向散射。在底部图像中,从一个观察角度照亮曲面。阴影遮挡了大多数凹坑,因此很少有光线照射到它们,大多数光线都会从表面的平滑部分反射出来。在里面在这种情况下,表面粗糙度很大程度上取决于照明角度。

      对于所有曲面类型,曲面不规则的可见大小随着与法线的入射角度θi的增加而减小。在极为倾斜的角度下,这种效果可以将观察到的不规则尺寸减小到小于光的波长,使其在光响应方面“消失”。这两种效果与菲涅耳效果相结合,使表面在观察和照明角度接近90度时呈现出高度反射和镜面状◦ [79, 1873, 1874].

      自己确认一下。将一张无光泽的纸卷成一个长管。不要透过洞看,而是把你的眼睛稍微往上看,这样你就可以往下看了。把你的管子指向明亮的窗口或电脑屏幕。当你的视角几乎与纸张平行时,你会看到窗户或屏幕在纸张上的强烈反射。角度必须非常接近90◦ 以查看效果。

      被微表面细节遮挡的灯光不会消失。它是可能会反射到其他微观几何体上。光在到达眼睛之前可能会经历多次这样的反弹。此类相互反射如图9.27右侧所示。由于光在每次反弹时都会被菲涅耳反射衰减,因此绝缘体中的相互反射往往很细微。在金属中,多次反弹反射是任何可见漫反射的来源,因为金属缺乏次表面散射。有色金属的多次反弹反射比主反射的颜色更深,因为它们是光与表面多次相互作用的结果。

 

图9.29:微尺度粗糙度引起的反向反射。两幅图都显示了一个粗糙的表面,菲涅耳反射率低,散射反照率高,因此次表面反射率在视觉上很重要。在左侧,观察方向和照明方向相似。微观几何中明亮的灯光也是最容易看到的,这会导致明亮的外观。在右侧,观察方向和照明方向相差很大。在这种情况下,明亮的照明区域被遮挡在视线之外,可见区域被遮挡,从而导致较暗的外观。

 图9.30:。由于微尺度表面粗糙度,两个物体表现出非朗伯反射行为的照片。(右图由彼得·派克·斯隆提供。)

9.7 微面理论

      许多BRDF模型都是基于对微观几何结构对反射率影响的数学分析,称为微面理论。该工具最早由光学界的研究人员开发【124】。1977年,Blinn【159】将其引入计算机图形学,1981年,Cook和Torrance【285】再次将其引入计算机图形学。这一理论是以微观几何建模为基础的,它是一个微观面的集合。

      每个微小面都是平坦的,只有一个微面法线 m。微表面根据微BRDF fµ(l,v,m)单独反射光,所有微面上的组合反射率加起来就是整个表面BRDF。通常的选择是每个微面都是一个完美的菲涅耳镜,从而产生镜面微面BRDF,用于模拟表面反射。然而,也有其他选择。漫反射微观BRDF已用于创建多个局部次表面散射模型【574、657、709、1198、1337】。衍射显微BRDF用于创建结合几何和波动光学效应的着色模型【763】。

 图9.31。微表面的侧视图。在左边,我们可以看到,将投影到宏观表面平面上的微面面积D(m)(n·m)积分,得到宏观表面的面积(在本侧视图中为长度),按惯例为1。在右边,积分D(m)(v·m),投影到垂直于v的平面上的微平面面积,得到宏观曲面在该平面上的投影,即cosθo或(v·n)。当多个微相的投影重叠时,背面微相的负投影面积抵消了“额外”的正面微相。(在Matej Drame的数字之后。)

       微面模型的一个重要特性是微面法线m。此分布由曲面的法线分布函数(normal distribtion function NDF)定义。一些参考文献使用术语正态分布来避免与高斯正态分布混淆。我们将使用D(m)表示方程式中的NDF。

       NDF 的D(m)是微面表面法线在微观几何表面积【708】静态分布。将D(m)积分到微面法线的整个球体上,得到微曲面的面积。更有用的是,将D(m)(n·m)积分,即D(m)在宏观曲面平面上的投影,得到的宏观曲面面片面积按惯例等于1,如图9.31左侧所示。换句话说,投影D(m)(n·m)被归一化:

       积分在整个球面上,这里用Θ表示,与本章之前的球面积分不同,球面积分只在以n为中心的半球上积分,用Ω. 虽然一些参考文献[708]使用了这种符号,但大多数图形出版物中都使用了这种符号Ω 表示整个球体。实际上,图形中使用的大多数微观结构模型都是高度场,这意味着D(m)=0,适用于所有方向m外侧Ω. 然而,方程式9.21也适用于非高度场微观结构。

      更一般地说,微曲面和宏观曲面在垂直于任何视图方向v的平面相等:

 

 图9.32。积分可见微面(亮红色)的投影面积,得出宏观表面在垂直于v的平面上的投影面积。

      方程式9.21和9.22中的点积未固定为0。图9.31右侧显示了原因。方程9.21和9.22施加了函数D(m)必须遵守的约束条件,以成为有效的NDF。

      直观地说,NDF就像是微面法线的直方图。它有很高的微面法线更有可能指向的方向上的值。大多数曲面的NDF在宏观曲面法线n处显示出一个强峰值。第9.8.1节将介绍渲染中使用的几个NDF模型。

      再看看图9.31的右侧。虽然有很多具有重叠投影的微缩面,最终在渲染时,我们只关心可见的微缩面,即每个重叠集中最靠近摄影机的微缩面。这一事实表明了一种将投影微面面积与投影宏观几何面积联系起来的替代方法:可见微面投影面积之和等于宏观面的投影面积。我们可以通过定义遮罩函数G1(m,v)来数学表达这一点,该函数给出沿视图向量v可见的法线为m的微面分数。然后,G1(m,v)D(m)(v·m)+在球体上的积分给出投影到垂直于v的平面上的宏观曲面面积:

      如图9.32所示。与等式9.22不同,等式9.23中的点积被钳制为零。该操作用第1.2节中介绍的x+符号表示。背面微面不可见,因此在本例中不计算它们。乘积G1(m,v)D(m)是可见法线的分布【708】。

      虽然等式9.23对G1(m,v)施加了约束,但它并不能唯一确定它。对于给定的微面正态分布 D(m),有无限多个函数满足约束条件【708】。这是因为D(m)没有完全指定微曲面。它告诉我们有多少微面有指向特定方向的法线,但没有告诉我们它们是如何排列的。

      虽然多年来已经提出了各种G1函数,但海茨(Heitz)[708]的一篇优秀论文(至少目前)已经解决了使用哪种G1函数的难题。Heitz讨论了Smith掩蔽函数,该函数最初是针对高斯正态分布推导的【1665】,后来推广到任意NDF【202】。Heitz表明,在文献中提出的掩蔽函数中,只有两个Smith函数和Torrance Sparrow“V型腔”函数[1779]符合方程9.23,因此在数学上是有效的。他进一步表明,史密斯函数比托伦斯-斯派罗函数更接近随机微曲面的行为。Heitz还证明了Smith掩蔽函数是唯一一个既符合方程9.23又具有正常掩蔽独立性的可能函数。这意味着G1(m,v)的值不取决于m的方向,只要m不向后,即只要m·v≥ 0.Smith G1函数的形式如下:

 其中χ+(x)是正特征函数

 对于每个NDF,Λ (λ)函数不同。Walter等人【1833年】和Heitz【708年】的出版物中描述了推导给定NDF 的Λ ()的过程。

      史密斯掩蔽函数确实有一些缺点。从理论角度来看,其要求与实际表面的结构不一致【708】,甚至可能在物理上无法实现【657】。从实际角度来看,虽然它对随机表面非常精确,但对于法线方向和遮罩之间依赖性较强的表面,如图9.28所示的表面,其精度预计会降低,尤其是如果表面具有一些重复结构(就像大多数织物一样)。然而,在找到更好的替代方案之前,它是大多数渲染应用程序的最好的选项。

      给出微观几何描述,包括微观BRDF fµ(l,v,m),正常分布函数D(m)和掩蔽函数G1(m,v),可以导出整体宏观表面BRDF【708,1833】:

       这个积分在半球上Ω 以 n 为中心,避免从表面下方收集光贡献。方程式9.26使用联合遮罩阴影函数G2(l,v,m),而不是遮罩函数 G1(m,v)。该函数源自G1,给出了从两个方向(视图向量 v 和光向量 l )可见的法线为 m 的微面分数。通过包含G2函数,方程9.26使BRDF能够解释遮蔽和阴影,但不能解释微面之间的相互反射(参见第329页图9.27)。缺乏微面相互反射是所有源自等式9.26的BRDF的共同限制。因此,此类BRDF有点太暗。在第9.8.2和9.9节中,我们将讨论为解决此限制而提出的一些方法。

      Heitz【708】讨论了G2函数的几个版本。最简单的是可分离形式,其中遮罩和阴影使用G1单独评估并相乘:

       这种形式相当于假设掩蔽和阴影是不相关的事件。事实上并非如此,这种假设会导致使用这种G2形式的BRDF过度变暗。

      作为一个极端的例子,请考虑视图和灯光方向相同的情况。在这种情况下,G2应等于G1,因为任何可见的面都没有阴影,但对于等式9.27,G2将等于G21。

      如果微曲面是高度场,则微曲面通常就是这种情况渲染中使用的模型,然后每当 v l 之间的相对方位角φ等于0时◦, G2(l,v,m)应等于min(G1(v,m),G1(l,m))。φ的图示见第311页图9.17。这种关系提供了一种解释掩蔽和阴影之间相关性的一般方法,可用于任何G1函数:

其中λ(φ)是一个随角度φ增大而从0增加到1的函数。Ashikhmin等人[78]提出标准偏差为15的高斯分布◦ (∼ 0.26拉丹)

       van Ginneken等人提出了一个不同的λ函数[534]:

       无论灯光和视图方向的相对对齐如何,还有一个原因是给定曲面点处的遮罩和阴影是相关的。两者都与点相对于曲面其余部分的高度相关。较低点的掩蔽概率增加,阴影概率也增加。如果使用史密斯掩蔽函数,可以通过史密斯高度相关掩蔽阴影函数精确解释这种相关性:

 Heitz还描述了一种结合方向和高度相关性的Smith G2形式:

      其中,函数λ(v,l)可以是经验函数,如方程9.29和9.30中的函数,或者是专门为给定NDF推导的函数【707】。

      在这些备选方案中,海茨(Heitz)[708]推荐史密斯函数的高度相关形式(方程式9.31),因为它与不相关形式具有相似的成本和更好的精度。这种形式在实践中使用最为广泛【861,947,960】,尽管一些实践者使用可分离形式(方程式9.27)】【214,1937】。

      一般微面BRDF(方程式9.26)不直接用于渲染。它用于导出给定特定微观BRDF fµ选择的闭合形式解(精确或近似)。这类派生的第一个示例将在下一节中显示。

 图9.33。半矢量h与光矢量和视图矢量形成相等的角度(以红色显示)。

9.8 表面发射的BRDF模型

      除了少数例外,基于物理的渲染中使用的镜面反射BRDF术语源自微面理论。在镜面反射的情况下,每个微面都是一个非常光滑的菲涅耳镜。回想一下,这样的镜子在一个单一的反射方向上反射每一条入射光线。这意味着每个面的微 BRDF fµ(l,v,m)等于零,除非v平行于l的反射。对于给定的 lv 向量,该配置等效于微面法线 m 与指向 l v 中间的向量对齐的情况。该向量是半向量 h。见图9.33。它通过将v和l相加来计算规一化结果:

 

 图9.34。由微相组成的表面。只有红色微面(其表面法线与半向量h对齐)参与从入射光向量l到视图向量v的光反射。

      当从方程9.26推导镜面微面模型时,菲涅耳镜微观 BRDF fµ(l,v,m)在m不等于h时。它的值等于零,因为它将积分分解为m=h处积分函数的评估。这样做会产生镜面BRDF项。

 

      有关推导的详细信息,请参见Walter等人的出版物【1833年】,海茨[708]和哈蒙[657]。Hammon还展示了一种通过计算n·h和l·h来优化BRDF实现的方法,而无需计算向量h本身。

      我们使用公式9.34中BRDF项的符号 fspec 来表示,它只模拟表面(镜面反射)反射。在一个完整的BRDF中,它可能会与一个额外的术语配对,以模拟次表面(漫反射)着色。为了对方程9.34提供一些直觉,请考虑只有那些法线与半向量(m=h)对齐的微面才能正确定向,将光从 l 反射到 v 。见图9.34。因此,反射光的数量取决于法线等于h的微面浓度。该值由D(h)给出,D(h)是从光和视图方向都可见的微面部分,等于G2(l,v,h),以及每个微面反射的光的部分,由F(h,l)指定。在菲涅耳的评价中函数,例如,当评估第320页等式9.16中的Schlick近似时,向量h替代曲面法线。

      在遮罩阴影功能中使用半向量允许进行较小的简化。因为所涉及的角度永远不能大于90◦

,可以删除等式9.24、9.31和9.32中的χ+项

9.8.1 正态分布函数

 图9.35。左侧的图像使用非物理Phong反射模型进行渲染。该模型的镜面反射波瓣围绕反射向量旋转对称。这种BRDF在计算机图形学的早期经常使用。中心的图像使用基于物理的微面BRDF。左上角和中间显示了以观察角度照亮的平面。左上角显示错误的圆形高光,而中间显示微面BRDF上的特征高光延伸。此中心视图符合实际情况,如右边的照片。在下面两幅渲染图像中显示的球体上,高光形状的差异要微妙得多,因为在这种情况下,曲面曲率是高光形状的主要因素。(照片由Elan Ruskin提供。)

      正态分布函数对渲染曲面的外观有显著影响。绘制在微面法线球体上的NDF形状决定了反射光线圆锥体(镜面波瓣)的宽度和形状,进而决定了镜面高光的大小和形状。NDF会影响表面粗糙度的整体感知,以及更细微的视觉方面,例如高光是否有明显的边缘或是否被烟雾包围。

      然而,镜面反射波瓣不是NDF形状的简单副本。根据曲面曲率和视角的不同,它以及高光形状的扭曲程度会有所不同。如图9.35所示,从观察角度观察平面时,这种变形尤其强烈。Ngan等人【1271】对这种扭曲背后的原因进行了分析。

等向性正态分布函数

      渲染中使用的大多数NDF是关于宏观表面法线  n  的各向同性旋转对称。在这种情况下,NDF是一个变量的函数,即 n 和微面法线 m 之间的角度θm。理想情况下,NDF可以写成cosθ m的表达式,可以有效地计算为n和m的点积。

      Beckmann NDF【124】是光学界开发的第一个微平面模型中使用的正态分布。如今,它仍在该社区广泛使用。它也是Cook Torrance BRDF选择的NDF【285286】。标准化贝克曼分布具有以下形式:

       术语χ+(n·m)确保指向宏观曲面下的所有微面法线的NDF值为0。该属性告诉我们,与本节将讨论的所有其他NDF一样,该NDF描述的是高度场微曲面。αb参数控制表面粗糙度。它与微几何曲面的均方根(RMS)斜率成正比,因此αb=0表示完全光滑的曲面。

      为了推导Beckmann NDF的Smith G2函数,我们需要相应的Λ.函数,以插入方程9.24(如果使用G2的可分离形式)、9.31(高度相关形式)或9.32(方向和高度相关形式)。

       其中g表示任意一元函数。对于任意各向同性NDF,Λ函数依赖于两个变量。第一个是粗糙度α,第二个是计算Λ的向量(v或l)的入射角。然而,对于形状不变的NDF,Λ函数仅取决于变量a:

    其中s是表示 v或 l 的向量。在这种情况下Λ仅取决于一个变量这一事实便于实现。单变量函数可以更容易地用近似曲线拟合,并且可以在一维数组中制成表格。

      Beckmann NDF的 Λ 函数为:

 方程9.38的评估成本很高,因为它包括误差函数erf。因此,通常使用近似值[1833]:

 

      我们将讨论的下一个NDF是Blinn Phong NDF。在过去它广泛应用于计算机图形学,但在最近,它在很大程度上被其他发行版所取代。Blinn Phong NDF仍用于计算成本较高的情况(例如,在移动硬件上),因为计算成本低于本节讨论的其他NDF。

      Blinn Phong NDF由Blinn【159】推导而来,作为(非物理基础的)Phong着色模型【1414】的修改:

       功率αp是Phong NDF的粗糙度参数。高值表示平滑曲面,低值表示粗糙曲面。对于非常光滑的表面,αp的值可能会非常高——完美的镜子需要αp=∞. 通过将αp设置为0,可以获得最大随机曲面(均匀NDF)。αp参数不便于直接操作,因为其视觉冲击高度不均匀。较小的数值变化对较小的αp值有较大的视觉效果,但较大的值可以显著变化,而不会产生太大的视觉影响。因此,αp通常通过非线性映射从用户操纵的参数导出。

      例如,αp=ms,其中s是介于0和1之间的参数值,m是给定应用中αp的上界。该映射被多个游戏使用,包括《使命召唤:黑色行动》,其中m的值被设置为8192【998】。

      当BRDF参数的行为在感知上不一致时,这种“接口映射”通常很有用。这些映射用于解释通过滑块设置的参数或在纹理中绘制的参数。

      Beckmann和Blinn-Phong粗糙度参数的等效值可使用关系式αp=2αb找到−2.− 2 [1833]. 当参数以这种方式匹配时,两种分布非常接近,尤其是对于相对光滑的表面,如图9.36左上角所示。

      Blinn-Phong NDF不是形状不变的,其 Λ 函数不存在解析形式。Walter等人[1833]建议将Beckmann∧函数与αp=2αb结合使用−2.− 2参数等效性。

      在1977年的同一篇论文【159】中,Blinn将Phong着色功能调整为微面NDF,他提出了另外两种NDF。在这三种分布中,Blinn推荐了一种由Trowbridge和Reitz(1788)得出的分布。这一建议并未得到广泛关注,但30年后,沃尔特等人(Walter et al.[1833])重新独立发现了特洛布里奇-雷茨分布,并将其命名为GGX分布。这一次,种子生根了。几年内,GGX发行版的采用开始在电影业(2141133)和游戏业(861960)蔓延开来,如今它可能是这两个行业中使用最多的发行版。Blinn的建议出现比它的时代早了30年。虽然“Trowbridge Reitz distribution”在技术上是正确的名称,但我们在本书中使用GGX名称,因为它已经牢固确立。

      GGX分布为:

       αg参数提供的粗糙度控制与贝克曼αb参数提供的粗糙度控制相似。在迪士尼原则着色模型中,Burley【214】揭示了一个事实,即变量a出现在等式9.42中只是因为a2是方便的,因为可以避免等式9.37中的平方根。

 

图9.36。在左上角,比较了Blinn-Phong(蓝色虚线)和Beckmann(绿色)分布的αb值范围为0.025到0.2(使用参数关系αp=2α−b 2−2). 右上角是GGX(红色)和贝克曼(绿色)分布的比较。的值αb与左图中的相同。αg的值已由眼睛调整,以匹配高光大小。这些相同的值已在底部图像上渲染的球体中使用。第一行使用Beckmann NDF,第二行使用GGX。

      GGX分布是形状不变的,其∧函数相对简单:

       变量a仅以a平方的形式出现在等式9.42中很方便,因为可以避免方程9.37中的平方根。

      由于GGX分布和Smith掩蔽阴影函数的流行,人们一直致力于优化两者的组合。Lagarde观察到[960],GGX的高度相关Smith G2(方程式9.31)与镜面微面BRDF的分母结合时,具有抵消项(方程式9.34)。组合术语可以简化为:

 

 图9.37。NDF符合MERL数据库中测得的铬。在左侧,我们绘制了铬(黑色)、GGX(红色;αg=0.006)、贝克曼(绿色;αb=0.013)和布林·冯(蓝色虚线;n=12000)的镜面反射峰值与θm的关系图。chrome、GGX和Beckmann的渲染高光显示在右侧。(图由Brent Burley提供【214】。)

方程式使用变量替换µi=(n·l)+ µo=(n·v)+ 以简化。Karis【861】提出了GGX的Smith G1函数的近似形式:

       其中,s可替换为l或v。Hammon[657]表明,G1的这种近似形式导致了高度相关Smith G2函数和镜面微面BRDF denom inator组成的组合项的有效近似:

 使用线性插值运算符,lerp(x,y,s)=x(1− s) +ys

      当比较图9.36中的GGX和Beckmann分布时,很明显这两种分布具有根本不同的形状。GGX的峰比贝克曼的窄,而且围绕这些峰的“尾巴”更长。在图底部的渲染图像中,我们可以看到GGX较长的尾部在高光的核心周围创建了薄雾或辉光的外观。

      许多真实世界的材质显示出类似的模糊高光,其尾部通常比GGX分布的尾部还要长【214】。见图9.37。这一认识为GGX发行版的日益流行做出了巨大贡献,也为继续寻找能够更准确地匹配测量材料的新发行版做出了巨大贡献。

      Burley[214]提出了广义Trowbridge-Reitz(GTR)NDF,目的是允许对NDF的形状进行更多的控制,特别是分布的尾部:

       γ参数控制尾部形状。当γ=2时,GTR与GGX相同。随着γ值的减小,分布的尾部变长,随着γ值的增大,尾部变短。γ值较高时,GTR分布类似于贝克曼分布。k(α,γ)项是归一化因子,我们在单独的方程中给出,因为它比其他NDF更复杂:

      GTR分布不是形状不变的,这使得寻找其Smith G2掩蔽阴影函数变得复杂。在NDF发布后三年,G2解决方案才得以发布【355】。此G2解非常复杂,有一个γ特定值的分析解表(对于中间值,必须使用插值)。全球技术法规的另一个问题是,参数α和γ以非直观的方式影响感知粗糙度和“辉光”。

      Student的t分布(STD)[1491]和指数功率分布(EPD)[763]NDF包括形状控制参数。与GTR相反,这些函数相对于其粗糙度参数是形状不变的。在撰写本文时,这些都是新发布的,因此不清楚它们是否会在应用程序中得到使用。

      与其增加NDF的复杂性,不如使用多个镜面反射波瓣来更好地匹配测量材料。这个想法是由库克和托伦斯提出的【285286】。Ngan【1271】对其进行了实验测试,他发现对于许多材料来说,添加第二个叶确实可以显著改善拟合。皮克斯的PXR表面材料【732】有一个“粗糙镜面反射”波瓣,用于此目的(与主镜面反射波瓣一起使用)。附加瓣是一个全镜面微平面BRDF,具有所有相关参数和术语。

      Imageworks采用了一种更为外科手术的方法【947】,使用两个GGX NDF的混合,作为扩展NDF暴露给用户,而不是整个单独的镜面反射BRDF项。在这种情况下,唯一需要的附加参数是第二个粗糙度值和混合量。

各向同性正态分布函数

      虽然大多数材料具有各向同性表面统计信息,但一些材料的微观结构具有显著的各向异性,这会显著影响其外观,例如,第329页的图9.26。为了精确渲染此类材质,我们需要BRDF,尤其是各向异性NDF。

      与各向同性NDF不同,各向异性NDF不能仅用角 θm 进行计算。需要额外的方向信息。在一般情况下,微切面法线 m 需要转换为局部帧或切线空间,分别由法线、切线和双切线向量n、t和b定义。参见第210页的图6.32。在实践中,这种转换通常表示为三种单独的点乘结果:m·n、m·t和m·b。

      将法线贴图与各向异性BRDF相结合时,务必确保法线贴图会扰动切线和双切线向量以及法线。此过程通常通过将修改后的Gram-Schmidt过程应用于扰动法线n以及插值顶点切线和双切线向量t0和b0来完成(以下假设n已经归一化):

 或者,在第一行之后,可以通过取n和t的叉积来创建正交b向量。

      对于拉丝金属或卷发等效果,需要对切线方向进行逐像素修改,通常由切线贴图提供。此贴图是存储每像素切线的纹理,类似于法线贴图存储每像素法线的方式。相切贴图通常存储相切向量在垂直于法线的平面上的二维投影。此表示与纹理过滤效果很好,可以像法线贴图一样进行压缩。一些应用程序存储标量旋转量,用于围绕n旋转切线向量。虽然这种表示更紧凑,但容易进行纹理过滤旋转角度从360度环绕至0◦.

      创建各向异性NDF的常用方法是推广现有的各向同性NDF。所使用的一般方法可应用于任何形状不变的各向同性NDF【708】,这是形状不变NDF更可取的另一个原因。回想一下,各向同性形状不变NDF可以用以下形式编写:

 g表示表示NDF形状的一维函数。各向异性版本为:

     参数αx和αy分别表示沿t和b方向的粗糙度。如果αx=αy,则方程式9.50还原为各向同性形式。

     各向异性NDF的G2掩蔽阴影函数与各向同性NDF相同,只是变量a(传递到∧函数中)的计算不同:

 式中(如等式9.37所示),s表示v或l。

 图9.38。使用各向异性NDF渲染的球体:Beckmann位于顶行,GGX位于底行。在两行中,αy保持不变,αx从左到右增加。

使用该方法,推导了贝克曼NDF的各向异性版本

 和GGX NDF。

 两者如图9.38所示

     虽然各向异性NDF参数化最直接的方法是使用各向同性粗糙度参数化两次,一次用于αx,一次用于αy,但有时也会使用其他参数化。在迪士尼原则着色模型【214】中,各向同性粗糙度参数r与第二个标量参数kaniso组合,范围为【0,1】。αx和αy值根据这些参数计算得出:

 0.9系数将纵横比限制为10:1。

Imageworks[947]使用不同的参数化,允许各向异性程度

 (tag 367)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值