A detailed tutorial with realistic water using bump mapping and refraction with terrain has been posted at The tutorial is done in OpenGL using GLSL. Full source code and HTML/PDF versions available. Topics also covered are normal mapping, dudv maps, depth maps, Fresnel term and tangent space. Look in "Recent Tutorials" for HeightMap6.