Content area
Full Text
ABSTRACT
Simulating fire, flames or other natural phenomena can be difficult because of the inherently complex systems used to model them, while also requiring an adequate amount of realism visually. Simulating such a system in real-time can also be a problem if the system is too large, so a parallel computing techniques can be used to good effect. Particle systems have been shown to simulate flames and fires particularly well at relatively low computational cost. We describe how a simple particle system approach can be used to simulate a fire or flame in real-time in conjunction with using data parallelization, achieving a substantial performance speed up on graphical processing units (GPUs). Using NVidia's Compute Unified Device Architecture (CUDA) and OpenGL interoperability functionality allows for further performance increases when rendering the simulation with GPUs. Additionally, different rendering techniques are used to investigate trade-offs between performance speed and visual realism.
KEY WORDS
fire; flames; visualisation; rendering; simulation; turbu- lence; GPU
1 Introduction
Fire and flame simulation is an interesting and important area of research in computer graphics [3]. As with most natural phenomena, it can be a challenging to simulate, par- ticularly due to its complex, turbulent nature [12]. To sim- ulate such a complex system in real time is difficult even by today's computing power standards. Sufficient realism is an important aspect of fire simulation as well, and thus many different rendering techniques have emerged to make the simulated fire look and behave as convincingly as pos- sible. Fire simulation has applications in many industries, such as movie making special effects, video games and sci- entific visualization, as well as areas such as fire control and military emulation [19] [6].
To date there have been many methods on simulating and rendering a fire or flame in real time. Some methods include using a spring-mass model to model flame kinematics [1] allowing external forces such as gravity and wind to be in- corporated for added realism, or a method for rendering fire on the surface of a polygon mesh [2] by generating points on the surface of the polygon and using individual flame primitives to render the fire, or by simulating the fire as an "evolving front" of particles [9] moving across a polygonal mesh....