Top-down simulation of fluid erosion using a cellular automata-based algorithm. Rendering is implemented using the p5 library.
As the simulation runs, water "particles" move from higher to lower elevations. A heuristic approach based on sediment pickup/deposit allows those elevations to change over time, creating channels, islands, and bodies of water.