ApplyMask
The compositing step of the flow-blend pipeline
- destination
- source
- mask
- IMAGE
All those consistency masks ComfyWarp computes don't do anything until something actually uses them to combine two images. That's this node. It takes a destination image and a source image, and a mask, and blends them per-pixel: where the mask is 1 you see the source, where it's 0 you see the destination, and anywhere in between you get a straight linear mix. One IMAGE out.
In the flow-blend pipeline that reads concretely: destination is your warped previous stylized frame, source is the raw current frame, and mask is the mixed consistency map from MixConsistencyMaps / ExtractFlowAndMixConsistencyMaps. Consistent areas (mask near 0) keep the warped style; inconsistent areas (mask near 1, where the warp can't be trusted - occlusions, moving edges) fall back to the current frame. Result: smooth static regions, no trails on motion. This is the exact "FlowBlend" behavior the README describes, exposed as a single compositing node.
Inputs
destination- the base image, kept where the mask is 0.source- the image layered in where the mask is 1.mask(optional) - the blend mask. If you leave it unconnected, the node defaults it to... effectively nothing (a missing mask composites oddly), so in practice: always wire the mask. The compositing math isdestination × (1−mask) + source × mask, done in float, so values outside 0–1 in the mask will misbehave - the consistency maps from this pack are already in 0–1, so you're fine as long as you keep them as the mask source.
The one thing that bites
ApplyMask does no resizing. The mask is used at whatever resolution it arrives, and if it doesn't match the destination dimensions, the multiply broadcasts and you get either an error or a silent misalign. The mask-producing nodes in this pack output the same size as their input frames, so within a clean ComfyWarp graph you're fine - but if you build a hybrid workflow (mask from a different source, or after a ResizeToFit on only one branch), resize the mask to match first. It's a tiny node with a narrow job, and it does it exactly once per frame. If you're composing in latent space instead - earlier in the pipeline, before VAE decode - that's what ApplyMaskLatent is for.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| destination | IMAGE | — | |
| source | IMAGE | — | |
| maskopt | MASK | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| IMAGE | IMAGE | — |