【译】UNITY 5.3的GGX着色器
原文地址:http://blogs.unity3d.com/2016/01/25/ggx-in-unity-5-3/
原文作者未做版权声明,视为共享知识产权进入公共领域,自动获得授权
在unity5.3的标准shader中,我们采用GGX作为BRDF的实现方式,用于诸如点光源方向光的逻辑光源和基于图像的光源。此外,一个大的改变也在进行,我们改变了cube map的卷积实现,在一个很短的时间内实现准确无噪声的结果。GGX和规范化PhonE最显著的区别是在microfacet的分布更加狭窄。然后有一个更长的尾巴,如下图所示。
GGX的最后结果就是有一个更加明亮的高光,紧跟着一个拖尾的光晕,如下图所示,这样营造了一个更加真实的外观。
行业兼容材料
在学术界,基于物理的BRDF使用粗糙度作为变量来控制microfacet的分布函数。学术上的粗糙度用均方根斜率来定义。一个常见的误解是把CG里面的粗糙度等同于学术界的粗糙度。学术界的粗糙度不用于纹理映射或者滑块是因为模糊登记不是均匀分布的,这使得它非常难以使用,也限制了纹理映射的精度。为了避免误解,Unity使用光滑度而不是粗糙度。在shader中,光滑度会被转化为粗糙度。公式是(1-smoothness)^ 2。
这样一个标准化的结果是方便你导入外部工具制作的内容并且达到相似的效果。今天大多数的CG绘画工具支持平滑地图。需要澄清的是,完全相同的匹配是没法保证的。下面是unity5和Substance PATINER的比较。
我们看到视觉效果非常相似。我还要感谢Wes 和Allegorithmic在这个问题上的努力。要了解更多的细节,可以看看他们关于PBR 和 Unity 5的详细课程。
Unity 5.4带来的新东西
在Unity 5.4中,我们专注与提高cube map的卷积速度,并且得到更好的基于图像的照明效果。下面这个比较是Unity 5.4的球体点燃和一个传统的每像素5000光线的追踪效果比较。
正如我们看到的,右边使用传统追踪方法的效果里面有大量的噪音。产生这么多噪音的原因是基本路径追踪与环境贴图的不协调,其中包含大量诸如太阳的热奇点。Unity 5.4现在解决了这个问题,并且速度是5.2的2倍。