Nodes/RyanOnTheInside/Mask Warp [DEPRECATED] βš‘πŸ…‘πŸ…žπŸ…£πŸ…˜
ComfyUI Node

Mask Warp [DEPRECATED] βš‘πŸ…‘πŸ…žπŸ…£πŸ…˜

The deprecated way to distort a mask (use FlexMaskWarp now)

By ryanontheinsideΒ·Created 2 years agoΒ·Updated 5 months agoΒ· 852
Mask Warp [DEPRECATED] βš‘πŸ…‘πŸ…žπŸ…£πŸ…˜
  • masks
  • MASK
β—„strength1.00β–Ί
β—„invertfalseβ–Ί
β—„subtract_original0.00β–Ί
β—„grow_with_blur0.0β–Ί
β—„start_frame0β–Ί
β—„end_frame0β–Ί
β—„effect_duration0β–Ί
β—„temporal_easingβ–Ύβ–Ί
β—„palindromefalseβ–Ί
β—„warp_typeβ–Ύβ–Ί
β—„frequency0.10β–Ί
β—„amplitude30.0β–Ί
β—„octaves3β–Ί

Say this one straight: the pack itself tags this node [DEPRECATED] in its display name, and the author's own README is blunt about why - the old TemporalMasks family this node belongs to got superseded by the newer FlexMask system, in his words, "you can do all of this 7000x with FlexMask nodes." If you're starting a workflow today, skip down to FlexMaskWarp (same perlin/radial/swirl warp, but wired into this pack's reactive Feature system instead of baked-in timing). If you're maintaining an older graph that already uses this node, it's not broken - it still runs - this is just where to understand it and where to migrate from.

What it actually does

Mask Warp pushes a mask's edges around using noise-based distortion, the same family of trick behind melting, rippling, glass-like edges instead of clean geometric ones. warp_type picks the pattern: perlin for organic, cloud-like distortion, radial for warping outward or inward from a center, swirl for a whirlpool twist. frequency sets the scale of the pattern (low = big sweeping distortion, high = fine ripples), amplitude caps how far any point gets pushed, and octaves - a Perlin-specific idea - layers extra noise passes at finer scales on top for added texture, at the cost of more compute per frame.

The timing is where this node shows its age. Instead of taking an external reactive signal, it bakes the animation window directly into its own parameters: start_frame/end_frame (or effect_duration as an alternative way to set the window), temporal_easing (ease_in_out, linear, bounce, elastic, none - bounce overshoots and settles, elastic overshoots and springs back), and palindrome to play the effect forward then reverse within that window. It's a fixed choreography, not something a beat or an audio envelope can drive on the fly.

Inputs and outputs that matter

Every mask-processing node in this pack shares a base contract, and this is one of them: masks (the mask to warp), strength (0–1, overall intensity), invert (flip black/white), subtract_original (blend some of the source mask back out of the result), and grow_with_blur (a Gaussian blur amount for growing the mask edges). On top sit the warp-specific fields above.

Output is a single MASK - wires into anything downstream expecting a mask: compositing, a latent noise mask, an IPAdapter mask slot.

How to install it

ComfyUI Manager: search "RyanOnTheInside", install, restart. Manually:

cd ComfyUI/custom_nodes
git clone https://github.com/ryanontheinside/ComfyUI_RyanOnTheInside
cd ComfyUI_RyanOnTheInside
pip install -r requirements.txt

then restart. This is pure noise math - no model download, and it doesn't touch the pack's heavier dependencies (pymunk for particles, mido for MIDI).

Common issues & troubleshooting

You built a new workflow and this node showed up first in search. That's the trap - ComfyUI's node search doesn't know it's deprecated. Type "flex mask warp" instead and use FlexMaskWarp, which does the identical perlin/radial/swirl distortion but exposes an opt_feature input so an audio or motion signal can drive max_amplitude, frequency, or octaves frame by frame, instead of the fixed start_frame/end_frame/temporal_easing window this node is stuck with.

Warp barely visible. amplitude goes up to 500, but the visible effect scales with your mask's resolution - push it well past the default (30) before assuming nothing's happening.

Distortion reads chunky instead of fluid. Raise octaves for finer detail layered into the warp, particularly with perlin - a single octave at high amplitude looks blocky rather than organic.

CategoryRyanOnTheInside/Masks/TemporalMasks

Inputs (14)

NameTypeDefaultDescription
masksMASKInput mask or sequence of masks to be processed (MASK type)
strengthFLOAT1.000–1Overall strength of the mask effect (0.0 to 1.0)
invertBOOLEANfalseWhen enabled, inverts the mask output (black becomes white and vice versa)
subtract_originalFLOAT0.000–1Amount of the original mask to subtract from the result (0.0 to 1.0)
grow_with_blurFLOAT0.00–10Amount of Gaussian blur to apply for mask growth (0.0 to 10.0)
start_frameINT00–1000Frame number where the effect begins (0 to 1000)
end_frameINT00–1000Frame number where the effect ends (0 to 1000, 0 means until end)
effect_durationINT00–1000Number of frames over which the effect is applied (0 to 1000, 0 means full range)
temporal_easingCOMBOControls how the effect strength changes over time ('ease_in_out', 'linear', 'bounce', 'elastic', 'none')
palindromeBOOLEANfalseWhen enabled, the effect plays forward then reverses within the specified duration
warp_typeCOMBOType of warping effect to apply ('perlin', 'radial', 'swirl')
frequencyFLOAT0.100.01–1Controls the scale of the warping effect (0.01 to 1.0)
amplitudeFLOAT30.00.1–500Controls the strength of the warping effect (0.1 to 500.0)
octavesINT31–8For noise-based warps, adds detail at different scales (1 to 8)

Outputs (1)

NameTypeDescription
MASKMASKβ€”