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 (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).
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.
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.