A large body of research has been done into modeling, shading, and reproducing optical effects of water [104,78,33], yet most methods still present a large computation burden to achieve a realistic image. Nevertheless, it is possible to borrow from these approaches and achieve modest results while retaining interactive performance [57,28].
The dynamics of wind and waves can be simulated using procedural models and rendered using meshes or height fields. The geometry is textured using simple procedural texture images. Multipass rendering techniques can be used to layer additional effects such as surf. Environment mapping can be used to simulate reflections from the surface. Specular illumination using environment mapping can be combined with the Fresnel reflection model from Section 10.4 to create a more physically accurate lighting model. The bump mapping technique from Section 10.6 can be used to create the illusion of ripples without modeling them in the geometry. The bump map can be animated as part of the simulation to animate the ripples. The combination of reflection mapping and a dynamic model for ripples provides a visually compelling image. Alternatively, synthetic perturbations to the texture coordinates as outlined in Section 6.21.7 can also be used.
Small swells can be modeled using a texture mapped height field. The height of the vertices can be modulated with a sinusoid to simulate simple wave patterns as showing in Figure 93. The frequency and amplitude of the waves can be varied to achieve different effects. The phase of the sinusoid can be varied over time to create wave motion.
Optical effects such as caustics can be approximated using parts of the OpenGL pipeline as described by Nishita and Nakamae [73] but interactive frame rates are not likely to be achieved. Instead such effects can be faked using textures to modulate the intensity of any geometry that lies below the surface. Other below-surface effects can also be simulated. Movements of the water (surge) can be simulated by perturbing the vertex coordinates of submerged objects, again using sinusoids. Blueish-green fog can be used to simulate light attenuation in water.