Run the simulation in fullscreen here.
This scene uses GLSL to create the surface of the pond, lily pads, and clouds, and a flocking simulation to drive the school of fish.
Move your cursor to direct the koi (mobile interaction hasn't been implemented):
The lily pads shapes are created by combining distance fields in GLSL. A grid-based approach is used to improve performance by limiting the number of checks each pixel has to perform to see if it's within a lilypad or its ripples' ranges.
The koi are shape-based animations created in After Effects. Rim lighting is applied by offsetting their silhouettes away from the direction of the sun.