Simulating smoke with particles
Smoke is characterized by many small particles that float away from the source, and spread out as they move through the air. We can simulate the floatation effect with particles by using a small upwards acceleration (or constant velocity), but simulating the diffusion of each small smoke particle would be too expensive. Instead, we can simulate the diffusion of many small particles by making our simulated particles change their size (grow) over time.
The following image shows an example of the results:
The texture for each particle is a very light "smudge" of grey or black color.
To make the particles grow over time, we'll make use of the GL_PROGRAM_POINT_SIZE
functionality in OpenGL, which allows us to modify the point size within the vertex shader.
Getting ready
Start with the basic particle system presented in the recipe Creating a particle system using transform feedback.
Set the uniform variable Accel
to a small upward value like (0.0, 0.1, 0.0).
Set the uniform...