๐ผ> Brightness
A quick exposure lever, with an optional mask for dodge-and-burn
- image
- mask_opt
- image
This is the node you reach for when a generation is 90% right and just a stop too dark or too hot - a finishing-pass exposure lever, not a full color grade.
How it works
It's a straight multiply on pixel values: the brightness value scales the image, so anything above 1 brightens and anything below 1 darkens. Because it's a plain multiply rather than a proper filmic curve, it clips fast at the extremes - great for small, believable nudges, rough for big swings.
The interesting part is the optional mask. Without one, brightness applies uniformly across the whole frame. With one, you can dodge-and-burn: brighten just a subject's face, or just a light source, and leave everything else alone. This pack's own Light Source Mask node is a natural pairing - grab the bright regions of an image as a mask, then feed that straight into Brightness (or Contrast, or Saturation) to punch up exactly the parts that are already glowing.
The inputs and outputs that matter
image(IMAGE) - required, runs on decoded pixels.brightness(FLOAT, 0โ2, step 0.01, default 1) - 1 is neutral (no change), 0 is pure black, 2 doubles brightness.mask_opt(MASK, optional) - confines the adjustment to the masked region; leave it out for a global change.imageout.
How to install it
Via ComfyUI Manager: search "yanc" or "ComfyUI_yanc" and install, then restart. Manually:
cd ComfyUI/custom_nodes
git clone https://github.com/ALatentPlace/ComfyUI_yanc
then restart ComfyUI. No extra dependencies or model downloads - a filter node like the rest of the post-processing suite.
Common issues & troubleshooting
Small adjustments look fine, big ones look blown out or muddy. That's the plain-multiply nature of the node showing - it has no highlight rolloff. For a "this generation is just slightly underexposed" fix, stay in the 1.05โ1.3 range; if you need more correction than that, the base generation is probably underexposed enough that this filter is the wrong tool for it.
Masked brightness leaves a visible seam. A hard-edged mask (no feathering) tends to show its boundary once you brighten inside it, especially on skin or smooth gradients. If you generated the mask from Light Source Mask or a segmentation node, check whether it already has soft edges - if not, blur the mask itself slightly before wiring it in.
Nothing changed at all. brightness defaults to 1, which is neutral by design - same "off by default" pattern as this pack's Contrast and Saturation nodes. You have to actually move it.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | โ | |
| brightness | FLOAT | 1.000โ2 | โ |
| mask_optopt | MASK | โ |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | โ |