Keenan Crane

Email
Office 329 Annenberg
Phone (502) 821-3239
Mail MC 305-16 
California Institute of Technology
1200 E California Blvd
Pasadena, CA 91125
Calendar
Home Images Misc. Projects Publications CV Links
 
GPU Fluid Solver

Executables

Videos

High-res videos:

Smoke videos from NVIDIA's site:

Hellgate Demo:

During my time at NVIDIA I wrote a 3D Navier-Stokes fluid solver that runs entirely on the GPU. Fluid solvers are used to generate realistic, physically-based animations of water and smoke. Typically it takes several minutes or hours to generate each frame of animation, but by making some minor compromises in visual quality and taking advantage of the GPU's parallelism and bandwidth the solver is fast enough for real-time applications (e.g., around 120-180 frames per second at 64x64x128 on a GeForce 8800 GTX). I'm currently preparing a chapter that covers some of these ideas for GPU Gems 3.

The solver was used to generate interactive smoke in a launch demo for NVIDIA's GeForce 8800. NVIDIA is currently working with developers to integrate this technology into next generation games -- it is already being used in Flagship Studios' Hellgate: London (video: QuickTime, Windows Media).

The solver also tracks free surfaces (e.g., the interface between air and water). The water images below were generated using a GPU level set ray tracer, which runs alongside the solver in real time. The smoke images were also rendered via ray marching.

Update: In the executable available from NVIDIA's site, you may observe some artifacts when introducing large velocities into the simulation (e.g., when dragging the mouse around quickly). This version of the solver uses a BFECC advection scheme to improve detail in the fluid, but unfortunately the scheme is not unconditionally stable. You can toggle BFECC on and off with the b key, which should eliminate the artifacts. (At some point I'll upload a more recent version that uses an unconditionally stable MacCormack scheme.)

Update: Added a couple videos comparing various numerical schemes, precision, etc.:

More details to come...

Blood:
This video was simulated and rendered on a 256x128x128 grid "offline," i.e. at about 11 frames per second on GeForce 8800. Each frame took about 0.056 seconds for simulation and 0.035 seconds for rendering. As in the water video below, the fluid is being pushed around by an invisible source of velocity controlled by the mouse.


Video (DivX, 8.97 MB)

Fire: walk with me


Video (DivX, 5.38 MB)

Water:
The water in this scene is being pushed around by a phantom source of velocity controlled by the mouse. The video was captured for debugging purposes, so there are still a few artifacts.


Video (DivX, 8.74 MB)


Smoke:
In this video an emitter constantly pours smoke into the box. To prevent the box from filling up, artificial dissipation was added.


Video (DivX, 24.3 MB)


An older image of rising smoke:

Most of this content is probably copyright 1984-2006 Keenan Crane.   Spam bots: please send spam to l22sk2_2xf1t4@hotmail.com.