Luminance Stack Processor (5 Stops)
The 5-stop Luminance Stack Processor
- ev_plus_4
- ev_plus_2
- ev_0
- ev_minus_2
- ev_minus_4
- hdr_image
The Luminance Stack Processor (5 Stops) is the 3-stop version with two extra brackets bolted on: EV+4 and EV−4 on top of the EV+2 / EV0 / EV−2 set. Same algorithms, same knobs, same output - just a wider net. Instead of a 4x dynamic range (EV+2 to EV−2), you're covering 16x, which matters when the scene has both a sunlit window that's still blowing out at EV−2 and shadows that are still crushed at EV+2.
When to reach for it
If the 3-stop merge leaves your highlights clipped or your shadows empty, this is the upgrade. The detail injection algorithm maps EV−2 detail into the 1.0–2.0 HDR range and EV−4 detail into 2.0–4.0, so extreme highlights actually recover when you expose down in Nuke. Same story in the shadows with the EV+2 / EV+4 overexposed frames. Real-world bracketing with this kind of spread demands a tripod and locked white balance, because five misaligned images merge about as well as you'd expect.
Where the 5-stop version genuinely shines is the AI workflow: generate five exposure variants from one source image with the author's FLUX.1 Kontext exposure LoRAs, and you get a perfectly aligned EV+4…EV−4 stack for free. No tripod required, and the 8-stop spread is exactly the range those LoRAs are trained to produce.
Inputs and knobs
Five IMAGE inputs, in order: ev_plus_4, ev_plus_2, ev_0, ev_minus_2, ev_minus_4. EV+4 is the brightest (longest exposure), EV−4 the darkest - wire them in that order or the math gets confused. Everything else is shared with the 3-stop node: hdr_algorithm (default detail_injection, with radiance_fusion, debevec, robertson, and friends in the list), exposure_step, exposure_adjust, and the three Debevec-only knobs. Output is a single hdr_image tensor with values above 1.0.
Caveats worth knowing
Five brackets means five images of memory in flight, so this is heavier than the 3-stop. And more inputs is more surface for one bad bracket to poison the merge - if your EV+4 variant came out of the sampler looking like a blown-out gray smear, the result inherits that. The median-based statistics in the detail injection and Debevec paths help reject outliers, but garbage in, HDR out.
Honestly, most people don't need this node's full range. Start with the 3-stop, and only reach for five brackets when you can see the clipping. For everything else - install via ComfyUI Manager ("Luminance Stack Processor") or git clone https://github.com/sumitchatterjee13/Luminance-Stack-Processor.git into ComfyUI/custom_nodes, then pip install -r requirements.txt. Same pack, same rules, and it still wants OpenCV installed before you restart ComfyUI.
Inputs (11)
| Name | Type | Default | Description |
|---|---|---|---|
| ev_plus_4 | IMAGE | — | |
| ev_plus_2 | IMAGE | — | |
| ev_0 | IMAGE | — | |
| ev_minus_2 | IMAGE | — | |
| ev_minus_4 | IMAGE | — | |
| exposure_stepopt | FLOAT | 2.00.5–5 | — |
| exposure_adjustopt | FLOAT | 0.0-5–5 | — |
| hdr_algorithmopt | COMBO | detail_injection | 7 options: detail_injection, radiance_fusion, natural_blend, mertens, debevec, robertson, +1 |
| auto_calibrateopt | BOOLEAN | true | Enable adaptive calibration for AI-generated brackets (Debevec/Robertson only) |
| debevec_exposure_compopt | FLOAT | -8.0-15–15 | Exposure compensation for Debevec/Robertson output (in stops). Default -8.0 optimal for AI brackets. |
| debevec_anti_bandingopt | BOOLEAN | true | Apply optional gradient-adaptive dithering to reduce banding (Debevec/Robertson only). Disable for pure lambda=100 smoothness with no color changes. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| hdr_image | IMAGE | — |