vizz clouds Docs GitHub

Clouds from equations

vizz draws point clouds. Most of them come from a scanner, a camera or a file — and 72 of them come from mathematics, with 22 more that are still running while you watch.

Every picture on this page was drawn by the app's own code, from the same functions that fill a slot when you pick one from the menu, and through the same renderer that puts it on screen. Nothing here is an artist's impression of what a generator makes.

To use one: open the clouds section of the panel and pick from generate…, or start vizz with --cloud gen:thomas. A made cloud takes the next free slot and behaves exactly as a scanned one does: chosen by name, crossed to with a scene change, captured by a preset, lit, and remade the next time you launch. The ones with knobs take them after a ? — gen:torus-knot?p=2;q=5. The live ones run in the live slot: --live-cloud sim:fluid, or simulate… beside receive.

Where these came from. Almost none of it is ours. Each entry says whose work it is, and links to somewhere to read about it where there is somewhere worth sending you. If we have credited something wrongly, that is a bug like any other — please tell us.

And the rest of it. Clouds are the part of vizz with the longest bibliography, but the shader's own shapes, the pattern stack, the colour, the light, the beat detection and the passes at the end all came from somewhere too. Those are below the catalogue, and everything on the page is in one list at the foot of it.

flows

Differential equations, integrated from one point on the attractor and recorded in time order. Consecutive points are consecutive moments, which is what makes the cloud crawl along itself rather than shimmer.

Thomas — a point cloud

Thomas

gen:thomas

Thomas' cyclically symmetric attractor — three sines; a knot of ribbons round the diagonal

René Thomas, “Deterministic chaos seen in terms of feedback circuits”, Int. J. Bifurcation and Chaos 9 (1999)

Halvorsen — a point cloud

Halvorsen

gen:halvorsen

Halvorsen's attractor — three lobes, cyclically symmetric; sheets folding into each other

Arne Dehli Halvorsen’s cyclically symmetric system, as catalogued by Sprott

Dadras — a point cloud

Dadras

gen:dadras

Dadras' tri-scroll — three rolled sheets joined by a spine

Sara Dadras & Hamid Reza Momeni, Physics Letters A 373 (2009)

Rössler — a point cloud

Rössler

gen:rossler

Rössler's funnel — a flat spiral that lifts and folds back on itself

Otto Rössler, “An equation for continuous chaos”, Physics Letters A 57 (1976)

Four-wing — a point cloud

Four-wing

gen:four-wing

the four-wing attractor — four lobes off a saddle

Wang, Sun & van Wyk, the four-wing system (2009)

Chen — a point cloud

Chen

gen:chen

Chen's system — Lorenz's cousin, wider and more tangled

Guanrong Chen & Tetsushi Ueta, “Yet another chaotic attractor”, Int. J. Bifurcation and Chaos 9 (1999)

Sprott B — a point cloud

Sprott B

gen:sprott-b

Sprott's case B — two quadratic terms, and chaos

Julien Clinton Sprott, “Some simple chaotic flows”, Phys. Rev. E 50 (1994) — case B

Nosé–Hoover — a point cloud

Nosé–Hoover

gen:nose-hoover

the Nosé–Hoover oscillator — a thermostatted particle wandering a sea of tori and chaos

Shūichi Nosé (1984) and William Hoover (1985)

Arneodo — a point cloud

Arneodo

gen:arneodo

Arneodo's attractor — a jerk system with one cubic term

Alain Arnéodo, Pierre Coullet & Charles Tresser (1981)

Burke–Shaw — a point cloud

Burke–Shaw

gen:burke-shaw

Burke–Shaw — two scrolls with the symmetry of a propeller

Bill Burke & Robert Shaw (1981)

Chua — a point cloud

Chua

gen:chua

Chua's circuit — the double scroll, from a real circuit with a nonlinear diode

Leon Chua (1983); Matsumoto, Chua & Komuro, IEEE Trans. Circuits and Systems 32 (1985)

Hadley — a point cloud

Hadley

gen:hadley

the Hadley circulation — Lorenz's 1984 atmosphere in three variables

Edward Lorenz, “Irregularity: a fundamental property of the atmosphere”, Tellus 36A (1984)

Rucklidge — a point cloud

Rucklidge

gen:rucklidge

Rucklidge's convection model — a tall, folded ribbon

Alastair Rucklidge, “Chaos in models of double convection”, J. Fluid Mech. 237 (1992)

three-scroll — a point cloud

three-scroll

gen:three-scroll

the three-scroll unified system — three scrolls in one fast flow

The three-scroll unified chaotic system; Dequan Li, Physics Letters A 372 (2008)

Rabinovich–Fabrikant — a point cloud

Rabinovich–Fabrikant

gen:rabinovich

Rabinovich–Fabrikant — leaves and ribbons, from plasma physics

Mikhail Rabinovich & Anatoly Fabrikant, Sov. Phys. JETP 50 (1979)

Aizawa — a point cloud

Aizawa

gen:aizawa

Aizawa's attractor — a rotating sphere with a spindle driven through its poles

Yoji Aizawa & Tatsuo Uezu (1982), as catalogued by Chaoscope

Newton–Leipnik — a point cloud

Newton–Leipnik

gen:newton-leipnik

Newton–Leipnik — a tumbling rigid body, and two attractors in one system

Tim Newton & Roy Leipnik, “Double strange attractors in rigid body motion”, SIAM J. Appl. Math. 41 (1981)

Sakarya — a point cloud

Sakarya

gen:sakarya

the Sakarya system — two lobes crossing at an angle, like a bow tie in wire

The Sakarya system (2010)

Rikitake — a point cloud

Rikitake

gen:rikitake

the Rikitake dynamo — why the Earth's magnetic field reverses, and never on schedule

Tsuneji Rikitake, “Oscillations of a system of disk dynamos”, Math. Proc. Cambridge Phil. Soc. 54 (1958)

Shimizu–Morioka — a point cloud

Shimizu–Morioka

gen:shimizu-morioka

Shimizu–Morioka — the butterfly's simplest relative, two wings and one quadratic term

Tsutomu Shimizu & Nobuo Morioka, Physics Letters A 76 (1980)

finance — a point cloud

finance

gen:finance

the finance system — interest rate, investment demand and price index, refusing to settle

Junhai Ma & Yushu Chen, Applied Mathematics and Mechanics 22 (2001)

Coullet — a point cloud

Coullet

gen:coullet

Coullet's jerk system — one variable's third derivative, with a cubic pull

Pierre Coullet, Charles Tresser & Alain Arnéodo (1979) — a jerk system

Genesio–Tesi — a point cloud

Genesio–Tesi

gen:genesio-tesi

Genesio–Tesi — the other classic jerk system, square rather than cubic

Roberto Genesio & Alberto Tesi, Automatica 28 (1992)

Lorenz-96 — a point cloud

Lorenz-96

gen:lorenz96

Lorenz's toy atmosphere: a ring of variables advecting each other; the test bed every weather forecasting scheme meets first

knobs size how many round the ring (4 to 40, default 5)
forcing how hard it is driven; 8 is the chaotic one (0 to 20, default 8)

Edward Lorenz, “Predictability: a problem partly solved”, ECMWF Seminar on Predictability (1996)

Duffing — a point cloud

Duffing

gen:duffing

a mass in a double well, shaken — drawn on the cylinder of the forcing phase, so once round the tube is one period

knobs drive how hard it is shaken (0 to 2, default 0.5)

Georg Duffing (1918); the chaotic forced case is Ueda’s (1979)

maps

Iterated rather than integrated: a rule applied over and over to a point in a plane, lifted into depth by delay embedding — Takens' theorem says a delayed coordinate unfolds the dynamics rather than merely decorating them.

Clifford — a point cloud

Clifford

gen:clifford

Pickover's Clifford map, lifted into depth by its own previous step

Clifford Pickover, Computers, Pattern, Chaos and Beauty (1990)

de Jong — a point cloud

de Jong

gen:dejong

the Peter de Jong map of 1987, lifted the same way

Peter de Jong, in A. K. Dewdney’s Computer Recreations, Scientific American (1987)

Hénon — a point cloud

Hénon

gen:henon

the Hénon map — the first attractor anyone drew that was plainly a fractal

Michel Hénon, “A two-dimensional mapping with a strange attractor”, Comm. Math. Phys. 50 (1976)

Ikeda — a point cloud

Ikeda

gen:ikeda

the Ikeda map — light in a ring cavity, with a hook in the attractor nothing else here has

Kensuke Ikeda, Optics Communications 30 (1979)

standard map — a point cloud

standard map

gen:standard

Chirikov's standard map on its torus — islands that close, and one orbit that never does

knobs k how hard each turn is kicked; at 0.9716 the last ring across the picture breaks (0 to 4, default 0.971635)

Boris Chirikov, “A universal instability of many-dimensional oscillator systems”, Physics Reports 52 (1979); the last-torus threshold is John Greene’s (1979)

Gumowski–Mira — a point cloud

Gumowski–Mira

gen:gumowski

from a study of particle beams at CERN — moths and mandalas that change completely in the third decimal place

knobs mu the one number; try small changes (-1 to 1, default -0.801)

Igor Gumowski & Christian Mira, CERN (1980)

searched

Nobody chose these. Thirty coefficients are drawn at random and the result is kept only if it is chaotic, which about one draw in a few hundred is. The seed is the whole parameter, so the same seed is the same attractor on every machine.

quadratic — a point cloud

quadratic

gen:quadratic

Sprott's search: random quadratic maps until one is chaotic — a new attractor every roll

knobs seed which search; the same seed is the same attractor on every machine (any whole number, default 1)

Julien Clinton Sprott, Strange Attractors: Creating Patterns in Chaos (1993)

quadratic flow — a point cloud

quadratic flow

gen:quadratic-flow

the same search with an integrator inside: random quadratic flows until one is chaotic — smooth ribbons where the map gives dust

knobs seed which search; the same seed is the same attractor on every machine (any whole number, default 1)

The same search over quadratic flows; Sprott, “Some simple chaotic flows”, Phys. Rev. E 50 (1994)

surfaces

Swept in scan order over two parameters, so the cloud reads as a surface rather than a fog.

supershape — a point cloud

supershape

gen:supershape

Gielis' superformula as a solid — a seven-fold flower

knobs m fold: how many times round the symmetry repeats (1 to 16, default 7)
n1 overall roundness — small pinches, large bloats (0.1 to 10, default 2)
n2 the cosine exponent (0.1 to 20, default 8)
n3 the sine exponent (0.1 to 20, default 4)

Johan Gielis, “A generic geometric transformation that unifies a wide range of natural and abstract shapes”, Am. J. Botany 90 (2003)

harmonic — a point cloud

harmonic

gen:harmonic

a sphere rippled by a spherical harmonic

knobs round waves round the equator (1 to 8, default 3)
up waves pole to pole (1 to 8, default 2)

A sphere modulated by a spherical harmonic; the classical functions of Laplace (1782)

Hopf — a point cloud

Hopf

gen:hopf

the Hopf fibration — nested tori of linked circles, projected from the 3-sphere

Heinz Hopf, “Über die Abbildungen der dreidimensionalen Sphäre auf die Kugelfläche”, Math. Annalen 104 (1931)

orbital — a point cloud

orbital

gen:orbital

a real spherical harmonic as a balloon — the shape a textbook draws for an atomic orbital

knobs l degree: how many nodal lines in all (0 to 8, default 3)
m order: how many of them run through the poles; negative turns the lobes (-8 to 8, default 2)

The real spherical harmonics, as a chemistry textbook draws an atomic orbital

Klein bottle — a point cloud

Klein bottle

gen:klein

the figure-eight immersion — a surface with no inside, and the crossing that three dimensions force on it

knobs girth how fat the tube is against the ring (0.5 to 5, default 2)

Felix Klein (1882); the figure-eight immersion is the standard one

seashell — a point cloud

seashell

gen:seashell

a coiled shell as Raup described every one: a curve swept along a growing helico-spiral, placed by three numbers — how fast it grows, how far from the axis, how fast it slides down it — with growth ridges round the lip

knobs W how much the curve grows in one whorl (1.1 to 100, default 1.6)
D the inner edge's distance from the axis, as a share of the outer's: 0 is a solid column, near 1 an open coil (0 to 0.9, default 0.05)
T how fast it slides down the axis: 0 is a flat ammonite, 3 a tall turret (0 to 6, default 2.6)
whorls turns of the spiral (1 to 16, default 8)
ribs growth ridges per radian of turn (0 to 80, default 22)

David M. Raup, “Geometric analysis of shell coiling” (1966); Deborah Fowler, Hans Meinhardt & Przemysław Prusinkiewicz, “Modeling seashells” (SIGGRAPH 1992)

Boy's surface — a point cloud

Boy's surface

gen:boy

the projective plane immersed without a boundary — three-fold symmetric, and thought impossible until 1901

Werner Boy (1901); this parametrisation is François Apéry’s (1986)

gyroid — a point cloud

gyroid

gen:gyroid

a triply periodic minimal surface — two labyrinths that fill space and never touch; also Schwarz's P and D

knobs kind gyroid, schwarz or diamond (text, default gyroid)
cells how many periods across the box; more is denser and harder to read (1 to 6, default 1.5)
level 0 is the minimal surface; either side of it thickens one labyrinth and thins the other (-1.5 to 1.5, default 0)
thickness how thick to draw the wall (0.01 to 0.4, default 0.07)

Alan Schoen, Infinite Periodic Minimal Surfaces Without Self-Intersections, NASA TN D-5541 (1970); Schwarz’ P and D are from 1865

Dini — a point cloud

Dini

gen:dini

a pseudosphere dragged along a helix — constant negative curvature, everywhere the same

knobs twist how fast the horn climbs (0 to 1, default 0.2)

Ulisse Dini (1870); a pseudosphere dragged along a helix

Enneper — a point cloud

Enneper

gen:enneper

a minimal surface from 1864 that runs through itself twice, which is exactly the interesting part

Alfred Enneper (1864)

curves

Traced along a curve and thickened into a tube, in order, so the crawl runs along the curve.

Lissajous — a point cloud

Lissajous

gen:lissajous

a 3:4:7 Lissajous knot, as a tube

knobs a frequency on x (1 to 9, default 3)
b frequency on y (1 to 9, default 4)
c frequency on z (1 to 12, default 7)

Jules Antoine Lissajous (1857); the knotted case is Bogle, Hearst, Jones & Stoilov (1994)

torus knot — a point cloud

torus knot

gen:torus-knot

a (3,7) torus knot — three times round, seven times through

knobs p times round the axis (1 to 9, default 3)
q times through the hole (1 to 12, default 7)

The classical (p,q) torus knots

Hilbert curve — a point cloud

Hilbert curve

gen:hilbert

one unbroken line through every cell of a cube — the cloud crawls along a curve that fills space

knobs order how many times the curve folds into itself (1 to 5, default 3)

David Hilbert, “Über die stetige Abbildung einer Linie auf ein Flächenstück”, Math. Annalen 38 (1891)

spirograph — a point cloud

spirograph

gen:spirograph

the curve a pen traces through a hole in a wheel rolling inside another, given a slow rise so it coils

knobs R the big wheel (1 to 20, default 5)
r the small wheel; the ratio decides the petals (0.2 to 19, default 3)
pen how far the pen sits from the roller's centre (0.1 to 20, default 5)
wave how many times it climbs and falls (0 to 8, default 1)

The hypotrochoid, and Denys Fisher’s 1965 toy

figure-eight knot — a point cloud

figure-eight knot

gen:figure-eight

the only knot with four crossings, and the simplest one that is its own mirror image

The 4₁ knot, the simplest amphichiral one

fractals

Self-similar at every scale, found by the chaos game, by escape time, or by marching rays inward until they stop escaping.

Sierpinski — a point cloud

Sierpinski

gen:sierpinski

the Sierpinski tetrahedron, by the chaos game

Wacław Sierpiński (1915), by Michael Barnsley’s chaos game

flame — a point cloud

flame

gen:flame

a fractal flame — the chaos game over a few curling maps, each an affine step bent by the paper's variations; which maps a point came through is its depth, so the strands open into layers as it turns

knobs seed which maps and variations; a draw that collapses or hazes over is passed for the next (any whole number, default 4)

Scott Draves & Erik Reckase, “The Fractal Flame Algorithm” (2003)

Buddhabrot — a point cloud

Buddhabrot

gen:buddhabrot

where the Mandelbrot set's escaping points go on their way out — millions of orbits counted, a seated figure in their density; depth is how long each took to escape

knobs low the fewest steps an orbit may take to escape and still count; higher clears the fog (2 to 2000, default 20)
high the most steps an orbit is followed for (50 to 20000, default 2000)

Melinda Green, the Buddhabrot (1993); Lori Gardi’s Nebulabrot

Kleinian — a point cloud

Kleinian

gen:kleinian

a Kleinian limit set — where every orbit of a group of two Möbius maps piles up, a necklace of pearls on the Riemann sphere; both traces at 2 is the Apollonian gasket

knobs ta the trace of a, real part (1.5 to 3, default 1.87)
ta_i the trace of a, imaginary part (-1 to 1, default 0.1)
tb the trace of b, real part (1.5 to 3, default 1.87)
tb_i the trace of b, imaginary part (-1 to 1, default -0.1)

