Nodes/Undulating Glitch/Liquid Transition Warp
ComfyUI Node

Liquid Transition Warp

Give the glitch wave a refractive, analog-TV push

By jsterlingvids·Created 2 months ago·Updated 2 months ago· 0
Liquid Transition Warp
  • images
  • transition_edges
  • meta_batch
  • images
  • warp_mask
warp_strength12.0
warp_width1.4
ripple_amount3.00
ripple_scale3.0
ripple_speed2.0
rgb_split1.50
interpolation
color_fringefalse
color_fringe_strength0.08
water_ripplefalse
water_ripple_strength1.50

The Four-Way Undulating Glitch Mixer gives you a glitch boundary, but the pixels on either side stay clean. Liquid Transition Warp is what you add when you want the wave front itself to feel like it's bending the image - a localized refractive glitch where the transition passes. It's the difference between "four clips wiped by a wave" and "four clips distorted by something moving through the frame."

It's a post-process, so it slots in after the mixer and only touches pixels near the active transition. Areas away from the boundary pass through untouched, which is exactly what you want from an effect like this - no global blur washing out the whole composite.

Wiring

Connect both the mixer's images and its transition_edges mask:

Mixer images ──────────────┐
                           ├→ Liquid Transition Warp → VHS Video Combine
Mixer transition_edges ────┘

The node needs both. images is what gets warped; transition_edges tells it where the boundary is and which way it's facing.

How it works

The edge mask's gradient gives a local normal to the wave front. Sampling pixels toward that normal creates a brief lens-like expansion/compression around the boundary, while a tangent component makes smaller ripples crawl along the edge. That's the core - everything else is extras layered on top:

  • rgb_split physically offsets the red and blue channels across the boundary for a chromatic-aberration-style split. Set it to 0 for a purely liquid/refraction look.
  • color_fringe is a separate optical grade: a restrained cyan/magenta bias on the two slopes of the wave, a touch of desaturation, a small contrast lift. It's not the same thing as rgb_split - this is a grade, not a channel offset.
  • water_ripple adds faint alternating compression/expansion bands around the primary front, like a short refractive wake travelling with the wave. Spacing and decay are derived automatically from the mask.

The settings that matter

warp_strength is the main dial (negative reverses the lens direction). warp_width sets how wide the affected band is. ripple_amount/ripple_scale/ripple_speed drive the ripples crawling along the front. The author's suggested starting point:

warp_strength: 12
warp_width: 1.4
ripple_amount: 3
ripple_scale: 3
ripple_speed: 2
rgb_split: 1.5
interpolation: bicubic
color_fringe: off
water_ripple: off

Then taste-test. color_fringe_strength starts at 0.08 and stays subtle up to about 0.15 - above that it's intentionally stylized rather than subtle. water_ripple_strength has a practical range around 0.75–2.5. interpolation (bicubic/bilinear/nearest) affects how the warped pixels resolve.

Outputs

  • images - the warped composite, into Video Combine.
  • warp_mask - a mask of where the warp actually moved pixels, handy if you want to comp the effect back in at reduced strength or grade only the warped region.

Install

cd ComfyUI/custom_nodes
git clone https://github.com/jsterlingvids/ComfyUI-UndulatingGlitch.git

Restart ComfyUI and search for "Undulating Glitch" (image/video/undulating glitch category). No model downloads, no extra Python packages - just the bundled PyTorch. The pack isn't on the Registry yet, so git clone beats searching by title.

Gotchas

It runs on the same frame timeline as the mixer, and if you're streaming long clips through VHS Meta Batch Manager it carries the same global frame offset, so ripples animate continuously across batch boundaries instead of resetting - connect the meta_batch output there too. Keep rgb_split modest; at high values the red/blue offset stops reading as optical aberration and starts reading as a broken decoder. And as with the whole pack at 0.8.0, the effect is tested and covered, but the author explicitly wants real-world mileage - render a short clip before committing to the full encode.

Categoryimage/video/undulating glitch

Inputs (14)

NameTypeDefaultDescription
imagesIMAGE
transition_edgesMASK
warp_strengthFLOAT12.0-96–96
warp_widthFLOAT1.40.1–6
ripple_amountFLOAT3.000–48
ripple_scaleFLOAT3.00.1–20
ripple_speedFLOAT2.0-12–12
rgb_splitFLOAT1.500–24
interpolationCOMBO3 options: bicubic, bilinear, nearest
color_fringeBOOLEANfalse
color_fringe_strengthFLOAT0.080–1
water_rippleBOOLEANfalse
water_ripple_strengthFLOAT1.500–24
meta_batchoptVHS_BatchManager

Outputs (2)

NameTypeDescription
imagesIMAGE
warp_maskMASK