Home · Lab · Color

C5 Gamut: same numbers, different colours

sRGB, P3, Rec.2020 and ACEScg on one diagram

Color · ~7 min · Free

1 The idea

RGB (1, 0, 0) does not say how red it is until you know the colour space. Each triangle is the range of colours that space can describe; ACEScg is much wider than sRGB.

An sRGB image going into an ACEScg comp needs a primaries conversion, not just a gamma change. Some default setups only change the gamma, and the colours come out over-saturated.

2 Hands-on

Pick ACEScg, push g up and r, b down

SkyVFX Lab · C5interactive · 1001

3 Deep dive

Primaries + white point = what RGB means

A colour space has three parts: three primaries, a white point and a curve (transfer function). Two files with the same numbers can be different colours if any of these differ.

SpaceprimarieswhiteCurveUsed for
sRGBRec.709D65sRGBtextures, web, monitors
Rec.709Rec.709D65Rec.709 (display BT.1886)HD video
Display P3P3D65sRGB-stylewide-gamut screens
ACEScgAP1≈ D60linearCG/comp working space
ARRI LogC3ARRI Wide Gamut 3D65LogC3Alexa footage

Same red, new numbers

sRGB’s full red (1, 0, 0) becomes about (0.613, 0.070, 0.021) in ACEScg. ACEScg’s primaries are wider, so sRGB red is made with less AP1 red plus a little green and blue.

Neutrals do not move: white (1, 1, 1) and 0.18 grey keep their values, because the conversion also adapts the white point (chromatic adaptation). The other way, ACEScg’s full green (0, 1, 0) is about (−0.62, 1.14, −0.13) in sRGB.

Negative values = colours outside the triangle

Negatives after a conversion are not broken pixels; they are colours the target space cannot describe. They show up with LEDs, neon, saturated sparks and blue/green screens.

The trouble is that many nodes dislike negatives: keyers, divide, log conversions and gamma (in Nuke, gamma of a negative returns 0). Simply clamping them shifts the hue. The fix depends on the pipeline; some shows use gamut compression.

Invisible on an sRGB screen: find them with an Expression putting r<0||g<0||b<0 into alpha (see C9)

What to convert and what to leave alone

Images that are colour need both the curve and the primaries converted. Images that are data must come in raw with no conversion, or the numbers they carry get bent.

ImageConvert?
colour textures, albedo, logos, sRGB stock sparksyes: curve + primaries
HDRI (linear, sRGB primaries)yes: primaries
normals, depth, motion vectors, positionno (raw)
roughness, masks, alpha, ID mattesno (raw)

4 In real work

In Nuke

  1. Nuke’s own colour management changes only the curve, never the primaries. A LogC plate read as AlexaV3LogC stays in ARRI Wide Gamut primaries.
  2. To convert primaries in that mode, use the Colorspace node’s primaries settings, or switch to OCIO.
  3. With OCIO, e.g. an ACES config, the Read’s input space converts both the curve and the primaries into the working space (e.g. ACEScg).
  4. OCIOColorSpace: convert a single element, e.g. sRGB stock sparks into ACEScg.
  5. Data passes (normals, depth, motion): tick raw data on the Read so nothing is converted.

Common mistakes → the fix

  • ✗ Converting only the gamma of an sRGB PNG going into an ACEScg or ARRI Wide Gamut comp✓ Convert the primaries too, or the colours come out over-saturated and shifted.
  • ✗ Colour-converting a normal or depth pass✓ Data must stay raw, or relighting and defocus go wrong.
  • ✗ Clamping all negatives to 0 without thinking✓ Ask the pipeline first; some shows use gamut compression. If you must clamp, do it only where it causes trouble.
  • ✗ “It looks fine on my screen”, so gamut is never checked✓ An sRGB screen hides out-of-gamut colour. Check for negatives, or desaturate to reveal the difference.

Before you send the shot

  • Every colour element converted (curve and primaries) into the working space
  • All data passes come in raw
  • Negatives checked in saturated areas (LEDs, fire, screens)
  • You know which config and working space the show uses

5 Check yourself

One question to check yourself

An sRGB texture goes into an ACEScg comp. What do you need?

What you learned

🔒 Answer the question above and this card opens

More questions

1. sRGB red (1, 0, 0) becomes about (0.61, 0.07, 0.02) in ACEScg. Why?

2. After converting an ACEScg render to sRGB, a green laser shows negative red. What does it mean?

Where the numbers come from: Curves and matrices are computed from published definitions (sRGB IEC 61966-2-1, ARRI LogC3 EI 800, Rec.709/P3/Rec.2020/ACES AP1 primaries) and checked against published reference numbers. The tone curve is an example formula, not ACES/AgX/Filmic.