Practice-Based Research · Computational Media · Generative Art

Experiplay —
A Research Journal

A living record of iterative generative art practice. Groups appear in chronological order of when each was first begun. Iterations within each group are ordered as they occurred. Groups remain open — any group may receive new entries as practice continues. The failures are included. They are research results.

On Experiplay as Method

Experiplay is a practice-based research methodology that treats generative code as a medium of inquiry rather than a means of production. Each piece begins not with a defined outcome but with a question — aesthetic, technical, or conceptual — and proceeds through rapid iteration, snapshot, and reflection.

The method borrows from both artistic practice and scientific experimentation: form a hypothesis about what a system might do, build the simplest possible version, observe what actually emerges, and document the gap between intention and result. Discovery happens in that gap. The snapshot is the unit of evidence — a moment when something worth preserving has been found, before the next push destabilises it.

Groups are ordered by when they were first encountered. A group may be returned to at any point — informed by discoveries made in other groups. The journal is intentionally open-ended. It documents a practice in progress.

Group 01 Started 15 April 2026

Framework & Early Patterns

PlayCanvas · WebGL · Point Cloud · Reaction-Diffusion

Open — active group

The opening experiments used PlayCanvas — a high-level WebGL framework — to establish a foundation before moving to raw WebGL. Reaction-diffusion was attempted twice and encountered the iOS WebGL constraints that would recur throughout the practice. The constraint was first mapped here.

01.1

First PlayCanvas Point Cloud

15 April 2026
method established

The first piece: a PlayCanvas point cloud with a sphere mesh, white point sprites, and proximity-based threads between nearby particles. The framework abstracted away WebGL infrastructure, allowing focus on behaviour. Initial experiments with forms, UI controls, and blend-morph transitions between states followed rapidly.

By the fourth iteration the framework was constraining. High-level abstractions were fighting the low-level control that interesting particle behaviour requires. Moving to raw WebGL was not a technical decision — it was an artistic one.

Finding: Frameworks impose their own aesthetic. The right tool for experiplay is the one with the least distance between intention and execution.
01.6

Reaction-Diffusion — GPU Attempt

16 April 2026
productive failure

First attempt at GPU ping-pong reaction-diffusion. The output was a star-shaped artefact caused by mediump float precision being insufficient for atlas UV addressing in the simulation shader. The simulation was not producing Gray-Scott patterns but the artefact was itself a data point about mobile WebGL precision constraints.

Finding: A failed simulation can produce interesting visual output. The artefact was evidence of the constraint, not just an error to be fixed.
01.7

Reaction-Diffusion — CPU Fallback

16 April 2026
productive failure

CPU-side Gray-Scott after the GPU approach failed. Produced correct patterns in principle but was too slow on mobile to be usable. This was the first full encounter with the iOS WebGL FBO constraint that would define the entire ferrofluid journey three weeks later. The constraint was noted but not yet fully understood.

Finding: Constraints encountered early in a practice recur. Recognising a known constraint the second time accelerates the search for alternatives.
Next iteration — add entry here as practice continues
Group 02 Started 17 April 2026

Crystal Fields

WebGL · Particle Growth · Bloom · Thread Networks

Open — active group

Shifting from reaction-diffusion to crystal growth produced the first genuinely surprising result — particles growing luminous tendrils toward each other. The bloom post-processing pipeline was introduced here and has remained in every subsequent piece.

02.1

Crystal Field v1

17 April 2026
unexpected emergence

First crystal growth model: particles extending crystalline tendrils toward each other based on local proximity. The visual quality — dark background, luminous thread connections — established an aesthetic that the Brownian, Attractor, and Wireforms work all subsequently inherited.

02.2

Crystal Threads with Bloom

17 April 2026
pipeline established

The bloom post-processing pass added: threshold filter, Gaussian blur at half resolution, additive composite back onto the scene. This pipeline makes particle density readable as luminosity — dense regions glow, sparse regions recede. A fundamental shift in how the system communicates.

Finding: Post-processing is not decoration — it changes what the system communicates. Bloom makes density legible as light, which is a fundamentally different reading of the same data.
Next iteration — add entry here as practice continues
Group 03 Started 17 April 2026

Mycelial / DLA Growth

WebGL · Agent-Based · DLA · Space Colonisation · Bioluminescent

Open — active group

A hybrid DLA and space-colonisation system: growth tips seeking chemical gradients, leaving bioluminescent trails. Thinking of particles as organisms with local decision-making rather than physics objects changed what questions were asked of the system.

