Nodes/RyanOnTheInside/Depth Ripple Effect βš‘πŸ…‘πŸ…žπŸ…£πŸ…˜
ComfyUI Node

Depth Ripple Effect βš‘πŸ…‘πŸ…žπŸ…£πŸ…˜

Send concentric waves through a depth map

By ryanontheinsideΒ·Created 2 years agoΒ·Updated 5 months agoΒ· 852
Depth Ripple Effect βš‘πŸ…‘πŸ…žπŸ…£πŸ…˜
  • depth_maps
  • opt_feature
  • IMAGE
β—„strength1.00β–Ί
β—„feature_threshold0.00β–Ί
β—„feature_paramβ–Ύβ–Ί
β—„feature_moderelativeβ–Ί
β—„ripple_amplitude0.05β–Ί
β—„ripple_frequency20β–Ί
β—„ripple_phase0.0β–Ί
β—„curvature0.00β–Ί

This is the sibling to Depth Injection, and it sits in the same RyanOnTheInside/DepthModifiers family that grew out of the author's "Depth Chamber" workflow - the one that got remixed on r/StableDiffusion for pulling off Houdini-style Z-depth manipulation entirely inside ComfyUI, no 3D software required. Where Depth Injection stamps a static bulge into a masked region, Depth Ripple Effect pushes concentric waves across the whole depth map - think water ripples, but reshaping distance values instead of surface color.

How it works

The node takes depth_maps and runs a ripple function over it: ripple_amplitude sets how strong the wave is (how much it actually displaces depth values), ripple_frequency sets how many waves fit across the map, and ripple_phase offsets where in the wave cycle it starts - which matters most once you're animating this across frames, since sweeping ripple_phase over time is what makes the ripple appear to travel outward rather than sit static. curvature is the more interesting knob: it interpolates between a linear ripple pattern and a circular/radial one, so at one end you get waves that look like they're crossing the frame in parallel lines, and at the other you get waves that expand outward from a center point the way an actual ripple in water does.

There's no mask input on this node - unlike Depth Injection, the ripple applies across the full depth map rather than being confined to a region. If you need it bounded, you'd combine the output with a mask downstream rather than through this node directly.

As with its sibling, opt_feature accepts an optional FEATURE to drive the effect over time. feature_param picks the target - ripple_amplitude, ripple_frequency, ripple_phase, curvature, strength, or None - and feature_mode sets whether that's relative or absolute modulation. This is the natural way to make ripples that swell with an audio beat or a motion cue instead of rippling at a fixed, constant rate.

Inputs and outputs

  • depth_maps (required, IMAGE) - the depth map to ripple, same as any depth-modifier node in this family: a grayscale image where brightness is distance.
  • ripple_amplitude (default 0.05, capped at 0.5) - how strong the displacement is; small values are subtle, the ceiling is intentionally conservative to avoid completely destroying the underlying depth structure.
  • ripple_frequency (default 20) - wave density across the map.
  • curvature - linear-to-radial blend, the setting most responsible for whether this reads as "waves" or "ripple from a point."
  • Output - a single modified IMAGE.

Installing it

Install through ComfyUI Manager (search RyanOnTheInside) or manually:

cd ComfyUI/custom_nodes
git clone https://github.com/ryanontheinside/ComfyUI_RyanOnTheInside

Then pip install -r requirements.txt and restart ComfyUI. Like Depth Injection, this node doesn't estimate depth itself - feed it output from an actual depth model (Depth Anything v2 is the current default choice for that step) upstream.

Common issues

ripple_amplitude's low ceiling (0.5) is deliberate - crank it and the underlying scene geometry starts to fall apart rather than just wave, since you're directly displacing the same values a downstream ControlNet or parallax step will treat as real distance. If a ripple looks chaotic or noisy instead of smooth, check ripple_frequency isn't set too high for your map's resolution - dense waves on a modest-resolution depth map alias into noise rather than a clean pattern.

If you're animating ripple_phase by hand across frames and the ripple looks like it's jumping rather than flowing, that's usually a step-size mismatch between your phase increment and your frame count - smaller, more frequent phase increments read as smoother travel than a few large jumps.

CategoryRyanOnTheInside/DepthModifiers

Inputs (10)

NameTypeDefaultDescription
strengthFLOAT1.000–1Overall strength of the effect (0.0 to 1.0)
feature_thresholdFLOAT0.000–1Minimum feature value to apply the effect (0.0 to 1.0)
feature_paramCOMBOParameter to be modulated by the feature
feature_modeCOMBOrelativeHow the feature modulates the parameter ('relative' or 'absolute')
depth_mapsIMAGEInput depth maps to be processed
ripple_amplitudeFLOAT0.050–0.5Amplitude of the ripple effect (0.0 to 0.5)
ripple_frequencyFLOAT201–100Frequency of the ripples (1.0 to 100.0)
ripple_phaseFLOAT0.00–6.2832Phase offset of the ripples (0.0 to 2Ο€)
curvatureFLOAT0.000–1Interpolation between linear and circular patterns (0.0 to 1.0)
opt_featureoptFEATUREOptional feature input for parameter modulation

Outputs (1)

NameTypeDescription
IMAGEIMAGEβ€”