I'm curious about how you did the explosion "gradients". Some sort of shader magic maybe?
Yup. 5 different dither textures and a canvas/framebuffer containing the density of the explosion/smoke. For values between 0 and 0.2 it takes the first dither and so on. The dithering is scaled so it's not as small as a pixel, that would be boring.