APNext Color Grading FX
Exposure, contrast and LUTs in the graph
- images
- image
This is a mini color-grading suite you drop at the end of a workflow - the kind of exposure, contrast, and white-balance controls you'd expect in Lightroom, plus the ability to load a professional LUT. If you want every image from a batch to carry the same graded look without touching an external editor, this bakes it in. It's the "make it look intentional" pass.
It's an image effect: IMAGE in, IMAGE out, applied after VAE decode. No model, no API key.
How it works
Two modes. In manual mode you get direct sliders - exposure, contrast, saturation, separate highlight and shadow controls, and temperature/tint for white balance - and the node applies them in sequence to the pixels. In lut_file mode it applies a 3D lookup table, the same kind colorists use to transform an image's entire color response in one move. It supports .cube, .3dl, and image-based LUTs.
The manual controls are the everyday tool. Highlights and shadows let you pull detail back into blown skies or crushed blacks independently, which is the part a flat brightness slider can't do. Temperature warms or cools the whole frame; tint handles the green-magenta axis.
Inputs and outputs that matter
- images - your decoded image.
- method -
manualfor the sliders,lut_fileto apply a LUT. - exposure (−3 to +3 stops) and contrast - the two biggest levers in manual mode.
- highlights / shadows (−1 to +1) - recover or deepen the tonal extremes independently.
- temperature / tint - white balance. Small moves; these are sensitive.
- saturation - overall color intensity.
- For LUTs: custom_lut_path (type the path to your
.cubefile) and lut_strength to blend the LUT in partially.
The single output is image.
Installing it
ComfyUI Manager: search comfyui_dagthomas, install, restart. Manually:
cd ComfyUI/custom_nodes
git clone https://github.com/dagthomas/comfyui_dagthomas
cd comfyui_dagthomas
pip install -r requirements.txt
The color nodes use color_matcher and Pillow from the requirements. No API key, no model downloads.
Common issues
The LUT dropdown catches people out: lut_file in the schema often shows only "None" because the node found no LUT files in its expected folder. That doesn't mean LUTs are broken - it means you need to point custom_lut_path at an actual .cube file on disk, or drop LUTs where the node looks for them. Start with lut_strength below 1.0; most cinematic LUTs are strong and a 100% application looks like a filter.
In manual mode, temperature and tint are the sliders that wreck an image fastest - a heavy push turns skin orange or green. Nudge them. And grade last: if you're also running bloom, halation, or grain, put this node before those film effects so the grain and glow sit on top of the graded colors, which is the order a real film pipeline uses.
Inputs (12)
| Name | Type | Default | Description |
|---|---|---|---|
| images | IMAGE | — | |
| method | COMBO | manual | 2 options: manual, lut_file |
| lut_strength | FLOAT | 1.000–2 | — |
| exposure | FLOAT | 0.00-3–3 | — |
| contrast | FLOAT | 1.000–3 | — |
| highlights | FLOAT | 0.00-1–1 | — |
| shadows | FLOAT | 0.00-1–1 | — |
| saturation | FLOAT | 1.000–3 | — |
| temperature | FLOAT | 0.00-1–1 | — |
| tint | FLOAT | 0.00-1–1 | — |
| lut_fileopt | COMBO | None | 1 options: None |
| custom_lut_pathopt | STRING | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | — |