PBR: Implications for texture creation?

Hi all,

let me try to shed some light on this, as everyone should know a bit about CG in general before trying to understand PBR:

First of all, THE SPECULAR TERM DOESN’T EXIST IN REALITY.
Specular was just a hack to let CG imagery render with view dependent light source reflections.
In the real world all the shiny stuff that you can see is REFLECTION. Hence the drive in CG to raytrace, since it’s an elegant solution to the problem.

Now, materials are roughly divided in two branches: DIELECTRIC (plastic, glass, cement and so on) and NON-DIELECTRIC (METALLIC and other conductors in general).
Why is that? because of phyisics surfaces behave differently to light based on their insulation power.

In addidtion to that, reflection are always view-angle dependent. This is described by the Fresnel equation. Even metals have a fresnel index, it’s just that it’s somewhat flatter.

So why metals are coloured that way?
long answer is this: http://physics.stackexchange.com/questions/72368/why-are-most-metals-gray-silver
Since i doubt that quantum physics is really what we’re after here’s the short answer:
Metals reflect almost all light because they require more energy than visible light carry to absorbe it. Since it’s wavelenght we’re talking here some metals are reddish (bronze, copper) because they can absorbe the more powerful end of the spectrum (blue).

What does this mean for us? As a rule of thumb, dielectric materials have always a color, depend on their light absorption power. some of that gets reflected as a whole (creating reflections), and the reflection direction depends on how smooth the surface is.
So, dielectric materials have a diffuse (albedo) colour, and a reflection based on a correct fresnel value (depending on the type of surface). The roughness in this case is how coarse the surface is, hence burred reflections (dry wood, concrete and so on).
Non dielectric have only reflection and roughness. the only thing we have to approximate is how to tint the reflections.

This is an example workflow:

DIELECTRIC:
Diffuse (albedo): no shadow, no AO (only microAO if you need it, but it’s usually best to multiply that in the spec channel or use the AO input provided), colour needs to be as phisically correct as possible (refer to the dontnod article i pasted earlier to see some values).
Metalness: ******* 0!
Spec (reflection): any value that works with your albedo. Remember the law of energy conservation here Albedo and Specular: A + S <= Amount of Incoming Light (Maximo is right here). Multiply your micro AO to get rid of unwanted reflections as needed. Be careful with this as it’s a hack only meant for reducing artifacts.
Roughness (glossiness): depending on the surface, the more coarse the more you paint it white. This is where you detail everything, as it is tied to reflection (and reflection is everywhere!)

NON-DIELECTRIC 01:
Diffuse (albedo): use this to tint the specular (reflection) term.
Metalness: depends but HIGH (1 for most cases)!
Spec (reflection): not really needed!
Roughness (glossiness): depending on the surface, the more coarse the more you paint it white. This is where you detail everything, as it is tied to reflection (and reflection is everywhere!)

Now, you cannot have perfect control over your fresnel, since it’s approximated by the microfacet BRDF in the shader, but you can emulate that with a careful use of metalness-diffuse-specular. Glossiness is there for variation and just shows how blurry is the reflection.

This is another pretty good tutorial:
http://www.marmoset.co/toolbag/learn/pbr-practice
Notice how it tells you not to use the microAO on the specular. It’s just a hack so they’re right, but it also depends on your settings. If you export to mobile you won’t have SSR so this becomes a good way to remove artifacts.