Pinned
Xor
@xordev.com
· Sep 4
"Fragments"
vec3 p;
for(float i,z,f;i++<3e1;z+=f=.003+abs(length(p.xy)-5.+dot(cos(p),sin(p).yzx))/8.,o+=(1.+sin(i*.3+z+t+vec4(6,1,2,0)))/f)
for(p=z*normalize(FC.rgb*2.-r.xyy),p.z-=t,f=1.;f++<6.;p+=sin(round(p.yxz*PI2)/PI*f)/f);
o=tanh(o/1e3);
vec3 p;
for(float i,z,f;i++<3e1;z+=f=.003+abs(length(p.xy)-5.+dot(cos(p),sin(p).yzx))/8.,o+=(1.+sin(i*.3+z+t+vec4(6,1,2,0)))/f)
for(p=z*normalize(FC.rgb*2.-r.xyy),p.z-=t,f=1.;f++<6.;p+=sin(round(p.yxz*PI2)/PI*f)/f);
o=tanh(o/1e3);
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);
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 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);
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);
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);
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
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);
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);
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);
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
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);
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);
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)));
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
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)));
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)));
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);
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
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);
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);
Reposted by Xor
Hey #GameMaker devs!
Did you know 50% of your game is already done? You shouldn't be spending time in coding your own complex systems or getting headaches with perplexing shaders. So we present…
LIST OF FREE GAMEMAKER RESOURCES, SHADERS AND SCRIPTS
RT to save a live!
#indiegame #gamedev
Did you know 50% of your game is already done? You shouldn't be spending time in coding your own complex systems or getting headaches with perplexing shaders. So we present…
LIST OF FREE GAMEMAKER RESOURCES, SHADERS AND SCRIPTS
RT to save a live!
#indiegame #gamedev
October 30, 2025 at 9:01 AM
Hey #GameMaker devs!
Did you know 50% of your game is already done? You shouldn't be spending time in coding your own complex systems or getting headaches with perplexing shaders. So we present…
LIST OF FREE GAMEMAKER RESOURCES, SHADERS AND SCRIPTS
RT to save a live!
#indiegame #gamedev
Did you know 50% of your game is already done? You shouldn't be spending time in coding your own complex systems or getting headaches with perplexing shaders. So we present…
LIST OF FREE GAMEMAKER RESOURCES, SHADERS AND SCRIPTS
RT to save a live!
#indiegame #gamedev
Reposted by Xor
@xordev.com develops insane shaders specialised in procedural generation.
They have a page dedicated to tutorials. If this is your kind of thing or it can match with your game’s aesthetic, don’t miss out.
mini.gmshaders.com
They have a page dedicated to tutorials. If this is your kind of thing or it can match with your game’s aesthetic, don’t miss out.
mini.gmshaders.com
October 30, 2025 at 9:01 AM
@xordev.com develops insane shaders specialised in procedural generation.
They have a page dedicated to tutorials. If this is your kind of thing or it can match with your game’s aesthetic, don’t miss out.
mini.gmshaders.com
They have a page dedicated to tutorials. If this is your kind of thing or it can match with your game’s aesthetic, don’t miss out.
mini.gmshaders.com
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);
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
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);
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);
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);
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
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);
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);
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);
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
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);
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);
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);
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 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);
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);
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);
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 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);
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);
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);
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 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);
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);
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;
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
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;
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;
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);
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 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);
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);
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);
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
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);
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);
What is the best designed game?
October 22, 2025 at 7:32 PM
What is the best designed game?
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);
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
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);
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);
Reposted by Xor
Frosted glass globe! Here the frosting strength increases with the elevation of the terrain.
August 18, 2025 at 8:23 AM
Frosted glass globe! Here the frosting strength increases with the elevation of the terrain.
Reposted by Xor
Graphics Programming weekly - Issue 413 - October 19th, 2025 www.jendrikillner.com/post/graphic...
October 20, 2025 at 1:13 PM
Graphics Programming weekly - Issue 413 - October 19th, 2025 www.jendrikillner.com/post/graphic...
NEW Mini: 3D Rotation!
How to rotate in 3D with arbitrary axes. I tried to make this as accessible as I could
mini.gmshaders.com/p/3d-rotation
How to rotate in 3D with arbitrary axes. I tried to make this as accessible as I could
mini.gmshaders.com/p/3d-rotation
Mini: 3D Rotation
How to rotate with Euler Angles and Axis Angles
mini.gmshaders.com
October 19, 2025 at 1:08 AM
NEW Mini: 3D Rotation!
How to rotate in 3D with arbitrary axes. I tried to make this as accessible as I could
mini.gmshaders.com/p/3d-rotation
How to rotate in 3D with arbitrary axes. I tried to make this as accessible as I could
mini.gmshaders.com/p/3d-rotation
My new favorite implementation of 2D value noise:
float value1(vec2 x)
{
vec2 i = floor(x);
vec2 s = smoothstep(i, i+1.0, x);
return mix(mix(rand(i), rand(i + vec2(1,0)), s.x),
mix(rand(i+vec2(0,1)), rand(i + 1.0), s.x), s.y);
}
float value1(vec2 x)
{
vec2 i = floor(x);
vec2 s = smoothstep(i, i+1.0, x);
return mix(mix(rand(i), rand(i + vec2(1,0)), s.x),
mix(rand(i+vec2(0,1)), rand(i + 1.0), s.x), s.y);
}
October 16, 2025 at 4:58 PM
My new favorite implementation of 2D value noise:
float value1(vec2 x)
{
vec2 i = floor(x);
vec2 s = smoothstep(i, i+1.0, x);
return mix(mix(rand(i), rand(i + vec2(1,0)), s.x),
mix(rand(i+vec2(0,1)), rand(i + 1.0), s.x), s.y);
}
float value1(vec2 x)
{
vec2 i = floor(x);
vec2 s = smoothstep(i, i+1.0, x);
return mix(mix(rand(i), rand(i + vec2(1,0)), s.x),
mix(rand(i+vec2(0,1)), rand(i + 1.0), s.x), s.y);
}