Color Warper
Warp a whole hue region in 2D, DaVinci-style, without touching the rest
- image
- image
DaVinci's Color Warper shows you a 2D map of hue and saturation and lets you push regions of it around like a grid of soft putty. That's the most intuitive color-grading tool ever invented, and Color Warper is the ComfyUI take on it: you define a region on the hue/saturation plane, then shift its hue and saturation as a unit. The rest of the image doesn't move.
It's one of the grading nodes in ComfyUI-Darkroom, and it sits in a nice spot next to Hue vs Hue / Hue vs Sat. Those adjust single axes in fixed bands; the warper works on a region defined by both hue and saturation, which is how you do things like "only the vivid oranges, leave the pale ones alone" in one step. The nine presets - Orange & Teal push, Skin tone cleanup, Green → teal shift, Sunset spectrum enhance - are genuinely good starting looks.
How it works
You pick a source region by hue center + width and a saturation range (min to max), with feathering for soft edges. The node then applies a hue shift and a saturation shift inside that region, with a smooth falloff so nothing hard-clips at the boundary. Because the region is 2D, saturation acts as a second dimension of selectivity: with source_sat_min high, only the rich colors get warped and the muted ones stay put.
The inputs that matter
- preset - 10 choices including "Custom (manual)". Most people pick a preset, then tweak.
- source_hue - the center of the region you're targeting.
- source_hue_width - how many degrees around that center you grab.
- source_sat_min / source_sat_max - the saturation slice of the region. This is the secret weapon: sat_min 0.5 means "only the saturated stuff."
- hue_shift - how far the region rotates (−180 to +180).
- sat_shift - how much saturation changes inside the region (−100 to +100).
- feather - edge softness.
- strength - global blend, the "how much do I actually believe in this" dial.
Output is a single image - same size in, same size out, standard wiring.
Install and gotchas
cd ComfyUI/custom_nodes
git clone https://github.com/jeremieLouvaert/ComfyUI-Darkroom
pip install -r ComfyUI-Darkroom/requirements.txt
Or search "Darkroom" in ComfyUI Manager and restart. It's under AKURATE/Darkroom/Grading.
Two things to keep in your back pocket. First, it's a per-pixel color transform, so it's fine inside a LUT bake chain - put it between Inject and Extract and the warped look becomes an exportable .cube. Second, the region's selectivity cuts both ways: a wide source_hue_width with a low feather will warp neighboring colors more than you expect, especially in busy images. When the skin starts moving but you only meant to touch the background, shrink the width and raise the feather before touching hue_shift. And unlike Hue vs Hue's fixed bands, the warper's strength slider is the single most useful knob on the node - most "too much" moments are fixed at 0.6, not by redefining the region.
Inputs (10)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | — | |
| preset | COMBO | Custom (manual) | Select a color warping preset or use Custom for single-region manual control |
| source_hueopt | FLOAT | 00–360 | Center hue of the region to warp |
| source_hue_widthopt | FLOAT | 6010–180 | Width of hue range to affect (degrees) |
| source_sat_minopt | FLOAT | 0.000–1 | Minimum saturation to affect |
| source_sat_maxopt | FLOAT | 1.000–1 | Maximum saturation to affect |
| hue_shiftopt | FLOAT | 0-180–180 | Shift hue by this many degrees |
| sat_shiftopt | FLOAT | 0-100–100 | Adjust saturation within the selected region |
| featheropt | FLOAT | 0.500.1–1 | Edge softness of the warped region |
| strengthopt | FLOAT | 1.000–1 | Blend between original (0) and warped (1) |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | — |