GLSL noise generation without branching, casting, or trig functions (probably slower than using the fract(sin(x)) method, but it was an interesting challenge). I wrote an article explaining the noise function here.