Page Not Found

We could not find the page you have requested.
Insomniac Games :: R&D
Insomniac Games - Page Not Found
  • Games
  • Careers
  • Community
  • Blogcast
  • About
  • Join the Insomniac Community Now
    • Already a Member? Login

Page Not Found

We could not find the page you have requested.

Resistance 2 Water Rendering

04/10/09 - 18:00 PST - Posted by Mike Day, Senior Engine Programmer

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).

For the details on how we accomplished this, see the attached document.

The full source code is also available as part of the Nocturnal Initiative. http://nocturnal.insomniacgames.com/releases/igR2O/Nocturnal_igR2O_1.0.zip

Download the paper