David Mumford, Caroline Series & David Wright, “Indra’s Pearls: The Vision of Felix Klein” (2002), Grandma’s recipe

Menger — a point cloud

Menger

gen:menger

the Menger sponge, by the chaos game

Karl Menger (1926)

Mandelbulb — a point cloud

Mandelbulb

gen:mandelbulb

the power-eight Mandelbulb's surface, found by marching rays inward

Daniel White and Paul Nylander (2009)

twisted gasket — a point cloud

twisted gasket

gen:kifs

the Sierpinski tetrahedron with a turn folded into every step — shells, spirals and lattices, one number wide

knobs angle degrees of turn per step; 0 is the plain gasket (-180 to 180, default 24)
tilt degrees of turn about the other axis (-180 to 180, default 0)

The Sierpiński chaos game with a rotation in the loop — the kaleidoscopic IFS of the fractal-rendering community

Mandelbox — a point cloud

Mandelbox

gen:mandelbox

fold, invert, scale, add — where the Mandelbulb is organic, this is architecture

knobs scale the multiplier in the iteration; negative values turn it inside out (-4 to 4, default 2)

Tom Lowe (2010)

quaternion Julia — a point cloud

quaternion Julia

gen:quaternion

z ← z² + c in four dimensions, sliced back into three

knobs cr the real part of c (-2 to 2, default -0.2)
ci the first imaginary part (-2 to 2, default 0.6)
cj the second imaginary part (-2 to 2, default 0.2)

Alan Norton, “Generation and display of geometric fractals in 3-D”, SIGGRAPH 1982

Newton — a point cloud

Newton

gen:newton

Newton's method for zⁿ = 1 as a relief — basins whose boundary touches every basin at once

knobs power how many roots to chase (2 to 8, default 3)

Arthur Cayley asked the question in 1879 and could not answer it for the cubic

Lyapunov — a point cloud

Lyapunov

gen:lyapunov

the Markus–Hess fractal — where the logistic map settles into a cycle, drawn as towers over the chaotic sea

knobs sequence which rate, in turn: AB is the published one, AABAB is another city (text, default AB)

Mario Markus & Benno Hess, “Lyapunov exponents of the logistic map with periodic forcing”, Computers & Graphics 13 (1989)

Mandelbrot — a point cloud

Mandelbrot

gen:mandelbrot

the Mandelbrot set as a relief — the set a plateau, the escape time the country round it

Benoit Mandelbrot (1980); the smooth escape count is Douady and Hubbard’s

Julia — a point cloud

Julia

gen:julia

a Julia set as a relief, c = −0.8 + 0.156i

knobs cr the real part of c (-2 to 2, default -0.8)
ci the imaginary part of c (-2 to 2, default 0.156)

Gaston Julia (1918) and Pierre Fatou

grown

Built step by step by a rule, rather than evaluated: rewriting an alphabet, or letting particles wander in and stick.

plant — a point cloud

plant

gen:plant

a plant grown by an L-system — five generations of branching, thick wood to thin twigs

knobs rule the production for X — F draws, + − & ^ \ / turn, [ ] branch, X grows again (text, default F[+&X][-^X]/F[\X]X)
angle degrees per turn (5 to 60, default 25)

Aristid Lindenmayer (1968); Przemysław Prusinkiewicz & Lindenmayer, The Algorithmic Beauty of Plants (1990)

fern — a point cloud

fern

gen:fern

a fern by Lindenmayer's rewriting — fronds off a curling spine, rolling as they go

knobs angle degrees per turn (5 to 60, default 22)

The same rewriting, in the fern’s own rule

coral — a point cloud

coral

gen:coral

a three-way branching coral — every tip splits into three, a third of a turn apart

knobs angle degrees per turn (5 to 60, default 30)

The same rewriting, branching three ways a third of a turn apart

colonised tree — a point cloud

colonised tree

gen:colonise

a tree that finds its own shape — a crown of points pulls on the nearest branch tips, each tip grows towards what pulls it, and a point is used up once a branch reaches it; the trunk thickens by the pipe rule

knobs seed where the crown's points fall (any whole number, default 1)
density how full the crown is: more points, more and finer branches (0.2 to 3, default 1)

Adam Runions, Brendan Lane & Przemysław Prusinkiewicz, “Modeling Trees with a Space Colonization Algorithm” (2007)

tree — a point cloud

tree

gen:tree

a tree with a trunk — long wood below, short twigs above, branches off three sides

knobs angle degrees per turn (5 to 60, default 20)

The same rewriting, with a trunk that keeps going

aggregate — a point cloud

aggregate

gen:dla

diffusion-limited aggregation — particles that wander in and stick where they touch; soot, lightning and copper all do this

knobs seed which walk; the same seed is the same dendrite (any whole number, default 1)

Thomas Witten & Leonard Sander, “Diffusion-limited aggregation, a kinetic critical phenomenon”, Phys. Rev. Lett. 47 (1981)

patterns

Sampled where a pattern is, rather than swept: a point is kept if the field says so.

Chladni — a point cloud

Chladni

gen:chladni

sand on a vibrating plate — points settle where the plate stands still

knobs n the first mode number (1 to 9, default 5)
m the second; equal numbers make no pattern (1 to 9, default 2)

Ernst Chladni, Entdeckungen über die Theorie des Klanges (1787)

hyperbolic — a point cloud

hyperbolic

gen:hyperbolic

a regular tiling of the hyperbolic plane, p-gons q to a corner, as in Escher's Circle Limit prints — the Poincaré disc lifted onto the dome above it, so every edge is a half-circle

knobs p sides to a tile (3 to 12, default 7)
q tiles to a corner; (p − 2)(q − 2) must pass 4 (3 to 12, default 3)

H. S. M. Coxeter, “Crystal symmetry and its generalizations” (1957), after which Escher drew Circle Limit I; Douglas Dunham, “Hyperbolic symmetry” (1986)

foam — a point cloud

foam

gen:voronoi

Voronoi foam — the walls between cells scattered in a box, meeting three at an edge as soap films do

knobs cells how many centres to scatter (4 to 64, default 24)
seed where they land (any whole number, default 1)

Georgy Voronoy (1908); the walls are the set of points equidistant from the two nearest centres

quasicrystal — a point cloud

quasicrystal

gen:quasicrystal

six plane waves on the five-fold axes of an icosahedron — a pattern that never repeats and is nowhere random

knobs cells how fine the pattern is (1 to 8, default 3)

Dan Shechtman et al., Phys. Rev. Lett. 53 (1984); Nobel Prize in Chemistry, 2011

phyllotaxis — a point cloud

phyllotaxis

gen:phyllotaxis

the sunflower's own packing — one floret every 137.5°, the only angle that never lines up

knobs angle degrees between florets; a tenth off the golden angle and the spiral arms appear (1 to 359, default 137.50776)
rise how far the head domes (0 to 3, default 0.6)

The golden angle; Helmut Vogel’s sunflower model (1979)

22 that are alive

These are not made once. Each runs on a thread of its own at the frame rate and streams into the live slot, driven by whatever the audio input is doing: the four bands, the loudness, and where the bar is. That is the whole interface they get — deliberately, because the point is a cloud that happens to be alive rather than a second engine with its own controls.

The plates below are each one caught a couple of seconds in, with no audio playing. The ones that are about growing were given longer.

curves

Drawn as one path, in order, so the crawl runs along it and the lines stroke draws it as wire.

scope — a point cloud

scope

sim:scope

an oscilloscope in XY mode — left across, right up, the last second of the signal trailing back into the screen; a tone is a loop, two tones a Lissajous figure, oscilloscope music a picture; a mono input is drawn against itself a moment earlier

The XY mode of the cathode-ray oscilloscope; Jerobeam Fenderson, “Oscilloscope Music” (2016)

polytope — a point cloud

polytope

sim:polytope

a regular solid of four dimensions, turning through the fourth and seen in ours — its cells swell towards you, pass through each other and shrink away, so it turns itself inside out; drawn as one unbroken walk along every edge, so lines draw the wireframe; the loudness turns it and the kick throws it

knobs kind 5-cell, tesseract, 16-cell, 24-cell, 600-cell or 120-cell (text, default tesseract)

H. S. M. Coxeter, “Regular Polytopes” (1948); Thomas Banchoff’s turning hypercube films (1978); the walk is Hierholzer’s Eulerian circuit (1873)

grown

Built step by step by a rule, rather than evaluated: rewriting an alphabet, or letting particles wander in and stick.

crystal — a point cloud

crystal

sim:crystal

