float r(vec2 n) { return fract(cos(dot(n,vec2(70.26,200.12)))*900.63); } float noise(vec2 n) { vec2 fn = floor(n); vec2 sn = smoothstep(vec2(0),vec2(1),fract(n)); float h1 = mix(r(fn),r(fn+vec2(1,0)),sn.x); float h2 = mix(r(fn+vec2(0,1)),r(fn+vec2(1)),sn.x); return mix(h1,h2,sn.y); } float value(vec2 n) { float total; total = noise(n/32.)*0.5454+noise(n/16.)*0.1+noise(n/8.)*0.1 +noise(n/4.)*0.05+noise(n/2.)*0.8763+noise(n)*0.0333; return total; } void main() { gl_FragColor = vec4(vec3(value(u_time*16.+gl_FragCoord.xy/4.)),3.0); } //created by firstuser at shadergrounds.com