memoscan
← all memos

Memo 0xbf00ba9c…67e3eb on Ethereum

<!DOCTYPE html><html lang='en'><head><meta charset='UTF-8'><title>$CORPUS</title><style>*{box-sizing:border-box}html,body{margin:0;height:100%;overflow:hidden;background:#000;cursor:crosshair;font:11px 'Courier New',monospace}canvas{position:absolute;top:0;left:0;width:100%;height:100%}#overlay{position:absolute;inset:0;z-index:10;pointer-events:none;background:radial-gradient(circle,transparent 50%,rgba(0,0,0,.85) 100%)}</style></head><body><canvas id='glcanvas'></canvas><div id='overlay'></div><script id='frag' type='x-shader/x-fragment'> precision highp float; uniform vec3 iResolution;uniform vec2 iMouse;uniform float iTime,iBurst,iGM,iGranularity,iRotSpeed,iColorRichness,iSurfaceRichness,iSize,iFormulaBlend,iXyzFuse; float h1(float n){return fract(sin(n)*43758.5453);} float h2(vec2 p){return fract(sin(dot(p,vec2(12.9898,78.233)))*43758.5453);} float noise(vec3 p){vec3 i=floor(p),f=fract(p);f=f*f*(3.-2.*f);float n=i.x+i.y*57.+113.*i.z;return mix(mix(mix(h1(n),h1(n+1.),f.x),mix(h1(n+57.),h1(n+58.),f.x),f.y),mix(mix(h1(n+113.),h1(n+114.),f.x),mix(h1(n+170.),h1(n+171.),f.x),f.y),f.z);} float mapBulb(vec3 p){float pwr=7.+pow(sin(iTime*.7)*.5+.5,4.)*1.2+iBurst*2.+iGM*.35;vec3 z=p+exp(-length(p.xy-((iMouse/iResolution.xy)*2.-1.)*2.)*2.)*iBurst*.5*p;float dr=1.,r=0.;float mi=floor(mix(2.,8.,clamp(iGranularity*.1,0.,1.)));for(int i=0;i<8;i++){if(float(i)>=mi)break;r=length(z);if(r>2.)break;float th=acos(clamp(z.z/r,-1.,1.))*pwr,ph=atan(z.y,z.x)*pwr;dr=pow(r,pwr-1.)*pwr*dr+1.;z=pow(r,pwr)*vec3(sin(th)*cos(ph),sin(th)*sin(ph),cos(th))+p;}return .5*log(r)*r/dr+noise(p*(6.+iGranularity*.8)+iTime)*(.004+.0016*iGranularity+.001*iGM);} float mapMenger(vec3 p){float a=iTime*.07*(iRotSpeed*.2),c=cos(a),s=sin(a);p.xz*=mat2(c,-s,s,c);float a2=a*.33+.5,c2=cos(a2),s2=sin(a2);p.yz*=mat2(c2,-s2,s2,c2);p.xy+=((iMouse/iResolution.xy)*2.-1.)*(.03+iBurst*.1);float hole=1.+(.5+.5*sin(iTime*.45))*.06+iBurst*.2+iGM*.025;vec3 q=abs(p)-1.;float d=length(max(q,0.))+min(max(q.x,max(q.y,q.z)),0.),scl=1.;float mi=floor(mix(1.,6.,clamp(iGranularity*.1,0.,1.)));for(int i=0;i<6;i++){if(float(i)>=mi)break;vec3 a3=mod(p*scl,2.)-1.;scl*=3.;vec3 r=abs(1.-3.*abs(a3))*hole;float crs=(min(max(r.x,r.y),min(max(r.y,r.z),max(r.z,r.x)))-1.)/scl;d=max(d,crs);if((iBurst>.08||iGM>.08)&&i==2)d-=noise(p*6.+iTime*5.)*.035*(iBurst+.5*iGM);}return d+noise(p*(5.+iGranularity*.6)+iTime*.3)*(.0015+.0007*iGranularity+.0008*iGM);} float mengerShare(vec3 p){vec3 a=abs(p);float ax=max(a.x,max(a.y,a.z)),rd=length(p);return clamp(smoothstep(.62,.95,ax/max(rd,1e-3))+.12*sin(iTime*.27+ax*3.+rd*2.),0.,1.);} float map(vec3 p){float sc=mix(.3,2.2,clamp(iSize*.1,0.,1.));vec3 q=p/sc;float ra=iTime*.12*(iRotSpeed*.2);float cR=cos(ra),sR=sin(ra);q.xz*=mat2(cR,-sR,sR,cR);float rch=clamp(iSurfaceRichness*.1,0.,1.),fb=clamp(iFormulaBlend*.1,0.,1.),xz=clamp(iXyzFuse*.1,0.,1.);float sphere=length(q)-1.;if(rch<.02)return (sphere+noise(q*(5.+iGM*.4)+iTime*(.2+iGM*.05))*.06*iGM)*sc;float dF;if(xz<.001&&fb<.001)dF=mapBulb(q);else if(xz<.001&&fb>.999)dF=mapMenger(q);else{float dB=mapBulb(q),dM=mapMenger(q),wM=mengerShare(q);float k=mix(.02,.16,xz)+iBurst*.07,h=clamp(.5+.5*(dM-dB)/k,0.,1.);float dU=mix(dM,dB,h)-k*h*(1.-h);dF=mix(mix(dB,dM,fb),mix(mix(dB,dM,wM),dU,xz*.6),xz)+noise(q*(4.+iGranularity*.4)+iTime*.5)*.008*(.35+xz);}dF+=noise(q*(6.+iGM*.5)+iTime*(.4+iGM*.1))*.03*iGM;float d=mix(sphere,dF,rch);if(rch<.35)d=mix(sphere,d,rch/.35)+noise(q*4.+iTime*.15)*.02*(rch/.35);return d*sc;} vec3 getNormal(vec3 p){float e=mix(.003,.0008,clamp(iGranularity*.1,0.,1.));vec2 e2=vec2(e,0);return normalize(vec3(map(p+e2.xyy)-map(p-e2.xyy),map(p+e2.yxy)-map(p-e2.yxy),map(p+e2.yyx)-map(p-e2.yyx)));} void main(){vec2 uv=(gl_FragCoord.xy-.5*iResolution.xy)/iResolution.y;float cr=clamp(iColorRichness*.1,0.,1.),rch=clamp(iSurfaceRichness*.1,0.,1.);uv+=noise(vec3(uv*2.,iTime*.2))*.04*iBurst*rch;vec3 ro=vec3(3.6*cos(iTime*.1),1.1+sin(iTime*.3),3.6*sin(iTime*.1));vec3 ww=normalize(-ro),uu=normalize(cross(ww,vec3(0,1,0))),vv=cross(uu,ww);vec3 rd=normalize(uv.x*uu+uv.y*vv+1.5*ww),col=vec3(0);float he=mix(.003,.0012,clamp(iGranularity*.1,0.,1.));float sm=mix(.95,.86,clamp(iGranularity*.1,0.,1.));float t=0.;for(int i=0;i<72;i++){vec3 p=ro+rd*t;float d=map(p);if(d<he){vec3 n=getNormal(p),q=p/mix(.3,2.2,clamp(iSize*.1,0.,1.));float ra=iTime*.12*(iRotSpeed*.2);float cR=cos(ra),sR=sin(ra);q.xz*=mat2(cR,-sR,sR,cR);float diff=max(dot(n,normalize(vec3(1.1,2,-1))),0.)+max(dot(n,normalize(vec3(-1.2,.5,.7))),0.)*.3;float fres=pow(1.-max(dot(n,-rd),0.),5.),spec=pow(max(dot(n,normalize(normalize(vec3(1.1,2,-1))-rd)),0.),40.);float s1=smoothstep(0.,.25,cr),s2=smoothstep(.25,.5,cr),s3=smoothstep(.5,.625,cr),s4=smoothstep(.625,.75,cr),s5=smoothstep(.75,.875,cr);vec3 cB=mix(mix(mix(mix(mix(vec3(.32,.32,.36),vec3(.4,.3,.45),s1),vec3(.5,.15,.55),s2),vec3(1,.15,.2),s3),vec3(.15,.95,.25),s4),vec3(.2,.4,1),s5);vec3 cM=mix(mix(mix(mix(mix(vec3(.42,.38,.33),vec3(.6,.35,.25),s1),vec3(.8,.38,.18),s2),vec3(1,.25,.15),s3),vec3(.2,1,.3),s4),vec3(.25,.5,1),s5);vec3 cE=mix(mix(mix(mix(mix(vec3(.38,.42,.47),vec3(.25,.7,.85),s1),vec3(.1,.85,.95),s2),vec3(1,.3,.35),s3),vec3(.35,1,.4),s4),vec3(.4,.55,1),s5);vec3 rain=.5+.5*cos(6.28318*(fract((q.x+q.y+q.z)*.5+iTime*.1+(cr-.875)*2.)+vec3(0,.33,.67)));float rm=smoothstep(.875,1.,cr);cB=mix(cB,rain,rm);cM=mix(cM,rain*vec3(1,.9,.8),rm);cE=mix(cE,rain*vec3(.9,1,.95),rm);float wM=mengerShare(q),fb=clamp(iFormulaBlend*.1,0.,1.),xz=clamp(iXyzFuse*.1,0.,1.);vec3 base=mix(mix(cB,cM,fb),mix(cB,cM,wM),xz);base=mix(base,cE,fres*mix(.5,.75,cr));float box=mix(fb,wM,xz),edge=1.-smoothstep(.78,.98,max(abs(n.x),max(abs(n.y),abs(n.z))));base=mix(base,cE,edge*mix(.6,.95,cr)*box);base=mix(base,base*(.8+.2*sin(q.y*5.+iTime)),(1.-box)*.55);col=base*(diff+mix(.15,.09,cr))+vec3(.9,.95,1)*spec*(.3+.35*box)+fres*mix(1.2,1.6,cr)*mix(vec3(1),cE,cr*.55);break;}t+=d*sm;if(t>13.)break;}if(col==vec3(0))col=mix(vec3(.015,.01,.04),vec3(.025,0,.07),cr)*(1.+h2(uv+iTime)*.12);col*=.9+.1*sin(gl_FragCoord.y*1.5);float lum=dot(col,vec3(.299,.587,.114));col=mix(vec3(lum),mix(vec3(dot(mix(vec3(lum),col,cr),vec3(.299,.587,.114))),mix(vec3(lum),col,cr),mix(1.,mix(1.15,2.45,pow(cr,1.45)),cr)),1.);float mx=max(col.r,max(col.g,col.b)),mn=min(col.r,min(col.g,col.b));col=mix(col,mix(vec3(lum),(col-mn)/max(mx-mn,1e-4)*mx,1.15),pow(cr,1.6)*.55);col*=mix(1.,lum/max(dot(col,vec3(.299,.587,.114)),1e-3),.35*cr);gl_FragColor=vec4(pow(max(col,0.),vec3(mix(.82,.72,cr*cr))),1);} </script>