Reiter's snow crystal on a hexagonal lattice — plates, sectored plates and stellar dendrites, sorted by the vapour the mids and highs set; each flake grows out and the next one starts

Clifford A. Reiter, “A local cellular model for snow crystal growth”, Chaos, Solitons & Fractals 23 (2005); the morphologies are Ukichiro Nakaya’s (1954)

growth — a point cloud

growth

sim:growth

differential growth — one closed thread that grows faster than it has room for and buckles into a coral meander to fit, never crossing itself; the loudness is the growth rate, the kick buds a lobe, and when it is grown it starts again

Anders Hoff, “Differential Line” (inconvergent, 2016); Andy Lomas, “Cellular Forms” (2014); Nervous System’s Floraform (2014)

fields

A grid of numbers stepped forward sixty times a second. The cloud is what rides it.

fluid — a point cloud

fluid

sim:fluid

Stam's stable fluids — the Navier–Stokes equations on an endless sheet; the loudness stirs it, the kick bursts it, the snare spins it, the highs roughen it

Jos Stam, “Stable Fluids”, SIGGRAPH 1999, and “Real-Time Fluid Dynamics for Games”, GDC 2003; vorticity confinement from Fedkiw, Stam & Jensen, SIGGRAPH 2001

reaction — a point cloud

reaction

sim:reaction

Gray–Scott reaction–diffusion — spots that grow, split and heal; the kick plants new ones

The Gray–Scott system in John Pearson’s parameterisation, Science 261 (1993); the mitosis constants are Karl Sims’

wind — a point cloud

wind

sim:wind

curl noise — tracers in a divergence-free noise field, a fluid with no solve; the kick is a gust, the highs roughen it

Robert Bridson, Jim Hourihan & Marcus Nordenstam, “Curl-Noise for Procedural Fluid Flow”, SIGGRAPH 2007

sandpile — a point cloud

sandpile

sim:sand

grains dropped and toppled — the model that named self-organised criticality, and a fractal nobody designed; the kick drops a load somewhere else

Per Bak, Chao Tang & Kurt Wiesenfeld, “Self-organized criticality”, Phys. Rev. Lett. 59 (1987); Deepak Dhar on the Abelian property (1990)

spirals — a point cloud

spirals

sim:spiral

the Belousov–Zhabotinsky reaction — rotating waves that annihilate where they meet, the same dynamics as a heartbeat; the kick seeds fresh defects

Boris Belousov (1951) and Anatol Zhabotinsky (1964); the cellular form is Alasdair Turner’s

smoke — a point cloud

smoke

sim:smoke

the same solver in three dimensions, with heat — a plume that rises, shears and rolls up; the kick is a blast, the snare a shove, the highs the roughness

The same solver in three dimensions; buoyancy after Fedkiw, Stam & Jensen, “Visual Simulation of Smoke”, SIGGRAPH 2001

cyclic — a point cloud

cyclic

sim:cyclic

states in a ring, each waiting to be eaten by the next: noise organises itself into scroll waves that turn for ever, because a spiral's own wave comes back round to feed it

Robert Fisch, Janko Gravner & David Griffeath, “Cyclic cellular automata in two dimensions” (1991); David Griffeath on the spirals’ four snapshots (1994)

life — a point cloud

life

sim:life

a three-dimensional cellular automaton in the Pyroclastic rule — a lattice that boils, endlessly; the kick drops a seed

knobs rule survive / born / states, as neighbour counts: 4-7/6-8/10 is Pyroclastic and boils; 2,6,9/4,6,8-9/10 builds; 4/4/5 is Bays' 4-4-5, a spiking crystal; 13-26/13-14,17-19 is Clouds, which grows lovely masses and then stops, so it is started again (text, default 4-7/6-8/10)

Carter Bays, “Candidates for the Game of Life in Three Dimensions”, Complex Systems 1 (1987); the multi-state rules as catalogued by Softology

many bodies

Many things, each with a position of its own, and rules about how they see each other.

flock — a point cloud

flock

sim:flock

Reynolds' boids — four thousand of them drawing streaks; the loudness is their pace, the kick a predator, the snare a scatter

Craig Reynolds, “Flocks, Herds and Schools: A Distributed Behavioral Model”, SIGGRAPH 1987

slime — a point cloud

slime

sim:slime

Physarum: sixty-five thousand agents that leave a trail and follow the strongest one they can see — a transport network out of three rules and no plan; the kick starts a new front

Jeff Jones, “Characteristics of pattern formation and evolution in approximations of Physarum transport networks”, Artificial Life 16 (2010); Tero et al., Science 327 (2010)

swarmalators — a point cloud

swarmalators

sim:swarm

particles that swarm and synchronise at once, each depending on the other — five states from two numbers; the loudness and the mids move between them

Kevin O’Keeffe, Hyunsuk Hong & Steven Strogatz, “Oscillators that sync and swarm”, Nature Communications 8 (2017)

cloth — a point cloud

cloth

sim:cloth

a sheet of sixty-five thousand particles hung from its top edge in an Arnold–Beltrami–Childress wind; the kick is a gust

Xavier Provot, “Deformation constraints in a mass-spring model”, Graphics Interface 1995; Thomas Jakobsen, “Advanced Character Physics”, GDC 2001

kuramoto — a point cloud

kuramoto

sim:kuramoto

Kuramoto's coupled oscillators on a torus — a loud passage locks them into a ribbon, quiet frees them; the kick scatters half

Yoshiki Kuramoto (1975); Steven Strogatz, “From Kuramoto to Crawford”, Physica D 143 (2000)

liquid — a point cloud

liquid

sim:liquid

four thousand particles of water in a tilting box — gravity swings round once a bar, so it pours corner to corner; the kick throws it at the ceiling

Miles Macklin & Matthias Müller, “Position Based Fluids”, SIGGRAPH 2013; kernels from Müller, Charypar & Gross, SCA 2003

orbits — a point cloud

orbits

sim:orbits

five hundred bodies pulling on each other round a heavy centre — the loudness is the clock, the kick a shockwave, the snare knocks the disc out of its plane

Direct-summation gravity, with Plummer softening (1911)

pendulum — a point cloud

pendulum

sim:pendulum

four thousand double pendulums hung in a sheet from neighbouring angles — it swings as one surface, creases, then tears; the loudness is gravity and the kick hangs it again

The double pendulum, the standard demonstration that four numbers can be unpredictable

tangle — a point cloud

tangle

sim:tangle

one long elastic rod loose in a wind, tying itself in knots — it cannot stretch and it cannot pass through itself, which is the difference between a tangle and a scribble

Thomas Jakobsen, “Advanced Character Physics”, GDC (2001); Miklós Bergou et al., “Discrete Elastic Rods”, SIGGRAPH (2008)

vortex — a point cloud

vortex

sim:vortex

the thin cores smoke rings are made of, moving each other by Biot–Savart — rings that catch the one in front and thread through it; the loudness is their circulation and the kick throws a new one in

Hermann von Helmholtz on vortex motion (1858); Louis Rosenhead’s desingularised kernel (1930); Anthony Leonard, “Vortex methods for flow simulation” (1980)

The rest of the picture

The clouds are the part of vizz with the longest bibliography, but they are not the only part of it that came from somewhere. What follows is the same treatment for everything else a frame is made of — the shapes the shader draws without a slot, the pattern stack, the colour, the light, the listening and the passes at the end.

A source here is the idea, not the implementation: all of it is written out in this repository rather than pulled in as a library, so where a paper and the code disagree the entry says how. Where there is nothing outside vizz to cite, the line says so (dashed) rather than leaving a blank that reads like a missing citation.

shapes

A filled slot is not the only way vizz gets a form on screen. These are what /shape/mode sweeps through, and most of them never touch memory at all: the particle's index is hashed into four numbers and the shape is a function of those four, evaluated in the vertex stage. That is why the sweep can morph one into the next — a particle keeps its hashes, so the same point travels between forms rather than the field being scattered again.

Solid sphere and hollow shell

Both are sampled uniformly by volume rather than by angle, which is the difference between a sphere and a sphere with a bright clot at each pole. Height is drawn uniformly from −1 to 1 and the ring radius follows from it; for the solid sphere the radius is scaled by the cube root of a uniform draw, and for the shell it stays near the surface.

Source: the uniform-height trick is Archimedes' hat-box theorem — equal slices of a sphere carry equal area — in the form usually written up as sphere point picking.

Trefoil knot

The simplest non-trivial knot, drawn as a core curve and thickened into a tube by scattering particles around it. vizz uses the standard (2, 3) torus-knot parametrisation. The catalogue above has a knot of its own with p and q to turn; this one is fixed, because it is a stop on a sweep rather than a cloud you configure.

