ivo3d FX

History · Questions & answers (14)

RuttEtra — Help (v1.0)

ivo3d FX · RuttEtra · Match Name IVO3D RuttEtra · PiPL 16006 · binary version 524289

Scan-line relief in the spirit of the classic Rutt/Etra video synthesizer: the image is rebuilt from lines (or a grid, or a dot lattice), and each line is pushed sideways by the local luminance — bright areas raise the "terrain". On top of that, two FM waves ride on a shared phase: Path Wave bends the line's path, Intensity Wave stripes its brightness. The FM rule everywhere: brighter = higher frequency.

The plugin renders this model on the CPU, resolution-independent and deterministic (identical frames on every machine).

Since v0.4 the whole raster can be lifted into space: Render Mode: 3D Mesh turns every sample point into a vertex, sends the displacement into Z, and projects the result through an internal perspective camera. The 2D mode is untouched and stays the default.

Since v0.6 the same FM carrier can be sent through a filter and demodulated back: the Demodulator group transmits the line's luminance as a frequency, lowpasses the modulated carrier (not the picture), and recovers the value from the filtered phase. What the filter takes away comes back as overshoot and ringing in the terrain — the analog artifact, which is the point. This is a Classic 2D feature and it is off by default.

Since v0.8 the whole thing is considerably fasterInput Smooth in particular, which used to be the most expensive control by a wide margin and now costs the same whatever you set it to. The same round added two controls that are speed and look at once: Segment Length breaks each line into straight segments, and Line Smooth steadies what a line reads along its own length for almost nothing.

Since v0.9 the lines can follow the layer's own alpha: Alpha Affects lets a mask or a feathered edge thin the lines (and shrink the dots) to nothing, fade them out, or both — a taper that belongs to the layer, not to the picture's brightness. Off by default, and on an opaque layer it changes nothing.

Since v1.0 the mesh can be lit: the Lighting group puts one directional, coloured light on the relief — the surface is shaded from its own normals, and it can cast a shadow onto itself from a depth map rendered from the light's point of view. 3D Mesh only; Shade 0 (the default) leaves everything exactly as it was.

The effect is not time-dependent: nothing animates by itself. Animate Phase (or any other parameter) with keyframes or expressions.

History

Where the name comes from

The name is two people. Steve Rutt, an electronics engineer, and Bill Etra, a video artist, built the Rutt/Etra Video Synthesizer in New York in 1972–73, with a prototype funded by the New York State Council on the Arts. It was an analog scan processor: rather than changing the picture's pixels it changed the raster itself — the deflection signals driving the electron beam of a monitor — so a scan line could be pushed upward by the brightness of the image it carried, tilted, scaled or bent by an oscillator, and the result was re-shot from the screen with a camera. That is the terrain look: horizontal lines raised by luminance, on black. Steina and Woody Vasulka, among others, made it a vocabulary of early video art; the machines were hand-built, expensive and few. From the 2000s on, software re-creations kept the model alive. RuttEtra builds on the hardware model and adds what the analog machine suggested but never had: FM waves riding on the lines, a demodulator that fakes the transmission chain and its overshoot, spectral colour, and a real 3D mesh with a camera.

Quick start — the basics in ten recipes

