Nodes/ComfyUI XWAVE Nodes/XWAVE Color Filter
ComfyUI Node

XWAVE Color Filter

A one-node color cast and gradient grade

By XWAVEart·Created about a year ago·Updated about a year ago· 2
XWAVE Color Filter
  • image
  • IMAGE
filter_typesolid
color#FF0000
blend_modeoverlay
opacity0.50
gradient_color2#0000FF
gradient_angle45

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) or gradient (blend from color to gradient_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 when filter_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, opacity 0.15–0.3. Subtle, photographic, done.
  • Cool shadow grade: the same with #4060FF-ish blue at low opacity.
  • Duotone poster: gradient from a hot color to a dark one, blend_mode = overlay, opacity 0.7+. Instant poster-design energy.
  • Texture tint: multiply at low opacity darkens like a gel, screen at 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 #. FF0000 without the # fails the parser. The default includes it; keep the habit.
  • color_dodge and color_burn blow out fast. At opacity 1.0 with a bright overlay you'll get hard clipping. If you want dramatic-but-safe, vivid_light is friendlier.
  • The custom filter 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.

CategoryXWAVE/Color

Inputs (7)

NameTypeDefaultDescription
imageIMAGE
filter_typeCOMBOsolid2 options: solid, gradient
colorSTRING#FF0000Primary filter color in hex format (e.g., #FF0000 for red)
blend_modeCOMBOoverlay11 options: overlay, multiply, screen, soft_light, hard_light, color_dodge, +5
opacityFLOAT0.500–1
gradient_color2optSTRING#0000FFSecondary color for gradient filter in hex format (e.g., #0000FF for blue)
gradient_angleoptINT450–360

Outputs (1)

NameTypeDescription
IMAGEIMAGE