Source: classical knot theory; the parametrisation is the standard one, as given on MathWorld.

Lorenz and Aizawa

The two attractors that predate the catalogue. Unlike the rest of the sweep these are not evaluated per vertex: both are integrated once on the CPU at startup — Lorenz with σ 10, ρ 28, β 8/3, the classic values — the first 20,000 steps discarded as transient, and the next 65,536 stored in trajectory order in the first two cloud slots. Consecutive points are consecutive moments, so advancing every particle's index makes the cloud crawl along the attractor rather than shimmer in place. Aizawa is there as a contrast partner: rounder, shell-like, with a spike through the poles, so the morph between the two has somewhere to go. Both appear in the catalogue above as well, where they can be asked for by name into any slot.

Source: Edward N. Lorenz, “Deterministic Nonperiodic Flow”, Journal of the Atmospheric Sciences 20(2), 1963. Aizawa is named for Yoji Aizawa, whose work on chaotic flows it comes out of; unlike Lorenz it has no single canonical paper behind it, and the parameter set vizz uses is the one that circulates in graphics, stated the same way in Analog Paradigm's write-up.

Torus, grid plane, cloud pair

A torus from its two angles, a grid plane with a travelling ripple, and the cloud pair — which is not a shape at all but a blend between any two loaded slots: a scan, an attractor, a word, a live video frame. The sweep only reaches adjacent modes, so crossing a scan into an attractor needs a control of its own, which is what /cloud/morph is.

Source: plain parametric forms with nothing behind them worth citing.

Wind

A displacement laid over whatever shape is showing, so a still form leans and breathes without becoming a simulation. Two octaves of one field, each drifting at its own pace so the wind never settles into a pattern the eye can lock onto. It runs per vertex, on every form including a loaded scan, because the field it uses is six trigonometric terms — a curl of noise would not fit there.

Source: the Arnold–Beltrami–Childress flow with A = B = C = 1: a steady solution of the Euler equations, divergence-free by construction, and chaotic in its streamlines — the standard example of a simple field that mixes.

layers

The print-look counterpart to the particle field, and the other half of what vizz puts on a screen.

The stack

Eight procedural pattern layers — rings, stripes, checker, polygon, star, rays, dots — in flat ink colours on coloured paper, each with its own similarity transform, drawn in a single fullscreen pass and composited in-register.

Source: 555-5555's visuals for Caribou's live shows, which is the look this was built to reach. Not an algorithm and not a paper — an idiom, borrowed knowingly. The generators themselves are ordinary procedural patterns.

Moiré

The reason the stack has eight layers and not one. Two periodic patterns at close frequencies interfere into a third, much coarser pattern that neither layer contains, and it moves far faster than either layer does when you drift one of them. The built-in show is largely made of this.

Source: Isaac Amidror, The Theory of the Moiré Phenomenon, Volume I: Periodic Layers, Springer.

Blend modes

Multiply, screen, add, difference, exclusion and subtract, the vocabulary the look is built in.

Source: the separable blend modes of W3C Compositing and Blending Level 1. vizz departs from the spec in one deliberate way: it blends on sRGB-encoded values rather than linear ones, because compositing on encoded values is the print-era behaviour this aesthetic grew out of. The single conversion to linear happens on the way out of the shader.

Analytic antialiasing

Hard-edged patterns alias badly, and the usual fix — fwidth — lies at exactly the discontinuities these patterns are made of. Instead each layer carries one scalar for how many pattern units a pixel spans, propagated by the chain rule through the layer transform, and each generator turns a signed distance into coverage over that footprint. Past Nyquist the coverage converges to flat duty-cycle tone, so the moiré survives where the sparkle does not.

Source: the technique Iñigo Quilez describes in “filtering procedural textures”. The per-generator gradient magnitudes are worked out for these generators specifically.

colour

What comes out of the shader, and what stops it turning to white.

Cosine palettes

The four built-in gradients are colour = a + b·cos(τ(c·t + d)), four coefficients each. They are baked into a lookup texture on the CPU rather than evaluated in the shader, so a palette you load from a list of colour stops sits in the same bank and is indistinguishable from a built-in as far as the renderer is concerned.

Source: Iñigo Quilez, “palettes”.

HSV

Palette 0 stays procedural rather than baked, so /particles/hue keeps meaning a rotation through hue rather than an offset into a ramp.

Source: Alvy Ray Smith, “Color Gamut Transform Pairs”, SIGGRAPH 1978 — the paper HSV comes from.

The tone shoulder

Glow and trails push values well past 1, and a hard clip turns highlights into flat white blobs. The composite pass ends with c / (1 + 0.15c), which rolls the top off and leaves midtones essentially untouched. It is the default finish; the graded one below replaces it when asked.

Source: the c/(1+c) curve from Reinhard, Stark, Shirley and Ferwerda, “Photographic Tone Reproduction for Digital Images”, SIGGRAPH 2002. The 0.15 is tuned for this picture, not from the paper.

sRGB

The transfer function the vector stack encodes and decodes with, and the one the output textures are in.

Source: IEC 61966-2-1.

light

A cloud of dots has no surface, which makes lighting one a question rather than a setting.

Estimated normals

Most scanners export points with no surface direction, and the sun cannot light a surface it cannot orient. vizz reads normals from a PLY that carries them and works them out from each point's twelve nearest neighbours when it does not: fit a plane through the neighbourhood, and the plane's normal is the surface's — the eigenvector of the neighbourhood's covariance with the smallest eigenvalue.

Source: Hoppe, DeRose, Duchamp, McDonald and Stuetzle, “Surface Reconstruction from Unorganized Points”, SIGGRAPH 1992, where the local plane fit is step one. vizz stops there: the paper goes on to propagate a consistent orientation across the cloud, and vizz instead flips each normal towards the eye, which is a better answer for a scan of a room seen from inside it.

Lamps and the sun

Two movable lamps that fall off with distance and work on anything with a position, and a directional sun that lights surfaces — the wall facing it comes up, the wall facing away goes down. A cloud with no normals is left alone by the sun rather than lit from a direction nobody measured.

Source: Lambert's cosine law (Johann Heinrich Lambert, Photometria, 1760) for the directional term. The distance falloff is a smooth r²/(d²+r²) rather than inverse-square, so there is no singularity to divide by on stage.

PLY

The format a scan arrives in, ASCII or binary little-endian, and also the wire format for live point-cloud streaming — there is no wrapper protocol, because a PLY header already states its own frame length. The simulations above reach the renderer down the same pipe.

Source: the Stanford polygon format, Greg Turk, Stanford University.

Depth of field

Done by resizing the sprite rather than blurring the frame: a defocused point light is a larger, dimmer disc, so the particle's billboard grows with its distance from the focus plane and dims by the square of that growth. Closer to the real thing than a post-process blur, and it costs nothing.

Source: vizz, on the ordinary optics of the circle of confusion.

randomness

Where every particle that is not read out of a slot comes from.

The particle hash

Every particle is derived from its index and nothing else — no state carried between frames, which is what makes the count free to change mid-set and the whole field scrubbable. Four independent random streams per particle come out of one integer mixer. It replaced a float hash whose repeats at high counts stacked particles on each other and pushed them into the tone-map shoulder; an integer mixer has no such cliff, and is stable across GPUs in a way anything built on sin() is not.

Source: the lowbias32 constants from Chris Wellons' hash prospector, described in “Prospecting for Hash Functions”.

audio

The four bands, the loudness and the bar — the whole of what the simulations above are driven by, and most of what the rest of the app listens to.

Window and spectrum

A 2048-point FFT at 48 kHz — a 43 ms window, 23 Hz a bin — through a periodic Hann window, with the band magnitudes corrected for the window's power loss so that a band meter and a gain control mean something absolute rather than something relative to the window.

Source: the transform itself is the rustfft crate; the window and its correction factor are from Fredric J. Harris, “On the Use of Windows for Harmonic Analysis with the Discrete Fourier Transform”, Proceedings of the IEEE 66(1), 1978, and Parseval's theorem for the normalisation.

Onset detection

Positive spectral flux: how much energy appeared since the last frame, summing only the bins that went up. Summing the drops as well would make a note ending look like a note starting.

Source: the half-wave-rectified spectral flux detector, surveyed and compared in Simon Dixon, “Onset Detection Revisited”, DAFx-06.

Tempo

Autocorrelation of the onset signal: if the music has a pulse, the onset signal correlates with itself at the beat period, and peak-picking the correlation gives a BPM without anything ever having to decide what a beat is. The characteristic failure is the octave error — 180 for a 90 BPM track — because a signal that correlates at one period also correlates at its multiples. Two guards: a prior preferring the middle of the range, and a check for whether half the candidate explains the signal comparably well. A confidence figure comes out alongside, so ambient material with no pulse reports low confidence rather than a confident wrong answer.

