1 The idea
A light group is the whole robot lit by a single light. Plus all the groups together and you get the beauty back (in our float render, at most 0.000004 off), so you can rebalance each light in comp without a re-render.
Move the key, fill, rim and emission exposure sliders in stops and watch the two grey balls under the image: the CG ball should match the plate ball on its lit side, shadow side and back edge. The readout shows how far off each one is, and the “Σ − beauty ×50” view shows whether the sum is complete.
beauty = Σ light groups · gain = 2^stops2 Hands-on
Task: rebalance the light groups so the CG ball matches the plate ball: lit side, shadow side and back edge within 8%, and the rim at −4 stops or lower (−6 switches it off).
At the start the lit side is about 11% off and the shadow side about 135%. The key drives the lit side most; the shadow side is lit by the fill (the sky). Fix one side at a time, then ask what in the plate could light the back edge.
3 Deep dive
A light group is a mini beauty
Each light group is the whole robot lit by one light. It holds everything that light produces, diffuse, spec and the rest, so grading a group changes every material that light touches.
In Blender Cycles, lights, emissive objects and the world each get a light group, and each group renders as its own pass. Our robot has four.
| Group | Light | Source in the plate |
|---|---|---|
| key | The sun | Yes, the plate’s sun |
| fill | The sky | Yes, the plate’s sky |
| rim | An extra light behind the robot | None |
| emission | The visor and antenna tips | The robot itself |
Check the sum before you grade
Rebuilding from light groups is simple: shuffle each group out and plus them together, no multiply or divide. Then compare with the beauty. Anything not in a group, such as a light left out or emission with no group, is missing from the sum and shows up in the difference.
On our float render with denoise off, the four groups minus the beauty differ by at most 0.000004; the figure’s readout is computed from the half-float data sent to your browser, so it shows a little more. Remember that material AOVs and light groups each rebuild the full beauty on their own: never add one set to the other.
- 1Shuffle each group
- 2Plus them together
- 3Difference vs beauty
- 4Push viewer gain
- 5Should be near black
Stops and multiplies only
gain = 2^stops: +1 stop is ×2, −1 stop is ×0.5, +3 stops is ×8. Exposure and a colour multiply are what lighters already use to set lights, so your comp values can go back to lighting and the sum stays clean.
Lift and offset add a value instead of scaling. An offset on all four groups puts four times that offset into the sum and lifts the blacks everywhere; a negative one crushes the darks (to 0 with Grade’s default black clamp, below 0 without it). Gamma isn’t linear, so the graded groups no longer sum to the graded whole. If the shot needs a lift, do it once, after the rebuild.
| Operation | Sum stays clean | Can go back to lighting |
|---|---|---|
| Exposure (stops) | Yes | Yes |
| Colour multiply | Yes | Yes |
| Lift / offset | No | No |
| Gamma | No | No |
Match the plate’s light, not your taste
The plate ball is an 18% grey ball rendered in the plate’s own sun and sky, like a reference shot on set. The CG ball goes through the same sliders as the robot, so when the two balls match, the robot’s lighting matches the plate. The key mostly sets the lit side; the shadow side is lit by the sky, the fill.
The rim has no source in the plate, so however nice it looks, it goes. The same holds for any CG light that nothing in the plate could make.
Mute a rejected light instead of deleting it until the look is final.
4 In real work
In Nuke
- Shuffle2: pull each light-group layer out to rgba, one per group.
- Merge2 (plus) all the groups, then Merge2 (difference) against the beauty and push the viewer gain: it should be near black everywhere.
- EXPTool (Exposure) on each group, with mode switched to Stops first, since it opens in Densities.
- Multiply for each group’s colour, or a Grade using only multiply/gain with lift and offset left at their defaults.
- Copy the beauty’s alpha onto the rebuilt image, then Merge2 (over) onto the plate.
Common mistakes → the fix
- ✗ Adding material AOVs and light groups into one sum✓ Pick one set: each rebuilds the full beauty alone, and adding both doubles the light.
- ✗ Darkening a light group with lift or a negative offset✓ Use negative stops or a multiply below 1, so the sum adds up and nothing goes below 0.
- ✗ Keeping a CG light with no source in the plate because it looks nice✓ If nothing in the plate could make that light, mute it.
- ✗ Grading without first checking that Σ groups = beauty✓ Look at the difference first; if emission or an ungrouped light is missing, get it into the rebuild.
- ✗ Leaving the Exposure node in Densities✓ Switch mode to Stops so the values match the lighter’s stops.
Before you send the shot
- Σ groups − beauty is near black with the viewer gain pushed.
- Only Exposure (Stops) and multiplies sit on the groups.
- Every remaining light has a source in the plate.
- The CG grey ball matches the reference on its lit and shadow sides.
- Each group’s stops and colour are noted to send back to lighting.
5 Check yourself
The fill group is too strong. Which fix keeps the rebuild clean?
🔒 Answer the question above and this card opens
1. The Σ groups − beauty view shows the visor and antenna tips glowing. What does it mean?
2. Lighting asks for +1 stop on the key. You type 1 into Exposure, but the image doesn’t double. What’s the likely cause?
Where the numbers come from: Every picture is a Blender 5.2 Cycles render of our own desert and robot (tools/assets/passes_cg.py), computed in your browser. Denoise is off so the light groups add up exactly (at most 0.000004 off). The plate ball is an 18% grey ball rendered on its own in the plate’s sun and sky. The delivered lighting (key under, fill over, a rim) was set by us for the exercise. The figure’s Σ − beauty readout is computed from the half-float data sent to your browser, so it shows a little more. The two balls are separate renders with their own noise, so the tolerance (8%) is set from the error left at the exact fix. Exposure here is gain = 2^stops, the same maths as Nuke’s Exposure in Stops mode.