• JP Lee

PBR Specular D的几何学含义

PBR Specular D的几何学含义

jplee 2019.9.03

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)数量就会增多;如果乱乱的很粗糙的话,漫反射就会更加严重;柔和的话(即,mn几乎一样的面很多的话),正反射的概率就很大了。

结论就是,我们的问题可以更改如下:

光的向量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"是一个意思。


参考资料

[1] Robert L. Cook and Kenneth E. Torrance, "A Reflectance Model for Computer Graphics"( 翻译: http://lifeisforu.tistory.com/349 ).

[2] Simon's Tech Blog, "Microfacet BRDF". http://simonstechblog.blogspot.kr/2011/12/microfacet-brdf.html.

[3] Brent Burley, "Physically-Based Shading at Disney"( 翻译: http://lifeisforu.tistory.com/350 ).

조회 34회

© 2014 by LEEGOONZ HOME.