作者:Neil Blevins 編譯:Hammer Chen
这篇教学讨论 GGX Shading 模型能够仿真真实的粗糙表面的反射效果。
以下是我用 iphone 拍出来的真实物体的照片:



注意到反射具有很亮的光线,中心很亮,然后有很长的衰减:
标准的 Blinn 或 Ward 的衰减无法做出这样长又柔化的衰减。这样的效果或许是来自相机或是其他可能性才导致最终的相片会看到这种长衰减现象。
第一张是拍摄真实金属球, 第二张是 GGX shader,第三张是 Beckmann shader(接近于 Blinn) 。注意到 GGX shader 很接近真实的金属球的效果,也就是中心锐利的高光,然后软的衰减 。
GGX Shader in Vray for 3dsmax
以下范例只是在 Vray for 3dsmax 的 GGX shader 效果,首先用单一的方形区域光去照反射球。 先用 Vray Material 将其 shader 设为 Ward(这是以前最棒的金属高光 shader)glossiness 设定小于 1。
Ward, 0.96 Glossiness
接着我们把 shader 切换成 GGX
GGX, 0.96 Glossiness, Tail 2.0
注意到看起来相当不同,注意反射高光的模糊程度
GGX, 0.83 Glossiness, Tail 2.0
GGX, 0.83 Glossiness, Tail 3.0
GGX, 0.83 Glossiness, Tail 4.0
如果给予较低的尾衰减数值,那么反射效果就接近 ward shader,但是方形区域光在 GGX shader 还是看起来有点方, 而 Ward 里面看起来比较圆,所以 GGX shader 的效果还是比较写实。 接下来我们试试更复杂的场景 ─ 水管然后套用 hdr 环境光加上高强度的方形区域光:
Ward, 0.96 Glossiness
GGX, 0.96 Glossiness, Tail 2.0
GGX, 0.83 Glossiness, Tail 2.0
稍微模糊一下环境贴图,让其跟 GGX 的模糊程度相当,但是在 GGX 的高光会有比较长的尾部(衰减) 。我最爱的是以下图片中展示了这个衰减效果,提供了长的亮的条纹,这在 Ward 是看不到的!

当然你必须要微调 tail amount 与 glossiness 才会得到你最终要的高光效果。以下是不同参数所得到的效果图:

希望这篇教学有说服你,金属的高光还是改用 GGX shader 最好了!