Forum: Poser - OFFICIAL


Subject: WIP PR4 Skin Shader and BB Eyes

bagginsbill opened this issue on Feb 27, 2011 · 94 posts


bagginsbill posted Sun, 06 March 2011 at 11:28 AM

You can't answer "what is the correct gamma" for everything unless you can answer what the units of measurement were and what is the digital representation of the quantity in question.

If the quantity being described is a color, encoded in a gamma-corrected way, based on the observed color you were getting while drawing it on a screen, then it needs to have the gamma you used at the time you created it, in setting it up for use in Poser.

What is the gamma of a 247 HP engine? Meaningless - it has no gamma. We don't gamma correct horsepower. If we were using an image map to record the horsepower of 20,000 engines, we would say the gamma=1 because gamma doesn't apply.

What is the gamma of the number of eggs in my breakfast? Meaningless. If I make a map containing data about how many eggs were consumed in each of the houses in my town today, those numbers would not have a gamma. They are just numbers, to be used as-is. Which means if we wanted to use that data in a shader, we'd set the image gamma = 1.

Now - who can tell me the definition of a specular map? Depending on your answer, I will tell you it has a gamma of 1 or a gamma of 2.2. But I don't know the answer.

If you tell me the specular map is recording the numerical shine value to use in my VSS shader, for each point, then I would say the gamma is 1, i.e. this is not a color I looked at and chose on the basis of visual observation of the color itself. Rather, it would be a color I chose on the basis of the effect it produced after plugging it into the VSS shader. In that case, we would not want it modified.

Suppose I make a map that represents the specular reflectivity of an actual face, not as measured by looking at a photo, but as measured, linearly, but using a scientific device to measure reflectivity. Each point would be some factor between 0% reflective and 100% reflective. Plotting all those points would produce a specular reflectivity map. What is that gamma of such a map? 1.

But what if I took a photo of an actual facial reflection, somehow manipulate it to only contain specular data, in gamma = 2.2 format? Then, by definition, that gamma is 2.2.

There is no right answer. Every map is data. To understand what gamma to use on that map, you must answer the question: What does this data represent and how is it encoded?

Bump and displacement maps are height maps, and by definition represent height, without any gamma. So they must be set to 1 because they were designed to be used as is. They are data, not colors. They happen be to stored in a file that could also be used to store colors, but that is an unimportant fact.

Normal maps are not color either, even though they look colorful when you display them as if they were colors. They are the cosine components of angular deltas. They are meant to be used as is. They do not have a gamma, so to correctly use them, you set gamma = 1. When you display them as normals with the wrong gamma, it is obvious.

Pretty much the only maps we use correctly where gamma not = 1 is the right answer are diffuse color maps, and even then we're not sure.  The convention is that color maps in HDR or EXR format are gamma = 1. The convention is also that all JPG are at gamma = 2.2, but I can show you maps where that is not true. You have to know how it was made, and why, and how you're supposed to be using it ACCORDING TO THE PERSON WHO MADE IT, not some standard implied by a particular 3D app.


Renderosity forum reply notifications are wonky. If I read a follow-up in a thread, but I don't myself reply, then notifications no longer happen AT ALL on that thread. So if I seem to be ignoring a question, that's why. (Updated September 23, 2019)