perceptual Roughness vs Roughness

来源:互联网 发布:李涛淘宝 编辑:程序博客网 时间:2024/06/06 19:18

Roughness

https://seblagarde.wordpress.com/2014/04/14/dontnod-physically-based-rendering-chart-for-unreal-engine-4/

The specular part of Disney “principled” BRDF is a GGX BRDF. It use a roughness parameter. This roughness is the “Disney roughness”, not the real GGX roughness. Disney Roughness = sqrt(Roughness). When use at runtime this Disney Roughness is transform to the GGX roughness with roughness = Disney Roughness * Disney Roughness.

UnityStandardBRDF.cginc

//-----------------------------------------------------------------------------
// Helper to convert smoothness to roughness
//-----------------------------------------------------------------------------


half PerceptualRoughnessToRoughness(half perceptualRoughness)
{
return perceptualRoughness * perceptualRoughness;
}


half RoughnessToPerceptualRoughness(half roughness)
{
return sqrt(roughness);
}


// Smoothness is the user facing name
// it should be perceptualSmoothness but we don't want the user to have to deal with this name
half SmoothnessToRoughness(half smoothness)
{
return (1 - smoothness) * (1 - smoothness);
}


half SmoothnessToPerceptualRoughness(half smoothness)
{
return (1 - smoothness);
}


http://essay.utwente.nl/70708/1/Jimenez%20Kwast_MA_EEMCS.pdf



0 0