Spec and Shiny

I’ve done quite a lot more reading about PBR (physically based rendering) now. It seems that gloss maps (or roughness maps, which are just inverted gloss maps) are extremely important in PBR, roughness being probably the single most important model input.

Another key point about shininess(/roughness) in PBR is that for realism you need to obey conservation of energy (i.e. cannot have more light emanating from a surface than falls on it), and an essential part of this is that the specular brightness must be lower where the shininess is lower.

This is something I had already independently observed from my experiments with using gloss maps in JME(!) So I had already added an option to modify specular brightness based on the gloss map - I was kinda doing PBR already :wink: (though I didn’t know I was, and the specular brightness modification I’m using is ad hoc, not from any actual theory of lighting).

Barney

In PBR you don’t have such problem because the shininess is computed by the shader if you use metal/rough pipeline and it will always obey to energy conservation, the case is different if you use specular/gloss pipeline.

Well, I was talking about changes in the shader - my shader changes modify specular brightness downwards where roughness is higher.

But I think you mean “specular brightness” where you say “shininess” above? Shininess is not computed in PBR as I understand it. It is the same as roughness (well… it is 1 - roughness if you transform them to [0, 1] range), a core input to the lighting model.

Barney

Ok, i probably misunderstood your post then.

Yes

In traditional Phong model rendering, it’s just the thickness/thinness of the lobe of reflection.
Seems to be the same in PBR - defines how widespread or focussed the reflected light will be.
Only difference is that PBR uses that energy preservation computation whereas the Phong model relies on the artist who sets the lights and the material parameters to “estimate” that energy preservation (or to deliberately generate “unlikely” effects).
I always found it weird that jME only had one float value for shininess and did not support a texture for shininess by default - it appeared unnatural to me that you couldn’t control such an important aspect of the Phong model per texel but only for the whole object.

You mean a specular map? JME has that.

    // Specular/gloss map
    Texture2D SpecularMap

Actually specular intensity and shininess are two different things.

As of jME 3.2 (master branch), there’s support for shininess map since PBR got merged.

3 Likes

No, we’re talking about gloss (roughness) maps. My offer to contribute my code stands!

Just noticed Momoko_Fan’s comment, seems it is now supported in 3.2. Great, and thanks.