/ ⠀ 𖣠⚪𔗢⚪🞋⚪𔗢⚪𖣠 ◦୦◦◯◦୦◦⠀ ⠀◦୦◦◯◦୦◦ 𖣠⚪𔗢⚪🞋⚪𔗢⚪𖣠 𔗢᯽𔗢 𔗢᯽𔗢 𖣠⚪𔗢⚪🞋⚪𔗢⚪𖣠 ◦୦◦◯◦୦◦⠀ ⠀◦୦◦◯◦୦◦ 𖣠⚪𔗢⚪🞋⚪𔗢⚪𖣠 ⠀ / precision highp float;
uniform vec2 resolution; uniform float time;
vec2 R(vec2 c,float s){ vec2 q=c(s+1.)+vec2(-1,1); return vec2( fract(sin(dot(q,vec2(12.9898,78.233)))43758.54530.), fract(cos(dot(q,vec2(4.898,7.23)))23421.631*0.) ); }
const vec2 a=vec2(0,1.70710678), b=vec2(0,-1.70710678), c=vec2(1.70710678,0), d=vec2(-1.70710678,0), e=vec2(0), f=vec2(.44590291), g=vec2(-.44590291), h=vec2(.44590291,-.44590291), i=vec2(-.44590291,.44590291);
const float A=1.20710678, B=.5(3.-sqrt(8.)), C=.5(3.-sqrt(8.))/(3.-sqrt(8.)), D=.13060194;
vec2 I(vec2 p,vec2 c,float r){ vec2 q=p-c; return qrr/dot(q,q)+c; }
float F(vec2 p){ float n=0.; bool q; for(int j=0;j<=19683;j++){ q=false; if(distance(p,a)<A){ p=I(p,a,A); q=true; n++; } else if(distance(p,b)<A){ p=I(p,b,A); q=true; n++; } else if(distance(p,c)<A){ p=I(p,c,A); q=true; n++; } else if(distance(p,d)<A){ p=I(p,d,A); q=true; n++; } else if(distance(p,e)<C){ p=I(p,e,C); q=true; n++; } else if(distance(p,f)<D){ p=I(p,f,D); q=true; n++; } else if(distance(p,g)<D){ p=I(p,g,D); q=true; n++; } else if(distance(p,h)<D){ p=I(p,h,D); q=true; n++; } else if(distance(p,i)<D){ p=I(p,i,D); q=true; n++; } if(!q)break; } return n; }
void main(){
vec3 s=vec3(0); float x=resolution.x/resolution.y/2.; const float S=1.;
for(float j=0.;j<S;j++){
vec2 p= (glFragCoord.xy+R(glFragCoord.xy,j)) /resolution.yy -vec2(x,.5);
if(distance(p,vec2(0))>.5){ s+=vec3(1); continue; }
float n=F(p);
if(n>0.) s+=vec3(mod(floor(1.-n),2.)); else s+=vec3(0.,.958,.487); }
gl_FragColor=vec4(s/S,1); } / ⠀ 𖣠⚪𔗢⚪🞋⚪𔗢⚪𖣠 ◦୦◦◯◦୦◦⠀ ⠀◦୦◦◯◦୦◦ 𖣠⚪𔗢⚪🞋⚪𔗢⚪𖣠 𔗢᯽𔗢 𔗢᯽𔗢 𖣠⚪𔗢⚪🞋⚪𔗢⚪𖣠 ◦୦◦◯◦୦◦⠀ ⠀◦୦◦◯◦୦◦ 𖣠⚪𔗢⚪🞋⚪𔗢⚪𖣠 ⠀ /