Color Science and Display
Domain scope
Color Science and Display tests color matching, tristimulus values, chromaticity, transfer functions, gamut mapping, and HDR display pipelines.
Core rules
- CIE XYZ is a device-independent tristimulus space; Y is luminance, and x+y+z=1 gives chromaticity.
- Linear RGB is converted to XYZ by a 3×3 matrix defined by the primaries and white point.
- The sRGB transfer function is approximately linear near black and a power function elsewhere; it is not a simple 2.2 gamma.
- Display-referred output needs tone mapping and gamut mapping; scene-referred HDR values can exceed 1.
Worked example
For linear sRGB, luminance is Y=0.2126R+0.7152G+0.0722B. If R=G=B=0.5, Y=0.5. To encode 0.5 linear for an sRGB display, use the sRGB formula: since 0.5>0.0031308, encoded=1.055×0.5^(1/2.4)-0.055 is about 0.735. A naive 0.5^(1/2.2) is about 0.730; the difference matters in dark gradients and reference matching. On a 200 cd/m² display, linear 0.5 corresponds to about 100 cd/m²; the encoded code value is 0.735, and the display transfer function decodes it back to 0.5.
Traps that cost marks
- Calling chromaticity coordinates colors without fixing luminance.
- Applying gamma twice, once in the texture and once in the framebuffer.
- Mixing D65 and D50 white points without adaptation.
- Blending premultiplied and straight-alpha colors in the same pass.