Nodes/ComfyUI ACES EXR Toolkit/HDR Exposure Adjust πŸ’‘
ComfyUI Node

HDR Exposure Adjust πŸ’‘

The whole node is one multiply

By azhagurajpandiansΒ·Created 4 months agoΒ·Updated about a month agoΒ· 0
HDR Exposure Adjust πŸ’‘
  • image
  • image
β—„ev_adjust0.0β–Ί

HDR Exposure Adjust is about as thin as a node gets: it multiplies your image's RGB by 2.0 ^ EV and hands it back. One input, one slider, one output. That's it - and it's exactly as trivial as it looks.

So why does it exist? Because true exposure adjustment only works on float data, and this node is honest about that being its entire reason for being. On an 8-bit SDR image, multiplying by 2^2 just blows out the highlights into flat white and loses everything. On a scene-linear float tensor - the kind the pack's EXR loaders and synthetic-HDR nodes produce - multiplying by a power of two is a real exposure change. Midtones shift, highlights roll off naturally, nothing clips until it genuinely should. That's the difference between cranking "brightness" on a JPEG and changing the exposure on a raw file, and this node is the raw-file version.

How it works

The math: out = image * (2.0 ** ev_adjust), applied to the RGB channels. The ev_adjust slider runs from -20 to +20 EV in 0.1 steps. Positive pushes brightness up, negative pushes it down. It's linear, deterministic, and fast - the kind of operation the KB's post-processing notes describe as a "millisecond, deterministic" primitive you should reach for instead of burning a diffusion pass to fake.

Where it shines:

  • Dialing the highlights down on an over-bright HDR before tone mapping (drop it -1 or -2 EV)
  • Normalizing an HDR tensor before a merge or save
  • Matching exposure between two HDR images you're about to A/B or composite

The inputs

  • image - the float tensor
  • ev_adjust - the EV offset, default 0, range -20 to +20

Output is image, same shape as the input. Nothing else. There's no mode, no curve, no clamp - and that's a feature. If you want to clamp or reshape the range, that's the tone map's job, not this node's.

Install

Part of the ACES EXR 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

The one thing to internalize: this node is only meaningful on float/HDR data. Feed it a clamped 0–1 SDR image and you're just adjusting brightness with extra steps - the +EV side clips immediately. If that's what you're doing, you're better off with a gamma or levels node on the SDR path. Use this when the data is already linear float, which is the pipeline this pack is trying to build.

Categoryimage/ACES + EXR

Inputs (2)

NameTypeDefaultDescription
imageIMAGEβ€”
ev_adjustFLOAT0.0-20–20β€”

Outputs (1)

NameTypeDescription
imageIMAGEβ€”