⚗️ Blend (jov)
The legacy name for Jovimetrix's compositing workhorse
- pixelA
- pixelB
- image
- mask
"⚗️ Blend (jov)" is the older, simpler name for the node that's now BLEND (JOV) ⚗️ - Jovimetrix's signature compositing node. The pack's README leads its highlights with "30 function BLEND node - subtract, multiply and overlay like the best," and this is that node in its pre-2.0 form. If you've loaded an old workflow and see "Blend (jov)" flagged as missing, you haven't lost a node - the current pack installs the renamed version and you rewire the two ends (the README is upfront that connections don't migrate across renames).
What it does
Blend takes two inputs, picks an operation, and mixes them with an alpha control. In the legacy form the layout is refreshingly flat:
- pixelA and pixelB (any type) - the two inputs. Order matters for some ops (subtract, divide) and not others.
- alpha (FLOAT, 0–1, default 1) - how hard B is pushed onto A. 1 = full effect, 0 = just A.
- func - the operation: LERP, ADD, MINIMUM, MAXIMUM, MULTIPLY, SOFT LIGHT, HARD LIGHT, OVERLAY, SCREEN, SUBTRACT, DIFFERENCE, LOGICAL AND, and a couple more. That's a real Photoshop-style blend bag.
- width / height (INT, default 256) - the output canvas size when the two inputs don't match.
- mode - how to fit inputs into that canvas: NONE, FIT, CROP, ASPECT.
- invert (FLOAT, 0–1) - flips the mask/alpha influence for the blend.
Outputs are image and mask, so you can reuse the composite's alpha downstream.
How it works
Under the hood it's per-pixel math via OpenCV - blend modes like overlay, screen, and multiply are just different arithmetic over the two color channels, plus an alpha channel for the LERP-style mix. No model, no VRAM, cheap enough to chain several blends in one pass. The current BLEND (JOV) ⚗️ expands this to 30 modes and adds mask input, swap, and interpolation controls, but the core behavior is the same.
Installing it
Jovimetrix installs the usual way:
- ComfyUI Manager - search "Jovimetrix", install.
- Manual -
git clone https://github.com/Amorano/Jovimetrix.gitintocustom_nodes/, thenpip install -r requirements.txt.
No model downloads. Dependencies: numpy, OpenCV, Pillow, matplotlib, and the author's cozy_comfyui library (from GitHub). Needs ComfyUI 0.1.3+.
Where people get burned
Two classic traps. First, order matters: SUBTRACT and DIVIDE are not commutative, and the default alpha of 1 means whatever's in B is applied at full strength - if your composite looks wrong, try flipping A and B before touching the mode. Second, mismatched input sizes: at mode NONE the two inputs meet at the canvas size and the smaller one just gets composited as-is, which is rarely what you want - switch to FIT or CROP and it'll behave. If you're coming from the current BLEND node, the legacy one lacks the mask port and 30-mode menu, so treat it as the "same idea, fewer options" ancestor. For most compositing work, though, you'll want to migrate to BLEND (JOV) ⚗️ and use the mask input - that's where the power actually lives.
Inputs (8)
| Name | Type | Default | Description |
|---|---|---|---|
| pixelA | * | — | |
| pixelB | * | — | |
| alpha | FLOAT | 1.000–1 | — |
| funcopt | COMBO | LERP | 14 options: LERP, ADD, MINIMUM, MAXIMUM, MULTIPLY, SOFT LIGHT, +8 |
| widthopt | INT | 25632–8192 | — |
| heightopt | INT | 25632–8192 | — |
| modeopt | COMBO | NONE | 4 options: NONE, FIT, CROP, ASPECT |
| invertopt | FLOAT | 0.000–1 | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | — |
| mask | MASK | — |