The task is to create a real time water surface with effects given by physical parameters. In graphical applications, ’real time’ means that computing the water surface is fast enough so that the user won’t notice the change between pictures.
Based on the geographical placement of the surface, the water surface can be open or closed, still or flowing. These parameters define the behaviour of water. In a closed space water may not reflect anything, because light cannot get inside. Still waters do not wave, however, in an open space, wind can cause waving. It can be said that spacious water surfaces do wave and light can get to them, so the above effects shall be implemented.
Light refracts on the water surface, that causes part of it to reflect, the other part of it to transmit. This causes light from objects on the water surface to go through water, therefore the mirror image to distort. Light from underwater objects also goes through water, that is why we get a straight, but distorted image. Index of reflection is determined by the gradient of water surface, and the viewing angle: if the angle of viewing is more depressed, the surface reflects better, and vice versa: if we view the surface on a higher angle, we can see more of the bottom of the water.