Perlin noise demo:
* Simple implementation of 2D Perlin noise.
* The gradient uses Math.random without a seed: this should not be used in a shader.