In traditional photography and film, a diffusion filter is used to soften light from a flash or stationary lamp. Specialized lenses are available for this purpose, but the effect can be cheaply replicated by smearing petroleum jelly over the light (seriously) or by shooting through a sheet of nylon.
In image processing, a diffusion filter often means something else entirely. Photoshop’s “Diffuse” filter randomly rearranges pixels within a set radius. (GIMP can do the same thing, but the effect is more accurately titled “Spread.”) This effect can be animated for a cheap explosion effect – something a number of SNES, Genesis, and DOS games used to great effect.
This project demonstrates a simple, real-time method for replicating such an effect. All code is commented and reasonably optimized, and an animated “special effect” version is provided for those interested. Unlike Photoshop, this routine allows you to specify separate horizontal and vertical max random distances, as well as the ability to wrap pixels around image edges.
DISCLAIMER: These download files are regularly scanned to ensure they remain free from malicious content. Unfortunately, some virus scanners will flag these .zip files as suspicious simply because they contain source code and/or executable files. I have submitted my projects to a number of companies in an attempt to rectify these false-positives. Some have been cooperative. Others have not. If your virus scanner alerts you regarding these files, please allow the file to be submitted for further analysis (if your program allows for that). This should help ensure that any false-positive warnings gradually disappear for all users.
This site - and its many free downloads - are 100% funded by donations. Please consider a small contribution to fund server costs and to help me support my family. Even $1.00 helps. Thank you!