文 |游鲨-Rain / 图| 原创

UE4的直接光 和传统教程里的PBR公式不太一样,这里简单介绍一下。
UE4直接光PBR分为漫反射和镜面反射。

漫反射

UE的漫反射和传统的漫反射一样,都是DiffuseColor*常数系数*N Dot L

镜面反射

UE的镜面反射BRDF和传统的并不一样:
Fresnel*Geometry拟合成了SpecularColor*(Roughness*0.25+0.25)
NDF同样基于

其中:a=Roughness*Roughness
UE的NDF分为float和half两种情况:
Float的时候,就是基于以上这种情况直接计算

Half的时候,就是将分母中的1-NDotH*NDotH根据叉乘公式变成了

为什么要这么改呢,这是因为:
1-NDotH*NDotH在half精度较低的情况下很容易出现浮点消除现象而误差较大(当两个浮点数非常相近但并不相等的时候相减,因为得到的数字非常小,容易出现因为有效数字精度不足或者指数精度不足的时候而被认为是0)
从现象上来说,则是高光范围过大。
参考资料
平台简介
游鲨游戏圈,专注游戏策划、技术、TA培训、企业招聘合作、游戏公司内推、游戏行业知识分享