A relatively recent graphical technique has made procedural particle systems much more possible than in the past. Traditional particle rendering keeps the particle texture art static, while simulations are run on the particle triangles to simulate motion. Using UV displacement, however, with a separate texture or texture channel one can adjust the particle art itself by displacing the UV coordinates on the particle triangles.
UV coordinates are a set of numbers describing the location of a texture on the surface of the particle. This technique can push and pull the pixels in the particle texture around, allowing much more realistic simulations of fire, smoke, mist and other elements.