Procedural animated texture generation/Lava

==== Still lava ====
Adapted from https://github.com/UnknownShadow200/ClassiCube/wiki/MInecraft-Classic-lava-animation-algorithm#lava
Every frame, for each position in the still water texture array, the respective values for soup_heat, pot_heat and flame_heat are calculated as detailed below:
* 
** 
** 
* 
* 
* 
* 
** 
Once the above arrays have been updated, for each pixel in the lava texture, the color values are calculated based on soup_heat (alpha is always opaque for lava):
* 
* 
** 
** 
** 
The red, green and blue values are then converted to bytes and assigned to the texture accordingly.
==== Flowing lava ====
Flowing lava uses the exact same texture as still lava, however there is also a spatial translation to give the appearance of movement. This transformation moves the lava texture downwards by one pixel after a fixed amount of time, wrapping the bottom layer of the texture back to the top.