### Summary This paper expands Stam's Stable fluids to better simulate and render gasses such as smoke, and also accounts for objects within the simulation obstructing fluid flow. ### Problem Semi-Lagrangian schemes (those defined on Eulerian grids, such as in their previous paper) can exhibit numerical dissipation where the vortices are smaller than the grid sizes. ### Methods used They overcome the problem of numerical dissipation by adding back in vorticity wherever small-scale features should be generated but aren't. In what they call "vorticity confinement', they use a physically-based method that promotes the passive rolling of smoke and gives the smoke a realistic turbulent look on coarse grids. In addition to vorticity confinement, they also move their velocities away from the grid centers and place them on each grid face. According to them, this improves their results and lessens artificial dissipation. Also in this paper, they present and discuss both they raytracing solution and their hardware renderer. ### Key ideas Vorticity confinement: Identify small vorticity detail as curl of vector field = W. Find normalized gradient of the "vorticity field" = N. Using gradient, identify magnitude and direction of force as N cross W and add it back in. Fluid advection: Advect as before, but clip the path of particle path against the face of the boundary voxel if it moves out of current voxel.