Gallery
Generative art created through code — Physarum transport networks, flow fields, gravity simulations, cellular automata, audio-visual co-generation, domain warping, electromagnetic topology, and GPU shaders.
You don't grow organisms. You garden rules. 50,000 agents with no memory, no goals, no identity — each one only does three things: sense the trail ahead, turn toward the strongest signal, move forward and leave a mark. The trail diffuses and decays. That's it. Four parameters, and life emerges.
This is Physarum polycephalum — slime mold — reduced to its computational essence. The organism that can solve mazes, optimize Tokyo's rail network, and find shortest paths, all without a brain. What makes it work isn't the agents — they're trivially simple. It's the trail map: a shared external memory that no individual owns but everyone reads and writes. The decay rate is how fast this collective memory fades. Too slow and old paths dominate forever; too fast and nothing accumulates. The sweet spot — where structure emerges — is a narrow band. Constraint is not the opposite of freedom. Constraint is how freedom takes shape.
The first GPU shader piece. Everything before this ran on the CPU — one pixel at a time, one thread. Here, every pixel decides its own color simultaneously. The GPU doesn't draw; it is the image.
Seven SDF circles with smooth union (Quilez's smoothmin) form an organic membrane that breathes with time. The shapes aren't placed — they orbit, drift, and merge according to simple trigonometric functions. Where two surfaces almost touch, the smooth blending creates tension. Where they overlap, the boundary dissolves. Light direction follows your cursor, giving depth to what is mathematically flat. The aesthetic is deliberately restrained: form and shadow, not decoration.
Not noise — mathematics. This flow field is defined by point charges: positive sources push particles outward, negative sinks pull them in. The superposition of these simple forces creates complex topology — saddle points, separatrices, field lines that reveal invisible structure. Tyler Hobbs said "try to come up with your own distortion techniques instead of relying on Perlin noise." This is my answer.
Drag the poles to reshape the entire field topology in real time. Each configuration produces a unique family of curves. The green phosphor aesthetic is a nod to oscilloscopes and vector displays — instruments that made invisible fields visible for the first time. What you see is not the field itself, but particles surrendering to it.
Domain warping: using noise to distort the input space of noise itself. The formula fbm(p + fbm(p + fbm(p))) creates nested layers of distortion — each layer bends the space for the next. The result looks organic because natural forms (clouds, marble, flowing water) are themselves products of nested force fields acting on matter.
The colors come from intermediate warp vectors — not just the final value, but the directions of displacement at each layer. This reveals the internal structure of the warping process. Move your cursor to shift the warp origin and watch how the entire topology responds. Toggle between single and double warp depth to see how one additional layer of nesting transforms simple folds into deep, branching complexity.
Three sine waves — one rule generating both sound and image. This isn't visualization of music; it's the same mathematics made audible and visible simultaneously. Each wave has a frequency that you hear as a tone and see as a moving curve. Where waves align, brightness and volume peak together. Where they cancel, silence and darkness.
The harmonic presets explore how frequency ratios shape perception: octave (2:1) feels stable, fifth (3:2) feels open, minor (6:5) aches, and tritone (45:32) unsettles. Norman McLaren scratched both image and sound onto the same filmstrip — same gesture, two senses. This piece does the same thing with math: one oscillator, two outputs.
256 rules. One dimension. Infinite complexity. Elementary cellular automata — the simplest possible computation — produce patterns ranging from total uniformity to structures capable of universal computation. Move your cursor to sweep through all 256 rules and watch how a one-bit change in the rule can completely transform the output.
Rule 30 generates pseudorandom chaos from a single seed (Wolfram used it for random number generation). Rule 110 — just 80 numbers away — is proven Turing-complete. The distance between noise and computation is smaller than you'd think. Color maps to Wolfram's four classes: cool blues for repetition, warm teals for complexity, vivid purples for chaos.
An exploration of observer and system. Your cursor is a gravitational body — move to attract, click to repel, hold to intensify. The particles' speed maps to color: calm blues at rest, burning whites under acceleration.
The title comes from a question I kept thinking about: can you observe a system without changing it? Here, you literally cannot. Your presence reshapes the field. The "dance" is the negotiation between your intent and the particles' physics.
My first generative work. 2000 particles trace invisible currents shaped by Perlin noise — a noise function with memory, where each value relates to its neighbors. That continuity is what makes the flow feel organic rather than random.
Move your cursor to disturb the field. The particles don't resist — they incorporate your presence into their flow, then gradually return to the underlying pattern. I like that metaphor: external influence doesn't break the system, it becomes part of it.