Apply the effect and you already have the classic look: black background, horizontal scan lines, luminance relief (Occlusion on, Amount 60). From there:

  1. Classic monochrome monitor. Color Source: Mono (Tint) + a green (or white) Tint. Raise Glow a little; add Depth Fade for cheap depth. This is the vintage Rutt/Etra CRT.
  2. Finer or coarser raster. Spacing sets the line pitch, Thickness the line weight, Amount the height of the terrain. Pivot 0.5 anchors mid-grey; Pivot 0 makes everything push one way. Noisy footage? Raise Input Smooth until the lines stop jittering — or, if the problem is a single line shaking along its own run rather than the lines disagreeing with each other, Line Smooth does that part far more cheaply (v0.8).
  3. Grid and dot lattice. Direction: Grid draws both line families (Y Spacing Ratio sets the vertical pitch); Direction: Dots turns the image into a displaced dot field (Thickness = dot diameter).
  4. The FM signal look. Raise Path Wave (the line's path oscillates) and/or Intensity Wave (its brightness stripes). Brighter image = denser waves — that is the FM rule. Keyframe Phase to make the waves travel. With both waves at 0 the FM group is completely inactive.
  5. Over the original instead of black. Background: Original keeps the source visible in the gaps; Background: Transparent cuts alpha holes so you can comp the lines over anything; Blend mixes back toward the untouched source (0 % = exact passthrough).
  6. Waves that belong to the image (v0.2 — the anti-flag toolkit). Plain FM can read as one big sheet waving sideways. To pin the wave to the picture: raise Amp by Luma (dark = straight line, bright = wave — the image decides where), add Phase by Luma (bright patches kink the wave in place), and a bit of Line Phase Scatter (each line runs its own phase — oscilloscope bundle instead of textile). For waves that organize around a point instead of sweeping sideways, set Phase Geometry: Radial (Rings) and animate Phase — breathing rings around Center. For relief that grows out of the screen center like a zoom, set Displace Along: Radial (From Center); Image Normal makes lines bulge around bright blobs instead of one global direction.
  7. Real 3D (v0.4). Switch Render Mode: 3D Mesh and the relief stands up: the raster becomes a surface, the displacement goes into Z, and you are looking at it through a camera. Rotate X (default 25°) tilts the terrain, Rotate Y/Z turn it, Camera Distance sets how wide the lens is (smaller = stronger perspective) and Z Offset moves it toward or away from you. Near lines are drawn thicker and hide the ones behind them. Combine it with recipe 6: Phase Geometry: Radial (Rings) + Path Wave + an animated Phase — now the rings really breathe out of Center in depth. Note that Displace Along, Wave Along and Edge Mode go grey here: the camera does their job. This mode is slower — raise Spacing if a 4K comp drags, or better, raise Segment Length (v0.8): in mesh it is worth 2–3× and it thins the vertex grid instead of removing whole lines.
  8. Colour that follows the relief (v0.5). Channel Shift splits red and blue apart in proportion to how far the line is displaced — chromatic aberration that grows with the terrain. For a rainbow, set Color Source: Spectral: the line is coloured by the wavelength its displacement maps to, through the real CIE colour matching functions — Spectral Center picks the middle of the band, Spectral Span how much of the spectrum the relief sweeps. And if a radial displacement is emptying the edges of the frame, raise Overscan (20 % is usually plenty): the raster keeps building lines beyond the frame, so there is always more to pull in. Overscan Fade dims those outside lines, hiding the smeared edge pixels they carry.
  9. The analog artifact (v0.6 — the Demodulator). The line's luminance is transmitted as a frequency, the modulated carrier is filtered, and the value is demodulated back out of it. What the filter could not follow comes back as overshoot and ringing in the terrain. Start by shortening the carrier: Wavelength 6–10 px (the default 50 is meant for the Path Wave). Then two settings to copy: Demodulate mixes between the untouched image (0 %) and the fully demodulated one (100 %) — anything in between is a blend. If the result looks like torn noise, raise Oversample (short carriers need it) or lengthen Wavelength.
    • Hard / line-likeWavelength 8, Demodulate 100 %, Carrier Lowpass 6 px, Filter Order 2, Demod Smooth 0 px, Oversample 2. Sharp wave-lines, strong overshoot; the classic scan-processor artifact.
    • Soft / painted — same, but Demod Smooth 24 px (and try Carrier Lowpass 8–16 px, Filter Order 3). The recovered signal is smoothed, so the terrain melts into soft blobs instead of ringing.
  10. Aiming the artifact, and colour by channel (v0.7).
    • The chain no longer has to run sideways. By default the demodulator reads each line left to right, so its ringing trails that way — a "flag" bias. Signal Path: Along Line (Symmetric) filters back and forth instead, so the ringing sits symmetrically around an edge with no drag; Signal Path: Radial (from Center) runs the chain outward along rays from Center, so the artifact radiates instead. In radial mode Ray Count sets the angular resolution — 1024 is a good default; drop it to 256 for speed, raise it if you see spokes far from the centre.
    • Per-channel offsets in pixels. Shift R / G / B (px) move each colour channel by a fixed number of pixels — a constant registration error, unlike Channel Shift which scales with the terrain. Use both: the % for dispersion that grows with the relief, the pixels for a flat offset everywhere. Turn on Channel Add and overlapping channels add up instead of covering each other — that is the classic additive RGB split. (It only does something when at least one channel is offset.)
    • A thermal-camera look. With Color Source: Spectral, set Color Drive: Luma (Thermal) and the spectrum is driven by brightness instead of displacement — cold to hot, like a FLIR image. The default Displacement keeps the v0.6 behaviour, where the colour follows how far the line moved.
  11. Faceted lines, and cheap smoothing (v0.8).
    • The straight-segment look. Segment Length (px) evaluates the line every N pixels and draws a straight segment in between — nothing is re-sampled or re-shaded, so the relief goes faceted. 4–8 px reads as a plotter or an oscilloscope trace; 16–32 px is proper low-poly terrain. In 3D Mesh it does the same to the surface and is the single most effective speed control in the effect. Two things to know: at large values the Path Wave and the demodulated signal get under-sampled along with everything else, so keep Segment Length well below Wavelength if you want a smooth wave — and it is greyed out in Dots, which has its own lattice.
    • Smoothing along the line instead of across the frame. Line Smooth (px) filters what each line samples along its own length. It is nearly free, it filters colour as well as luminance, and it does not shift the picture sideways however far you push it. ⚠ It is a companion to Input Smooth, not a replacement: it never looks sideways, so it cannot make neighbouring lines agree with each other. If the relief reads as a bundle of independent noisy wires rather than one surface, that is still Input Smooth's job — and Input Smooth no longer gets more expensive as you raise it.
  12. Lines that end where the layer ends (v0.9). A masked or feathered layer used to fill the whole frame with lines under Flat (Tint), because the lines come from luminance and a transparent area is simply black. Set Alpha Affects (Look group) and the layer's alpha takes hold of the lines themselves. Thickness is the taper: a line thins along the feather and vanishes where the alpha reaches zero; in Dots the diameter shrinks to nothing. Opacity fades the lines instead — they dissolve into the background rather than thinning. Both does both, the most complete "the effect is part of the layer" reading. Everything else stays as it was: the relief, the FM, the colour; and with Background: Black the output keeps the layer's alpha, so the area around the cut-out stays transparent rather than turning into a black frame — put a solid behind the layer if a frame is wanted.
  13. Lit relief (v1.0). Render Mode: 3D Mesh, Color Source: Flat (Tint), then Shade 100 % in the Lighting group: the lines stop glowing on their own and take their brightness from the way the surface faces the light. The default light comes from the top of the frame at 45°, so a slope facing up is bright and the far side of a ridge is dark — the relief reads as a landscape instead of a wireframe. Add Shadow 60–80 % and a raised area throws a shadow down the terrain below it; Shadow Softness blurs its edge. Light Elevation 90° is a headlight (no shadow, flat areas all equally lit); Light Azimuth walks the light around the frame; Light Color tints only what the light reaches, so a warm light on a cool Tint gives two-tone shading. Flat (Tint) is the cleanest base because the picture then contributes only geometry; with Original the luminance and the shading multiply. Shade 0 is the self-luminous CRT look, and it is the bit-exact off switch for the whole group.

Full parameter reference below — and if the FM group and the Demodulator are the parts you want to understand rather than dial, start with the primer that follows.

The model in one line

For the line resting at position rest, sampled along its length:

displaced = rest + (luma − Pivot) · Amount  ±  Path Wave · sin(phase)
phase advances per pixel by 2π · (1 + FM Depth · luma) / Wavelength

A pixel lights up where a displaced line passes over it (anti-aliased, ~0.75 px soft edge). With Occlusion on, nearer lines hide the ones behind them — horizontal lines: the lower line is nearer; vertical lines: the left one.

FM in ten minutes — the primer

Why the wave gets denser on bright areas, what the carrier actually is, and why the demodulator's output can shoot past white. No new controls here — this is the mental model behind the FM Modulation and Demodulator groups, and the outline of the video tutorial.

1. The carrier

Both groups ride on a single carrier: a wave that runs along each line and, on its own, has nothing to do with the picture. Its only property is its wavelength, and that is Wavelength (px). Set it to 50 and the carrier repeats every 50 pixels; set it to 8 and it repeats every 8.

The plugin does not track the wave, it tracks a phase — an angle that keeps turning as the line runs. One full turn (2π = 360°) is one cycle:

one pixel of unmodulated carrier:   phase += 2π / Wavelength

Phase (the slider) is where that angle starts. Animate it and the whole pattern travels; one full turn is exactly one carrier cycle, so Phase keyframed 0 → 360° is a seamless loop. Nothing else in the effect depends on time.

2. Modulation — the image pushes the frequency

Amplitude modulation would let the image decide how tall the wave is. Frequency modulation lets it decide how fast the angle turns:

one pixel, modulated:   phase += 2π · (1 + FM Depth · luma) / Wavelength

Read the bracket and the whole plugin follows. On black (luma 0) it is 1, so the wave has exactly the wavelength you dialled — that is why Wavelength is documented as "the carrier length on black". On white (luma 1) at FM Depth 2 it is 3: the angle turns three times as fast, so the wave is Wavelength / 3 long there. Brighter = higher frequency = denser wave is the FM rule everywhere in this effect. FM Depth 0 means the picture never touches the carrier.

Eight pixels of one line crossing a dark-to-bright edge, at Wavelength 8 and FM Depth 2, in degrees:

px luma 1 + 2·luma step phase
1 0.0 1.0 45° 45°
2 0.0 1.0 45° 90°
3 0.0 1.0 45° 135°
4 0.5 2.0 90° 225°
5 1.0 3.0 135° 360°
6 1.0 3.0 135° 495°
7 1.0 3.0 135° 630°
8 1.0 3.0 135° 765°

Three things worth reading off that table, because all three are visible on screen:

3. What the carrier drives

Two controls ride on that one phase:

Because they share one phase they are locked: the stripes sit on the crests. That is the "analog signal" reading of the effect — one signal, seen at once as a shape and as a brightness.

Two controls change where the phase comes from rather than what it does. Phase Geometry: Radial (Rings) replaces the running accumulator with a field (the angle is the distance from Center), which is exactly why FM Depth greys out there — a field has no accumulator to speed up. And Line Phase Scatter gives every line its own starting angle, breaking the line-to-line lock into a bundle of independent signals.

4. Transmission — what the Demodulator group actually does

FM is how a signal survives being sent somewhere. The value is carried as a frequency, and the receiver measures that frequency to read the value back. In real hardware the chain in between is never perfect, and what it does to the signal is what analog video looks like. The Demodulator group builds that chain on purpose, in four steps:

1  modulate    I = cos(phase),  Q = sin(phase)          - the carrier, as a pair
2  lowpass     I and Q each through `Filter Order` one-pole filters
               of length `Carrier Lowpass` px
3  demodulate  phase' = atan2(Q, I)
               luma'  = (Δphase' / unmodulated step  −  1) / FM Depth
