Nodes/Jovimetrix/⚗️ Blend Mask (jov)
ComfyUI Node

⚗️ Blend Mask (jov)

The legacy masked-composite node, decoded

By Amorano·Created 3 years ago·Updated 12 months ago· 396
⚗️ Blend Mask (jov)
  • pixelA
  • pixelB
  • mask
  • image
  • mask
alpha1.00
funcLERP
width256
height256
modeNONE
invert0.00

"Blend Mask (jov)" is the pre-2.0 Jovimetrix node for masked compositing: blend two images together, but only where a mask tells you to. It's the little sibling of the pack's famous BLEND node - same operations, one extra input, the mask - and the lowercase "(jov)" in its name marks it as an old build. Current Jovimetrix ships the functionality inside BLEND (JOV) ⚗️, which gained a dedicated mask port in the 2.x rewrite. Old workflows that reference this node by name will need a manual rewire to the renamed node - the README warns connections don't follow renames.

What it does

Two inputs, an alpha, and a mask. The layout:

  • pixelA / pixelB (any type) - the two images to composite.
  • alpha (FLOAT, 0–1, default 1) - overall blend strength.
  • mask (any) - the optional mask that limits where the blend applies. Bright mask = blend happens, dark mask = A shows through.
  • func - the operation: LERP, ADD, MULTIPLY, SCREEN, OVERLAY, HARD LIGHT, SOFT LIGHT, SUBTRACT, DIFFERENCE, LOGICAL AND, MINIMUM, MAXIMUM, and two more. The Photoshop-adjacent set, minus the 30-mode expansion of the modern node.
  • width / height (INT, default 256) - the canvas size when inputs don't match.
  • mode - NONE, FIT, CROP, ASPECT, for fitting inputs into that canvas.
  • invert (FLOAT, 0–1) - flips the mask's influence, so bright mask = no blend. The classic "why is the wrong half composited" fix.

Outputs are image and mask, so the resulting alpha stays available downstream.

How it works

Per-pixel math via OpenCV: the chosen mode is a formula over the two color channels, the mask becomes a per-pixel weight, and alpha scales the whole thing. No model, no VRAM pressure, works on batches - the same cheap procedural model as the rest of the pack. The only real difference from the plain Blend node is that the mask rides along in the composite step instead of being applied afterward, which is exactly the behavior you want when the mask is a gradient or a face region.

Installing it

Part of Jovimetrix:

  • ComfyUI Manager - search "Jovimetrix", install.
  • Manual - git clone https://github.com/Amorano/Jovimetrix.git into custom_nodes/, then pip install -r requirements.txt.

No models. Dependencies: numpy, OpenCV, Pillow, matplotlib, plus cozy_comfyui from GitHub. Needs ComfyUI 0.1.3+.

The honest take

If you have a choice, don't build new work on this legacy node - migrate to BLEND (JOV) ⚗️, which has the mask port plus 30 modes and better size handling. The reason this old node is worth understanding at all is that it's everywhere in shared workflows from 2024, and knowing that it's a renamed ancestor saves you a half-hour of "missing node" panic when you load one. The behavior is identical in spirit: if the wrong region composites, flip invert; if sizes don't match, set mode to FIT or CROP. That's the whole manual, and it transfers to the modern node unchanged.

CategoryJOVIMETRIX 🔺🟩🔵

Inputs (9)

NameTypeDefaultDescription
pixelA*
pixelB*
alphaFLOAT1.000–1
maskopt*
funcoptCOMBOLERP14 options: LERP, ADD, MINIMUM, MAXIMUM, MULTIPLY, SOFT LIGHT, +8
widthoptINT25632–8192
heightoptINT25632–8192
modeoptCOMBONONE4 options: NONE, FIT, CROP, ASPECT
invertoptFLOAT0.000–1

Outputs (2)

NameTypeDescription
imageIMAGE
maskMASK