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
    $\begingroup$ No, it scales linear beween zero and one. $\endgroup$ – yann Nov 5 '17 at 23:27

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 on page 6.

The Principled shader uses the GGX specularity model and uses perceptual roughness defined in this Pixar paper. 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

enter image description here

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:

What do glossy distribution models do?


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.