I was wondering since Blender implemented the 'PrincipledBSDF' shader and it is based on improving photo realism in Blender, I want to know if the roughness index is based off of any unit and if it is what is it?
1 Answer
There are several models how light interacts with surfaces. Cycles supports Beckmann, Ashikhmin-Shirley, GGX and Multiscatter GGX models. They all model surface imperfection (roughness) with microfacets:
We assume that surfaces that are not perfectly smooth are composed of many very tiny facets, each of which is a perfect specular reflector. These microfacets have normals that are distributed about the normal of the approximating smooth surface. The degree to which microfacet normals differ from the smooth surface normal is determined by the roughness of the surface.
So the roughness is only a statistical value how microfacet normals deviate from the mean (smooth surface). How the surface looks is determined by the lighting model used.
There are many methods for measuring surface roughness on materials and they all are also just statistical values. They are based on the amplitude and frequency of surface imperfections ( how they deviate from a perfectly smooth surface). These imperfections can be measured using profilometer.
The Beckmann model uses Rdq roughness and like this it's results could be validated against physical objects. The Beckmann specularity distribution formula is defined in this paper (A Reflectance Model for Computer Graphics, L.Cook, 1982) on page 6.
The Principled shader uses the GGX specularity model and uses perceptual roughness defined in this Pixar paper (PBS Disney BRDF notes, Burley 2012). It is the same roughness that many apps use, like Arnold renderer, Substance painter, most pbr game engines, and many others (Renderman of course, etc..):
Roughness = (Perceptual_roughness)^2
This perceptual roughness has more linear progression and is more friendly to artists, but doesn't directly correspond to physical methods of roughness measurement.
Blender version 2.79 has inconsistency in this (between Principled and GGX glossy). If you want the same result using Principled shader as you are used to from Glossy GGX, you need to square root the roughness.
However this inconsistency is planned to be fixed in version 2.8 and unified using perceptual roughness.
You may find this related answer thread also useful:
-
$\begingroup$ Your "this Pixar paper" link now points to a mattress review. $\endgroup$– TaraNov 25, 2021 at 16:05
-