Primordium is a particle-life simulator. Every dot is a particle belonging to one of a few colored species. The only law of this universe is the rules matrix: each cell says how strongly one species is attracted to (green) or repelled by (red) another. Forces are asymmetric — red can love green while green flees red — which is where the chasing, orbiting, cell-like behavior comes from.
Nothing here is scripted. Membranes, snakes, mitosis-like blobs and predator–prey ecosystems all emerge from those few numbers. Edit the matrix and watch the universe reorganize; turn on Drift to let the laws of physics slowly wander on their own.
Ecosystem mode gives every particle energy: moving burns it, grazing the food field restores it, and hunters (species that chase a species that flees them) eat what they catch. Run out and you die; store enough and you reproduce. Populations boom, crash and go extinct for real — watch the chart. Paint food and poison with the terrain brush.
Evolution mode removes the shared rulebook entirely: each particle carries its own genome deciding how it reacts to others, passed to offspring with mutations. One ancestor seeds the world; species split, drift apart and compete on their own. Nobody designs them.
World phenomena make space part of the rules. Particles leave chemical traces that attract or repel later motion; painted zones can amplify or invert physics, expand or shrink interaction scale, or open consuming voids. Portals splice two distant regions of the world together.
Under the hood: the entire simulation runs on your GPU. Particle positions and velocities live in floating-point textures; a WebGL2 fragment shader evaluates every pairwise interaction each frame (~10⁸ at high counts) and integrates the physics, while an HDR accumulation buffer with exponential tonemapping renders the trails. The CPU does almost nothing.
Lineage: Jeffrey Ventrella's Clusters, popularized as “Particle Life” by Tom Mohr.
| space | pause / play |
| R | reseed positions |
| M | reroll the rule matrix |
| D | toggle drift |
| H | hide / show UI |