Source: autocorrelation of an onset-strength envelope, as set out in Daniel P. W. Ellis, “Beat Tracking by Dynamic Programming”, Journal of New Music Research 36(1), 2007. vizz uses the tempo-estimation half and not the dynamic-programming beat tracker — a VJ needs the rate, and the phase comes from the pads.

frame

Everything that happens to the picture after the clouds are in it.

Feedback trails

The pass that makes the output look like VJ material. Last frame's result is zoomed and rotated a little and mixed back in with the new one, so motion smears into trails and a sustained zoom builds a tunnel out of whatever is on screen. A lerp rather than an accumulation, because adding the history outright is a geometric series that saturates to white within a second.

Source: analogue video feedback, which is where this whole idiom comes from — Steina and Woody Vasulka's work and the Sandin Image Processor (Dan Sandin, 1971–73). The implementation is an ordinary ping-pong of two Rgba16Float textures.

Kaleidoscope and lens

Mirror, quad mirror and a six-wedge kaleidoscope, all done as a fold of UV space before sampling; a radial RGB split that leaves green alone, so the frame fringes towards the edges the way a lens does instead of shifting hue; and a cheap six-tap bloom.

Source: vizz. Standard screen-space constructions with no particular paper behind them.

Drawing at twice the size

Up to 1080p the frame is drawn at twice the output's width and height and filtered down, which is the one thing that reliably cleans up a field of one-pixel sprites: against a 4× reference it takes out about half the error and more than half the frame-to-frame shimmer. Two things had to change for that to be safe. The room's lines were one-pixel hardware lines, so drawn at 2× they lost half their light; they are now quads one output pixel wide whose edge coverage is the exact overlap of a pixel with the line, so the room is equally bright at any scale and anti-aliased at 1× as well. And a sprite smaller than about a pixel and a half is widened to that size and dimmed by the area it gained, so it is low-passed instead of landing on a pixel centre or missing it.

Source: the line coverage is the box-filter case of Satish Gupta and Robert Sproull, “Filtering Edges for Gray-Scale Displays”, SIGGRAPH 1981. The sprite floor is the screen-space filter of Zehao Yu, Anpei Chen, Binbin Huang, Torsten Sattler and Andreas Geiger, “Mip-Splatting: Alias-free 3D Gaussian Splatting”, CVPR 2024, applied to a disc instead of a Gaussian.

The graded finish

An alternative to the shoulder, faded in with /fx/grade. Three things change together. The exposure is metered: a histogram of log luminance over the lit pixels every frame, with the exposure eased towards putting the brightest one percent on the curve's shoulder. In the app the meter only ever darkens, so a look that clips is pulled back while a fade still reaches black. The glow becomes a mip chain: the frame halved six times and summed back up, so it falls off from a sharp core to a wide haze instead of showing its taps. And the curve is AgX, which compresses highlights over about sixteen stops in log space and desaturates as it goes, so a dense core of coloured sprites reads as a hot centre fading into its colour rather than a flat disc of clipped primary. The background is taken out before grading and put back after, so a colour chosen to match a room stays that colour. Every plate on this page is drawn through it, metered per plate.

Source: the curve is Troy Sobotka's AgX, in the polynomial fit from Benjamin Wrensch's “Minimal AgX Implementation” (2023). The bloom filters are from Jorge Jimenez, “Next Generation Post Processing in Call of Duty: Advanced Warfare”, SIGGRAPH 2014: a thirteen-tap downsample, Karis-averaged on the first step, and a tent on the way up. Metering from a percentile of a log-luminance histogram is how game engines' auto-exposure works, Unreal's among them.

Gaussian splats

/particles/splat draws every particle as a soft, oriented ellipse of colour, blended over the frame from the farthest to the nearest, so the near ones cover the far ones instead of adding up to light. A cloud loaded from a 3D Gaussian Splatting capture keeps each splat's own size, turn, opacity and colour, so the capture renders as the photographs it was trained from and still turns and morphs like any cloud; anything else is drawn as round splats of the particle size. Each frame a compute pass evaluates every particle with the dots' own functions and carries its ellipsoid to the screen through the projection's Jacobian, a bitonic sort orders them by depth, and a draw lays a quad over each with premultiplied “over” blending. Only the colour's first spherical-harmonic band is read, so a capture's colours do not shift with the view.

Source: Bernhard Kerbl, Georgios Kopanas, Thomas Leimkühler and George Drettakis, “3D Gaussian Splatting for Real-Time Radiance Field Rendering”, SIGGRAPH 2023, for the format and the method; the projection is the EWA splatting of Matthias Zwicker, Hanspeter Pfister, Jeroen van Baar and Markus Gross, “EWA Volume Splatting”, IEEE Visualization 2001; the sort is Kenneth Batcher's bitonic network, “Sorting networks and their applications”, AFIPS 1968.

Haze and light beams

/light/haze fills the space in front of the camera with a lit medium, like stage haze, and /light/smoke lets the particles thicken it, so a cloud becomes smoke that the lamps and the sun cut through. The space is cut into froxels, a grid that is a coarse pixel grid across and slices of distance deep; each frame every particle is shared among the eight froxels round it, each froxel is lit by both lamps and the sun with each light dimmed by the smoke between them, and the light is gathered front to back along each column. Light coming through the gaps in a lattice, a tree or an open attractor makes beams, and the smoke's own shadow makes shafts. /light/scatter is the Henyey-Greenstein anisotropy, how much brighter the haze is looking towards a lamp than across it.

Source: Bartłomiej Wroński, “Volumetric Fog and Lighting”, SIGGRAPH 2014 Advances in Real-Time Rendering, for the froxel volume; Sébastien Hillaire, “Physically Based and Unified Volumetric Rendering in Frostbite”, SIGGRAPH 2015, for the integration; single scattering as Nelson Max sets it out in “Optical Models for Direct Volume Rendering”, IEEE TVCG 1995; the phase function of Louis Henyey and Jesse Greenstein, “Diffuse radiation in the galaxy”, Astrophysical Journal 1941.

Solid surfaces

With /particles/surface up, a particle stops being light and becomes a small opaque disc, so the cloud is an object: nearer discs hide farther ones, a lamp lights the side of the form that faces it, and the sun casts a shadow onto the cloud itself and onto the room, which is drawn as walls, floor and ceiling instead of lines. Each particle is evaluated once by a compute pass with the same functions the glowing mode uses, so switching never moves anything. The lighting is deferred: the discs write colour and depth, and one pass lights every pixel, reading which way the surface faces from the depth a few discs away on each side. That is what lets a procedural sphere with no normals at all shade as a sphere rather than a heap of beads.

Source: the discs are surfels, after Hanspeter Pfister, Matthias Zwicker, Jeroen van Baar and Markus Gross, “Surfels: Surface Elements as Rendering Primitives”, SIGGRAPH 2000. The shadow is a shadow map, Lance Williams, “Casting Curved Shadows on Curved Surfaces”, SIGGRAPH 1978, read with the percentage-closer filtering of William Reeves, David Salesin and Robert Cook, “Rendering Antialiased Shadows with Depth Maps”, SIGGRAPH 1987. Normals from the depth buffer are standard deferred-rendering practice; the span that follows the surfel size is vizz's.

Lines and streaks

With /particles/stroke a glowing particle can be drawn as more than a dot. A line draws each particle back along its own path at the present moment: a cloud keeps its trajectory in time order, so on a flow or a curve thousands of short strokes join up into the path itself, and the Lorenz butterfly becomes wire instead of dust. A streak draws each particle back through time instead, fading towards where it was, which is motion blur, and it shortens to a dot when nothing moves. Both are ribbons of four segments turned to face the eye, spending four quads of the particle budget, so the cost of a frame does not change; and each carries its particle's light spread along it, so a long stroke is fainter rather than brighter.

Source: lines after Malte Zöckler, Detlev Stalling and Hans-Christian Hege, “Interactive Visualization of 3D-Vector Fields Using Illuminated Stream Lines”, IEEE Visualization 1996. Streaks after William Reeves, “Particle Systems — a Technique for Modeling a Class of Fuzzy Objects”, SIGGRAPH 1983, which drew each particle as a motion-blurred streak.

Plexus

/particles/plexus draws lines between the particles that come near each other: the network, or the constellation, over any cloud and in either draw mode. Up to 2048 of the particles, spread evenly over the whole field, are the nodes. Each frame a compute pass places them with the dots' own shader functions, and a second finds each one's four nearest within /particles/plexus_reach by testing every other node — a few million distance tests, which needs no grid. A thin additive line runs along each link in the colours of its two ends, fading to nothing as the pair drifts out of reach, so links come and go softly instead of snapping. A pair that lists each other is drawn once.

