Research & Development

Resistance 2 Water Rendering

Posted on Apr 10, 2009, 12:00 pm
Fundamentally, the system simulates waves propagating across a planar surface. Each component wave is a sinusoid, and a detailed height field is generated by summing many such waves. The Fast Fourier Transform (FFT) provides an efficient way to perform the accumulation of the waves. For general background in this technique, see the classic paper by Tessendorf. The paper describes the method used for creating ocean water in the film ‘Titanic’, where the offline generation of images provides the luxury of using very large arrays in the FFT calculations – 2048 × 2048 grid points, with a grid resolution of 3cm. In real-time applications though, it quickly becomes apparent that the size of FFT array must be severely restricted. Consider also the need to render views in which details smaller than 3cm are visible. Our solution is to combine detail at many different scales. We employ only 32 × 32 FFTs, but many such height fields are summed from long wavelengths down to short wavelengths as required by each particular viewpoint. This is not unlike rendering fractal terrain, the major difference being that in the case of water the detail added at each level of detail (LOD) must be animated in a particular way.
 
We decided early on to devote much of the development budget to the modelling of interactive waves – waves emitted by local disturbances such as the impact of a projectile or a character wading through the water. The result is that while we feel the system is still lacking in certain features, we believe it demonstrates a technological first in games: interactive waves with the property of dispersion (a physically-based dependency between wavelength and wave velocity).
 
Full details: water.pdf
Source code (via Nocturnal Initiative): Nocturnal_igR2O_1.0.zip
0

0 COMMENTS

SHARE
BE THE FIRST TO LIKE THIS     LIKE     COMMENT

LEAVE A COMMENT



You must be logged in to add a comment
LATEST ARTICLES