0x122cdf09…f8b5sent to0x99a9b7c1…b069·#16,578,532·view on Etherscan
0.05 ) * 0.3;\n \n if( u_bailyBeads == 1 ){\n cd += beadsCd * 0.15;\n }\n \n cd *= 0.1;\n\n color.xyz = vec3( cd );\n}\n"),attributes:{position:{data:Ie,size:2},uv:{data:Me,size:2}},count:3}),Be.fb=d(e,{width:an.height,height:an.height,type:e.FLOAT,internalFormat:e.RGBA32F})},Oe=(n,e)=>{Be.renderer.bindVAOs(),n.bindFramebuffer(n.FRAMEBUFFER,Be.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,Nn.fb.read.targetTexture),n.activeTexture(n.TEXTURE2),n.bindTexture(n.TEXTURE_2D,On.fb.read.targetTexture),n.activeTexture(n.TEXTURE3),n.bindTexture(n.TEXTURE_2D,he.fb.read.targetTexture),n.activeTexture(n.TEXTURE4),n.bindTexture(n.TEXTURE_2D,Pe.fb.read.targetTexture),n.activeTexture(n.TEXTURE5),n.bindTexture(n.TEXTURE_2D,In.fb.read.targetTexture),Be.renderer.bindUniform("u_sky",0),Be.renderer.bindUniform("u_pointCloud",1),Be.renderer.bindUniform("u_sunTex",2),Be.renderer.bindUniform("u_planetsTex",3),Be.renderer.bindUniform("u_beadsTex",4),Be.renderer.bindUniform("u_noiseClouds",5),Be.renderer.bindUniform("u_sunPos",an.sunPos),Be.renderer.bindUniform("u_sunRad",an.sunRad),Be.renderer.bindUniform("u_sunRadPer",Ce),Be.renderer.bindUniform("u_numPlanets",an.numPlanets),Be.renderer.bindUniform("u_bailyBeads",an.bailyBeads),Be.renderer.bindUniform("u_environmentId",an.environmentId),Be.renderer.bindUniform("u_groundLevel",an.groundLevel),Be.renderer.bindUniform("u_cityHaze",an.cityHaze),Be.renderer.bindUniform("u_cloudiness",an.cloudiness),Be.renderer.bindUniform("u_flareIntensity",an.flareIntensity),Be.renderer.bindUniform("u_renderPer",e),Be.renderer.bindUniform("u_rf0",an.rf0),Be.renderer.bindUniform("u_rf1",an.rf1),Be.renderer.bindUniform("u_ruv",[123.45*an.rf0,123.45*an.rf1]),Be.renderer.bindUniform("u_res",[an.height,an.height]),Be.renderer.bindUniform("u_atmos",an.atmos),Be.renderer.bindUniform("u_multi",[an.coronaMulti,an.surfaceMulti,an.coronaGlowMulti]),Be.renderer.render(an.height,an.height),Be.fb.swap()};const Xe=new Float32Array([-1,-1,3,-1,-1,3]),ke=new Float32Array([0,0,2,0,0,2]),Ge={},Ne=e=>{Ge.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 sampler2D u_framebuffer;\nuniform sampler2D u_scene;\n\nuniform vec2 u_res;\nuniform vec2 u_invRes;\nuniform int u_isRendering;\nuniform float u_renderPer;\nuniform int u_renderFrame;\nuniform float u_rf0;\nuniform float u_rf1;\n\nfloat off = 0.990;\nfloat off2 = 0.005;\n\nvec4 blur( float off, float multi ) {\n vec4 col = vec4( 0. );\n for(float x = -off; x <= off; x++) {\n for(float y = -off; y <= off; y++) {\n col += texture( u_framebuffer, v_uv+vec2(x,y)*u_invRes );\n }\n }\n col /= multi;\n return col;\n}\n\nvoid main() {\n vec2 fc = gl_FragCoord.xy;\n vec2 uv = fc / u_res;\n\n vec4 frag = texture( u_scene, uv );\n \tvec4 prev = texture( u_framebuffer, uv );\n\tfloat decay = 0.1;\n\n if( u_isRendering == 1 ){\n if( u_renderPer > 0.0 ){\n if( u_renderPer < 0.3 ) prev = blur( 1.0, 9.0 );\n\n float multi = 0.1;\n color = prev * ( off + u_renderPer * off2 ) + frag * multi;\n color = clamp( color, vec4( 0.0 ), vec4( 1.0 ) );\n if( u_renderPer > 0.999 ){\n color = prev;\n }\n } else { // LIVE VIEW\n color = prev * decay + frag;\n }\n } else {\n color = prev * decay + frag;\n }\n color = clamp( color, vec4( 0.0 ), vec4( 1.0 ) );\n}"),attributes:{position:{data:Xe,size:2},uv:{data:ke,size:2}},count:3}),Ge.fb=d(e,{width:an.height,height:an.height,type:e.FLOAT,internalFormat:e.RGBA32F})},Ve=(n,e,r,t)=>{Ge.renderer.bindVAOs(),n.bindFramebuffer(n.FRAMEBUFFER,Ge.fb.write.fb),n.activeTexture(n.TEXTURE0),n.bindTexture(n.TEXTURE_2D,Ge.fb.read.targetTexture),n.activeTexture(n.TEXTURE1),n.bindTexture(n.TEXTURE_2D,Be.fb.read.targetTexture),Ge.renderer.bindUniform("u_framebuffer",0),Ge.renderer.bindUniform("u_scene",1),Ge.renderer.bindUniform("u_renderPer",r),Ge.renderer.bindUniform("u_isRendering",t),Ge.renderer.bindUniform("u_renderFrame",e),Ge.renderer.bindUniform("u_res",[an.height,an.height]),Ge.renderer.bindUniform("u_invRes",[1/an.height,1/an.height]),Ge.renderer.bindUniform("u_rf0",an.rf0),Ge.renderer.bindUniform("u_rf1",an.rf1),Ge.renderer.render(an.height,an.height),Ge.fb.swap()};const qe=new Float32Array([-1,-1,3,-1,-1,3]),Ye=new Float32Array([0,0,2,0,0,2]),He={},We=e=>{He.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 sampler2D u_trails;\nuniform sampler2D u_noiseClouds;\n\nuniform int u_borderId;\nuniform float u_borderWidth;\nuniform float u_borderCornerRad;\nuniform float u_damage;\nuniform float u_cloudiness;\nuniform int u_tint;\nuniform vec2 u_res;\nuniform float u_renderPer;\n\n#define PI 3.14159265\n#define TAU 6.28318530718\n\nconst vec3 cd0 = vec3( 0.6, 0.95, 1.0 );\nconst vec3 cd1 = vec3( 0.5, 0.4, 0.8 );\nconst vec3 cd2 = vec3( 1.0, 0.7, 0.7 );\nconst vec3 cd3 = vec3( 1.0, 1.0, 0.9 );\nconst vec3 cd4 = vec3( 1.0, 1.0, 1.0 );\n\nfloat random( vec2 st ){\n return fract(sin(dot(st.xy,vec2(12.9898,78.233)))*43758.5453123);\n}\n\nfloat hash11(float p){\n p = fract(p * .1031);\n p *= p + 33.33;\n p *= p + p;\n return fract(p);\n}\n\nvec3 brightnessContrast( vec3 v, float b, float c ){\n return (v - 0.5) * c + 0.5 + b;\n}\n\nvec3 gamma( vec3 v, float p ){\n return vec3(pow(abs(v.r), p),pow(abs(v.g), p),pow(abs(v.b), p));\n}\n\nvec3 quintColor( vec3 c0, vec3 c1, vec3 c2, vec3 c3, vec3 c4, float per ){\n vec3 c = c0;\n if( per < 0.25 ){\n c = mix( c0, c1, per * 4.0 );\n } else if( per < 0.5 ){\n c = mix( c1, c2, ( per - 0.25 ) * 4.0 );\n } else if( per < 0.75 ){\n c = mix( c2, c3, ( per - 0.5 ) * 4.0 );\n } else {\n c = mix( c3, c4, ( per - 0.75 ) * 4.0 );\n }\n return c;\n}\n\nvec3 palette( in float t, in vec3 a, in vec3 b, in vec3 c, in vec3 d ){\n return a + b*cos( TAU*(c*t+d) );\n}\n\nfloat sdCircle( vec2 p, float r ){\n return length(p) - r;\n}\n\nfloat sdRoundedBox( in vec2 p, in vec2 b, in vec4 r ){\n r.xy = (p.x>0.0)?r.xy : r.zw;\n r.x = (p.y>0.0)?r.x : r.y;\n vec2 q = abs(p)-b+r.x;\n return min(max(q.x,q.y),0.0) + length(max(q,0.0)) - r.x;\n}\n\nvoid main() {\n \n vec2 frag = gl_FragCoord.xy;\n float ar = u_res.x/u_res.y;\n float ar2 = ( 1.0 - ar ) * 0.5;\n vec2 uv = frag / u_res;\n uv.x = uv.x * ar + ar2;\n vec2 fragCoord = frag + vec2( u_res.y * ar2, 0.0 );\n\n // GET NOISE CLOUDS\n vec4 clouds = texture( u_noiseClouds, uv );\n float cn0 = clouds.x;\n float cn1 = clouds.y;\n float cn2 = clouds.z;\n float cn3 = clouds.w;\n\n // set initial color\n color.xyz = vec3( 0.0 );\n \n // main image\n color += texture( u_trails, uv );\n color.xyz = vec3( max( color.x, max( color.y, color.z ) ) );\n \n // aging\n float dmg = u_damage * 0.5;\n\n // borders\n vec2 bp = (2.0*frag-u_res)/u_res.y;\n vec2 bp2 = (vec2( 2.0, ar*2.0 )*frag-u_res*vec2( 1.0, ar))/u_res.x;\n float br = u_borderId == 0 ? 0.0 : u_borderCornerRad;\n vec2 bs = vec2( ar - u_borderWidth, 1.0 - u_borderWidth );\n float borderSdf = sdRoundedBox( bp, bs, vec4( br ) );\n float b0 = smoothstep( -0.002, 0.0, borderSdf );\n float b1 = smoothstep( -0.01, 0.0, borderSdf );\n float b2 = smoothstep( -0.03, 0.0, borderSdf );\n float b3 = smoothstep( -0.1, 0.0, borderSdf );\n float b4 = smoothstep( -0.2, 0.0, borderSdf );\n float vign = sdCircle( bp2, 0.75 );\n float borderShadow = smoothstep( 0.9, 0.0, vign );\n float vignBlend = smoothstep( 0.66, -0.2, vign );\n \n if( u_borderId > 0 ){\n // aged discoloring\n color.xyz = mix( color.xyz, vec3( cos( color.xyz * PI * 2.0 ) ), dmg ); // color cycles with higher dmg\n float edgeDark = ( b4 * 0.1 + b3 * cn0 * 0.3 - b3 * cn1 * 0.3 + b2 * cn2 * 0.3 - b3 * cn2 * 0.15 );\n color.xyz *= 1.0 - edgeDark;\n\n // more clouds\n color.xyz -= cn0 * u_cloudiness * 0.2;\n\n // final noise and bgcolor\n color.xyz = clamp( color.xyz, 0.0, 1.0 );\n color.xyz = color.xyz * 0.8 + 0.1;\n float fn0 = ( random( ( fragCoord + vec2( 52.5, 77.8 ) ) * 0.01 ) ) * 0.025;\n color.xyz += fn0;\n\n color.xyz = clamp( color.xyz, 0.0, 1.0 );\n color.xyz *= vec3( borderShadow - b3 * 0.1 - b2 * 0.1 ); // final vignette\n\n if( u_borderId == 2 ){ // color edges\n float bMix = mix( b2, b3, dmg * 4.0 );\n float edge = clamp( 1.0 - bMix\n + cn0 * 0.5\n - sin( cn0 * 14.0 ) * 0.1\n - sin( cn3 * 7.0 + cn2 * 3.0 ) * 0.1\n - hash11( frag.x * frag.y ) * 0.1\n - b1 * 0.2\n + cn0 * 0.35\n + cn1 * 0.25, 0.0, 1.0 );\n color.xyz += ( 1.0 - edge ) * 0.2;\n float edgePer = clamp( pow( edge, 2.0 ), 0.0, 1.0 );\n vec3 stain = quintColor( cd0, cd1, cd2, cd3, cd4, pow( fract( edgePer * 2.0 ), 0.5 ) );\n color.xyz *= mix( stain, cd4, edgePer );\n }\n\n float innerb0 = smoothstep( -0.005, -0.002, borderSdf );\n color.xyz -= vec3( innerb0 * 0.05 );\n color.xyz = mix( vec3( 0.02 ), color.xyz, 1.0 - b0 );\n } else {\n if( u_tint != 9 )\n color.xyz *= ( vignBlend * 0.5 + 0.5 );\n }\n\n float bright = max( color.x, max( color.y, color.z ) );\n \n // tinting\n int tint = u_tint;\n if( tint == 0 ){\n color.xyz = max( color.xyz, vec3( 0.05 ) );\n color.xyz = brightnessContrast( color.xyz, 0.0, 1.1 );\n color.xyz = gamma( color.xyz, 1.3 );\n\n } else if( tint == 1 ){\n color.xyz = brightnessContrast( color.xyz, 0.025, 1.1 );\n color.xyz = mix( color.xyz - vec3( 0.1, 0.15, 0.2 ), color.xyz * vec3( 1.0, 1.0, 0.9 ), vignBlend );\n color.xyz *= quintColor( cd2, cd2, cd3, cd3, cd4, bright );\n\n } else if( tint == 2 ){\n vec3 nc = palette( bright * 0.6 + 0.4, vec3( 0.5 ), vec3( 0.5 ), vec3( 0.9, 0.95, 1.0 ), vec3( 0.05, 0.07, 0.15 ) );\n color.xyz = mix( pow( nc, vec3( 1.5 ) ), vec3( bright ), bright );\n\n } else if( tint == 3 ){\n color.xyz = bright