Source: the motion-graphics “plexus” look, after Rowbyte's Plexus plug-in for After Effects (2010), whose name it has become; the geometry is a k-nearest-neighbour graph cut at a radius.

Glyphs

In the surface mode, /particles/glyph makes each particle a small solid instead of a disc: a tetrahedron, a cube, an octahedron, a long shard or a mix. Each is turned to the way its particle travels, found by evaluating the particle a twentieth of a second of visual time earlier, rolls slowly about that axis, and is lit by its own exact face normals, so the facets catch the light as facets. The glyphs cast their own shapes into the shadow map. A disc says the cloud is a surface sampled by points; a glyph says it is a field of things.

Source: Rita Borgo, Johannes Kehrer, David H. S. Chung, Eamonn Maguire, Robert S. Laramee, Helwig Hauser, Matthew Ward and Min Chen, “Glyph-based Visualization: Foundations, Design Guidelines, Techniques and Applications”, Eurographics State of the Art Reports, 2013.

Fractal solids

In the surface mode, /particles/solid draws a fractal as a lit, opaque solid where the cloud sits: the Mandelbulb, the Mandelbox, a quaternion Julia set or the Menger sponge. None of them is made of particles. Each pixel marches a ray from the camera, stepping each time by the fractal's distance estimate — a bound on how far the nearest surface can be — until it is within a pixel of the surface, and writes its colour, its exact normal and its depth into the same buffers the cloud fills, so the two hide each other properly and are lit by the same lamps. A ray that needed many steps to get in found a crevice, and is darkened for it. /particles/solid_detail is the one knob: the bulb's power, the box's scale, the turn of the Julia constant, the sponge's depth.

Source: sphere tracing is John C. Hart, “Sphere tracing: a geometric method for the antialiased ray tracing of implicit surfaces”, The Visual Computer 12, 1996; the quaternion Julia estimate is Hart, Sandin and Kauffman, “Ray tracing deterministic 3-D fractals”, SIGGRAPH 1989. The Mandelbulb is Daniel White and Paul Nylander's, 2009; the Mandelbox is Tom Lowe's, 2010; the sponge is Karl Menger's, 1926, with the distance function and the tetrahedral normal from Íñigo Quílez.

Ink

In the surface mode, /particles/ink draws the lit surface as a pen drawing. Outlines go where the depth breaks: at a silhouette, at a fold or an overlap where the depth's second difference jumps, and, on surfaces whose normals are exact (glyphs, solids, walls), where the normal turns. Hatching then lays the tone down on paper as up to three layers of crossed lines, each coming in where the surface took less light than the last; stipple lays it down as dots on a jittered grid, more and larger in the dark. The tone is the light that fell on the surface as a share of all the light in the rig, not the brightness of its colour, so a dark palette is not drawn as a dark form. The marks are fixed to the screen and the outlines move with the form. /particles/ink_weight is how heavy the pen is.

Source: edges from the depth buffer are Takafumi Saito and Tokiichiro Takahashi, “Comprehensible Rendering of 3-D Shapes”, SIGGRAPH 1990; hatching by tone after Emil Praun, Hugues Hoppe, Matthew Webb and Adam Finkelstein, “Real-Time Hatching”, SIGGRAPH 2001, reduced to three screen-space layers; stipple after Adrian Secord, “Weighted Voronoi Stippling”, NPAR 2002, on a jittered grid without the relaxation.

Liquid

In the surface mode, /particles/liquid melts the discs into one glossy surface. After the discs are drawn, one pass blurs the depth they left, as a distance along each pixel's ray, over a few discs' width on screen; the blur is bilateral, so a disc much nearer or farther than the centre counts for little and the surface does not run across a gap into whatever is behind it. The lighting then reads its normals from the smoothed depth, so the bumps of the separate discs are gone, and shades it as a liquid: the light that gets in, tinted by its colour, and on top the sky and sharp highlights of the lamps and the sun, more of them at a glancing angle. Glyphs, solids and the walls keep their own exact surfaces.

Source: screen-space fluid rendering, after Wladimir J. van der Laan, Simon Green and Miguel Sainz, “Screen Space Fluid Rendering with Curvature Flow”, I3D 2009, with a bilateral blur in place of the curvature flow; the Fresnel term is Christophe Schlick, “An Inexpensive BRDF Model for Physically-based Rendering”, Computer Graphics Forum 13(3), 1994.

Gravity wells

Four attractors and repulsors bending the cloud from a layer above the scenes. Deliberately not a simulation: every particle here is a function of its index with no state between frames, and integrating velocities would throw that away for physics nobody is checking. The falloff is r²/(d²+r²) — one at the centre, a half at the radius, asymptotically nothing beyond — because a hard cutoff shows up as a visible shell in the cloud.

Source: vizz. A displacement field that reads as gravity, not a gravity model.

Camera moves

Ten paths — orbit, sway, push, pull, crane, spiral, look around, fly through, walkthrough and a slow drift — each returning a delta added to the camera the faders already describe, with rate in bars so a move locks to the same clock as the sequencer.

Source: vizz. The shapes are borrowed from camera work rather than from anything written down.

Sources

Every entry above, in one list, with whoever found it. Where the original paper is behind a paywall the link goes to an encyclopaedia article instead — the citation is the thing to keep.