4  smooth      luma' through two one-pole filters of `Demod Smooth` px

Line 3 is the algebra of § 2 run backwards, nothing more. If step 2 leaves the carrier alone, it returns the original luminance exactly — which is why Carrier Lowpass 0 is a documented identity rather than an approximation, and worth showing on camera before you show the artifact.

Why a pair of waves and not one cosine: with the cosine and the sine together (the "I/Q" pair) the phase comes straight back out of atan2. A single real cosine would fold in a ghost at twice the carrier frequency, which Demod Smooth would then have to mop up — and Demod Smooth would stop being a control with exactly one job.

5. The artifact — why this is not a blur

Carrier Lowpass filters the modulated carrier, not the picture. That one sentence is the whole group.

A blur is a weighted average of pixels, and an average can never leave the range of what it averaged: blur an image that runs 0 to 1 and every output is still between 0 and 1. Softer, never louder.

The demodulator is not an average. The filter damages the phase, and step 3 recovers the value by dividing — so the error comes back through a non-linear path. At a hard edge the filtered phase overshoots the true one before it settles, and out of that division comes a value past white and past black, followed by a decaying oscillation: ringing. Since the recovered value drives the displacement, the terrain at an edge jumps higher than white ever was, then wobbles back down. That overshoot is the effect — which is why the value is held only by a generous −0.5 … 1.5 safety rail and not clamped to 0…1.

