5
$\begingroup$

I have been recently exploring physically-based rendering (PBR), but there is one part that still confuses me. I don't quite get roughness remapping, as described in the PBR section on Learn OpenGL. Specifically, scroll down until you find Geometry function. This remapping is described in several other papers / courses as well, such as Disney and Epic Game's PBR Course. Is this remapping solely artistic, or is there some physical reasoning in it? A quick answer and explanation would be quite appreciated :)

TL;DR What in the world is roughness remapping for?

$\endgroup$
  • $\begingroup$ Ah, that makes sense. So, I'm guessing from your statement, that the remapped roughness is just to make the artists happy, right? It's not required. $\endgroup$ – Daniel Kareh Nov 13 '17 at 0:12
  • $\begingroup$ Yes, it's unnecessary. If you look into Scientific Papers (like the original GGX Paper by Walter et. al), there is no remapping done. Also from a logical viewpoint, if you use $0.25$ as your roughness or $0.5^2$ as your roughness shouldn't make a difference. $\endgroup$ – Tare Nov 13 '17 at 7:18
  • $\begingroup$ @Matthias: That looks like an interesting read. I'll make sure to read through it, thanks for the link. $\endgroup$ – Daniel Kareh Nov 14 '17 at 0:43
  • $\begingroup$ Edit: I removed my comments to merge them in an answer. $\endgroup$ – Matthias Nov 14 '17 at 9:01
2
$\begingroup$

In general, artists like working with a linear roughness value between 0 and 1 (similarly for all other material parameters), since this is easier to work with and to understand compared to directly using the parameters of certain BRDF components as presented in the literature. Disney for instance always uses linear material parameters for their Disney BRDF in the range [0,1] from the perspective of the artists (see their course notes on page 18). Working with linear values in the range [0,1] also simplifies storing and loading these values in RGB or sRGB textures.

The actual roughness used in the BRDF equations is non-linear. So one needs to map linear to non-linear roughness in some computationally cheap way that pleases the artists. The most important thing is to be consistent across your renderer and to explicitly specify when a roughness parameter is linear or non-linear.

It is worth reading Moving Frostbite to Physically Based Rendering 3.0. These course notes explicitly use the terminology linear roughness and (non-linear) roughness, both in the text and code samples. Furthermore, it is also worth reading The Specular BRDF Reference which defines various BRDF components for the Cook-Torrance BRDF using the same non-linear roughness parameter $\alpha$ (defined as the square of the linear roughness $roughness$).

$\endgroup$
  • 1
    $\begingroup$ Great job at summarizing everything! I'll also make sure to check out the BRDF Reference and test out some of them. $\endgroup$ – Daniel Kareh Nov 18 '17 at 14:54
  • $\begingroup$ @DanielKareh you can also take a look at my brdf.hlsl which includes even more BRDF components :) $\endgroup$ – Matthias Nov 18 '17 at 15:02
  • $\begingroup$ Heh, thanks :)The main problem I find is that lots of the lighting models I find on Google or in papers are, I guess, scientific and don't include roughness, so your collection will be pretty useful. $\endgroup$ – Daniel Kareh Nov 22 '17 at 15:56

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.