Mask Warp [DEPRECATED] β‘π ‘π π £π
The deprecated way to distort a mask (use FlexMaskWarp now)
- masks
- MASK
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.
Inputs (14)
| Name | Type | Default | Description |
|---|---|---|---|
| masks | MASK | Input mask or sequence of masks to be processed (MASK type) | |
| strength | FLOAT | 1.000β1 | Overall strength of the mask effect (0.0 to 1.0) |
| invert | BOOLEAN | false | When enabled, inverts the mask output (black becomes white and vice versa) |
| subtract_original | FLOAT | 0.000β1 | Amount of the original mask to subtract from the result (0.0 to 1.0) |
| grow_with_blur | FLOAT | 0.00β10 | Amount of Gaussian blur to apply for mask growth (0.0 to 10.0) |
| start_frame | INT | 00β1000 | Frame number where the effect begins (0 to 1000) |
| end_frame | INT | 00β1000 | Frame number where the effect ends (0 to 1000, 0 means until end) |
| effect_duration | INT | 00β1000 | Number of frames over which the effect is applied (0 to 1000, 0 means full range) |
| temporal_easing | COMBO | Controls how the effect strength changes over time ('ease_in_out', 'linear', 'bounce', 'elastic', 'none') | |
| palindrome | BOOLEAN | false | When enabled, the effect plays forward then reverses within the specified duration |
| warp_type | COMBO | Type of warping effect to apply ('perlin', 'radial', 'swirl') | |
| frequency | FLOAT | 0.100.01β1 | Controls the scale of the warping effect (0.01 to 1.0) |
| amplitude | FLOAT | 30.00.1β500 | Controls the strength of the warping effect (0.1 to 500.0) |
| octaves | INT | 31β8 | For noise-based warps, adds detail at different scales (1 to 8) |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| MASK | MASK | β |