03.1

Mycelial Growth — Initial

17 April 2026
biological analogy

Hybrid DLA and space-colonisation: growth agents seek attractors, consuming them when close, reinforcing trails left by other agents. The biological analogy was explicit and productive. The desire for more physical randomness — less deterministic growth — led directly to the Brownian motion exploration that followed.

Finding: Framing particles as organisms with agency rather than as physics objects changes the questions asked. Both framings describe the same mathematics — the framing shapes what is noticed.
Next iteration — add entry here as practice continues
Group 04 Started 17 April 2026

Brownian Motion Explorations

WebGL · CPU Simulation · Two-Population Particles · Phase Transitions · Mesh Formation

Open — active group

The most extensively iterated group in the practice so far. Two particle populations — fast amber Brownian bombers and slow blue target particles — interact through energy transfer triggering three phases of emergent behaviour: chaotic bombardment, attraction forces, and membrane formation. Eleven working milestones produced in a single session. The group was revisited in Session 3 to produce a scientific instrument spin-off.

04.1

Movement Explorer

22 April 2026
spin-offscience / art dialogue

Returning to the Brownian simulation in Session 3 with a new framing: four aesthetic versions of the same physics (Scientific Instrument, Dark Field, Artistic, Blue/Amber) sharing one engine, with time-scale and magnification sliders. Conceived as a demonstration that science-minded and art-minded thinking illuminate the same phenomenon differently. Depth-of-field applied per-particle based on Z-distance from a moveable focal plane.

Finding: The same simulation sustains multiple aesthetic readings. Choosing which data to foreground — measurement, luminosity, accumulation, colour — is itself a creative and epistemological act.
04.2 – 04.12

Self-Organisation — Eleven Milestones

17 – 19 April 2026
emergent complexityextensive debugging

Eleven working milestones across a single extended session. Stepped charge activation (levels 0–3 with exponential cascade), neighbour contagion, global energy accumulation triggering phase transitions, proximity-scaled mesh growth (edges then faces), and flood-fill patch colouring with golden-ratio hue sequence.

Key technical encounters: uniform intuniform float required for iOS GLSL ES 1.0 compatibility; backtick characters inside JavaScript template literal strings terminate the string early (a recurring hazard in GLSL-as-JS); energy deposit rate calibration for reliable Phase II and III triggering.

The membrane that forms in Phase III was not programmed — it emerged as a stable configuration from the interaction between diffusion rates and energy thresholds. The system found its own equilibrium.

Finding: Complexity emerges from simple local rules at sufficient scale. The interesting design space is not the final behaviour but the parameter region where phase transitions occur — where a small change in energy threshold shifts the system from chaos to order.
Next iteration — add entry here as practice continues
Group 05 Started 22 April 2026

The 2001 Trumbull Explorations

Fragment Shader · Domain Warping · Curl Noise · Logarithmic Spiral · Horizon Projection

Open — active group

Using Douglas Trumbull's final sequence from Kubrick's 2001: A Space Odyssey as aesthetic reference — the slit-scan corridor, organic terrain flyovers, ink-in-fluid macro photography, and galactic forms. Each sub-direction is a different way of approaching the same visual language: slow, organic, cosmically scaled, simultaneously geological and biological.

05.1

Terrain — Organic Flyover

22 April 2026
reference-driven

A perspective-projected terrain flyover using domain-warped noise — the entire scene computed per-pixel, no geometry. Domain warping (using one noise field to distort the coordinates of another) produces the folded, cellular, organic quality that makes this read as biological rather than geological at high warp strengths. Six presets explore a single mathematical structure across wildly different visual registers: Coral, Cloud, Tissue, Jupiter, Abyss, Stellar.

Finding: Domain warping is the single most transformative operation in the noise toolkit. At low values the terrain is geological; at high values it becomes tissue-like. The same mathematics reads as entirely different phenomena at different scales.
05.2

Terrain — Mirror Controls

22 April 2026
partial failurefeature addition

Horizontal and vertical mirror toggles added. The first implementation applied mirroring to screen UV coordinates before perspective projection — one axis worked, the other produced unexpected behaviour. The fix required moving the mirror into terrain coordinate space, after the projection calculation. An apparently simple operation (fold the image) behaves completely differently depending on which stage of the pipeline it is applied at.

