/ ⠀ 𖣠⚪𔗢⚪🞋⚪𔗢⚪𖣠 ◦୦◦◯◦୦◦⠀ ⠀◦୦◦◯◦୦◦ 𖣠⚪𔗢⚪🞋⚪𔗢⚪𖣠 𔗢᯽𔗢 𔗢᯽𔗢 𖣠⚪𔗢⚪🞋⚪𔗢⚪𖣠 ◦୦◦◯◦୦◦⠀ ⠀◦୦◦◯◦୦◦ 𖣠⚪𔗢⚪🞋⚪𔗢⚪𖣠 ⠀ / 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.+1./sqrt(2.))), b=vec2(0,-(1.+1./sqrt(2.))), c=vec2((1.+1./sqrt(2.)),0), d=vec2(-(1.+1./sqrt(2.)),0), e=vec2(0), f=vec2((1./(3.sqrt(2.)-2.))), g=vec2(-(1./(3.sqrt(2.)-2.))), h=vec2((1./(3.sqrt(2.)-2.)),-(1./(3.sqrt(2.)-2.))), i=vec2(-(1./(3.sqrt(2.)-2.)),(1./(3.sqrt(2.)-2.)));
const float A=1./2.+sqrt(2.)/2., B=.5(3.-sqrt(8.)), C=.5(3.-sqrt(8.))/(3.-sqrt(8.)), D=sqrt(2.)/7.-1./14.;
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); } / ⠀ 𖣠⚪𔗢⚪🞋⚪𔗢⚪𖣠 ◦୦◦◯◦୦◦⠀ ⠀◦୦◦◯◦୦◦ 𖣠⚪𔗢⚪🞋⚪𔗢⚪𖣠 𔗢᯽𔗢 𔗢᯽𔗢 𖣠⚪𔗢⚪🞋⚪𔗢⚪𖣠 ◦୦◦◯◦୦◦⠀ ⠀◦୦◦◯◦୦◦ 𖣠⚪𔗢⚪🞋⚪𔗢⚪𖣠 ⠀ /