Exposure
Brighten in EV stops, the way a camera actually thinks
- image
- IMAGE
A brightness slider adds a flat amount; real exposure multiplies by a factor of two per stop. Those are not the same thing, and the difference shows up the moment your image is dark. Exposure from WtlNodes is the physically-based version: it multiplies pixel values by 2^EV, where EV is exposure value in stops. +1 EV doubles the light, −1 EV halves it. It's the correction that behaves like a camera exposure rather than a digital brightness hack.
That matters for a practical reason: a flat additive brightening (the naive "brightness" knob) lifts your blacks into gray and makes the image look washed. A multiplicative 2^EV brightens proportionally - shadow detail comes up, highlights respond naturally, and the tonal structure survives. It's the correct first move for an underexposed render, before you reach for anything fancier.
The inputs
image- anything, batch included.exposure- −10 to +10 EV, default 0, step 0.1. ±1 to ±2 is the everyday range; +2 is a big lift, −2 is a heavy darkening. The EV scale makes it predictable: the same +1 EV does the same "one stop" to a bright image and a dark one.apply_type- the pack-wide live-preview dropdown.
One IMAGE out.
Where it fits
- Rescuing underexposed generations. AI models love generating murky, dark scenes; a +1 to +2 EV pass lifts them without the flat-gray look of an additive brighten.
- Matching a mood. Slightly negative EV (−0.5 to −1) gives a cinematic push toward shadow without crushing blacks, because it's multiplicative, not additive.
- Stacking with the pack's other color nodes. Because Temperature preserves luminance and Exposure works in stops, the two compose cleanly - expose first, then grade color, then contrast.
Install
cd ComfyUI/custom_nodes
git clone https://github.com/Scorpiosis0/ComfyUI-WtlNodes.git
Restart ComfyUI, or install via ComfyUI Manager (search "WtlNodes"). No models, no heavy deps - it's per-pixel math.
Gotchas
- Extreme EV clips to white. +10 EV turns everything white; that's the math, not a bug. If you're past +3 and it still looks wrong, the image is beyond rescue by exposure alone - look at the source of the darkness instead.
- It doesn't recover clipped data. If highlights are already pure white, lowering exposure pulls them back to gray white, not detail. Exposure shapes brightness; it can't conjure information that was never recorded.
- Different from brightness. If you came here wanting an additive lift (like Photoshop's brightness), that's a different node (WtlNodes has a plain Brightness too). Reach for Exposure when you want it to behave like a camera.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | — | |
| exposure | FLOAT | 0.0-10–10 | — |
| apply_type | COMBO | 3 options: none, auto_apply, apply_all |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| IMAGE | IMAGE | — |