Generator node

Scanline Displacer

Raster lines displaced by a depth picture and coloured by a source picture, animated: lines enter at an edge (Direction), settle into a Spacing, bend where the Depth is (Amplitude, Follow, Drag), carry the source's colour, jitter, mirror. Hidden Lines gives the relief; Beam dims a fast-moving line like a tube's beam; Glow adds the halo. Points mode draws each line's samples as dots. Inspired by the 1970s Rutt/Etra Scan Processor.

Inputs

PortTypeDefault
ImageThe picture the lines take their colour from — a Video Player, a camera, any generator. Without it the lines are the Tint.image—
DepthThe height picture that displaces the lines — a Depth Estimation output, the scene's Depth pass, any grayscale. Brighter lifts the line (Invert flips it). Without it the lines stay flat.image—
EnableOff clears the picture; the queue of lines is kept and continues when on again.booltrue
ModeLines — each line is drawn as a stroke through its samples. Points — the same samples as dots of the Thickness. Rectangles — a rectangle per sample lying along the line, Rect Width × Rect Height with Rect Random per-sample sizes; lower Samples for a sparser field.int0
DirectionWhere lines enter and travel: Down (from the top), Up, Left, Right; Center Out — every line is born at the middle and travels out both ways at once, each half reading the picture where it really is; Angle — the travel turned by the Angle port.int0
SymmetryMirrors the picture the lines read: Across (left–right for horizontal lines), Along the travel, or Both — a kaleidoscope of the relief.int0
LinesHow many lines can be on screen at once, 1…512. With Spacing 0 they share the height evenly.int96
SamplesPoints along each line, 16…1024. More follows finer detail in the depth; 256 suits a video, above the picture's pixels adds nothing.int256
AmplitudeHow far a fully bright depth pixel lifts the line, in Grafit units (the view is 2 tall). Negative pushes down. −4…4.float0.35
NearThe depth value that leaves the line flat (0…1).float0
FarThe depth value that lifts the line by the full Amplitude (0…1).float1
InvertDark lifts instead of bright — for depth maps where dark means close.boolfalse
GammaCurve between Near and Far: below 1 lifts the mid-tones, above 1 keeps them low. 0.1…8.float1
FollowHow quickly a line takes the shape of the depth under it: 1 snaps at once (the classic rigid raster), lower values flow into the relief and settle — also the temporal filter against a breathing depth map.float0.6
DragDamping of that motion: 1 settles without overshoot, low values bounce and ring.float0.5
SpeedHow fast the lines travel from the entering edge to the far edge, in Grafit units per second. 0 holds them.float0.25
Drop Every0 — a steady stream, lines glide continuously. Above 0 — one new line drops in every N seconds and the others shift a slot, settling with Follow / Drag.float0
SpacingDistance between lines in Grafit units. 0 shares the height (or width) evenly among Lines.float0
ThicknessStroke width in Grafit units (0.004 is a hair, 0.02 a bar). Points use it as the dot size.float0.004
Thickness RandomHow much each line's thickness may vary, 0…1 (1 = from half to one and a half).float0
LengthFraction of the width a line covers, 0.02…1. Shorter lines sit at a random place across.float1
Length RandomHow much each line's length may shrink, 0…1 — with a random position across.float0
JitterA random twitch added to every sample's height, in Grafit units. 0 is calm.float0
Jitter RateHow many times per second the twitch is re-rolled: low is a slow wobble, high a nervous shiver.float12
Color FromDisplaced — the pixel now under the lifted line (a projection). Original — the pixel the sample came from, carried along like a string.int0
TintMultiplied into the colour; with no Image it IS the colour.color(1, 1, 1, 1)
BeamA tube's beam dims where it moves fast: steep parts of a line get darker, flat parts stay bright, 0…1.float0.4
Hidden LinesA front line hides the lines behind it under its bumps — the relief. Off, every line shows through.booltrue
GroundThe colour painted under each line when Hidden Lines is on. Alpha 0 (default) hides what is behind without painting, so the relief works over a live background; black gives the classic tube look.color(0, 0, 0, 0)
PerspectiveLines farther back are drawn narrower, 0…1 — a slight depth cue for the stack.float0
GlowBloom around the bright lines, 0…4 — the phosphor halo.float0
PersistencePhosphor: how much of last frame's picture stays, 0 = none, 0.9 a short tail, 0.98 long trails. Frame-rate independent; the lines keep hiding what is behind them within a frame.float0
SeedThe random lengths, thicknesses and jitter are hashed from this: the same seed replays the same lines, two outputs can run in lockstep.int1
ResetA rising edge empties the queue and starts again from the entering edge.boolfalse
XHorizontal centre of the picture area in Grafit units.float0
YVertical centre of the picture area in Grafit units.float0
WidthWidth of the picture area in Grafit units; 0 = the whole view.float0
HeightHeight of the picture area in Grafit units; 0 = the whole view.float0
OpacityOverall opacity of the lines, 0…1.float1
FlowA Flow Map's Image: its vector field drifts the samples along their line and pushes them into the relief — the raster breathes with the flow. Nothing cabled = no drift.image—
Flow StrengthHow strongly the Flow field moves the samples, 0…4. Along the line it is a slow drift (a sample never leaves its line); across it adds to the displacement.float0.5
Max SlopeBreaks a segment steeper than this (displacement per unit of line) — where the depth jumps, the vertical curtain disappears and the silhouette reads clean. 0 keeps every curtain (the classic look).float0
CameraA Camera node: the lines become a 3D relief — flat on the picture plane with the displacement standing off it along z — seen through that camera. Orbit it to look around the surface. Uncabled = the flat 2D picture.structure—
TubeAbove 0 the lines are also published as tubes of this radius (try 0.005…0.02) on the Geometry output — cable it into a 3D Scene's Mesh for materials, lights and real shadows; a Material with the same Image as Texture gives them the picture's colours. 0 = no geometry.float0
BackdropDraws the Image itself as the picture plane under the lines, at this opacity — with a Camera the picture turns with the relief so the two stay one object; flat otherwise. 0 = only the lines (put the picture on the Canvas yourself).float0
MotionStream — lines glide in a steady raster, each on its slot (Spacing, Speed). Fall — every line is a drop: it accelerates through empty space, brakes hard where the picture is, creeps through it at Speed and falls away again — a magnet through a copper tube; fast drops are sparse, slow ones bunch.int0
Fall SpeedFall motion: the top speed through empty space, units per second. Speed is the speed through the picture; the ratio between them is how much the drops bunch inside it.float2.5
GravityFall motion: how fast a drop picks up speed through empty space, units per second² — the entrance (a line appears and accelerates) and the exit (it falls away). Small = a slow, floating start.float6
BrakeFall motion: seconds for a drop to lose its speed when it reaches the picture — 0.05 stops it like a wall, 0.5 sinks in softly.float0.12
MediumFall motion: what counts as the dense region a drop slows in — the Image's alpha (a cut-out's silhouette) or the Depth's height (near is dense). Read across the whole width of the travel row, so a row with little picture brakes little.int0
AngleDirection = Angle: the travel direction in degrees, clockwise, 0 = Down, 90 = Left, 180 = Up. The lines lie across it and cover the whole canvas at any angle.float0
Space StretchFall motion: the empty (alpha) space is virtually this many times longer — a drop crosses it at 1/Stretch of its speed, so the acceleration and the brake before the picture are visible; the picture itself is unchanged. 1 = off.float1
Space ColorWhat colours a line, dot or rectangle outside the picture or over its transparent pixels. Tint: the Tint colour. Gradient: a Gradient node along the travel (0 entry edge, 1 exit). Trace: the colour the sample last touched in the picture, carried out with it.int0
GradientA Gradient node's output for Space Color = Gradient, sampled by how far the line has travelled.structure—
Rect WidthRectangles mode: each rectangle's width along the line, Grafit units (before Rect Random).float0.03
Rect HeightRectangles mode: each rectangle's height across the line, Grafit units (before Rect Random).float0.012
Rect RandomRectangles mode: 0 = every rectangle the same, 1 = width and height each anywhere from 0 to twice the set size, fixed per sample by the Seed.float0.5

