Depth Ripple Effect β‘π ‘π π £π
Send concentric waves through a depth map
- depth_maps
- opt_feature
- IMAGE
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.
Inputs (10)
| Name | Type | Default | Description |
|---|---|---|---|
| strength | FLOAT | 1.000β1 | Overall strength of the effect (0.0 to 1.0) |
| feature_threshold | FLOAT | 0.000β1 | Minimum feature value to apply the effect (0.0 to 1.0) |
| feature_param | COMBO | Parameter to be modulated by the feature | |
| feature_mode | COMBO | relative | How the feature modulates the parameter ('relative' or 'absolute') |
| depth_maps | IMAGE | Input depth maps to be processed | |
| ripple_amplitude | FLOAT | 0.050β0.5 | Amplitude of the ripple effect (0.0 to 0.5) |
| ripple_frequency | FLOAT | 201β100 | Frequency of the ripples (1.0 to 100.0) |
| ripple_phase | FLOAT | 0.00β6.2832 | Phase offset of the ripples (0.0 to 2Ο) |
| curvature | FLOAT | 0.000β1 | Interpolation between linear and circular patterns (0.0 to 1.0) |
| opt_featureopt | FEATURE | Optional feature input for parameter modulation |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| IMAGE | IMAGE | β |