GLSL noise generation without branching, casting, or trig functions (probably slower than using the fract(sin(x)) method, but it was an interesting challenge)