Nodes/ComfyUI ACES EXR Toolkit/Auto Bracket Generator 🎞️
ComfyUI Node

Auto Bracket Generator 🎞️

Fake exposure brackets, honestly

By azhagurajpandiansΒ·Created 4 months agoΒ·Updated about a month agoΒ· 0
Auto Bracket Generator 🎞️
  • image
  • bracket_batch
β—„ev_values-2.0, 0.0, 2.0β–Ί

Auto Bracket Generator takes one SDR image and makes a batch of exposure-bracketed copies of it. You feed in a single 0–1 image, type -2.0, 0.0, 2.0 into ev_values, and out comes three images in a batch: one darkened two stops, one as-is, one brightened two stops. It's the "fake it" half of the pack's synthetic-HDR story.

The honest part is the interesting part. The node's own source comment is refreshingly direct: this does not hallucinate lost highlight detail, it just mathematically fakes the exposure steps. Multiplying a pixel by 2^2 cannot invent pixels that were clipped to white in the original - it brightens what's there, and highlights that were already at 1.0 stay clipped. That's the fundamental limit of fake brackets, and this node doesn't pretend otherwise.

How it works

Each value in ev_values (comma-separated, so -2.0, 0.0, 2.0 makes three) becomes one image in the output batch: the input multiplied by 2.0 ^ EV and clamped to 0–1. The output is a single batched IMAGE - all brackets concatenated along the batch axis - which is exactly the shape the pack's Exposure Bracket Merge expects to eat.

So the intended flow is the full synthetic pipeline:

AI Generator -> Auto Bracket Generator -> Exposure Bracket Merge -> Save EXR

Where real cameras give you three exposures of the same scene, this gives you three brightness copies of one generation. The merge node is aware it's working with synthetic brackets - that's what its adaptive_calibration setting is for (see that node's article).

The inputs

  • image - your SDR image
  • ev_values - comma-separated EV steps; -2.0, 0.0, 2.0 is the sensible starting point

No other knobs. If you want more dynamic range coverage, add stops to the list (-4.0, -2.0, 0.0, 2.0, 4.0), just remember each one costs a batch slot and merge time downstream.

Install

Same pack as the rest of the toolkit:

cd ComfyUI/custom_nodes
git clone https://github.com/azhagurajpandians/ComfyUI-ACES-EXR-Toolkit.git
python -m pip install -r ComfyUI-ACES-EXR-Toolkit/requirements.txt

Restart ComfyUI; it's under image/ACES + EXR.

Gotchas

Two things. First, the clamp: brackets clip at 0 and 1, so a +2 EV bracket of an already-bright image is mostly flat white - the merge downstream can only use so much of it. If your source is bright, favor the negative EV side. Second, don't expect magic: fake brackets feed a real merge algorithm but they can't recover detail your SDR image never had. That's what Synthetic HDR Expansion is for, and even it has limits.

Categoryimage/ACES + EXR

Inputs (2)

NameTypeDefaultDescription
imageIMAGEβ€”
ev_valuesSTRING-2.0, 0.0, 2.0Comma-separated EV values

Outputs (1)

NameTypeDescription
bracket_batchIMAGEβ€”