Probably like a lot of people conscious of linear workflow, I've been using Vray's built in color mapping with a 2.2gamma applied to make sure 8bit images are saving in an sRGB color space. What I've noticed though, is that while a 2.2 gamma is really close to an sRGB conversion, it's still off.
One way to get a perfect sRGB colormapped image is by no gamma correction and saving images in a 16/32bit floating point format (like .exr) and then applying color mapping in a post program. While this is potentially a great way to work, 16/32bit images are also HUGE files that are going to slow down a composite and eat drive space. I only use them when I have to. The other way to get a perfect sRGB image is apply the sRGB switch in the Vray Frame Buffer and saved out the baked image. The sRGB math in the VFB is perfect, but currently you have to save out images one at time.
What doesn't work is applying color mapping to a saved 8bit image. This can give you terrible banding as it's stretching the histogram. The standard baking in a 2.2gamma also has its draw backs because the math isn't right and it can lead to incorrect brightnesses and washed out colors.
Is there currently an easy way Vray can apply a true sRGB colormap to a batch render instead of using a linear 2.2 gamma multiply? There might be an easy way to do this that I overlooked. If not, I could recommend a check box under colormapping just called "sRGB" that will automatically apply the same sRGB curve from the VFB and bake it into images.
For anyone who is curious, A 2.2gamma converstion just applies a power of 2.2 while a true linear <-> sRGB conversion actually looks something more like this:
def s2lin(x):
return where(x <= 0.04045,
x / 12.92,
pow((x + 0.055) * (1.0 / (1 + 0.055)), 2.4))
def lin2s(x):
return where(x <= 0.0031308,
x * 12.92,
(1 + 0.055) * pow(x, 1 / 2.4) - 0.055)
One way to get a perfect sRGB colormapped image is by no gamma correction and saving images in a 16/32bit floating point format (like .exr) and then applying color mapping in a post program. While this is potentially a great way to work, 16/32bit images are also HUGE files that are going to slow down a composite and eat drive space. I only use them when I have to. The other way to get a perfect sRGB image is apply the sRGB switch in the Vray Frame Buffer and saved out the baked image. The sRGB math in the VFB is perfect, but currently you have to save out images one at time.
What doesn't work is applying color mapping to a saved 8bit image. This can give you terrible banding as it's stretching the histogram. The standard baking in a 2.2gamma also has its draw backs because the math isn't right and it can lead to incorrect brightnesses and washed out colors.
Is there currently an easy way Vray can apply a true sRGB colormap to a batch render instead of using a linear 2.2 gamma multiply? There might be an easy way to do this that I overlooked. If not, I could recommend a check box under colormapping just called "sRGB" that will automatically apply the same sRGB curve from the VFB and bake it into images.
For anyone who is curious, A 2.2gamma converstion just applies a power of 2.2 while a true linear <-> sRGB conversion actually looks something more like this:
def s2lin(x):
return where(x <= 0.04045,
x / 12.92,
pow((x + 0.055) * (1.0 / (1 + 0.055)), 2.4))
def lin2s(x):
return where(x <= 0.0031308,
x * 12.92,
(1 + 0.055) * pow(x, 1 / 2.4) - 0.055)
Comment