0x122cdf09…f8b5sent to0x99a9b7c1…b069·#16,578,525·view on Etherscan
ec4( position, 0.0, 1.0 );\n}"),frag:n("#version 300 es\nprecision highp float;\n#define GLSLIFY 1\nin vec3 v_color;\nout vec4 color;\n\nvoid main() {\n vec2 uv = gl_PointCoord.xy - .5;\n color = vec4( v_color, 1.0 );\n}"),attributes:{a_extras:{data:a,size:4}},transformFeedbacks:{a_position:{data:t,size:2,usage:e.STREAM_COPY,varying:"v_position"},a_velocity:{data:o,size:2,usage:e.STREAM_COPY,varying:"v_velocity"},a_extras:{data:a,size:4,usage:e.STREAM_COPY,varying:"v_extras"}},count:r,mode:e.POINTS}),Nn.fb=d(e,{width:an.height,height:an.height,type:e.FLOAT,internalFormat:e.RGBA32F,singular:!0})};let Yn=0;const Hn=(n,e)=>{Nn.renderer.bindVAOs(),Nn.renderer.bindTransformFeedbacks(),n.bindFramebuffer(n.FRAMEBUFFER,Nn.fb.read.fb),n.activeTexture(n.TEXTURE0),n.bindTexture(n.TEXTURE_2D,vn.blurTexture),n.activeTexture(n.TEXTURE1),n.bindTexture(n.TEXTURE_2D,bn.blurTexture),n.activeTexture(n.TEXTURE2),n.bindTexture(n.TEXTURE_2D,On.fb.read.targetTexture),n.activeTexture(n.TEXTURE3),n.bindTexture(n.TEXTURE_2D,An.fb.read.targetTexture),Nn.renderer.bindUniform("u_particlemap",0),Nn.renderer.bindUniform("u_dvmap",1),Nn.renderer.bindUniform("u_sunTex",2),Nn.renderer.bindUniform("u_forceTex",3),Nn.renderer.bindUniform("u_frame",Yn++),Nn.renderer.bindUniform("u_renderPer",e),Nn.renderer.bindUniform("u_rand",Gn.random_dec()),Nn.renderer.bindUniform("u_invRes",[Vn,Vn]),Nn.renderer.bindUniform("u_res",[Nn.fb.width,Nn.fb.height]),Nn.renderer.bindUniform("u_sunPos",an.sunPos),Nn.renderer.bindUniform("u_sunRad",an.sunRad),Nn.renderer.bindUniform("u_haziness",an.cloudiness+an.cityHaze),Nn.renderer.bindUniform("u_activity",an.solarActivity),Nn.renderer.bindUniform("u_intensity",an.solarIntensity),Nn.renderer.bindUniform("u_flareIntensity",an.flareIntensity),Nn.renderer.bindUniform("u_rf0",an.rf0),Nn.renderer.bindUniform("u_rf1",an.rf1),n.clear(n.DEPTH_BUFFER_BIT),n.clear(n.DEPTH_BUFFER_BIT|n.COLOR_BUFFER_BIT),n.enable(n.BLEND),n.blendEquationSeparate(n.FUNC_ADD,n.MAX),n.blendFuncSeparate(n.ONE,n.ONE,n.ONE,n.ONE),Nn.renderer.render(Nn.fb.width,Nn.fb.height),n.disable(n.BLEND),Nn.fb.swap()};const Wn=c(),Kn=new Float32Array([-1,-1,3,-1,-1,3]),jn=new Float32Array([0,0,2,0,0,2]),Jn={},Qn=new Float32Array(4*(an.numStars*an.numStars)).fill(0);let Zn=an.height,$n=an.height;for(let n=0;n<an.numStars*an.numStars;n++){const e=4*n;let r=Wn.random_num(0,Zn),t=Wn.random_num(0,$n);Qn[e]=r,Qn[e+1]=t,Qn[e+2]=2*Math.pow(Wn.random_dec(),12)+.25,Qn[e+3]=0}const ne=e=>{Jn.renderer=s(e,{vert:n(sn),frag:n("#version 300 es\nprecision highp float;\n#define GLSLIFY 1\n\nuniform sampler2D u_starsTex;\nuniform int u_res;\nuniform float u_invRes;\n\nout vec4 color;\n\nvec3 sdgCircle( in vec2 p, in float r ) {\n float d = length(p);\n return vec3( d-r, p/d );\n}\n\nvec3 sdgMin( in vec3 a, in vec3 b ){\n return (a.x<b.x)?a:b;\n}\n\nvoid main() {\n vec3 mySdg = vec3( 100000.0, 0.0, 0.0 ); \n float myRadius = 100000.0;\n\n\tfloat dres \t\t= u_invRes * 0.5;\n \tfor( int x=0; x<u_res; x++ ){\n\t\tfloat xp = float( x ) * u_invRes + dres;\n\t\tfor( int y=0; y<u_res; y++ ){\n\t\t\tfloat yp \t\t= float( y ) * u_invRes + dres;\n\n\t\t\tvec2 uv\t\t = vec2( xp, yp );\n\t\t\tvec4 data \t\t= texture( u_starsTex, uv, 0.0 );\n\t\t\tvec2 p \t\t = data.xy;\n\t\t\tfloat r\t\t = data.z; \n\t\t\t\n\t\t\tvec2 dir \t\t= gl_FragCoord.xy - p;\n\t\t\tvec3 sdg = sdgCircle( dir, r );\n float dist\t\t= length( dir );\n\n mySdg = sdgMin( sdg, mySdg );\n mySdg.yz = normalize( mySdg.yz );\n\n if( dist < r ){\n myRadius = r;\n }\n\t\t}\n\t}\n\n vec4 sdfData = vec4( mySdg, myRadius );\n\n color = sdfData;\n}"),attributes:{position:{data:Kn,size:2},uv:{data:jn,size:2}},count:3}),Jn.fb=d(e,{width:an.height,height:an.height,type:e.FLOAT,internalFormat:e.RGBA32F,tiling:e.REPEAT}),Jn.starsTexture=e.createTexture(),e.bindTexture(e.TEXTURE_2D,Jn.starsTexture),e.texImage2D(e.TEXTURE_2D,0,e.RGBA32F,an.numStars,an.numStars,0,e.RGBA,e.FLOAT,Qn),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,e.NEAREST),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MAG_FILTER,e.NEAREST),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE)},ee=n=>{Jn.renderer.bindVAOs(),n.bindFramebuffer(n.FRAMEBUFFER,Jn.fb.write.fb),n.activeTexture(n.TEXTURE0),n.bindTexture(n.TEXTURE_2D,Jn.fb.read.targetTexture),n.activeTexture(n.TEXTURE1),n.bindTexture(n.TEXTURE_2D,Jn.starsTexture),Jn.renderer.bindUniform("u_framebuffer",0),Jn.renderer.bindUniform("u_starsTex",1),Jn.renderer.bindUniform("u_res",an.numStars),Jn.renderer.bindUniform("u_invRes",1/parseFloat(an.numStars)),Jn.renderer.render(Jn.fb.width,Jn.fb.height),Jn.fb.swap()};const re=new Float32Array([-1,-1,3,-1,-1,3]),te=new Float32Array([0,0,2,0,0,2]),oe={},ae=e=>{oe.renderer=s(e,{vert:n(sn),frag:n("#version 300 es\nprecision highp float;\n#define GLSLIFY 1\nin vec2 v_uv;\nout vec4 color;\n\nuniform vec2 u_res;\nuniform sampler2D u_stars;\n\nuniform float u_cityHaze;\nuniform float u_rf0;\nuniform float u_rf1;\n\nvoid main() {\n vec2 frag = gl_FragCoord.xy;\n vec2 uv = frag / u_res;\n vec4 data = texture( u_stars, uv );\n float sd = data.x;\n float sr = data.w;\n color.xyz = vec3( ( 1.0 - uv.y ) * u_cityHaze * 0.2 );\n color.xyz += vec3( smoothstep( 0.0, -sr, sd ) );\n}\n"),attributes:{position:{data:re,size:2},uv:{data:te,size:2}},count:3}),oe.fb=d(e,{width:an.height,height:an.height,type:e.FLOAT,internalFormat:e.RGBA32F})},ie=n=>{oe.renderer.bindVAOs(),n.bindFramebuffer(n.FRAMEBUFFER,oe.fb.write.fb),n.activeTexture(n.TEXTURE0),n.bindTexture(n.TEXTURE_2D,oe.fb.read.targetTexture),n.activeTexture(n.TEXTURE1),n.bindTexture(n.TEXTURE_2D,Jn.fb.read.targetTexture),oe.renderer.bindUniform("u_framebuffer",0),oe.renderer.bindUniform("u_stars",1),oe.renderer.bindUniform("u_res",[an.height,an.height]),oe.renderer.bindUniform("u_cityHaze",an.cityHaze),oe.renderer.bindUniform("u_rf0",an.rf0),oe.renderer.bindUniform("u_rf1",an.rf1),oe.renderer.render(oe.fb.width,oe.fb.height),oe.fb.swap()};const se=c(),de=new Float32Array([-1,-1,3,-1,-1,3]),ue=new Float32Array([0,0,2,0,0,2]);let fe=an.numPlanets,ce=an.eventId,le=an.compId,me=an.sunPos[0],ve=an.sunPos[1],_e=an.sunRad,pe=an.sunSign,be=an.height,ge="const vec3 planets["+fe+"] = vec3["+fe+"](";const he={},xe=e=>{for(let n=0;n<fe;n++){let e=be/2+.01,r=be/2,t=100*Math.pow(se.random_dec(),4)+5;if(0==ce)r=-1e4;else if(1==ce)0==n?(r=ve,t=1.02*_e):(r=ve+se.random_num(1*_e,8*_e)*Math.sign(se.random_dec()-.5),t=_e*(.1*Math.pow(se.random_dec(),6)+.05));else if(2==ce)if(7==le)t=se.random_num(200,300);else if(0==n){let n=se.random_num(.3*_e,.5*_e)*Math.sign(se.random_dec()-.5)*2;r=ve+n,t=_e}else r=ve+se.random_num(_e,5*_e)*Math.sign(se.random_dec()-.5),t=_e*se.random_num(.03,.1);else 3==ce?0==n?(r=ve,t=_e*se.random_num(.5,.8)):(r=ve+se.random_num(_e,5*_e)*Math.sign(se.random_dec()-.5),t=_e*se.random_num(.03,.1)):4==ce?(t=_e*(.25*Math.pow(se.random_dec(),6)+.005)*3,0==n?se.random_bool(.5)?(t=se.random_num(.05*_e,.2*_e),r=ve+(_e-t)*Math.sign(se.random_dec()-.5)):(t=se.random_num(.025*_e,.2*_e),r=ve+(_e+t+se.random_num(-100,100))*Math.sign(se.random_dec()-.5)):r=ve+se.random_num(1*_e,8*_e)*Math.sign(se.random_dec()-.5)):5==ce&&(4==le?(r=ve-se.random_num(.3*_e,3*_e)*pe,t=se.random_num(5,20)):5==le?(e=me-se.random_num(.5*_e,2*_e)*pe,t=se.random_num(2,10)):6==le?(r=ve+se.random_num(.5*-_e,.5*_e),t=_e*(.1*Math.pow(se.random_dec(),6)+.01)):(r=ve+se.random_num(1*_e,16*_e)*Math.sign(se.random_dec()-.5),n>0&&(t=_e*(.1*Math.pow(se.random_dec(),6)+.05))));ce>0&&((r<.1*be||r>.9*be)&&(r=se.random_num(.2*be,.8*be)),(e<.2*be||e>.8*be)&&(e=se.random_num(.3*be,.7*be))),ge+="vec3("+e+","+r+","+t+")",ge+=n<fe-1?", ":");"}console.log(ge),he.renderer=s(e,{vert:n(sn),frag:n("#version 300 es\nprecision highp float;\n#define GLSLIFY 1\n\nuniform vec2 u_res;\nuniform int u_numPlanets;\n\nout vec4 color;\n\n#define PI 3.14159265359\n#define TAU 6.28318530718\n\n%%planets%%\n\nvec3 sdgCircle( in vec2 p, in float r ) \n{\n float d = length(p);\n return vec3( d-r, p/d );\n}\n\nvec3 sdgMin( in vec3 a, in vec3 b )\n{\n return (a.x<b.x)?a:b;\n}\n\nvoid main() {\n \tfloat myDist \t= 100000.0;\n vec2 myGrad = vec2( 0.0, 0.0 );\n vec3 mySdg = vec3( 100000.0, 0.0, 0.0 ); \n float myRadius = 1.0;\n\n for( int i=0; i<u_numPlanets; i++ ){\n vec3 planet = planets[i];\n vec2 p = planet.xy;\n float r = planet.z;\n vec2 dir = gl_FragCoord.xy - p;\n vec3 sdg = sdgCircle( dir, r );\n float dist = length( dir );\n mySdg = sdgMin( sdg, mySdg );\n\n if( dist < r ){\n myRadius = r;\n }\n }\n\n vec4 sdfData = vec4( mySdg.x, mySdg.yz, myRadius );\n\n color = sdfData;\n}").replace("%%planets%%",ge),attributes:{position:{data:de,size:2},uv:{data:ue,size:2}},count:3}),he.fb=d(e,{width:an.height,height:an.height,type:e.FLOAT,internalFormat:e.RGBA32F})},ye=n=>{he.renderer.bindVAOs(),n.bindFramebuffer(n.FRAMEBUFFER,he.fb.write.fb),n.activeTexture(n.TEXTURE0),n.bindTexture(n.TEXTURE_2D,he.fb.read.targetTexture),he.renderer.bindUniform("u_framebuffer",0),he.renderer.bindUniform("u_numPlanets",fe),he.renderer.bindUniform("u_numBeads",55),he.renderer.bindUniform("u_res",[he.fb.width,he.fb.height]),he.renderer.render(he.fb.width,he.fb.height),he.fb.swap()};const Te=c(),Ee=new Float32Array([-1,-1,3,-1,-1,3]),Re=new Float32Array([0,0,2,0,0,2]);let Fe=an.sunPos[0],Ue=an.sunPos[1],we=an.sunRad,Ae=parseInt(we/2);0==an.bailyBeads&&(Ae=1);let ze="const vec3 beads["+Ae+"] = vec3["+Ae+"](";const Pe={},Se=e=>{let r=Te.random_num(0,6.283),t=5*Math.pow(Te.random_dec(),2)+1.5;for(let n=0;n<Ae;n++){let e=(1-Math.pow(Te.random_dec(),.5))*Math.sign(Te.random_dec()-.5)*t,o=Math.sin(r+e)*we*1.02,a=Math.cos(r+e)*we*1.02,i=Fe+a,s=Ue+o,d=we*(.02*Math.pow(Te.random_dec(),3)+.002);ze+="vec3("+i+","+s+","+d+")",ze+=n<Ae-1?", ":");"}Pe.renderer=s(e,{vert:n(sn),frag:n("#version 300 es\nprecision highp float;\n#define GLSLIFY 1\n\nuniform vec2 u_res;\nuniform int u_numBeads;\n\nout vec4 color;\n\n%%beads%%\n\nvec3 sdgCircle( in vec2 p, in float r ) {\n float d = length(p);\n return vec3( d-r, p/d );\n}\n\nvec3 sdgMin( in vec3 a, in vec3 b ){\n return (a.x<b.x)?a:b;\n}\n\nvoid main() {\n \tfloat myDist = 100000.0;\n vec2 myGrad = vec2( 0.0, 0.0 );\n vec3 mySdg = ve