Nuke Exposure
Brighten a flat render without blowing out the whites
- image
- mask
- IMAGE
If your generated image looks like it was shot in a basement, the first tool to reach for isn't a prompt re-roll - it's exposure. NukeExposure is the ComfyUI port of Nuke's Exposure node: it brightens or darkens an image in proper photographic units, so you adjust in f-stops the way a real colorist does, instead of fumbling with a generic "brightness" slider that shifts everything into gray.
This is a color-grade node, not a post-upscale filter. It lives at the end of the pipeline, right before you save or composite. Punch up a dark render, pull back an overexposed one, or balance the tone of a generated element so it matches the plate it's sitting on.
How it works
Exposure works multiplicatively on the RGB values, and the math is exactly what photographers use. In stops mode, the multiplier is 2^stops - one stop is a doubling of light, minus one stop is a halving. The other two modes speak other dialects of the same idea: printer_lights uses the 10^(stops/25) conversion that colorists use when talking to film scanners, and film_density uses 10^(−stops). Most of the time you'll stay on stops and never think about the other two.
Because the adjustment multiplies rather than adds, highlights naturally respond differently from shadows - which is why it reads as "exposure" and not "brightness." Raise one stop and a mid-gray render lifts nicely while your specular whites approach clipping rather than just going gray and flat.
The inputs that matter
stops- the exposure shift, −10 to +10, in tenths. The workhorse control; ±2 covers most fixes.exposure_type- stops (default), printer_lights, or film_density. Stops is the one to use.multiply- a raw multiplier applied after the stops conversion, for when you need to push further than the stops range.offset- an additive offset, mainly for lifting crushed blacks.clamp_output- on by default, and leave it on: it clamps the result to 0–1 so you don't send super-bright float values into a node chain that can't handle them. Turn it off only if you're doing HDR-ish work and want values above 1.0 to survive downstream.mix- blends the adjusted image back into the original, 0 to 1. Great for a 0.3 "warm it up" nudge that stays subtle.mask- optionalIMAGEmask so the exposure only lands on part of the frame, like brightening a face region without touching the background.
The output is a single IMAGE. Feed it into a save node or continue grading.
Installing it
It's part of the Nuke Nodes pack:
cd ComfyUI/custom_nodes
git clone https://github.com/sumitchatterjee13/nuke-nodes-comfyui.git nuke-nodes
cd nuke-nodes
pip install -r requirements.txt
Or search "Nuke Nodes" in ComfyUI Manager and restart. It lives under the Nuke category. Like the rest of the grade nodes, it's pure PyTorch - no heavy dependencies beyond what ComfyUI already ships, so the OpenImageIO in requirements.txt isn't needed for this node to work.
Common issues
- Image goes harsh and clipped fast - you're probably on
stopsand went past ±2, orclamp_outputis off and a downstream node is choking on float values. Clamp is your friend. - It looks like a brightness slider, not exposure - check the
exposure_type. If a loaded workflow set it tofilm_density, the response curve flips; switch back tostops. - The mask area looks wrong - the mask input is an
IMAGE, not aMASK. Convert before wiring it in.
If your images read "flat" and "dim," this is the first knob to turn - one stop up and a mediocre render usually turns into a decent one.
Inputs (12)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | — | |
| stops | FLOAT | 0.0-10–10 | — |
| stops_r_offset | FLOAT | 0.0-5–5 | — |
| stops_g_offset | FLOAT | 0.0-5–5 | — |
| stops_b_offset | FLOAT | 0.0-5–5 | — |
| exposure_type | COMBO | stops | 3 options: stops, printer_lights, film_density |
| multiply | FLOAT | 1.000–10 | — |
| offset | FLOAT | 0.00-1–1 | — |
| preserve_highlights | BOOLEAN | false | — |
| clamp_output | BOOLEAN | true | — |
| mix | FLOAT | 1.000–1 | — |
| maskopt | MASK | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| IMAGE | IMAGE | — |