I've spent quite a long time looking into water generation.
This particular endevour was found after learning about
procedural generation and I thought i'd explore the area.
I'm just running some perlin-noise patterns within the
fragment shader, as well as having a very slight wave
effect within my vertex shader code.
Break down: within this pattern I sample five times within fbm (which per octave iterates over cnoise),
and combine the result, creating the illusion of two perlin maps going over
the top of each other. This is done not only with time, but also with varied
lacunarity and gain. Lacunarity is a counterpart to the fractal dimension
that describes the texture of a fractal. Gain alters the definition by intensifying
the detail the smaller the sample is.
Yes, I know this is not an efficient method what so ever, but for the sake of demonstration,
I thought this one would be much more favoured If I were to make this within a game I would
actually sample several pre-processed noise textures that vary from perlin-noise, simplex
and diamond-square. The following is the result of fragment shading in my engine, GenGein.