Water Rendering and Simulation using vertex and fragment programming

Guillaume Conte

Line

Report

Report

GOAL

To simulate and render a realistic water surface in real time and in 3D using exclusively the GPU: to compute the movements of the water and its reflections/diffractions/refractions properties, and to render everything in 3D using vertex and fragment programs. More specifically, the simulation part will generate a height field that will be used to do displacement mapping (per vertex or per pixel). Others vertex/fragment programs will be use to add reflections/diffractions/refractions, etc.

MOTIVATION

Simulating and rendering water is a complex problem due to water's physical properties. And it requires a tremendous amount of processing power. By now, GPUs are becoming extremely powerful, so it could be a good idea to offload most of the workload from the CPU to the GPU.

PERSONAL INTEREST

I chose that project for two reasons. First, I'm absolutely fascinated by the sea, and everything that's related to water. Second, since the release of the GeForce 3 I really wanted to learn how to use the vertex/pixels shaders, but I never had time to do so. So I think this project will allow me to explore in-depth vertex/fragment programming while dealing with something that I really like.

PREVIOUS WORK

A lot of work has been done in water simulation and rendering.

NOVEL ASPECTS

On that point I'm not really sure. A lot of work has been done on water simulation and rendering, but I didn't find any paper/project where you have displacement mapping and simulation done on the GPU. Usually displacement mapping is used to render realistic water without real simulation (faster than using FFT, and still looks cool/realistic).

DEMONSTRATION

I plan to show at least one demo of my work (3D scene with animated water surface), and a set of slides describing the different techniques I used, and how I implemented them.

Valid XHTML 1.0 Transitional