precision highp float; uniform vec2 resolution; uniform vec2 mouse; uniform float time; uniform sampler2D backbuffer; out vec4 outColor; /* classic (300 es) 20秒 Mouse 🈶 */ mat2 rot(float a){float c=cos(a),s=sin(a);return mat2(c,-s,s,c);} void main() { vec2 r=resolution,uv=(gl_FragCoord.xy*2.-r)/min(r.x,r.y)+(mouse-.5); vec3 col = vec3(0.); float aa=0.,rnd; vec3 p,d=normalize(vec3(uv,1.-(.8-tanh(.5*sin(time+.1*dot(sin(floor(uv*9.5)),cos(floor(uv.yx*7.))))*25.+uv.x))*.8*sqrt(length(uv*.8)))); float g=0.; float bpm = floor(time)+pow(fract(time),.7-.1*fract(542.4*sin(dot(uv,vec2(243.4,578.4525))))); bpm*=5.; for(float i=0.,e;i++<20.;){for(aa=0.;aa++<3.;){ vec3 p = d*g; vec3 oop=p; p.z +=time; float path =(1.-tanh(1.-abs(p.x-sin(p.z*.5)*2.1+cos(p.z*.3)*.37))); vec3 op=p; p.y = -(abs(p.y)+(.5+asin(sin(p.z))*.25))+path; p.y -= -2.5; float qq=sign(p.y); p.y = abs(p.y)-1.05; if(qq < 0.)p.xz *=rot(.785); vec2 id = floor(p.xz); p.xz = fract(p.xz)-.5; float h =min(length(p.yz),length(p.xy))-.012; g+=e=max(.001,abs(h)*.6); float q = e<=.021 ?length(asin(sin((mod(time,6.28*2.)>6.28 ? length(id):0.)+oop.xz*.25+vec2(asin(sin(bpm*.5))-path,bpm*1.)+rnd)))*2. :.5; col+=max(vec3(0.),vec3(1.)*.75/exp(.25*i*i*e+q)); } } col = mix(col/aa,vec3(.1,.1,.25),.75-exp2(-g)); outColor=vec4(col,1.0); }