Finding: Coordinate space matters. The mirror axis that appears horizontal on screen is not the same as the horizontal axis in terrain space when a perspective projection is involved.
05.3

Terrain — Above and Below

22 April 2026
new visual territory

A specific 2001 frame — a crisp horizon dividing a radiant upper world from a dark still lower world — demanded a completely new piece rather than an iteration on the terrain. The upper world uses vanishing-point projection where all streaks radiate from a single horizon point (replicating the slit-scan quality). The lower world is a dark plain in ground-level perspective. The horizon is a bright line with its own visual presence.

Finding: Recognising when to branch rather than extend is a key judgement in experiplay practice. Some reference images demand a new piece, not a new parameter.
05.4

Ink in Fluid — Curl Noise

22 April 2026
physically-grounded

The macro photography sequences in 2001 — paint and fluorescent dye in water — suggested a fluid simulation approach. Curl noise generates a mathematically divergence-free velocity field: fluid with no sources or sinks, only rotation and flow. Metaball-like ink volumes drift on independent paths while the curl field warps sampling coordinates, making them billow and fold without compressing. Six palettes: Ink, Oil, Nebula, Cell, Aurora, Magma.

Finding: Mathematically divergence-free noise produces qualitatively different flow to standard noise — it feels physically plausible because it conserves volume, which is what real fluid does.
05.5

Galactic Form — Reference Match

22 April 2026
image decomposition

A photographic frame from the 2001 sequence — a galactic form between spiral galaxy, cresting wave, and neural structure — decomposed into generative elements: logarithmic spiral arms, bright blooming core, dark rift along the equatorial plane, scattered stars denser near the galaxy, tilted viewing angle. Each layer implemented separately, then composed. The dark rift creates the sense of a physical disc at an angle rather than a flat image.

Finding: Decomposing a photographic reference into generative elements requires distinguishing structural features (spiral form) from material features (dark rift, star density). Structural elements define shape; material elements make it believable.
05.6

Galactic Form — Multi-Arm Wispy

22 April 2026
iterationemergent detail

The first galaxy was too uniform — perfectly regular arms, smooth falloff, no character. Six arms (two primary, two secondary, two faint feather), each with independent breakup noise. Twelve discrete globules along the spiral path with slight jitter. Wisps (high-frequency noise along arm direction) and voids (low-frequency subtraction creating dark gaps). Breakup noise raised to a power greater than 1 punches holes through arm material, leaving bright knots — replicating irregular nebula texture.

Finding: Uniformity reads as artificial. Real astronomical structures form through turbulent processes. Multiplicative breakup (not additive) preserves overall structure while destroying regularity.
Next iteration — add entry here as practice continues
Group 06 Started 22 April 2026

The Wireforms

WebGL · Parametric Geometry · GPU Vertex Physics · Torus Knot · Frenet Frame

Open — active group

A reference image of a wireframe parametric surface — fine parallel curves sweeping along a torus knot — raised a question: what if the wireframe responded to physics? The entire form is computed in the vertex shader each frame from two parameters (u along the path, v around the ring), with no CPU geometry and no uploads.

06.1

Breathing Torus Knot

22 April 2026
foundationshader naming error

Three physics layers: a breathing wave travelling along the knot path creating peristaltic expansion/contraction, a twist rate rotating cross-section rings over time (the whole structure slowly corkscrews), and a ripple oscillation around each ring making them pulse rather than remaining perfect circles. Five knot configurations via P and Q parameters: Trefoil (2,3), Cinquefoil (2,5), Torus (1,3), Lissajous (3,4), Jellyfish (1,2).

A naming error — attribute aU referenced as uU throughout the vertex shader — silenced the entire pipeline. iOS GLSL fails immediately on undeclared identifiers with a minimally informative error.

Finding: A single character difference in an identifier name can silence an entire GPU pipeline. Systematic naming conventions — a-prefix for attributes, u-prefix for uniforms — prevent this class of error.
Next iteration — add entry here as practice continues
Group 07 Started 22 April 2026

The Ferrofluids

Fragment Shader · Turing Patterns · Reaction-Diffusion · Multi-Scale Noise · Magnetic Poles

Open — active group

The most resistant group. Ferrofluid — magnetic liquid forming labyrinthine spike and cell patterns under a magnetic field — required five failed implementation attempts before a working solution was found. The failures are documented in full: they constitute the research record for why the eventual approach is architecturally correct.

07.1 – 07.4

CPU Gray-Scott — Four Failed Attempts

