Nick said:
Well I meant gamma correction before and after arithmetic color operations, which is often combined with HDR, no?
Floating point textures or render targets should store color in linear color space. Shader arithmetic should be linear color space, too, so no conversion is needed.
Then you lose a lot of color resolution for the dark tones. The human eye is less sensitive to intensity differences between bright colors. It's exponential, just like the gamma curve. So adjusting the display isn't the correct solution (unless we would have HDR displays, i.e. more than 8-bit per component).
So I think we should really correct the color interpolation. :?
Well, raising the gamma value was just a suggestion how to make this image look properly.
Generally, what should be done is this:
- constant colors and vertex colors should be in linear color space (edit: as long as they're FP, that is)
- fixed point color textures should be "sRGB" (which in this context just means gamma 2.2)
- FP textures should be in linear color space
- the TMU should linearize fixed point sRGB texels before filtering
- all shader arithmetic, including interpolation, should be linear
- with a fixed point color rendertarget, frame buffer reads for blending should be ^2.2, frame buffer writes should be ^(1/2.2). Same for AA downsampling.
- with a FP color target, those operations should be linear
- on scanout, the gamma LUT should take care that the sRGB values in the fixed point framebuffer are linearized again