Home · Lab · Case Files: real comp problems

CF4 Case 4: flat sparks and grey bokeh

Light clipped at 1 before the defocus, then screened on top

Case Files: real comp problems · ~7 min · Free

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 1

2 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.

SkyVFX mini compositor · CF4640×360 · float · 1001

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 coreBefore DefocusThe bokeh disc
Not clipped≈ 70Bright and crisp
Clamped at 11Faint 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

  1. Read fire/sparks → (Grade with gain) → Defocus or ZDefocus → Merge plus onto the plate
  2. Clamp if needed: clamp only the minimum to remove negatives, never the maximum on a light branch
  3. Merge: operation plus for alpha-0 light (over gives the same when a = 0)
  4. 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

One question to check yourself

Why are the bokeh discs dull and grey?

What you learned

🔒 Answer the question above and this card opens

More questions

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.