π¨ CYH Post Process | Global Color Grading
A capable color-grade node with one painful flaw
- image
- IMAGE
Warm it up, cool it down, punch the contrast, pull the saturation - this node does the six adjustments every color grade ends up being: temperature, saturation, tint, gamma, exposure, and contrast, all in one IMAGE-in/IMAGE-out node. Conceptually it's exactly what you want sitting after VAE Decode when an image needs a mood applied.
And then there's the performance problem, which I'll get to, because it changes how you should use this node.
How it works
It's a per-pixel color transform. Each pixel gets run through a pipeline: Kelvin temperature β RGB (black-body approximation), then saturation, green/magenta tint, gamma correction, exposure (EV stops), and contrast. The temperature math is the standard KelvinβRGB conversion (the same one used in the pack's halation node), and exposure is a straight multiplier in EV terms.
The dials:
- temperature (1000β40000K, default 6500) - lower = warmer/orange, higher = cooler/blue. 6500 is neutral daylight; 4500 warms things up nicely.
- saturation (0β2, default 1) - 1 is untouched, 0 is black & white, 2 is neon.
- tint (β1 to 1) - negative pushes green, positive pushes magenta. The classic skin-tone fixer.
- gamma (0.5β2.5, default 1) - the midtone dial. Below 1 flattens, above 1 deepens.
- exposure (β4 to +4 EV, default 0) - global brightness in stops.
- contrast (0.5β2, default 1) - low to high contrast.
Output is IMAGE, ready to save or pass on.
The flaw: it's slow, and I mean slow
Here's what the source actually does: it loops over every pixel in Python, converting each one through the grading pipeline individually. For a 1024Γ1024 image that's a million Python-loop iterations with per-pixel color math - you're looking at many seconds to a couple of minutes depending on your machine. At 1080Γ1920 it's worse. This is a genuine "walk away and come back" node at any real resolution.
That's the honest trade-off: it's one of the most capable all-in-one grade nodes in the pack - and it's the slowest node in the pack by a wide margin. Every other grading path (built-in tone curves, or GPU-friendly color nodes) will beat it on speed. Use this when you specifically want these six controls in one node and can tolerate the wait - or run it at small resolution and upscale after, which is my actual recommendation.
Two more things, both real: only the first image in a batch is processed (same limitation as the pack's other post-process nodes), and it's a CPU numpy/OpenCV pass, not GPU.
Install
ComfyUI Manager (search "Chye ComfyUI Toolset"), or:
cd ComfyUI/custom_nodes
git clone https://github.com/chyer/Chye-ComfyUI-Toolset
cd Chye-ComfyUI-Toolset
pip install -r requirements.txt
Restart after. Needs opencv-python and numpy (both in the pack requirements; you have them). Zip installs need .git/.cnr-id (Chye-ComfyUI-Toolset) per the README.
Verdict
Right controls, wrong implementation strategy. If you're grading one hero image and have time for coffee, it's fine. If you're grading batches or anything near 4K, pick a faster grading node - this one will make you wait. The concept is good; the execution is the lesson.
Inputs (7)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | β | |
| temperature | INT | 65001000β40000 | β |
| saturation | FLOAT | 1.000β2 | β |
| tint | FLOAT | 0.00-1β1 | β |
| gamma | FLOAT | 1.000.5β2.5 | β |
| exposure | FLOAT | 0.0-4β4 | β |
| contrast | FLOAT | 1.000.5β2 | β |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| IMAGE | IMAGE | β |