Which knob shapes which part of it:

you want turn
more artifact Carrier Lowpass up — more of the carrier destroyed
deeper overshoot, longer tail Filter Order up — a steeper cut rings harder
the ringing on both sides of an edge instead of trailing one way Signal Path: Along Line (Symmetric)
the ringing radiating from a point Signal Path: Radial (from Center)
hard wave-lines → soft painted shapes Demod Smooth up
less of all of it Demodulate down — 0 % skips the chain entirely

And remember what the chain feeds: the recovered value drives the displacement only. Colour, Glow and Phase by Luma keep reading the untouched image.

6. Nyquist — the one way to get this wrong

A phase can only be measured if it advances less than half a turn between two samples. Past 180° there is no way to tell a big forward step from a small backward one, and step 3 takes the backward reading — the demodulator reports dark where the image is brightest. On screen that is not a soft failure: the terrain breaks into torn noise.

The guard is Oversample, and the rule of thumb is one line of algebra:

safe at Oversample 1:   Wavelength  >  2 · (1 + FM Depth)  px

— and every doubling of Oversample halves that requirement, because each sub-sample covers half the distance.

Back to the table in § 2: at Wavelength 8, FM Depth 2 the fastest step was 135°, comfortably inside the limit. Drop Wavelength to 4 with the same depth and white steps 270° per pixel, which reads as −90° — the recovered value goes to the bottom rail on the brightest part of the picture. Oversample 2 fixes exactly that case: each sub-sample steps 135° again.

