1 The idea
Symptom: the sparks look flat, like orange stickers, and the bokeh discs are faint grey with no bright core. Probe Read sparks: the cores read about 62. After "Clamp (keep it legal)" they are 1. Someone decided values above 1 were "illegal" and cut them.
A defocus spreads each point’s light over a disc. Clip it to 1 first and the disc has almost no light left. Once you remove the clip, the cores go back above 1, and there Nuke’s screen returns max(A, B), so the light still isn’t added onto the plate. Two fixes: stop clipping before the defocus, and add the light with plus.
screen (Nuke): A + B − AB in 0–1, max(A, B) above 12 Hands-on in the mini compositor
Task: bring back bright sparks and bright round bokeh (two things to fix)
Disable the node that cuts the light, then change the Merge operation. Drop the Viewer gain to 0.1 to see the cores.
3 Deep dive
Light needs all its energy before it spreads
Defocus and motion blur spread one point’s light over many pixels while keeping the total; a glow adds a spread copy of that light on top. A spark core at 62 spread over a wide disc stays bright enough to read as crisp bokeh. Clip it to 1 first and almost 99% of the light is gone, so the disc is just a grey ghost.
| Spark core | Before Defocus | The bokeh disc |
|---|---|---|
| Not clipped | ≈ 70 | Bright and crisp |
| Clamped at 1 | 1 | Faint and grey |
Screen is not plus
In Nuke 17, screen uses A + B − AB only while both values are within 0–1. Above 1 it returns max(A, B), so light cores above 1 are not added to the plate at all. It looks "safe", but flat.
Some artists use screen on purpose to stop wide glows from blowing out: an artistic choice. For real light such as fire and sparks, use plus and control strength with the element’s gain.
If the values really are huge
Values above 1 aren’t an error. If you truly must limit them (say, to build a mask or feed a node that only takes 0–1), do it on a copy used as the mask. The main image branch keeps its full light until after the defocus and glow.
Look at cores with viewer gain 0.1: a flat plateau means a clip
4 In real work
In Nuke
- Read fire/sparks → (Grade with gain) → Defocus or ZDefocus → Merge plus onto the plate
- Clamp if needed: clamp only the minimum to remove negatives, never the maximum on a light branch
- Merge: operation plus for alpha-0 light (over gives the same when a = 0)
- Check with a low viewer gain, sampling a core before and after each node
Common mistakes → the fix
- ✗ Clamping at 1 because values above 1 seem wrong✓ Above 1 is real light in scene-linear; keep it.
- ✗ Screening HDR light✓ Nuke’s screen falls back to max(A, B) above 1; use plus.
- ✗ Defocusing after a display conversion or a clip✓ Defocus in unclipped linear.
Before you send the shot
- No Clamp maximum on a light branch before defocus or glow
- Light goes on with plus, not screen (unless on purpose)
- Cores still show detail at viewer gain 0.1, not a plateau
- Judge the FX over black and over white before blaming the plate
5 Check yourself
Why are the bokeh discs dull and grey?
🔒 Answer the question above and this card opens
1. In Nuke 17, A = 2.0 screened over B = 0.5 gives…
2. You need a limited version of the light for a mask. Where do you do it?
Where the numbers come from: A case from a real production problem, retold without naming the job and rebuilt with our own Blender images. Computed in your browser: Merge, Grade, Premult, Keymix, Invert and Clamp match Nuke 17.0v2 (checked); Toe, Defocus, Sharpen, Grain, the Keyer and Despill are teaching versions, not identical to Nuke’s nodes.