迪斯尼的高光计算部分的BRDF其实是GGX BRDF的一种形态,它使用了roughness参数,但是这个roughtness并不是unreal中用的GGX的roughness,他们的换算关系如下:
Disney Roughness = sqrt(Roughness)
相关的计算公式如下:
half PerceptualRoughnessToRoughness(half perceptualRoughness)
{
return perceptualRoughness * perceptualRoughness;
}
half RoughnessToPerceptualRoughness(half roughness)
{
return sqrt(roughness);
}
而在高光流中的用的是Smoothness,它跟上面的两种粗糙度的转换如下:
half SmoothnessToRoughness(half smoothness)
{
return (1 - smoothness) * (1 - smoothness);
}
half SmoothnessToPerceptualRoughness(half smoothness)
{
return (1 - smoothness);
}
上面的公式用于高光流的素材到金属流的素材之间的转换计算