‹ Primordia

PRIMORDIUM II

The original law, reborn on the GPU: a whole nebula of particles. Hit Randomize for a new organism. [hide] [about]
seed
keys · space r m e p a n h
interaction matrix · drag cells ↕

PRIMORDIUM II

The sequel to Primordium: the same one tiny rule — how strongly is each species pulled toward, or pushed away from, each other species? — but now the whole simulation lives on your GPU, so instead of hundreds of particles there are hundreds of thousands. At that density you no longer see dots: you see membranes, storms, arteries and living tissue.

How the GPU does it

Checking every particle against every other is impossible at this scale, so Primordium II takes the continuum limit of the original's force law:

The grid is still asymmetric — A chasing B need not equal B chasing A — and that imbalance is what turns dull symmetry into pursuit, flight and predation.

Make it yours

Every organism is generated from a 32-bit seed: copy it to save a creature or paste a friend's, then Load. Mutate nudges the rules; Evolve keeps mutating so the ecosystem drifts on its own. Drag a matrix cell up/down to hand-tune one relationship, and drag the canvas to stir the swarm. The presets (Cells, Chase, Snakes, Gas) are hand-built starting points.

Sound

Toggle Audio (key a) and the swarm conducts a generative ambient piece: a breathing drone under a soft pentatonic melody through a long feedback delay. The swarm's kinetic energy is the conductor — frantic motion makes the notes busier and brighter, stable structures make it sparse and calm. All synthesised live with the Web Audio API.

Keyboard

space pause · r randomize · m mutate · e evolve · p palette · a sound · n respawn · h hide panel · i this panel

A single self-contained HTML file · no libraries, no network, no assets. WebGL2: the physics runs in fragment shaders, rendered with HDR trails and bloom. Built with Claude.

PRIMORDIUM II

This world needs WebGL2 with float-texture rendering, which your browser or GPU doesn't offer.

The original runs everywhere: enter Primordium I →

drag on the canvas to stir the nebula