Segment Length (px) (v0.8) enlarges the same step, since the line is only evaluated at the break points. Keep it well below Wavelength whenever the wave or the chain has to stay smooth.

Parameters

Lines

Lines

Displace

Displace

FM Modulation

FM Modulation

This whole group is dead while Path Wave = 0 and Intensity Wave = 0 — by design, bit-exactly: the phase accumulator is not even evaluated. That includes the v0.2 members: Phase Geometry, Phase by Luma and Line Phase Scatter do nothing until one of the waves rises (and Amp by Luma and the v0.3 Wave Along need Path Wave > 0). Raise either wave to bring the group to life.

Demodulator (v0.6)

Demodulator (v0.6)

The chain that gives the analog artifact. It runs along each line (a row for Horizontal, a column for Vertical, both families for Grid, the dot row for Dots), in four steps:

  1. Modulate — the luminance is turned into a frequency on a carrier, exactly the rule the FM group already uses: Wavelength is the carrier length, FM Depth how hard luminance pushes the frequency. (No new "carrier" slider: the group above is the carrier. With FM Depth 0 there is nothing to demodulate and the whole chain is skipped.)
  2. Lowpass the carrierCarrier Lowpass cuts the modulated carrier. ☠ This is the whole trick: it is not a blur on the picture. A blur is a weighted average and can never leave the image's own value range; filtering the carrier corrupts the phase, and the error comes back through the frequency non-linearly — as overshoot past white and past black.
  3. Demodulate — the value is read back from the filtered phase.
  4. SmoothDemod Smooth smooths the recovered signal.

The recovered value drives the displacement only (the luminance relief and Amp by Luma). Colour, Glow, Phase by Luma and the drawing phase keep reading the untouched image, so Channel Shift and Spectral are unaffected. One exception worth knowing: under Displace Along: Image Normal the relief comes from a gradient field of the whole picture rather than from the sampled luminance, so there the chain only acts through Amp by Luma.

Every control here is one function:

The whole group is greyed out in 3D Mesh mode — the chain is a Classic 2D feature.

3D Mesh (v0.4)

3D Mesh (v0.4)

The whole group is greyed out while Render Mode is Classic 2D.

What is dead in 3D Mesh mode (greyed out): Displace Along, Wave Along and Edge Mode. All three are 2D-raster concepts — the displacement now goes into Z, and the camera replaces them. Center is the opposite: in mesh mode it is always live, because it is both the rotation pivot and the projection centre. Pivot is live too, even on Image Normal.

Performance: 3D Mesh is the slower path — one vertex per sampled pixel, plus segment rasterisation with a z-buffer. It is opt-in for exactly this reason. Increase Spacing (fewer lines) if a 4K comp gets sluggish.

Lighting (v1.0)

Lighting (v1.0)

The whole group is greyed out while Render Mode is Classic 2D; it lights the mesh only. One directional light, Lambert shading, and an optional self-shadow.

The model. Every vertex gets a normal from the surface around it: the direction along its own line and the direction across to the neighbouring lines (in Dots, the row and column neighbours; in Grid, each family on its own). The normal is computed after Rotate X / Y / Z, so the light is fixed to the camera, not to the terrain — turn the mesh and the lit side moves. The light is a direction only (no position, no falloff): lit = max(0, n · L), and each colour channel of the line is multiplied by

k = 1 − Shade · (1 − lit · shadowK · LightColor)

so Shade mixes between the self-luminous line (k = 1) and the fully shaded one, where the side facing away from the light goes black; 1 − Shade is the ambient share. The shading multiplies the line colour after Depth Fade and the Color Source, so Flat (Tint) does not cancel it — a constant base colour is exactly what makes the geometry the only thing left to read, and Flat (Tint) + Shade is the cleanest lit relief. Original, Mono and Spectral multiply their own colour with the shading.

What lighting is not: there is no specular highlight, no point or spot light, and the light does not come from the comp's light layers — one directional light, internal to the effect. Depth Fade is not a shadow either (see Look).

Performance: Shade alone adds roughly a third to the mesh time (the normals and one extra pass of vertex bookkeeping); Shadow renders the mesh a second time into the depth map and costs roughly another mesh — about 2.3× the mesh time in all, independent of Shadow Softness. Both are exactly free at 0.

Look

Look
setting line coverage line thickness / dot radius
Off (default) unchanged unchanged — the alpha is not read at all
Opacity × alpha unchanged
Thickness unchanged × alpha — a line tapers, a dot shrinks, both to nothing at alpha 0
Both × alpha × alpha