Outputs

PortType
ImageThe picture the lines take their colour from — a Video Player, a camera, any generator. Without it the lines are the Tint.image
WidthWidth of the picture area in Grafit units; 0 = the whole view.float
HeightHeight of the picture area in Grafit units; 0 = the whole view.float
Countint
Dropbool
Front Linestructure
LinesHow many lines can be on screen at once, 1…512. With Spacing 0 they share the height evenly.structure
Geometrystructure

How It Works

A generator that draws raster lines displaced by a depth picture and coloured by a source picture, in motion — the look of a scanned image lifted into relief.

The lines are a queue. They enter at an edge set by Direction (Down, Up, Left, Right, Center Out, or any Angle), settle into a Spacing, and travel at Speed — either as a steady stream, or one line every Drop Every seconds with the whole stack shifting a slot. Lines is how many are alive and Samples how many points each one is made of.

Every sample is a spring. Where the Depth picture is bright, the line lifts by Amplitude; Follow and Drag are that spring's stiffness and damping, so a rigid raster (Follow 1) and a line that flows into the relief and settles are one dial apart. Near, Far, Invert and Gamma map the picture's values into that range first — a depth map is relative, not metric, and these are what make it stable.

Hidden Lines is what turns a stack of curves into a surface: a front line hides what is behind it under its bumps, done with the real depth buffer, so it works over a live background. Ground paints under the lines when you want the classic black instead.