22 April 2026
documented failureconstraint mapping

Four successive CPU reaction-diffusion attempts, each addressing the previous failure mode. Tiny white rectangles (simulation cells at native pixel density, no upscaling). Black screen (too slow to develop patterns). Isolated patches (insufficient pre-warming and sparse seeding). Same isolated patches with dense seeding (2000 steps still insufficient for 320×320 on mobile hardware). CPU simulation at any resolution sufficient to produce connected labyrinthine patterns is too slow on mobile — this is the same constraint first encountered in Group 01.

Finding: Fully mapping a constraint — knowing precisely what fails and why — is itself a research contribution. Four documented failures constitute stronger evidence than one partial success.
07.5

GPU Ping-Pong — Silent FBO Failure

22 April 2026
documented failure

Full GPU ping-pong reaction-diffusion — simulation in fragment shaders alternating between two framebuffer objects. The FBO status check passed. The pre-warm loop ran. The output showed only the initial seed texture. iOS Safari was silently discarding all writes to the simulation FBOs. checkFramebufferStatus() returns COMPLETE but writes have no effect. This behaviour is undocumented and undetectable with standard WebGL API calls. The file was incomplete — create operation interrupted mid-write.

Finding: iOS Safari WebGL 1 has undocumented silent FBO failures that cannot be detected at runtime. Knowing a constraint is undetectable changes the approach: don't try to work around it, replace the entire architecture.
07.6

Turing Shader — Single-Pass Approximation

22 April 2026
breakthroughconstraint as catalyst

The solution was to abandon simulation entirely. A Turing pattern — the mathematical structure underlying reaction-diffusion — can be approximated directly using multi-scale noise. Activator at fine scale, inhibitor at coarser scale: their difference produces the cellular/labyrinthine structure of Gray-Scott at steady state. Computed in a single fragment shader pass, no state, no FBO, no upload. Full screen resolution on every device.

Magnetic poles warp the sampling coordinates toward their positions, creating radial spike structures exactly as real ferrofluid does around a physical magnet. Six presets: Labyrinth, Spots, Coral, Cells, Chaos, Reference.

The constraint that prevented simulation led to a solution that is architecturally simpler, more portable, and qualitatively identical to the intended output.

Finding: Platform constraints, pursued far enough, become generative. The iOS FBO limitation forced an approach — direct mathematical approximation — superior to the simulation it replaced. The best solution was hidden behind the failure. This is the core claim of experiplay as method: the gap between intention and result is where discovery lives.
Next iteration — add entry here as practice continues
Group 08 Started 22 April 2026

The Attractor & Point Cloud Explorations

WebGL · N-Body Gravity · Particle Trails · Ring Buffer · Point Cloud · PLY Loading

Open — active group

Inspired by a Rendah Mag cover image — a gravitational particle disc with long velocity trails, created in TouchDesigner. The question was how close a self-contained browser piece could get to the same aesthetic. The answer: very close — and the point cloud seeding capability extends the idea beyond what the TouchDesigner piece does.

08.1

Gravitational Disc — Foundation

22 April 2026
foundation

8000 particles seeded in a flat ring with circular orbital velocity (v = √G/r). Each particle accumulates up to 40 past positions in a ring buffer, rendered as GL_LINES fading from white-hot at the head to transparent at the tail. Particles that escape or are swallowed by the attractor respawn from fresh initial conditions. Bloom post-process gives the characteristic bright core with diffuse halo. Pre-warmed 120 steps before first render.

Finding: Trail length is the most expressive parameter. Short trails show current velocity. Long trails show orbital history. At maximum trail length the system reads as a continuous luminous structure — the collective behaviour becomes the subject, not the individual particles.
08.2

Point Cloud Seeding + PLY Loader

22 April 2026
unexpected beautyfeature extension

Five embedded point cloud shapes (Sphere, Torus, Twist, Helix, Figure-8) generated procedurally and baked as Float32Arrays in the HTML. A PLY file loader accepts any ASCII PLY, centres and normalises it, and uses the vertex positions as spawn coordinates. Switching shapes immediately respawns all particles from the new geometry — the object's form is briefly legible before the attractor pulls everything into the orbital disc.

Finding: The moment of dissolution — when a recognisable form loses coherence and becomes orbital chaos — is the most visually compelling state. It exists only briefly between two stable configurations. The interesting thing is always the transition, not the endpoint.
Next iteration — add entry here as practice continues