ComfyUI Node Runs on cloud

SineWave

Make your image shiver

By EllangoK·Created 3 years ago·Updated 2 years ago· 256
SineWave
  • image
  • IMAGE
amplitude10
frequency5
direction

If you've ever wanted your image to look like it's being rippled by wind, heat shimmer, or a bad VHS tracking - this is the node. SineWave displaces each row or column by a sine wave, so the image bends into those smooth, undulating squiggles that make a flat render feel alive. It's a small, focused effect node, and its three inputs are all there is to it. Perfect for that "flag in the breeze" or "underwater" wobble you can't get from any static filter.

How it works

For each line of the image, the node computes a displacement amplitude * sin(2π * position * frequency / dimension) and rolls that line sideways (or up and down) by the resulting offset. Each line shifts by a slightly different amount along the sine, which is what produces the smooth wave instead of a straight shear. The torch.roll means pixels that leave one edge wrap around to the other, so you get a bit of smearing at the extremes - a feature of the look, not a bug.

  • amplitude (0–150, default 10) - how far the wave displaces pixels, in image pixels. This is your intensity dial: 5–15 is a subtle shimmer, 50+ is full flag-in-a-hurricane.
  • frequency (0–20, default 5) - how many wave cycles fit across the image. Low frequency = one big slow bend; high frequency = a tight rippling wobble.
  • direction - horizontal bends the image along rows (the classic vertical ripple, like a curtain); vertical bends columns (a side-to-side wobble). Same idea, different axis.

Output is a single IMAGE.

Install

SineWave is one of ~22 nodes in ComfyUI-post-processing-nodes.

  • ComfyUI Manager: search "post processing nodes", install, restart.
  • Manual:
cd ComfyUI/custom_nodes
git clone https://github.com/EllangoK/ComfyUI-post-processing-nodes

Restart after. No requirements.txt, no downloads - per-line torch.roll calls. It's under postprocessing → Effects in the node menu.

Actually using it

For a still image it's a one-shot novelty. Where it earns its keep is video: animate the amplitude (or phase, if you're driving it with a time-based input) across a frame sequence and you get a convincing organic shimmer. Two practical notes: the per-line loop is slow-ish on big images - a 2048px render will pause for a second or two - and the wrapped-edge smear gets obvious at high amplitude, so either keep amplitude modest or crop afterward. It's a one-trick node, but the trick is a good one, and it's the only thing in this pack that moves.

Categorypostprocessing/Effects

Inputs (4)

NameTypeDefaultDescription
imageIMAGE
amplitudeFLOAT100–150
frequencyFLOAT50–20
directionCOMBO2 options: horizontal, vertical

Outputs (1)

NameTypeDescription
IMAGEIMAGE