Xor
banner
xordev.com
Xor
@xordev.com
Shaderboy
xordev.com
Stairs
for(float i,z,d;i++<55.;o+=vec4(9,4,2,1)/d){vec3 p=z*normalize(FC.rgb*2.-r.xyy);for(d=0.;d++<9.;p+=sin(ceil(p/9.).zxy+t));z+=d=.1*abs(p.z+40.);}o=tanh(o/6e3);
January 7, 2026 at 12:59 AM
Artifacts
for(float i,z,d;i++<77.;o+=vec4(z,z,9,1)/d){vec3 p=z*normalize(FC.rgb*2.-r.xyy);p.xy+=t;
for(d=0.;d++<9.;p+=sin(round(p)+d*3.).zxy);
z+=d=abs(p.z/30.+.2);}o=tanh(o/8e4);
January 6, 2026 at 2:15 AM
Scatter 2
vec2 p=(2.*FC.xy-r)/r.y+.02/fract(dot(FC,sin(FC.yxyx)));
o=tanh((p.xyyx+p.xxyx+1.)*.01/abs(max(abs(p.x),abs(p.y))-.5));
December 18, 2025 at 7:40 PM
Scatter
vec2 u=(r-2.*FC.xy)/r.y,c=ceil((u*1e2+sin(u*3e2-t))/(.1+length(u))),p=u+.01*tan(dot(c,sin(c.yx)));o=tanh(tanh(vec4(p-.3,p))*.1/(abs(length(p)-.6)));
December 18, 2025 at 7:19 PM
Combustion
vec2 p=FC.xy*6./r.y;
for(float i;i++<1e1;i)
p+=sin(p.yx*i+i*i+t*i+r)/i;
o=tanh(.2/tan(p.y+vec4(0,.1,.3,0)));
o*=o;
December 1, 2025 at 11:24 PM
Lily
for(float i,z,d;i++<6e1;o+=vec4(z,9,1,1)/d/d){vec3 p=round(z*normalize(FC.rgb*2.-r.xyy)/.1)*.1;p.z-=9.;
for(d=0.;d++<9.;p+=.2*sin(p*d-t+z).yzx);z+=d=length(cos(p)-1.)/20.;}
o=tanh(o/3e5);
November 23, 2025 at 6:42 PM
Nether
for(float i,z,d;i++<6e1;o+=vec4(19,z,1,1)/d/d){vec3 p=z*normalize(FC.rgb*2.-r.xyy);p.z-=t;p=round(p/.1)*.1;
for(d=0.;d++<9.;p+=.2*cos(p*d+z).zzx);z+=d=abs(abs(p.y)-3.)/20.;}
o=tanh(o/7e5);
November 23, 2025 at 2:24 AM
Live demo (and new wallpaper):
twigl.app?ol=true&ss=-...
November 5, 2025 at 9:23 PM
CYBERSPACE 2
for(float i,z,d;z+i++<7e1;o+=vec4(z,1,9,1)/d)
{vec3 p=abs(z*normalize(FC.rgb*2.-r.xyy));p.z+=t*5.;p+=sin(p+p);for(d=0.;d++<9.;p+=.4*cos(round(.2*d*p)+.2*t).zxy);z+=d=.1*sqrt(length(p.xyy*p.yxy));}
o=tanh(o/7e3);
November 5, 2025 at 9:21 PM
CYBERSPACE
for(float i,z,d;z+i++<8e1;o+=vec4(z,4,1,1)/d)
{vec3 p=z*normalize(FC.rgb*2.-r.xyy);p.z+=t/.1;p-=sin(p+p);for(d=0.;d++<9.;p+=.7*cos(round(.2*d*p)+t*.5).zxy);z+=d=.1*sqrt(length(p.xyy*p.yxy));}
o=tanh(o/5e3);
November 5, 2025 at 9:03 PM
Whirl
for(float i,z,d,h;i++<8e1;o+=vec4(9,5,h+t,1)/d)
{vec3 p=z*normalize(FC.rgb*2.-r.xyy),a;p.z+=9.;a=mix(dot(a+=.5,p)*a,p,sin(h=dot(p,p/p)-t))+cos(h)*cross(a,p);
for(d=0.;d++<9.;a+=.3*sin(a*d).zxy);z+=d=length(a.xz)/15.;}
o=tanh(o/1e4);
November 5, 2025 at 2:03 PM
Fun little pattern:

vec2 p=(FC.xy*2.-r)/r.y*2e1;
o=tanh(vec4(1,1,2,1)/length(p*.2+tan(sin(p+=t).yx+p)));
November 4, 2025 at 2:14 PM
Repulser
for(float i,z,d,h;i++<4e1;o+=vec4(h,1,4,1)/d){vec3 p=z*normalize(FC.rgb*2.-r.xyy),a;a.y++;p.z+=6.;a=mix(dot(a,p)*a,p,sin(h=t-length(p*p.yzx)))+cos(h)*cross(a,p);for(d=0.;d++<9.;a-=cos(round(a*d)+t).zxy/d);z+=d=.1*length(a.xz);h=p.y+4.;}o=tanh(o/2e3);
November 3, 2025 at 10:41 PM
Depth
vec3 p,v=vec3(1,2,1);for(float d,i,z;i++<4e1;o+=(cos(i/4.+vec4(2,1,6,0))+1.)/d/d)p=z*normalize(FC.rgb*2.-r.xyy),d=abs(z-3.+cos(t)/.7)/2e1,z+=d=.6*max(d,length(abs(fract(p/v)-.5)*v-.1)-d);o=tanh(o/3e4);
October 29, 2025 at 3:18 PM
Merge
vec3 p;for(float d,i,z;i++<5e1;o+=(cos(z+vec4(2,1,0,0))+1.)/d/z)
p=z*normalize(FC.rgb*2.-r.xyy),p.z+=t,d=abs(.04*z-.4),z+=d=.4*max(d,length(min(p=cos(p+z),p.yzx))-d);o=tanh(o*o/6e3);
October 28, 2025 at 11:40 PM
Chords
vec3 p;for(float d,i,z;i++<5e1;o+=(cos(i/9.+vec4(2,1,0,0))+1.)/d/z)
p=z*normalize(FC.rgb*2.-r.xyy),p.z-=t,d=abs(.01*z-.1),z+=d=max(d,.5*length(vec2(3.-abs(p.y)+dot(cos(p+.3*t),sin(.3*t-.6*p.yzx)),cos(p/.3-p.z)*.3))-d);
o=tanh(o/8e1);
October 27, 2025 at 2:19 PM
Square bokeh
October 27, 2025 at 1:46 PM
Bitdumb 4

vec2 p=.5*(FC.xy-.5*r)/r.y,v;for(float i;i++<6.;o+=fract(length(round(p))/exp2(i/4.)-t*.5)*vec4(.1/abs(fract(p)-.5).yxx/i,1)*(1.-o.a))p*=mat2(2,2,-2,2);o=tanh(o*o+dot(o,o)/1e2);
October 24, 2025 at 2:58 PM
Bitdumb 3

vec2 p=(FC.xy-.5*r)/r.y,v;for(float i;i++<6.;o+=fract(length(round(p))/exp2(i)-t*.5)*vec4(.04/abs(fract(p)-.5).xxy,1)*(1.-o.a))p+=p;o=tanh(o*o+dot(o,o)/1e2);
October 24, 2025 at 2:51 PM
Bitdumb 2

vec2 p=(FC.xy-.5*r)/r.y,v;for(float i;i++<20.;o+=vec4(.03/abs(fract(p)-.5).xyx,fract(t*.2+length(round(p)+i)/i))*(1.-o.a))p+=vec2(p.y,-p);o=tanh(o*o+dot(o,o)/1e2);
October 24, 2025 at 2:50 PM
Bitdumb
vec2 p=(round(FC.xy)-.5*r)/r.y,v;for(float i;i++<20.;o+=vec4(fwidth(v=ceil(p)).xyy,fract(length(v)/i-t*.2))*(1.-o.a))p+=p;
October 24, 2025 at 2:23 PM
Aperture 2
vec3 p;
for(float d,i,z;i++<1e2;o+=(cos(z+vec4(0,1,2,0))+1.5)/d/z)
p=z*normalize(FC.rgb*2.-r.xyy),p.z-=t,d=abs(.01*z-.1),z+=d=max(d,.6*length(max(p=sin(p)*sin(p.yzx),p.yzx)-.7)-d);
o=tanh(o/1e2);
October 23, 2025 at 5:51 PM
Aperture
vec3 p;
for(float d,i,z;i++<1e2;o+=(cos(z*.3+vec4(0,1,2,0))+2.)/d/z)
p=z*normalize(FC.rgb*2.-r.xyy),p.z-=t-z*.6,d=abs(.03*z-.3),z+=d=max(d,length(max(p=cos(p),p.yzx))-d);
o=tanh(o*o/9e2);
October 23, 2025 at 5:26 PM
Pulse
vec3 p,v;for(float i,z,d;i++<5e1;o+=vec4(3,z,6,1)/d/z)
p=z*normalize(2.*FC.rgb-r.xyy),p.z+=9.,p=dot(v=normalize(cos((t+i)/2.+vec3(6,1,4))),p)*v+cross(v,p),z+=d=.2*length(p.xy/vec2(1,9));
o=tanh(o/2e2);
October 22, 2025 at 2:44 PM
October 20, 2025 at 6:39 PM