In Thickness a line thinner than a quarter pixel does not thin further but fades in proportion instead, so the taper runs continuously into zero rather than stopping at a hairline; at alpha 0 nothing is drawn at all. In 3D Mesh the alpha is taken at each vertex and averaged over the segment, like the colour; it scales the projected thickness, and a fading line stops writing depth as its coverage falls, so it does not cut a hole into the line behind it. The Demodulator is untouched — the chain carries luminance, not alpha. On an opaque layer all three settings render exactly as Off. ⚠ With Background: Black the output keeps the layer's alpha, so in Opacity the area around a cut-out stays transparent, not black — a black frame, if wanted, is a solid behind the layer. Amount is deliberately not scaled: a line that thins or fades to nothing does not need its relief flattened as well.

Notes

Version history

Questions & answers

What does "FM" mean here, and why do the waves get denser on bright areas?

A carrier wave runs along every line, and its only property is Wavelength — the carrier length on black. The picture does not change how tall that wave is (that would be amplitude modulation); it changes how fast the phase turns: per pixel the phase advances by 2π · (1 + FM Depth · luma) / Wavelength. On black the bracket is 1, so you get the wavelength you dialled; on white at FM Depth 2 it is 3, so the wave is a third as long there. Brighter = higher frequency = denser wave is the rule everywhere in the effect, and FM Depth 0 means the picture never touches the carrier. Because the phase accumulates, a bright patch also shifts everything downstream of it along the line — that is why the pattern seems to stream out of highlights; Phase by Luma is the opposite, it kinks the wave in place at the patch's own rim. Two controls ride on the one phase: Path Wave (the wave as position) and Intensity Wave (the same wave as brightness), so the stripes always sit on the crests. See FM in ten minutes.

A whole group of controls does nothing. Are they broken?

No — three groups are inert by design until one switch wakes them, bit-exactly. The FM Modulation group is dead while Path Wave = 0 and Intensity Wave = 0: Phase Geometry, Phase by Luma, Line Phase Scatter, Amp by Luma and Wave Along all wait for a wave. The Demodulator is skipped entirely at Demodulate 0 % (and has nothing to demodulate at FM Depth 0). The 3D Mesh group is grey in Classic 2D — and in 3D Mesh it is Displace Along, Wave Along and Edge Mode that go grey instead, because the camera does their job. Smaller cases: Glow is dropped under Flat (Tint), Center is grey while neither radial mode is active, Overscan Fade is dead at Overscan 0, Segment Length is grey in Dots. Raise the wave, the Demodulate mix or the mode and the group comes to life. See FM Modulation, Demodulator and 3D Mesh.

The waves sweep sideways like a flag. How do I make them belong to the picture?

Plain FM reads as one sheet waving sideways because the phase runs along every line in the same direction. Four controls pin it to the image, and they stack. Amp by Luma — dark areas stay straight, bright areas carry the full wave (the cheapest fix). Phase by Luma — bright patches kink the wave in place. Line Phase Scatter — every line gets its own starting phase, so the textile sheet becomes a bundle of independent oscilloscope traces. And to organise the waves around a point instead of a direction: Phase Geometry → Radial (Rings) plus Wave Along → Radial (Breathe), then animate Phase — the rings breathe in and out of Center instead of crests sliding along the lines (Radial (Perspective) makes the swell grow with distance from the centre). Known artifact of the radial modes: on the axis through Center that runs parallel to the lines the wave's visible component dies — move Center off that band or use Grid. If a radial displacement empties the frame edges, raise Overscan (20 % is plenty). See FM Modulation → Wave Along and recipe 6 in Quick start.

The lines jitter on noisy footage. Input Smooth or Line Smooth — which one, and what does it cost?

Two different jitters, two controls. If a single line shakes along its own run, Line Smooth (px) filters what each line samples along its length — nearly free at any radius, it filters colour with the luminance, and it runs forwards and backwards so nothing shifts sideways. If neighbouring lines disagree with each other — the relief looks like a bundle of independent noisy wires instead of one surface — that is Input Smooth's job: it blurs the whole frame in both directions, so it is the only one that smooths across the lines. They are companions, not alternatives. Since v0.8 Input Smooth costs the same whatever you set it to (measured 1.5–2× the default raster), and Line Smooth 12 about 1.2×. A third route: a GPU Fast Box Blur placed before RuttEtra in the effect list feeds its result straight in — the one difference being that Input Smooth softens only what the lines sample, so Background: Original stays sharp. See Displace → Input Smooth / Line Smooth and Notes.

