vec2 Hash(vec2 P) { return fract(cos(P*mat2(-64.2,71.3,81.4,-29.8))*8321.3); } float Worley(vec2 P) { float Dist = 1.; vec2 I = floor(P); vec2 F = fract(P); for(int X = -1;X<=1;X++) for(int Y = -1;Y<=1;Y++) { float D = distance(Hash(I+vec2(X,Y))+vec2(X,Y),F); Dist = min(Dist,D); } return Dist; } void main() { gl_FragColor = vec4(vec3(Worley(gl_FragCoord.xy/32.0+u_time)),1.0); } //created by jarreed0 at shadergrounds.com