1 The idea
Fire doesn’t block anything; it gives off light. So on a plate it is added with a plus Merge, and its alpha is 0 or close to it. An over with alpha 0 is exactly a plus. Our campfire is float: its core reaches about 25.0 (4.6 stops above 1). The display-referred file is the same fire turned into sRGB 8-bit, with 77% of its flame pixels clipped flat at 1.
Switch the element file and the merge mode, pull the black point and drag the exposure down. Watch the profile under the image against the 1.0 line, and the readout for what the element adds where it should be empty. Both files sit on the same lifted black, about 0.0091.
plus: A + B · 1 stop = ×22 Hands-on
Task: make the fire sit in the plate: real light (the float file), added as light, and the element’s empty area adds nothing.
Watch what the element adds in the black around the flame (try gain ×8 on the Viewer), then drag exposure down to see which file keeps a shaped core. When you’re done testing, leave exposure within ±1 stop of where it started.
3 Deep dive
Light adds, matter blocks
An emissive element such as fire or sparks doesn’t hide the background; it only adds light, so it is plussed. Matter such as smoke or dust really blocks light, so it goes over with its own alpha.
over is A + B·(1 − a). With the fire’s alpha at 0 it becomes A + B, which is plus. So a fire with alpha near 0 gives almost the same result with either of the two.
| Element | Merge | Alpha |
|---|---|---|
| Fire, sparks | plus | 0 or close to it |
| Smoke, dust | over | Its real alpha |
Why screen fails on HDR fire
Lessons C6 and CF4 already show why: above 1, Nuke’s screen returns max(A, B), so the fire’s light is no longer added to the plate.
Most of a fire’s core sits above 1, which is exactly where screen throws light away. If the fire is too hot, lower the element’s exposure; don’t change the merge mode.
Too hot? Fix the exposure, not the merge mode.
The core above 1 is data
In the float file the core reaches about 25.0, about 4.6 stops above 1, and about 77% of the flame pixels are above 1. The display-referred file flattens all of that at 1.
Exposure is counted in stops; one stop doubles or halves the light. Drag it down and the float file still shows shape in the core, while the clipped file turns into a flat orange plateau. A glow built from a flat core comes out flat too. If a clipped fire is all you have, the steps below put some texture back into the core.
- 1Luma-key the clipped part
- 2Same fire, mirrored + time-offset
- 3Multiply it in
- 4Plus only inside the key
- 5Grade exposure down
The element’s black must be 0
Plus adds every pixel, including the black around the flame. Both files here sit on an empty black lifted to about 0.0091 linear (the float one too, on purpose); plus it and the whole element card becomes a grey veil over the plate.
Fix it by sampling the black in the empty area and subtracting it. A log-encoded premultiplied element can have the same problem: where alpha is 0 it reads a small non-zero value that shifts the whole frame. The fix is rgb − k·(1 − a), with k sampled per shot.
Gain the viewer up and sample the empty area before every plus.
Grade and judge the fire in the right place
High-value emissive elements are best graded in log or judged through a filmic or ACES view. In a plain sRGB view an orange fire clips into white with a harsh step.
Real fire runs white core → yellow → orange → dark red. Desaturate only the hottest part; don’t paint the whole flame saturated orange.
- 1White core
- 2Yellow
- 3Orange
- 4Dark red
4 In real work
In Nuke
- Read the scene-linear EXR. If you only have a display-referred file, convert it to linear with Colorspace first (what was clipped stays clipped).
- Sample the empty black and remove it with Grade (blackpoint) or an Expression rgb − k·(1 − a).
- If removing the black leaves negatives, Clamp the low end only; never clamp the top.
- Exposure (set Adjust in to Stops; it opens in Densities) to set the fire’s strength in stops.
- Merge (plus) the fire onto the plate.
- Pull the viewer gain down and look through a filmic or ACES view to check the core still has shape.
Common mistakes → the fix
- ✗ Using screen “so it doesn’t blow out”✓ Above 1 screen returns max(A, B); plus it and control strength with Exposure.
- ✗ Grading the whole fire a saturated orange✓ Keep a hot, desaturated core, then yellow, orange, dark red.
- ✗ Using an 8-bit display-referred fire as the hero light✓ Its core is already clipped; use a float file, or rebuild detail in the clipped part first.
- ✗ Plussing an element with a lifted black✓ Sample the empty black and bring it to 0 before the merge.
- ✗ Judging the fire only in the plain sRGB view✓ Check it through a filmic or ACES view, or grade in log.
Before you send the shot
- The fire is a scene-linear float file.
- It is merged onto the plate with plus, not screen.
- With gain up, the element’s empty area adds nothing: no grey card.
- With viewer gain down, the core still has shape, not a flat patch.
- The core is hot and desaturated, running to yellow, orange, dark red.
- Through a filmic or ACES view there is no harsh step.
5 Check yourself
You plus the fire onto the plate and a faint grey rectangle shows around it, the whole card. What causes it?
🔒 Answer the question above and this card opens
1. You drag the fire’s exposure down and the display-referred file turns into a flat orange patch. Why?
2. You lower a fire by 2 stops. A core of 16 becomes…
Where the numbers come from: Computed in your browser. The campfire is a gas sim rendered to a scene-linear EXR; the display-referred file is that same render, converted by us to sRGB 8-bit with a lifted black to stand in for a typical stock element, and we put the same black level under the float file too (teaching version). The campfire is a small sim and looks a little blocky up close. The desert plate and robot are our own Blender renders. The Merge maths match Nuke 17. Every element is our own: Mantaflow sims in Blender 5.2, rendered in Cycles through the plate’s camera (EmberGen could not export headless on this machine). No stock elements.