CA Finder (GPU Edition)
This is a cellular automaton simulator running as a shader on your GPU. Cellular automata are
simple rule-based systems. Forming from chaos, each pixel, or “cell”, determines its next value
based on its neighbors. Systems and structures emerge from these local rules.
I made this tool so I could generate tiling patterns quickly. The controls are hard to use and
require a keyboard, but with a bit of patience you’ll figure it out. If you’re not familiar with
the specifics of cellular automata, it might help to
brush up first. Or start hitting
buttons and see what happens.
If you discover an interesting pattern, please
share it with me. I love seeing how people use
tools like this.
One last thing: I made a fractal explorer based on this code, and it’s
much easier to get visually interesting results with. Unless you’re specifically interested in
cellular automata, you might want to check that out instead.
Controls
Ruleset controls
- ↑: New random ruleset
- ↓: Mutate ruleset
- ←: Undo last ruleset change
- →: Redo ruleset change
Other controls
- Q: Increase neighbor range (decrease with Shift + Q)
- W: Change weight distribution
- E: Increase cell inertia (decrease with Shift + E)
- A: Add weight ring (remove with Shift + A)
- G: Cycle ring weight preset (reverse with Shift + G)
- T: Toggle transition type
- S: Scramble pixels (useful if a simulation gets stuck in a single state)
- D: Increase pixel density (decrease with Shift + D)
- Z: Increase number of states (decrease with Shift + Z)
- X: Cycle neighborhood type (reverse with Shift + X)
- R: Cycle wrap behavior (reverse with Shift + R)
- C: Increment color palette (decrement with Shift + C)
- F: Toggle semitotalistic mode
- V: Cycle color palette offset (reverse with Shift + V)
- [: Previous memory bank (next with Shift + [)
- ]: Next memory bank (previous with Shift + ])
-
0–9: Hold to save settings to slot in current bank; press to recall
(keep current palette with Shift + 0–9)
- Enter: Save image
- Space: Pause / play simulation
- ?: Show this info pane
- Esc: Hide this info pane
Note: not everything is configurable from this interface. To make deeper tweaks, follow
the README
and start running the code locally.