The clouds

  1. aggregate — Thomas Witten & Leonard Sander, “Diffusion-limited aggregation, a kinetic critical phenomenon”, Phys. Rev. Lett. 47 (1981)
  2. Aizawa — Yoji Aizawa & Tatsuo Uezu (1982), as catalogued by Chaoscope
  3. Arneodo — Alain Arnéodo, Pierre Coullet & Charles Tresser (1981)
  4. Boy's surface — Werner Boy (1901); this parametrisation is François Apéry’s (1986)
  5. Buddhabrot — Melinda Green, the Buddhabrot (1993); Lori Gardi’s Nebulabrot
  6. Burke–Shaw — Bill Burke & Robert Shaw (1981)
  7. Chen — Guanrong Chen & Tetsushi Ueta, “Yet another chaotic attractor”, Int. J. Bifurcation and Chaos 9 (1999)
  8. Chladni — Ernst Chladni, Entdeckungen über die Theorie des Klanges (1787)
  9. Chua — Leon Chua (1983); Matsumoto, Chua & Komuro, IEEE Trans. Circuits and Systems 32 (1985)
  10. Clifford — Clifford Pickover, Computers, Pattern, Chaos and Beauty (1990)
  11. cloth — Xavier Provot, “Deformation constraints in a mass-spring model”, Graphics Interface 1995; Thomas Jakobsen, “Advanced Character Physics”, GDC 2001
  12. colonised tree — Adam Runions, Brendan Lane & Przemysław Prusinkiewicz, “Modeling Trees with a Space Colonization Algorithm” (2007)
  13. coral — The same rewriting, branching three ways a third of a turn apart
  14. Coullet — Pierre Coullet, Charles Tresser & Alain Arnéodo (1979) — a jerk system
  15. crystal — Clifford A. Reiter, “A local cellular model for snow crystal growth”, Chaos, Solitons & Fractals 23 (2005); the morphologies are Ukichiro Nakaya’s (1954)
  16. cyclic — Robert Fisch, Janko Gravner & David Griffeath, “Cyclic cellular automata in two dimensions” (1991); David Griffeath on the spirals’ four snapshots (1994)
  17. Dadras — Sara Dadras & Hamid Reza Momeni, Physics Letters A 373 (2009)
  18. de Jong — Peter de Jong, in A. K. Dewdney’s Computer Recreations, Scientific American (1987)
  19. Dini — Ulisse Dini (1870); a pseudosphere dragged along a helix
  20. Duffing — Georg Duffing (1918); the chaotic forced case is Ueda’s (1979)
  21. Enneper — Alfred Enneper (1864)
  22. fern — The same rewriting, in the fern’s own rule
  23. figure-eight knot — The 4₁ knot, the simplest amphichiral one
  24. finance — Junhai Ma & Yushu Chen, Applied Mathematics and Mechanics 22 (2001)
  25. flame — Scott Draves & Erik Reckase, “The Fractal Flame Algorithm” (2003)
  26. flock — Craig Reynolds, “Flocks, Herds and Schools: A Distributed Behavioral Model”, SIGGRAPH 1987
  27. fluid — Jos Stam, “Stable Fluids”, SIGGRAPH 1999, and “Real-Time Fluid Dynamics for Games”, GDC 2003; vorticity confinement from Fedkiw, Stam & Jensen, SIGGRAPH 2001
  28. foam — Georgy Voronoy (1908); the walls are the set of points equidistant from the two nearest centres
  29. Four-wing — Wang, Sun & van Wyk, the four-wing system (2009)
  30. Genesio–Tesi — Roberto Genesio & Alberto Tesi, Automatica 28 (1992)
  31. growth — Anders Hoff, “Differential Line” (inconvergent, 2016); Andy Lomas, “Cellular Forms” (2014); Nervous System’s Floraform (2014)
  32. Gumowski–Mira — Igor Gumowski & Christian Mira, CERN (1980)
  33. gyroid — Alan Schoen, Infinite Periodic Minimal Surfaces Without Self-Intersections, NASA TN D-5541 (1970); Schwarz’ P and D are from 1865
  34. Hadley — Edward Lorenz, “Irregularity: a fundamental property of the atmosphere”, Tellus 36A (1984)
  35. Halvorsen — Arne Dehli Halvorsen’s cyclically symmetric system, as catalogued by Sprott
  36. harmonic — A sphere modulated by a spherical harmonic; the classical functions of Laplace (1782)
  37. Hilbert curve — David Hilbert, “Über die stetige Abbildung einer Linie auf ein Flächenstück”, Math. Annalen 38 (1891)
  38. Hopf — Heinz Hopf, “Über die Abbildungen der dreidimensionalen Sphäre auf die Kugelfläche”, Math. Annalen 104 (1931)
  39. hyperbolic — H. S. M. Coxeter, “Crystal symmetry and its generalizations” (1957), after which Escher drew Circle Limit I; Douglas Dunham, “Hyperbolic symmetry” (1986)
  40. Hénon — Michel Hénon, “A two-dimensional mapping with a strange attractor”, Comm. Math. Phys. 50 (1976)
  41. Ikeda — Kensuke Ikeda, Optics Communications 30 (1979)
  42. Julia — Gaston Julia (1918) and Pierre Fatou
  43. Klein bottle — Felix Klein (1882); the figure-eight immersion is the standard one
  44. Kleinian — David Mumford, Caroline Series & David Wright, “Indra’s Pearls: The Vision of Felix Klein” (2002), Grandma’s recipe
  45. kuramoto — Yoshiki Kuramoto (1975); Steven Strogatz, “From Kuramoto to Crawford”, Physica D 143 (2000)
  46. life — Carter Bays, “Candidates for the Game of Life in Three Dimensions”, Complex Systems 1 (1987); the multi-state rules as catalogued by Softology
  47. liquid — Miles Macklin & Matthias Müller, “Position Based Fluids”, SIGGRAPH 2013; kernels from Müller, Charypar & Gross, SCA 2003
  48. Lissajous — Jules Antoine Lissajous (1857); the knotted case is Bogle, Hearst, Jones & Stoilov (1994)
  49. Lorenz-96 — Edward Lorenz, “Predictability: a problem partly solved”, ECMWF Seminar on Predictability (1996)
  50. Lyapunov — Mario Markus & Benno Hess, “Lyapunov exponents of the logistic map with periodic forcing”, Computers & Graphics 13 (1989)
  51. Mandelbox — Tom Lowe (2010)
  52. Mandelbrot — Benoit Mandelbrot (1980); the smooth escape count is Douady and Hubbard’s
  53. Mandelbulb — Daniel White and Paul Nylander (2009)
  54. Menger — Karl Menger (1926)
  55. Newton — Arthur Cayley asked the question in 1879 and could not answer it for the cubic
  56. Newton–Leipnik — Tim Newton & Roy Leipnik, “Double strange attractors in rigid body motion”, SIAM J. Appl. Math. 41 (1981)
  57. Nosé–Hoover — Shūichi Nosé (1984) and William Hoover (1985)
  58. orbital — The real spherical harmonics, as a chemistry textbook draws an atomic orbital
  59. orbits — Direct-summation gravity, with Plummer softening (1911)
  60. pendulum — The double pendulum, the standard demonstration that four numbers can be unpredictable
  61. phyllotaxis — The golden angle; Helmut Vogel’s sunflower model (1979)
  62. plant — Aristid Lindenmayer (1968); Przemysław Prusinkiewicz & Lindenmayer, The Algorithmic Beauty of Plants (1990)
  63. polytope — H. S. M. Coxeter, “Regular Polytopes” (1948); Thomas Banchoff’s turning hypercube films (1978); the walk is Hierholzer’s Eulerian circuit (1873)
  64. quadratic — Julien Clinton Sprott, Strange Attractors: Creating Patterns in Chaos (1993)
  65. quadratic flow — The same search over quadratic flows; Sprott, “Some simple chaotic flows”, Phys. Rev. E 50 (1994)
  66. quasicrystal — Dan Shechtman et al., Phys. Rev. Lett. 53 (1984); Nobel Prize in Chemistry, 2011
  67. quaternion Julia — Alan Norton, “Generation and display of geometric fractals in 3-D”, SIGGRAPH 1982
  68. Rabinovich–Fabrikant — Mikhail Rabinovich & Anatoly Fabrikant, Sov. Phys. JETP 50 (1979)
  69. reaction — The Gray–Scott system in John Pearson’s parameterisation, Science 261 (1993); the mitosis constants are Karl Sims’
  70. Rikitake — Tsuneji Rikitake, “Oscillations of a system of disk dynamos”, Math. Proc. Cambridge Phil. Soc. 54 (1958)
  71. Rucklidge — Alastair Rucklidge, “Chaos in models of double convection”, J. Fluid Mech. 237 (1992)
  72. Rössler — Otto Rössler, “An equation for continuous chaos”, Physics Letters A 57 (1976)
  73. Sakarya — The Sakarya system (2010)
  74. sandpile — Per Bak, Chao Tang & Kurt Wiesenfeld, “Self-organized criticality”, Phys. Rev. Lett. 59 (1987); Deepak Dhar on the Abelian property (1990)
  75. scope — The XY mode of the cathode-ray oscilloscope; Jerobeam Fenderson, “Oscilloscope Music” (2016)
  76. seashell — David M. Raup, “Geometric analysis of shell coiling” (1966); Deborah Fowler, Hans Meinhardt & Przemysław Prusinkiewicz, “Modeling seashells” (SIGGRAPH 1992)
  77. Shimizu–Morioka — Tsutomu Shimizu & Nobuo Morioka, Physics Letters A 76 (1980)
  78. Sierpinski — Wacław Sierpiński (1915), by Michael Barnsley’s chaos game
  79. slime — Jeff Jones, “Characteristics of pattern formation and evolution in approximations of Physarum transport networks”, Artificial Life 16 (2010); Tero et al., Science 327 (2010)
  80. smoke — The same solver in three dimensions; buoyancy after Fedkiw, Stam & Jensen, “Visual Simulation of Smoke”, SIGGRAPH 2001
  81. spirals — Boris Belousov (1951) and Anatol Zhabotinsky (1964); the cellular form is Alasdair Turner’s
  82. spirograph — The hypotrochoid, and Denys Fisher’s 1965 toy
  83. Sprott B — Julien Clinton Sprott, “Some simple chaotic flows”, Phys. Rev. E 50 (1994) — case B
  84. standard map — Boris Chirikov, “A universal instability of many-dimensional oscillator systems”, Physics Reports 52 (1979); the last-torus threshold is John Greene’s (1979)
  85. supershape — Johan Gielis, “A generic geometric transformation that unifies a wide range of natural and abstract shapes”, Am. J. Botany 90 (2003)
  86. swarmalators — Kevin O’Keeffe, Hyunsuk Hong & Steven Strogatz, “Oscillators that sync and swarm”, Nature Communications 8 (2017)
  87. tangle — Thomas Jakobsen, “Advanced Character Physics”, GDC (2001); Miklós Bergou et al., “Discrete Elastic Rods”, SIGGRAPH (2008)
  88. Thomas — René Thomas, “Deterministic chaos seen in terms of feedback circuits”, Int. J. Bifurcation and Chaos 9 (1999)
  89. three-scroll — The three-scroll unified chaotic system; Dequan Li, Physics Letters A 372 (2008)
  90. torus knot — The classical (p,q) torus knots
  91. tree — The same rewriting, with a trunk that keeps going
  92. twisted gasket — The Sierpiński chaos game with a rotation in the loop — the kaleidoscopic IFS of the fractal-rendering community
  93. vortex — Hermann von Helmholtz on vortex motion (1858); Louis Rosenhead’s desingularised kernel (1930); Anthony Leonard, “Vortex methods for flow simulation” (1980)
  94. wind — Robert Bridson, Jim Hourihan & Marcus Nordenstam, “Curl-Noise for Procedural Fluid Flow”, SIGGRAPH 2007

Everything else