Simulating Fire using Javascript and Canvas
This is another javascript effect I did. I might use it on the loading screen of my next javascript game as it doesn't need any textures (just like the starfield in jswars). It's based on an effect I wrote about 6? years ago. Sadly the canvas tag doesn't support palettes natively and mapping the colors in javscript too slow so the colors look less than optimal. Also chrome seems to render the result differently from firefox. This could be related to this issue.
Demo
Click the image to start the effect
How it works
Basically there are two maps, the heat map and the cooldown map. The cooldown map is generated using a noise function similar to perlin noise.
The noise texture is generated by first randomizing the alpha values and then drawing scaled versions of the noise texture onto itself. The high frequency noise was increased to create more flickering in the flames. The heat map is what you see before you click on the example. The algorithm then basically works like this:
- Noise is draw on top of image to cool it down
- The whole image is shifted up one row
- The heat map is applied to 'heat up' the pixels
For more details just read the source and feel free to ask questions.