You pull exposure down on the mainstage red wash and nothing comes back. The reds still smear, the faces inside the wash still go plastic, and every extra stop you take off only darkens the rest of the frame.
That is because the wash is not too bright. A stage rig is built from saturated, narrow-band LED and laser sources, and a red wash or a magenta spot can sit far outside the colour space your footage is delivered in. The problem is out-of-gamut saturation, not simple over-exposure — which is why a normal grade smears the reds and makes skin go plastic, and why pulling exposure down does not fix it.
What the transform does with a colour like that
The conversion runs the camera's primaries through a 3×3 matrix, and the matrices this site ships carry negative off-diagonal coefficients. Sony S-Gamut3.Cine → Rec.709, exactly as it appears in the transform library:
| Output | ×R | ×G | ×B |
|---|---|---|---|
| R | 1.6269 | −0.5401 | −0.0868 |
| G | −0.1136 | 1.3413 | −0.2277 |
| B | 0.0725 | −0.4718 | 1.3993 |
Every row sums to 1.0, which is what keeps neutral grey neutral through the transform.
Now push a fully saturated camera-gamut primary through it — pure red, pure green, pure blue in the camera's own space. Each result is just one column of the matrix read downwards:
| Input (linear, camera gamut) | R out | G out | B out |
|---|---|---|---|
| Pure red | 1.6269 | −0.1136 | 0.0725 |
| Pure green | −0.5401 | 1.3413 | −0.4718 |
| Pure blue | −0.0868 | −0.2277 | 1.3993 |
A fully saturated primary does not leave the matrix as three positive numbers. It leaves asking for negative light in at least one channel — green and blue each ask for two.
What happens to those negatives depends entirely on what is doing the converting. This site's own preview code takes the blunt route: it clamps. toRec709() runs Math.max(0, …) across every channel after the matrix and Math.min(1, …) at the end, and the WebGL path does the same with max() and clamp(). That is a fair trade for a 640×360 reference frame rendering in a browser. It is not the behaviour you want standing between your footage and a delivery file, because clamping is exactly what produces the clipped, posterised block instead of a smooth roll-off.
Highlight Recovery is the wrong control
Highlight Recovery is not on the Color Space Transform node at all. It lives in the Camera RAW tab and applies only to RAW formats such as X-OCN or BRAW. It does nothing for XAVC S-Log3.
There is exactly one place on this site where Highlight Recovery is the right advice: the X-OCN RAW guide, because X-OCN is RAW and Node 1 there genuinely is the Camera RAW tab. Carrying that tip across into a non-RAW workflow is what made it wrong everywhere else.
For blown stage lighting the control you want is on the CST node, and it is a different control solving a different problem.
Saturation Compression on the CST node
The Color Space Transform node gives you Input and Output Colour Space and Gamma, Tone Mapping Method, Gamut Mapping Method, Saturation Knee, Saturation Max, Adaptation and Use White Point Adaptation.
Set Gamut Mapping Method to Saturation Compression, then use Saturation Knee to choose where the roll-off starts. That compresses the extreme LED and laser colours back inside the container smoothly, instead of letting them clip and posterise.
This works because Resolve is not throwing the values away while you work. It processes in 32-bit float, and the transform tone-maps highlights rather than hard-clipping them, so the compressed values are still in the chain while you are grading. "Anything the CST clipped is gone" overstates it: the highlights are compressed, not destroyed.
That same latitude is why exposure has to come first. Once the CST has compressed your highlights into Rec.709's much smaller range, pulling exposure down afterwards drags the compressed block down as a whole. You get muddy greys, not recovered detail.
The six technical conversions in Log → Rec.709 Conversion are baked at 33×33×33 from that same transform library. A cube file is a fixed mapping, though, and the Gamut Mapping controls are on the node — so if you want the knee under your own hand, do the conversion with a CST rather than a LUT.
The order to work in
- Node 1 — primary exposure and white balance, on the native log image.
- Node 2 — Color Space Transform: Input Sony S-Log3 / S-Gamut3.Cine, Output Rec.709 / Rec.709, with Gamut Mapping Method set to Saturation Compression.
- Node 3 — the creative look, which expects Rec.709.
Correct, convert, then look. The Offset wheel only behaves like a real exposure adjustment on log data, which is the whole reason node 1 comes before node 2. The look goes last because a LUT is a fixed mapping, and anything you correct downstream of it is fighting a transformation that has already happened.
One thing to know if you are not in Resolve: Premiere's Input LUT slot sits ahead of Basic Correction by design, so there the conversion always lands before your exposure and white balance, whether you want it to or not. The workaround is two stacked Lumetri instances — exposure in the first, the conversion in the second's Input LUT, the look in its Creative panel. That buys you the node order. The Saturation Compression method above is the Resolve CST's, and Resolve is the tool this guide is written for.
Shoot so there is less to fix
- Expose by the numbers, not by the picture. The monitor is lying to you in a dark room. Middle grey (18% reflectance) sits at 41% IRE in S-Log3. Full method in the S-Log3 exposure guide.
- Set Zebra 1 to 94%. That catches stage laser spikes before the sensor clips.
- Do not expect one white balance to be right. The stage wash and the house light are usually different colour temperatures, so no single value covers the whole frame.
- Expect noise in the shadows. Venues are dark, so you are shooting at a high ISO — a separate fight from the one the colour space is giving you, and one that stacks on top of it.
---
Sources
This article draws only on material in this site's own codebase and pages:
- The transform library this site ships — the S-Gamut3.Cine → Rec.709 matrix, its rows summing to 1.0, and the
Math.max(0, …)/Math.min(1, …)clamps intoRec709(). The primary-through-matrix figures in the second table are arithmetic on those same shipped constants. - The WebGL preview shader — the GLSL
toRec709(), which clamps the same way. - The site's own build notes — the CST control list, the Highlight Recovery correction, "a CST compresses highlights; it does not hard-clip them", the six 33×33×33 conversion LUTs, and the 640×360 reference frames.
- The concert LUTs page, and the exposure tips on the site's own homepage — narrow-band LED and laser sources sitting outside the delivery space, out-of-gamut saturation rather than over-exposure, the Saturation Compression and Saturation Knee method, the two-colour-temperature problem, the high-ISO noise problem, and the 41% IRE and Zebra 94% figures.
- The homepage FAQ — the three-node order, correct-before-convert, and the Offset wheel on log data.
- The Premiere Pro page — the Input LUT slot sitting ahead of Basic Correction, and the two-instance workaround.
- The X-OCN RAW guide — the one place on this site where Highlight Recovery is the correct advice.