XWAVE Color Filter
A one-node color cast and gradient grade
- image
- IMAGE
The single most underrated finishing move in post-processing is a faint color cast. AI images lean oversaturated and neutral; a subtle warm or cool tint is exactly what makes them stop looking like a raw render. XWAVE Color Filter is that move in one node - you pick a hex color (or two, for a gradient), choose a blend mode, set an opacity, done. No separate overlay generator, no compositing math.
How it works
The node builds a flat fill or an angled gradient as an overlay the same size as your input, then blends it with one of eleven blend modes at an adjustable opacity. That's the whole mechanism - it's a tint/grading layer that never leaves the graph.
The inputs that matter
filter_type-solid(single color) orgradient(blend fromcolortogradient_color2). Note: the README talks up a third "custom gradient image" type, but the shipped code and the node's actual schema only have these two. Don't go hunting for it; it's a promise, not a feature yet.color- hex string, default#FF0000. This is the start color for both filter types.blend_mode- eleven options:normal,multiply,screen,overlay,soft_light,hard_light,color_dodge,color_burn,linear_dodge,linear_burn,vivid_light.opacity(0–1) - blend strength. This is the dial you'll actually live on.gradient_color2- hex, optional; the second color whenfilter_type = gradient.gradient_angle(0–360) - direction of the gradient, default 45.
Output is a single IMAGE, ready for Preview/Save or whatever comes next in the graph.
The recipe people actually use
- Warm daylight cast:
solid,color = #FFD9A0(something warm),blend_mode = soft_light,opacity0.15–0.3. Subtle, photographic, done. - Cool shadow grade: the same with
#4060FF-ish blue at low opacity. - Duotone poster:
gradientfrom a hot color to a dark one,blend_mode = overlay, opacity 0.7+. Instant poster-design energy. - Texture tint:
multiplyat low opacity darkens like a gel,screenat low opacity glows like a projector.
If you're chasing realism, keep it boring: soft_light or overlay, opacity under 0.3, a cast that matches your light source. AI generations come out neutral and clinical; that tiny cast is the diff between "render" and "photo."
Installing it
It's in ComfyUI XWAVE Nodes. ComfyUI Manager → search "XWAVE" → install ComfyUI XWAVE Nodes → restart. Or:
cd ComfyUI/custom_nodes
git clone https://github.com/XWAVEart/comfyui-xwave-xlitch-nodes
cd comfyui-xwave-xlitch-nodes
pip install -r requirements.txt
Pillow, numpy, scipy - no models, no keys. One install covers every node in the pack, so if you already grabbed it for another XWAVE node you're set.
Gotchas
- Hex strings must have the
#.FF0000without the#fails the parser. The default includes it; keep the habit. color_dodgeandcolor_burnblow out fast. At opacity 1.0 with a bright overlay you'll get hard clipping. If you want dramatic-but-safe,vivid_lightis friendlier.- The
customfilter type isn't there yet. Mentioned above, but worth repeating so you don't lose an hour looking for an input that doesn't exist.
This pack is early and quiet - no real community signal, no settings wiki. But Color Filter is one of those nodes where the defaults are good enough that you can just slide opacity and see. Keep it subtle; it's a grading layer, not a floodlight.
Inputs (7)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | — | |
| filter_type | COMBO | solid | 2 options: solid, gradient |
| color | STRING | #FF0000 | Primary filter color in hex format (e.g., #FF0000 for red) |
| blend_mode | COMBO | overlay | 11 options: overlay, multiply, screen, soft_light, hard_light, color_dodge, +5 |
| opacity | FLOAT | 0.500–1 | — |
| gradient_color2opt | STRING | #0000FF | Secondary color for gradient filter in hex format (e.g., #0000FF for blue) |
| gradient_angleopt | INT | 450–360 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| IMAGE | IMAGE | — |