Color Grading JK๐
Brightness, contrast, saturation and RGB offsets in one pass
- image
- IMAGE
A generation that's technically fine but slightly off - too dark, washed out, green-tinted - is the most common reason an image misses. Color Grading JK is a quick global pass to fix exactly that: brightness, contrast, saturation, plus per-channel RGB offsets. It's not a LUT, it's not film emulation; it's the four knobs that fix 90% of "why does this look wrong" complaints.
How it works
The node runs PIL's ImageEnhance for the first three controls, then does a per-channel offset for the RGB ones.
brightness- a multiplier, default 1.0, range 0โ3. 1.0 is neutral.contrast- a multiplier, default 1.0, range 0โ3.saturation- a multiplier, default 1.0, range 0โ3.R,G,B- additive offsets, default 0, range โ255 to 255.
Note the two different semantics living on one node: brightness/contrast/saturation are factors (1.0 = do nothing), while R/G/B are offsets (0 = do nothing). Mixing them up is the classic first mistake - setting saturation to 0 doesn't make it neutral, it makes the image fully grayscale.
The channel offsets are useful for cast correction. A blue-ish render gets B nudged negative; a green cast from certain lighting gets G pulled down. Because they're simple additive shifts, they're blunt instruments - fine for neutralizing a cast, wrong for creative color grading. The node preserves the alpha channel if your input is RGBA, so you can grade layered images without losing transparency.
Inputs and outputs
image- the inputIMAGE.brightness,contrast,saturation- the three factor knobs.R,G,B- the three channel offsets.IMAGE- the graded result.
Batch-wise it processes every image in the input tensor with the same settings, which is exactly what you want when color-matching a sequence or a batch of variant renders.
Installing it
Ships in ComfyUI-JakeUpgrade:
- ComfyUI Manager โ search "JakeUpgrade" โ install โ restart.
- Or:
cd ComfyUI/custom_nodes
git clone https://github.com/jakechai/ComfyUI-JakeUpgrade
cd ComfyUI-JakeUpgrade
pip install -r requirements.txt
Windows portable: run install.bat or ../../../python_embeded/python.exe -s -m pip install -r requirements.txt.
Common issues
- Saturation 0 isn't neutral. It's grayscale. Neutral is 1.0. Same for brightness and contrast - the defaults are all 1.0, and any value you type replaces them, not adds to them.
- R/G/B go negative fine. Offsets range โ255 to 255; a negative value subtracts from that channel. You're not limited to boosting.
- It's a global pass, not a masked one. No region control here. For selective grading you'd composite this with a mask or reach for a heavier color node.
- Cast correction overshoot. Additive offsets can clip channels at 0 or 255, blowing out highlights. Small nudges (10โ30) beat big ones.
This is the "one more node before the save" that makes a render look finished instead of raw. It's also the node JakeUpgrade uses internally in its long-video workflows to keep color consistent across segments - a sign it's reliable enough to trust on a sequence, not just a single frame.
Inputs (7)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | โ | |
| brightness | FLOAT | 1.000โ3 | โ |
| contrast | FLOAT | 1.000โ3 | โ |
| saturation | FLOAT | 1.000โ3 | โ |
| R | INT | 0-255โ255 | โ |
| G | INT | 0-255โ255 | โ |
| B | INT | 0-255โ255 | โ |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| IMAGE | IMAGE | โ |