A WebGL-based erosion simulator
I originally started working on this erosion simulator to generate world maps for a game idea I had, but it quickly spiraled out of control and became its own project. I create a black and white heightmap using a perlin noise shader, then in another fragment shader I simulate thousands of droplets of water spawning at random points and running down hill. The erosion and sedimentation is based on the water droplets lifespan and speed. This erosion and sedimentation is fed back into the heightmap which is updated for the next frame. The result is a very realistic erosion simulation that can be used to generate realistic looking terrain.