18

Most modern renderers use physically-based materials and their models are often parameterized over roughness. Since this wasn't always the case with renderers, conventional assets often don't have a notion of roughness. Instead, we see "shininess" or "specular power" as a common material parameter.

I understand that there is no exact conversion between the two, but is there a rule-of-thumb / approximate way to get roughness for a material whose specular power or shininess is known?

ap_
  • 2,204
  • 1
  • 18
  • 27

2 Answers2

14

As you already note, there is no clear cut interpretation/conversion for these values. I think it is even much worse: Depending on your BRDF and internal limitations (like having defined exponents ranging from 2-2048) the interpretation is completely different. Like suggested in the comments, it might be the best to render a series with different values and fit a conversion curve until the value looks intuitive.

A few examples I was able to find some blog posts that mention something about that topic:

  • At Dontnod entertainment they use a "perceptual linear distribution". Sébastien Lagarde acknowledges the problem in this blog post and writes a few notes on that.
  • Brian Karis uses a squared roughness values in this Microfacet BRDF overview. This illustrates also nicely how differently roughness is used in different Normal Distribution Functions. Blinn-Phong power is here defined as 2/roughness^4 - 2.
  • Frostbite uses a squared remapping. ie. Roughness = (1 − Smoothness)^2 Details about it and their entire material system is explained in section 3.2 of Sebastien Lagarde's writeup.
  • This blog post suggests to define the roughness for a Beckmann distribution from the shininess alpha as:

enter image description here

Wumpf
  • 853
  • 7
  • 15
  • 2
    I wonder if it will be helpful to plot the various methods on a single plot. For example - I plotted two of your links here: http://i.imgur.com/YJjIMOQ.png – ap_ Sep 18 '15 at 17:22
1

Quite an old post, put based on the comments here and the posted plot, I fitted a curve leading to the following equation:

smoothness = 0.25 * shininess ^ 0.2