Published 2025-09-15
The making of "Scatterborn" by @1Abstract
By 1abstract
gm
Long time in the works, and the project is finally here. As usual, my creative coding approach is exploratory—I start with a set of minimum objectives, and then let the project evolve, taking me to a place where most of the goals are met, but always with room for flexibility in the final output.
At the beginning, I knew I wanted to do something with particles moving across the canvas, stretched over a large length-to-width ratio, forming abstract patterns that hold together with that “je ne sais quoi” kind of visual pleasantness, and carrying somewhat rugged, worn-out textures around the edges. My first tests back in January 2024 hinted that this might work. Since then, I’ve returned to it on and off, sometimes pausing when I got stuck on particular challenges.
The earliest versions ran directly in the p5.js editor, but later I moved to Visual Studio Code with the fxlens template. To make any of this make sense 😊, I should mention that I come from a statistics and data analysis background, where R is my main programming language. Translating ideas into p5.js felt easier at first, and I’m still more comfortable with it compared to JavaScript. At the time, there was no open-form, but as soon as fxhash released it, I started converting the project. It always felt right to have a reroll option - it gives more freedom to explore, with designs that can be high-risk but also high-reward. The open-form features are fantastic, though they do require a bit of dweebiness to fully appreciate. In short, they give the user a clearer idea of what they’re likely to get—and if the output isn’t quite right, rerolling allows for new versions before settling on one.
In Scatterborn, the most important feature is probably the “Mutation probability.” This is the little gremlin that shapes many aspects of a lineage (all outputs evolved from the initial root mint). A higher mutation probability increases the chances of palette evolution, and it also influences which patterns are more likely to appear on the canvas.
On the palette side, Scatterborn begins with 26 initial palettes, each capable of evolving by pulling in colors from others. Evolution comes in two modes: replacing part of the original palette with new tones, or accumulating additional colors on top of it (a rarer outcome). The total number of colors in a palette is visible as a feature. If you find a palette you like and want to play it safe, you can mint at the root from a low-mutation lineage—or evolve from a known edition whose offspring colors you enjoyed.
The textures generated by moving particles are also preserved along lineages. Subtle differences arise from 17 distinct scattering patterns, each controlled by five movement parameters (cohesion, alignment, speed, separation, and acceleration). The results range from sand-like scattering to filamentous threading. A total of 3,400 particles are used at once, and in my testing the most efficient rendering came from using triangles as the primitive.
Another key feature of Scatterborn is what I call the “Split ratios,” which shape the proportions of the emerging patchwork. There are 27 different ratios, mostly based on classic proportions such as Fibonacci or the golden ratio. At higher mutation probabilities, you can also encounter random and noise-based ratios, though these tend to be more unpredictable—sometimes requiring a few rerolls to land on harmony. The patches themselves are then populated by one of 30 different patterns (with lots of built-in variation), some of which only appear at high mutation probabilities or further down the evolutionary chain.
Shading was another element I wanted to explore. I didn’t want to rely on WebGL bells and whistles, so I worked out an approach that creates shading-like effects through subtle changes in triangle size and stroke weight. Shading position isn’t fixed per lineage—there are multiple positions and intensities available.
There are also other sources of variability woven in, some based on Perlin and Gaussian noise, but listing them all would make this text far too long.
One last important note: if you’re exploring Scatterborn by watching the animation, I highly recommend skipping the preview window, which doesn’t do it justice. Instead, open it in a new tab at high resolution and enjoy the piece as intended.
I hope everything runs smoothly, but if there are hiccups, fxhash open form now allows for code updates—another feature I’m glad to see.
Happy exploration,
@1Abstract