The two pictures keep their own proportions. A sample reads the Image and the Depth at its own place in the view, against each picture's own area — so lines fall across the whole scene and bend and colour only where the picture actually is; outside it they are flat and Tint-coloured.

Every sample is a spring on the GPU, the queue of lines is a small CPU model, and the whole picture is one instanced draw.

Parameters in Depth

Mode (int, default Lines) — Lines draws each line as one continuous mitred stroke, Points draws its samples as dots, Rectangles draws a rectangle per sample lying along the line, Rect Width × Rect Height with Rect Random giving every sample its own size from the seed.

Motion (int, default Stream) — Stream is the steady raster of slots. Fall makes every line a drop: it appears at the edge and accelerates under Gravity up to Fall Speed through empty space, then brakes hard (Brake, in seconds) to Speed where the picture is, creeps through it, and falls away again on the other side — a magnet dropped through a copper tube. Medium says what counts as "the picture": the Image's alpha, or the Depth's height. Fast drops are sparse and slow ones bunch, so the spacing of the raster becomes the picture's own. Space Stretch makes the empty space virtually longer so the acceleration and the brake are visible.

Colour. Color From takes the pixel under the lifted line or the one the sample came from. Tint multiplies. Space Color decides what colours an element outside the picture or over its transparent pixels: the Tint, a Gradient node along the travel, or Trace — the colour the sample last touched in the picture, carried out with it, per sample and per direction, and before the first touch the colour of the edge it is heading for.

Look. Beam dims a line where it moves fast, the way a tube's beam does; Glow adds the halo; Persistence keeps a fading picture of the last frames — the phosphor — in a private accumulation that still hides lines behind lines. Jitter and Jitter Rate twitch; Thickness / Length and their Random partners with a Seed make it organic and repeatable. Symmetry mirrors the picture the lines read.

Flow takes a Flow Map node's Image: its field drifts every sample along its line and pushes into the relief, scaled by Flow Strength, so the raster breathes with the flow. Max Slope breaks a segment steeper than the value, so where the depth jumps the vertical curtain disappears and the silhouette reads clean; 0 keeps the classic walls.

The Third Dimension

Cable a Camera node into Camera and the raster becomes a real relief seen through that camera: the lines lie on the picture plane, the displacement stands off it along z, the depth buffer hides what is behind, and an orbit looks around the surface. Through a camera the lines always take the colour of their own place on the picture rather than of the pixel that happens to be under them on screen, so the relief does not read the picture like a lens as the camera moves. Line thickness becomes a world size: it shrinks with distance, and each line stays one continuous mitred stroke rather than a chain of overlapping segments, so the relief never breaks into scales.

Backdrop draws the Image itself as the picture plane under the lines, at that opacity — with a Camera the picture turns with the relief and the two stay one object; flat, it is simply the picture under the lines.

Set Tube above zero and the lines also leave through the Geometry output: every live line swept into a tube of that radius, as one mesh. A 3D Scene's Mesh then gives them a material, a Light and real shadows — and because the tubes' UVs are the picture's, a Material whose Texture is the same Image paints them with it.

Front Line and Lines hand the raster to the rest of the graph as point clouds — z is the displacement, with a pen-lift between lines — for a Sonify, a Plexus or a Scope Voice.

Typical Patches

  • Scanline portrait: Video Player → Depth Estimation → Scanline Displacer (Depth) → Canvas, with the video's Image also cabled into the node's Image for colour. This is the built-in recipe of the same name.
  • Turn the relief: add a Camera node into Camera and give it an orbit — a relief is invisible from straight ahead, so the orbit (or a side light) is what makes it read.
  • Real shadows: Tube above zero → Geometry → 3D Scene Mesh, with a Material whose Texture is the same Image and a Light off to one side.
  • Falling raster: Motion Fall, Medium Image Alpha, Space Color Trace — lines drop through empty space, slow through the figure and carry its colour out with them.
  • Hear the picture: Front Line → Sonify, or Lines → Scope Voice for oscilloscope music drawn by the image itself.
  • Breathing raster: Flow Map → Flow, Flow Strength around 0.5, over a still image.

Open Scanline Displacer in the interactive catalog →

Scanline Displacer is one of 381 nodes in Grafit Pro.

Free download. Every feature for 7 days, no card. Then €99.99 once — or keep playing your projects as a Player.

More Generator nodes