I saw the presentation of the paper “Curl Noise for Procedural Fluid Flow” on Tuesday. I’ve wanted to use velocity fields to advect particles in games for quite a while now, including procedural noise fields. Naively I thought I would want to use Perlin noise, however, it turns out that Perlin noise velocity fields aren’t the best choice since they have ‘sinks’ where all of the particles will eventually languish. The ‘Curl Noise’ paper cleverly presents a noise which is divergence-free by construction (since it is defined as the curl of a potential field). More importantly, it looks very fluid-like and convincing; either laminar or turbulent flow are possible with a fine degree of control. The authors also present methods to have the flow go around objects (even moving objects). This looks very relevant for games – I will read the paper more carefully when I get home for the implementation details (the paper, animations and example code are available here).