Original Topic from
그냥 그런 블로그 :: PBR Specular D 의 기하학적 의미 (tistory.com)
This topic is a Chinese translation of the original text above.
PBR Specular D的几何学含义
PBR( Physically Based Rendering )里成为大趋势的Cook-Torrance的Specular BRDF [1]定义如下:

这里面D函数是对于微表面(microfacet)的倾斜度的分布(Distribution)函数。本文档将对于本函数在几何学上的意义进行说明。
一个表面(surface)是由几个微表面构成,这是PBR理论的根本。而且构成表面的各微表面都有着不同的法线(normal)。另外微表面上发生了镜面反射(mirror reflection, 正反射)。
很多文档里面将这样的微表面的法线用m表示,也会用h表示。应该是microfacet normal和half vector的略写。那么图1里面表面和微表面的关系就显而易见了。

图1:由微表面构成的表面[2].
微表面的法线用m来表示很容易理解,但是用h(half vector)来表示就有点费解了。Burley和Cook-Torrance [1, 3]一致记述了用半向量(half vector)来表现微表面的法线。
这里最好是用半向量的思路来理解这个含义。上面我们已经假设微表面能够镜面反射,现在我们来反过来看一下这个问题。
表面内,能够给我们展示镜面反射的、带有倾斜度的微表面究竟有多少呢?
这就是我们要通过Specular D函数得到的值的本质。要看到图2最左边的微表面向我这个方向的镜面反射结果的话,需要怎样的倾斜度呢?这里的n是表面法线,m是微表面法线。

图2: 微表面样品
镜面反射是“入射角和反射角相同的反射”。因此像下图那样光的向量l和视图向量v的一半,即半向量(h)和微表面法线(m)一致的情况下,就会发生镜面反射。

这里我们可以推断的是,如果有很多尖锐的微表面,逆反射(retroreflection)数量就会增多;如果乱乱的很粗糙的话,漫反射就会更加严重;柔和的话(即,m和n几乎一样的面很多的话),正反射的概率就很大了。
结论就是,我们的问题可以更改如下:
光的向量l和视图向量v同时具备的时候,与他们的半向量h一样的微表面法线m有多少呢?
查找半向量h和微表面法线m的角度是0的微表面分布,是Specular D函数的目标。因此所有的文献里面都会以这样的假设为基础,使用“半向量是微表面的法线” 这样的表现方式。
[3] 里面Burley将实测数据和其他Specular D函数进行了比较。

图3: Burley比较的分布(Distribution)
从左至右 chrome实测值,GGX,Beckmann.
首先现有模型中最好的是GGX(与Trowbridge-Reitz一样)。但是看实测数据,可以看到类似糊掉的效果以及更长的tail。因此在Burley情况下,Specular lobe得到了双重表现。详细的内容请参考相关报道。
但是实时渲染的世界里Specular lobe计算两次的话,会有负担。因此在UE4里面就只使用GGX。
当然也会有几个变种,可以在Specular BRDF Reference 进行确认。但是在这个思路里面”正态分布(Normal Distribution)” 并不是正规分布。只是”法线的分布”的意思,跟”Specular D”是一个意思。
参考资料
[2] Simon’s Tech Blog, “Microfacet BRDF”. http://simonstechblog.blogspot.kr/2011/12/microfacet-brdf.html.