Blend Mode Utility
26 Blend Modes, One Node, No Photoshop
- base
- blend
- mask
- result
Every material texture is the result of layers being blended together - dirt over base, AO over albedo, detail over roughness. Blend Mode Utility is TextureAlchemy's compositing workhorse: it blends two images with any of 26 Photoshop-style modes, with opacity control and an optional mask. Multiply, screen, overlay, soft light, color dodge, hue, luminosity - the full menu, in one node.
It sits in the Blending category of amtarr/ComfyUI-TextureAlchemy, and it's the node you'll wire into almost every non-trivial workflow in the pack, because almost every interesting texture effect is a blend.
How it works
Each mode is a standard per-pixel blend equation applied between base and blend:
- multiply - darkens; the classic "bake AO into albedo" mode. White blend leaves base unchanged, black turns it black.
- screen - lightens; for adding glow or light passes.
- overlay / soft_light / hard_light - contrast-y modes that keep detail from both inputs. Overlay is the workhorse for detail-over-base.
- color_dodge / color_burn / linear_dodge / linear_burn - the dramatic ones; great for light effects, dangerous on textures (they blow out fast).
- hue / saturation / color / luminosity - HSL-style modes that move one property of the blend onto the base while keeping the rest.
opacity (0–1, default 1) scales how much of the blend result shows - the way layer opacity works in a paint program. The optional mask IMAGE limits blending to certain areas, which is how you get "dirt only in the crevices."
The inputs that matter
base- the bottom layer.blend- the layer being composited on top.mode- the 26-mode dropdown. There's no right answer; it's a menu.opacity- global mix amount.mask(optional) - an IMAGE mask; white = blend applies, black = base shows through.
Output is result, a single IMAGE.
Where it slots in
The pattern that justifies this node's existence: Curvature Generator produces an edge mask → multiply it into the albedo for instant contact shading. Or texture detail in overlay mode over a flat base for a procedural material. Or take your AO and multiply it into the albedo at opacity 0.7 for weathering that reads as real. It's also the general-purpose answer for "I need to composite these two textures" when you don't want to hunt through six different core ComfyUI blend nodes.
Installing it
Part of TextureAlchemy:
cd ComfyUI/custom_nodes
git clone https://github.com/amtarr/ComfyUI-TextureAlchemy
restart, and it's under Texture Alchemist → Blending. ComfyUI Manager: search "Texture Alchemy". No extra pip deps.
Gotchas
Inputs are not symmetric - base and blend swapped is a different (usually worse) result with modes like divide and difference, so keep them in the order you intend. The mask input is an IMAGE, not a MASK type; if you feed it from a mask-producing node, convert first. And the aggressive modes (dodge, linear_light, hard_mix) will happily clip your texture to pure white - dial opacity down to 0.3–0.5 before you reach for a milder mode, because you can't un-clip baked-in white.
Inputs (5)
| Name | Type | Default | Description |
|---|---|---|---|
| base | IMAGE | — | |
| blend | IMAGE | — | |
| mode | COMBO | 26 options: normal, multiply, screen, overlay, soft_light, hard_light, +20 | |
| opacity | FLOAT | 1.000–1 | Layer opacity (0.0 = fully transparent, 1.0 = fully opaque) |
| maskopt | IMAGE | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| result | IMAGE | — |