How do I get the analog overshoot and ringing — and why does it look like torn noise sometimes?

That is the Demodulator (Classic 2D only): the line's luminance is transmitted as a frequency, the modulated carrier is lowpassed, and the value is read back from the damaged phase. Because the recovery divides rather than averages, the error comes back non-linearly — as overshoot past white and past black, then ringing. A blur can only flatten; this shoots past. Start by shortening the carrier: Wavelength 8 (the default 50 is meant for the Path Wave), Demodulate 100 %, then Carrier Lowpass 6 px, Filter Order 2, Demod Smooth 0, Oversample 2 for the hard, line-like artifact; Demod Smooth 24 px melts it into soft painted shapes. Carrier Lowpass 0 is an exact identity — show that first. Signal Path aims it: Along Line trails in the scan direction, Symmetric rings on both sides of an edge, Radial radiates from Center. Torn noise is Nyquist: the phase must advance less than half a turn per sample, so Wavelength > 2 · (1 + FM Depth) px at Oversample 1, and every doubling of Oversample halves that requirement — raise it, or lengthen Wavelength. Keep Segment Length well below Wavelength for the same reason. See The artifact, Nyquist and Demodulator.

How do I stand the relief up in real 3D, and keep a 4K comp responsive?

Render Mode → 3D Mesh: every sample point becomes a vertex, the luminance relief and the Path Wave go into Z, and an internal camera projects it with a z-buffer — near lines are drawn thicker and hide the ones behind. Rotate X (default 25°) tips the terrain, Rotate Y / Z turn it, Camera Distance sets the lens (smaller = stronger perspective), Z Offset moves it toward you. Combine with Radial (Rings) + Path Wave + animated Phase and the rings breathe out of Center in depth. Mesh costs about 2.9× the default raster, so the speed controls matter: Segment Length thins the vertex grid instead of removing lines — 4 runs about 2× faster, 16 about 3× — and Spacing removes lines. A vertex closer to the camera than Camera Distance ÷ 1000 is clipped (that is the near plane, not a bug), and under strong rotation you may see the border of the surface. See 3D Mesh and Notes.

With a transparent background, are the lines composited additively — or does the nearer line cover the farther one?

That is decided by Occlusion, not by Background. Occlusion off: the lines are added together wherever different lines overlap (colour sums, coverage unions), in Classic 2D and in 3D Mesh alike — the "shining wires" look. Occlusion on: the nearer line covers the farther one (in 2D the lower line, in 3D the z-buffer decides). Background only chooses what is placed under that result — black, the original picture, or nothing — so Transparent + Occlusion off is additive lines with a coverage alpha, and Transparent + Occlusion on is covering lines with the same alpha. Because the output is straight alpha, additive overlaps can carry more colour than their alpha, which reads as a brighter spot when the layer sits over something else; that is the additive look, not an error. Lighting works in both modes, since it scales each line's colour before the lines are combined. See Look → Occlusion and Look → Background.

How do I light the relief — and does Flat (Tint) cancel the shading?

Lighting → Shade (3D Mesh only). At 0 the lines are self-luminous, as they always were; raise it and each line takes its brightness from how its bit of surface faces the light — a slope toward the light is bright, the far side of a ridge is dark, 100 % makes that side black. The light comes from the top of the frame at 45° by default; Light Azimuth walks it around (the dial points at the light), Light Elevation 90° is a headlight, Light Color tints only what the light reaches. Shadow adds self-shadowing from a depth map rendered from the light's view — a plateau lit from the top at 45° throws a shadow as long as it is high — and Shadow Softness blurs its edge. No, Flat (Tint) does not cancel it: the colour source decides the base colour and the shading multiplies it afterwards, so a constant base is exactly the cleanest lit relief — the picture then contributes only the geometry. With Original the luminance and the shading multiply, which reads as a lit photograph. Depth Fade is not a shadow (it darkens by displacement) and the two stack. See Lighting and Look → Depth Fade.

I turned Shadow up and nothing changed. What has to be true for a shadow to appear?

