Nodes/radiance/Blend Composite
ComfyUI Node

Blend Composite

Eight blend modes that know what HDR is

By FXTD-Studios·Created 8 months ago·Updated about 18 hours ago· 246
Blend Composite
  • base
  • blend
  • mask
  • image
◄modeNormal►
◄opacity1.00►

What it is

Two images, a blend mode, an opacity, and an optional mask. It's the compositing operation you already know from Photoshop, done in fp32 and - this is the part that matters - without quietly assuming your values are in 0–1.

ComfyUI's core image blending is thin, and most people end up doing composite work by stacking the stock nodes and hoping. This is the node you want instead when you're compositing passes: a glow added onto a beauty, a texture multiplied over a matte, a difference pass for checking alignment.

The modes, and where they differ from a paint program

Eight options: Normal, Add, Screen, Multiply, Overlay, Soft Light, Difference, Divide. The tooltip is unusually precise about the ones that behave differently on HDR data, and it's worth reading twice because it splits the set in three:

  • Add, Multiply and Divide keep HDR values above 1.0. No clamping. This is the group that matters when you're working in scene-linear - a glow pass at 4.0 added to a beauty stays at 4.0+ and can still be tone-mapped later.
  • Screen clamps both layers to 0–1 first. Mathematically it's 1 − (1−A)(1−B), which only means "screen" if A and B are in range. So it does the clamp, and the HDR information is gone. Fine for display-encoded work, wrong for linear composites.
  • Overlay and Soft Light assume 0–1 display-range values. They're contrast operations; the maths is only meaningful on display-referred pixels.

That's not arbitrary - it's what those operators are. But it does mean mixing modes on a scene-linear image will surprise you unless you know which group you're in.

Inputs

base is the bottom layer, blend the top. If the two don't match in size, blend gets bilinearly resized to base - convenient, and slightly dangerous, because a mismatched pair you didn't notice will just silently work. If base is a batch and blend is a single frame, the single frame is expanded across the batch, so a static overlay over an animated sequence does the obvious thing.

mode and opacity (0–1) are the working dials. opacity is the overall strength of the blend layer, and it's applied to the result rather than the input - so 0.5 is a half-strength version of whatever the mode produced.

mask is the optional MASK input, and it's the one that turns this from a two-input blend into a real composite: white is full blend, black is base only, grey is partial. That's how you add a flare only to the sky, or a texture only to the wall.

Output

image. Single output, no diagnostics, no pass separation. If you want the "effect only" for manual compositing you'll need to think about it differently - Blend Composite is the compositor, not the generator of passes.

Where it earns its keep

Masks plus blend modes is the whole language of compositing, and having it in one node that respects HDR is what makes the rest of this pack usable. Bright passes, glow passes, grain overlays and texture plates all need to land on a beauty without the operation truncating at 1.0. That's the difference between a composite you can still grade and a composite that's already flattened.

The other honest use is cheap: Difference at opacity 1 between two images is how you check that a reprocessed shot actually matches. If the result is black, they're identical. If it isn't, you can see exactly where and how much.

Install

ComfyUI Manager → search Radiance → install → restart → refresh the browser. Manually:

cd ComfyUI/custom_nodes
git clone https://github.com/fxtd-studios/radiance.git
cd radiance
python -m pip install -r requirements.txt

Windows portable users should run the pip step with ComfyUI's bundled python_embeded\python.exe. Pure torch, no models. If this node fails to appear after install, it's almost always the generic custom-node problem the KB documents: every pack installs into the same Python environment with no isolation, and adjacent packs fight over pins.

Gotchas

  • Screen on scene-linear input. It clamps. If your highlights collapsed, this is why.
  • Assuming sizes match. Mismatched inputs are resized silently; you find out via soft output rather than an error.
  • Overlay and Soft Light on HDR data. Values above 1.0 aren't in their domain; the output will be nonsense above white.
  • Opacity as a mix control for pre-multiplied images. It's a straight strength multiplier, so very transparent-looking composites are usually a mask problem, not an opacity one.
  • No alpha handling. The node blends RGB; if you're expecting an alpha channel to drive the composite, use the mask input.
CategoryFXTD STUDIOS/Radiance/VFX

Inputs (5)

NameTypeDefaultDescription
baseIMAGEBottom layer (background).
blendIMAGETop layer (foreground).
modeCOMBONormalBlend operation of blend over base, in fp32. Add, Multiply and Divide keep HDR values above 1.0; Screen clamps both layers to 0-1 first; Overlay and Soft Light assume 0-1 display-range values.
opacityFLOAT1.000–1Overall strength of the blend layer.
maskoptMASKOptional per-pixel mask (grayscale). White = full blend, Black = base only.

Outputs (1)

NameTypeDescription
imageIMAGE—