Hey Hodgman, I'm well aware of the two seperate workflows. My question was about how many workflows have Base Color, Specular Color, Metalness, and Roughness. (ie: Unreal). In other papers, I see only Base, Metal, and Roughness, no specular. I see the Base is combined with the specular map, so it acts as a specular for metals and as a diffuse for nonmetals. The issue is, for nonmetals, where would the F0 then come from, if the Base Color goes to Diffuse.
EDIT: Oh, by the way, is there a free source for PBR models? Everything I find uses Gloss+Specular. Thanks!
Both spec/gloss and metal/rough can be PBR workflows (or not).
In the "specular workflow", you have:
* RGB Diffuse Colour
* RGB Specular Colour
* Glossiness (pretty much: roughness)
In the "metalness workflow", you have:
* RGB Colour
* Metalness
* Roughness (pretty much: glossiness)
You can think of this last one as being a compression algorithm for the first one.
Before doing any shading, you "decompress" your metalness data back into specular data:
diffuse = lerp( base, 0.0, metalness );
specular = lerp( 0.04, base, metalness );
i.e. for non-metals, the F0 is hard-coded to 0.04 when using the metalness workflow, and the diffuse and specular RGB maps are both generated by decoding the base-colour and metalness maps. Likewise, the diffuse colour of metals is hard-coded to 0.0.
Just to reiterate: metalness is not a property of the BRDF at all. It's a property of this texture packing scheme.
Also, do polarizing cameras only capture the diffuse of nonmetals? How would you capture textures for metals, if that's the case? As far as I know (I create my textures by hand, not camera), polarizing cameras remove specular hilights, and if a metal is all diffuse, would it actually capture? Would this be an issue at all?
Polarizing filters don't remove specular - they can be used in certain situations to remove some of the specular highlights...
* set yourself up a perfectly black room with perfectly black walls
* put an object on the floor to photograph
* put a single spot-light in there with a polarizing filter over it that only lets through vertically polarized light
* put a camera in there with a polarizing filter over it that only lets through vertically polarized light
* take a photo
** diffuse reflections will "unpolarize" the light, turning vertically polarized light into any other kind of polarization with random chance, so your camera will capture approximately half of the diffuse reflections.
** specular reflections will not change the polarization of the light, so you will get (hopefully) all of the specular reflection.
* now rotate the filter on your camera 90º so that it only lets through horizontally polarized light
* take a photo
** you will still capture half the diffuse lighting, as it's randomly polarized
** hopefully you will capture almost none of the specular reflection
* subtract photo #2 from photo #1 and you'll have a picture of just the specular lighting ((~50% diffuse + ~100% specular) - (~50% diffuse + ~0% specular) = ~0% diffuse + ~100% specular).
In practice your room won't be perfectly black, your filters won't be perfect, your alignment won't be perfect, and the idea of "diffuse" and "specular" reflections won't perfectly match the real world, so your photos won't give you this perfect separation either.
I hadn't, though, known about interpolation issues. is there a good way to overcome it?
It's usually not even noticeable. If you're making a lot of assets with texture transitions from dark metal to light plastic, then maybe the metalness workflow isn't the best fit -- use RGB diffuse + RGB specular maps instead of RGB base + metalness maps.