Four things, in this order. Render Mode must be 3D Mesh — in Classic 2D the whole Lighting group is greyed out and not read. Shade must be above 0: it is the master amount of the group, and Shadow only scales the light term inside that mix, so at Shade 0 the depth map is not even built — Shadow 100 % over Shade 0 is the unlit render, bit for bit. Light Elevation must be below 90°: a headlight from the camera cannot put anything in shadow, because whatever the camera sees, the light sees too; at 45° a raised area throws a shadow exactly as long as it is high, and a lower light throws a longer one. And there has to be something to be shadowed: a smooth slope never shadows itself, a line never shadows itself, and a vertex with alpha 0 casts nothing — shadows appear where the relief stands up above what lies behind it in the light's direction, so raise Amount (px) or lower the light. Once the shadow is there, Shadow sets how dark it is (100 % = the light contributes nothing in the shadowed part; the ambient share 1 − Shade always remains), and Shadow Softness sets the edge — if thin lines leave a comb pattern in it, the default 2 px already hides that. See Lighting.

Green CRT, rainbow, thermal, RGB split — where do the colours come from?

Color Source decides. Mono (Tint) + a green or white Tint is the vintage monitor (raise Glow a little, add Depth Fade). Flat (Tint) is a constant colour, the plotter look — note the geometry still comes from the image, only the colour is fixed. Spectral colours the line by the wavelength its displacement maps to, through the real CIE colour matching functions — a true spectrum, so it never passes through magenta; Spectral Center / Span pick the band (usable 400–680 nm), and Color Drive → Luma (Thermal) drives it by brightness instead, cold to hot like a FLIR image. For the split: Channel Shift is dispersion that grows with the relief, Shift R / G / B (px) is a flat registration error everywhere — use both — and Channel Add makes overlapping channels add up instead of covering, the classic additive RGB split (it only does something once a channel is actually offset). See Look.

Lines, grid or dots — and what does each cost?

Direction picks the raster: Horizontal or Vertical Lines is the classic, Grid draws both families at once (they add together; occlusion applies within each family, and in 3D Mesh the two families occlude each other properly), Dots turns the image into a displaced dot lattice where Thickness is the dot diameter and Y Spacing Ratio the horizontal pitch. Measured at 4K against the default horizontal raster: Grid ≈ 2.0×, Dots ≈ 0.44×, 3D Mesh ≈ 2.9×, Mesh + Grid ≈ 6.8×, Spacing 2 ≈ 2.6×, Demodulate at Oversample 2 ≈ 2.5×; Overscan and Spectral are nearly free, and Segment Length is the one control that makes things faster (4 ≈ 0.77×). See Lines and the cost table in Notes.

How do I animate it — and make a loop that closes exactly?

Nothing moves by itself: animate Phase. One full turn is exactly one carrier cycle, so Phase keyframed 0° → 360° is a seamless loop; with Radial (Rings) the rings travel outward as Phase increases. Beyond the waves, everything is keyframable: Amount for the relief growing in, Center drifting across the frame, Rotate X/Y/Z in mesh. When a displaced line runs off the frame, Edge Mode decides its fate — Crop slides off (the CRT), Wrap re-enters from the other side (the "vertical hold" roll, but an animated line teleports at the moment it wraps), Fold bounces back and stays continuous, Compress squashes toward the edge like an overdriven signal. See FM Modulation → Phase and Displace → Edge Mode.

How do I put the lines over the original picture, or over anything else in the comp?

Background decides what sits behind the lines. Black is the classic monitor look; Original keeps the source image visible in the gaps between the lines; Transparent cuts real alpha holes (the gaps have alpha 0), so the lines can be composited over any layer underneath, glowed or blended on their own. Blend mixes the whole result back toward the untouched source — 0 % is a bit-exact passthrough. See Look → Background.

My layer has transparency — a mask, a feathered edge — but the lines run right across the transparent area. Can they fade with the alpha?

Yes — Alpha Affects in the Look group (v0.9). By default the plugin draws every line from the luminance and never reads the alpha, so a transparent area (luma 0) gives flat lines that a constant colour source still paints at full strength — with Flat (Tint) the whole frame fills with lines, the masked-out area included; Background → Transparent only cuts the gaps between the lines, and Edge Mode is about the frame edge. Set Alpha Affects → Thickness and the line weight itself follows the alpha: along a feather the line tapers, a dot shrinks in diameter, and where the alpha reaches zero nothing is drawn. Opacity fades the lines instead of thinning them; Both does both. The alpha is read through the same smoothing and segmenting as the colour, so the taper stays consistent with whatever the line samples, and the relief itself is not flattened — a line that ends does not need to. With Background: Black the output keeps the layer's alpha, so the surroundings of a cut-out stay transparent rather than black; put a solid behind the layer for a frame. On v0.8 and earlier the workaround was Mono (Tint) plus a precompose over a black solid, which turns the alpha into luma — a brightness fade, not a change of line weight. See Look → Alpha Affects and Look → Background.