双向反射分布函数

双向反射分布函数(BRDF),能够基于真实世界物理模型来计算给定的入射方向上的光在经过某个表面之后如何在各个出射方向上分布的。这比以往基于经验的模型如phong模型blinn-phong模型能更好的渲染出符合现实世界的真实效果。
基于物理的BRDF种类繁多,但是都要至少满足一下两点要求:1.可逆性,即交换入射和出射方向并不会影响到BRDF的值;2.能量守恒,即出射的各方向能量总和不应该大于入射能量。

这里主要涉及到几个项:
D(h):这是个法向量分布函数,主要是描述朝向半角向量h的微平面所占的比重。
F(v,h): 这里是菲涅尔相关项,计算入射光经过表面后的反射量。
G(l,v,h):是物理项,也称为几何遮挡项。

下面会逐一对这三项进行解释

解释之前我主要说一下microfacet理论,microfacet理论认为光滑的平面并不是完全光滑的,而是由大量的微小平面构成的,而且这些微小平面被认为是理想的镜面反射平面,这些微小的平面朝向各异,但是大部分微小的平面法线方向都是朝向当前平面的法向法向,少部分朝向其他的方向。

1.法向量分布项

基于上面的microfacet理论,这里的D(h)就是描述了这些微小平面法向量分布,我们通过传入l和v的半角向量h来查询这些微小平面中法向量朝向为h的数量所占的比重。现在对于法向量分布函数的模型有很多,比如改进的基于物理的Blinn-Phong模型,Beckmann函数,GGX等,其中GGX的用处比较多,现在很多游戏引擎中都使用GGX模型。

2.菲涅尔反射项

物理中我们知道当光线打在物体表面时会同时发生反射和折射现象,这种现象就是菲涅尔现象。我们利用F菲涅尔函数来计算打在表面的光被反射了多少。通常我们在渲染中不是直接使用介质的反射率,而是使用入射角为0时的反射率也就是F0(材质的specular参数)。比较常用的菲涅尔反射模型是Schlick提出近似估计方法。其公式如下F(v,h) = F0 + (1 – F0)*(1 – pow(dot(v, h), 5.0))。

3.几何遮挡项

遮挡项主要描述了满足normal为半角向量的微平面在入射和出射方向上不被遮挡的比率。遮挡项对BRDF保持能量是非常重要的,没有这个项,BRDF反射出的能量可能比接受的能量更多。现在比较常用的几何遮挡项的求解方式比较多包括Implicit方法,Cook-Torrance方法,Smith近似方法等。这个可以在使用的时候根据需要选择。

本文遵从CC3.0协议转载请注明:转自凌风技术站

本文标题:双向反射分布函数

本文链接地址:http://www.iaccepted.net/graphics/45.html

相关文章



发表评论

电子邮件地址不会被公开。 必填项已用*标注