Lots of cubes running on a GPGPU water simulation.
Move the mouse over the water to create ripples, click to create a bigger ripple.
Press space or click here to stop the animation, you'll be able to rotate the camera.
More details...
The cubes code is recycled from The Polygon Shredder, removing code that is not needed for this effect.
There's three buffer for the water simulation to add more stability. The positions are stored in a GPU texture, the shader samples values around the point, averages and diffuses them.
The positions are taken by the cubes shader, that place half-cube geometries, elongated in the z-axis according to the water buffer value.
The cubes are rendered with a shader that exports positions and normals in view space (very much like a deferred renderer, but no multi rendertarget).
Those buffers are used by the SSAO shader to darken the creases in the depth.
A combine pass composed color and AO, and a final pass performs FXAA, tonemapping and gamma correction.
Credits
Coded using WebGL with three.js, isMobile.js and Maf.js