本文由@浅墨_毛星云 出品,首发于知乎专栏,转载请注明出处
文章链接: https://zhuanlan.zhihu.com/p/69380665
作为基于物理的渲染(PBR)技术中材质高光质感的决定因素,更先进的法线分布函数(Normal Distribution Function,NDF)的问世和发展,是PBR能够在游戏和电影工业日益普及的重要推动力之一。
从法线分布函数和微平面理论(Microfacet Theory)的视角来看,基于物理的渲染代表着一种从宏观表现到微观细节的渲染理念的进化,从而对材质有了亚像素级更精细的把控和更科学的定量表示,从而推动了游戏和电影业界渲染品质的提升,以及工作流的升级。
图 基于PBR渲染的《雷神3:诸神黄昏》 @Arnold Renderer
图 基于PBR渲染的《银河护卫队2》@Arnold Renderer
图 基于PBR渲染的真实感枪械 @ArtSation,linus scheffel
图 基于PBR渲染的Agent 327@ Blender Animation Studio
图 基于PBR渲染的场景 @BattleField V
历史上主流的法线分布函数,按提出时间进行排序,可以总结为:
-
Berry [1923]
-
Beckmann [1963]
-
Phong [1973]
-
Blinn-Phong [1977]
-
ABC [1989]
-
GGX [2007] / Trowbridge-Reitz [1975]
-
Shifted Gamma Distribution,SGD [2012]
-
Trowbridge-Reitz(GTR)[2012]
-
Student’s T-Distribution , STD [2017]
-
Exponential Power Distribution , EPD [2017]
而在如今的PBR时代,业界主流的法线分布函数已从传统的Blinn-Phong等分布,迁移到更接近真实材质外观表现,具备能量守恒,具有更宽尾部和更高峰值的GGX分布,而且在朝着多高光波瓣(multiple specular lobes)的方向发展。
本文将从以下几个方面,对基于物理的渲染中法线分布函数(Normal Distribution Function,NDF)相关内容进行一个系统的总结:
-
基于物理的渲染理念:从宏观表现到微观细节
-
法线分布函数与微平面理论
-
法线分布函数的基本性质
-
各项同性NDF相关总结
-
法线分布函数的形状不变性
-
各向异性NDF相关总结
-
NDF的性能优化
-
多高光波瓣(multiple specular lobes)
-
PBR中的高光抗锯齿
-
主流NDF的局限性和发展趋势
按照惯例,开始正文前,先放出本文内容总结的思维导图:
OK,让我们从第一部分开始。
一、基于物理的渲染理念:从宏观表现到微观细节
关于基于物理的渲染理念,其实跟图形学中对几何体的建模尺度有一定关联。图形学中,对几何体外观的建模,总会假设一定的建模尺度和观察尺度:
-
宏观尺度(Macroscale), 几何体通过三角形网格进行建模, 由顶点法线(Vertex Normal)提供每顶点法线信息
-
中尺度(Mesoscale), 几何体通过纹理进行建模,由法线贴图(Normal Map)提供每像素法线信息
-
微观尺度(Microscale), 几何体通过BRDF进行建模,由粗糙度贴图(Roughness Map)配合法线分布函数,提供每亚像素(subpixel)法线信息
图 PBR物体的渲染建模。从左到右:渲染后物体,几何体三角形网格,法线贴图,粗糙度贴图。(图片来自Sébastien Lagarde ,Physically-Based Material, where are we,SIGGRAPH 2017)
传统光照模型中,一般只将几何体建模到中尺度的法线贴图(Normal Map)层面。虽说Blinn-Phong等分布也是基于微平面理论推导而来,但并没有配套粗糙度贴图(Roughness Map)为其提供亚像素级精度的细节,而且传统的NDF一般都没有经过归一化,不满足能量守恒,容易出现失真。
而在基于物理的渲染工作流中,通过将粗糙度贴图(Roughness Map)与微平面归一化的法线分布函数结合使用,将需渲染的几何体的建模尺度细化到了微观尺度(Microscale)的亚像素层面,对材质的微观表现更加定量,所以能够带来更加接近真实的渲染质量和更全面的材质外观质感把控。如下图。
图 多尺度的几何建模表示(图片来自Sébastien Lagarde ,Physically-Based Material, where are we,SIGGRAPH 2017)
二、法线分布函数与微平面理论
-
微平面理论(microfacet theory)作为一种研究微观几何(microgeometry)对反射率影响的数学分析方法,基于将微观几何(microgeometry)建模为微平面(microfacets)的集合的思想。其最初由光学物理领域开发,用于研究统计表面上的散射[Beckmann Spizzichino 1963]。在图形社区中,我们使用它来推导基于物理的BRDF。
-
微平面模型的一个重要特性是微平面法线m的统计分布(statistical distribution)。 此分布由曲面的法线分布函数(Normal Distribution Function,NDF)定义。
图 微观表面(Micro Surface)与宏观表面(Macro Surface)法线方向(图片来自[Walter 2007])
-
法线分布函数(Normal Distribution Function,NDF)在一些文献中也用Specular D进行表示。
-
微平面的法线分布函数D(m)描述了微观表面上的表面法线m的统计分布。给定以m为中心的无穷小立体角dωm和无穷小宏观表面区域dA,则
是相应微表面部分的总面积,其法线位于指定的立体角内。因此NDF的本质是一个密度函数,单位为1/球面度(1/steradians)。
-
从直觉上来说,NDF就像是微平面法线分布的直方图(histogram)。 它在微平面法线更可能指向的方向上具有更高的值。大多数表面都具有在宏观表面法线n处显示出很强的法线分布峰值。
-
若以函数输入和输出的角度来看NDF,则其输入为微表面粗糙度(微表面法线集中程度)和宏观法线与视线的中间矢量(微表面法线方向),输出为此方向上的微表面法线强度。
-
一般我们用宏观表面的半矢量h来表示微观表面法线m,因为仅m = h的表面点的朝向才会将光线l反射到视线v的方向,其他朝向的表面点对BRDF没有贡献(正负相互抵消)。
图 仅m = h的表面点的朝向才会将光线l反射到视线v的方向,其他表面点对BRDF没有贡献(图片来自《Real-Time Rendering 4th》)
- 目前业界广泛采用的Microfacet Cook-Torrance BRDF形式如下:
-
其中 D(h) 即法线分布函数 (Normal Distribution Function),描述了平面法线分布的概率,即具有正确朝向的微表面法线浓度。即具有正确朝向,能够将来自l的光反射到v的表面点的相对于表面面积的浓度。D(h)常被直接写作D(m)。
-
可以将法线分布函数 D(m) 理解为微观几何表面区域上的微平面表面法线的统计分布。 对 D(m) 在整个微平面法线上积分,会得到微表面的面积。更有用的是对D(m)(n · m)进行积分,即将 D(m) 的投影到宏观表面平面上,会得到宏观表面片元(patch)的面积,其被约定等于1,如下图所示:
图 微表面的侧视图。积分D(m)(n · m),得到投影到宏观表面平面上的微平面区域,等于宏观表面的面积,被约定为1。(图片来自《Real-Time Rendering 4th》)
- 换句话说,投影D(m)(n · m)是被归一化的:
-
上式在积分时用到了Θ符号,表示在在整个球体上积分。而在以n为中心的半球上积分时,一般用Ω表示。实际上,图形学中使用的大多数微结构模型都是高度场(heightfields),这意味着对于Ω外的所有方向,D(m) = 0。 但是,上式也适用于非高度场微观结构。
-
更一般地,微观表面(microsurface)和宏观表面(macrosurface)在垂直于任何视图方向v的平面上的投影是相等的:
-
上面两个积分公式定义了成为一个合法的基于物理的法线分布函数必须服从的约束。
-
另外,上面两个积分公式中的点积不用被约束为大于等于0,因为投影会产生正负抵消,如下图所示。