<!-- SOLID CITY · part 3390 -->
main(){ float a = texture2D(map, vUv).a * vF; if (a < .01) discard;
        vec3 top = pow(vec3(1., .78, .6), vec3(2.2)) * 1.25, bot = pow(vec3(.42, .26, .36), vec3(2.2));
        vec3 c = mix(bot, top, smoothstep(.15, .95, vY));
        c = mix(c, uHaze, (1. - exp(-vD / (uHazeDist * 1.6))) * .8);
        gl_FragColor = vec4(c, a * .92);
        ${uu} }`,transparent:!0,depthWrite:!1}),l=new Ze(t,o);return l.frustumCulled=!1,l.renderOrder=2,et.add(l),{mesh:l,n:i}})(),ic=(()=>{let i=Qt?260:420,e=new Float32Array(i*3),t=Ki(9);for(let a=0;a<i*3;a++)e[a]=(t()-.5)*500;let n=new ft;n.setAttribute("position",new wt(e,3));let s=new It({uniforms:{uCam:{value:new $e},uA:{value:.5},uPx:{value:1}},vertexShader:"uniform vec3 uCam; uniform float uPx; varying float vA; void main(){ vec3 p = mod(position - uCam + 250., 500.) - 250.; float d = length(p); vA = smoothstep(250., 120., d) * smoothstep(3., 20., d); vec4 mv = viewMatrix * vec4(p + uCam, 1.); gl_PointSize = clamp(uPx * 260. / -mv.z, 1., 6.); gl_Position = projectionMatrix * mv; }",fragmentShader:"uniform float uA; varying float vA; void main(){ gl_FragColor = vec4(vec3(1., .9, .8) * vA * uA, 1.); }",blending:Wt,depthWrite:!1,transparent:!0}),r=new Ui(n,s);return r.frustumCulled=!1,et.add(r),r})(),Bv=(()=>{let i=Qt?46:70,e=new Float32Array(i*6),t=new Float32Array(i*2),n=new Float32Array(i*6),s=Ki(13);for(let l=0;l<i;l++){let c=s()*Math.PI*2,h=2.2+s()*7,f=s();for(let u=0;u<2;u++){let d=(l*2+u)*3;e[d]=Math.cos(c)*h,e[d+1]=Math.sin(c)*h*.8,e[d+2]=f,t[l*2+u]=u}}let r=new ft;r.setAttribute("position",new wt(n,3)),r.setAttribute("aSeed",new wt(e,3)),r.setAttribute("aEnd",new wt(t,1));let a=new It({uniforms:{uT:{value:0},uLen:{value:6},uA:{value:0},uCol:{value:new ge(1,.9,.8)}},vertexShader:"attribute vec3 aSeed; attribute float aEnd; uniform float uT; uniform float uLen; varying float vA; void main(){ float span = 70.; float z = -span + mod(aSeed.z * span + uT, span); vec3 p = vec3(aSeed.xy * (1. + (-z) * .03), z - aEnd * uLen); vA = smoothstep(-span, -span * .6, z) * smoothstep(0., -8., z) * (1. - aEnd * .9); gl_Position = projectionMatrix * vec4(p, 1.); }",fragmentShader:"uniform float uA; uniform vec3 uCol; varying float vA; void main(){ gl_FragColor = vec4(uCol * vA * uA, 1.); }",blending:Wt,depthWrite:!1,depthTest:!1,transparent:!0}),o=new Yr(r,a);return o.frustumCulled=!1,o.renderOrder=20,Mt.add(o),o})();function ep(i){let e=new Map;i.forEach(n=>{e.has(n.mat)||e.set(n.mat,[]),e.get(n.mat).push(n.geo)});let t=new Dn;return e.forEach((n,s)=>{let r=Df(n.map(a=>{let o=a.index?a.toNonIndexed():a.clone();for(let l of Object.keys(o.attributes))l!=="position"&&l!=="normal"&&l!=="uv"&&o.deleteAttribute(l);return o.attributes.uv||o.setAttribute("uv",new Qe(new Float32Array(o.attributes.position.count*2),2)),o}),!1);r.computeVertexNormals(),t.add(new Ze(r,s))}),t}function ut(i,{p:e=[0,0,0],r:t=[0,0,0],s:n=[1,1,1]}={}){return i.applyMatrix4(new at().compose(new $e(e[0],e[1],e[2]),new fn().setFromEuler(new bn(t[0],t[1],t[2])),new $e(n[0],n[1],n[2]))),i}var An={hull:new Yn({color:1774616,shininess:90,specular:6969962}),red:new Yn({color:12062762,shininess:70,specular:8930372,emissive:2097156}),gold:new Yn({color:15254378,shininess:100,specular:16772795,emissive:2759172}),glass:new Yn({color:1707526,shininess:160,specular:16767392,emissive:2757636}),glow:new Ft({color:new ge(3,1.6,.6)})};function Bf(i){let e=new os;e.moveTo(0,-1.2),e.lineTo(4.8*i,2.2),e.lineTo(4.9*i,3.3),e.lineTo(0,3.4),e.closePath();let t=new Qs(e,{depth:.22,bevelEnabled:!1});return t.rotateX(Math.PI/2),t.translate(0,.1,0),t}var gn=new Dn,$t={flames:[],glows:[],heat:null,shield:null,body:null,flameMat:null};function zv(){let i=[];i.push({geo:ut(new rn(.22,1.05,6.6,10),{p:[0,0,-2.4],r:[-Math.PI/2,0,0]}),mat:An.red}),i.push({geo:ut(new rn(1.05,1.15,2.2,10),{p:[0,0,1.9],r:[-Math.PI/2,0,0]}),mat:An.hull}),i.push({geo:ut(new Gt(2.6,.9,3.2),{p:[0,-.05,2.4]}),mat:An.hull}),i.push({geo:ut(new mn(.72,14,10),{p:[0,.52,-1.3],s:[.95,.72,2.3]}),mat:An.glass}),i.push({geo:ut(Bf(1),{p:[.6,-.2,.3]}),mat:An.hull}),i.push({geo:ut(Bf(-1),{p:[-.6,-.2,.3]}),mat:An.hull}),i.push({geo:ut(new Gt(4.6,.12,.35),{p:[2.9,-.06,1],r:[0,-.62,0]}),mat:An.gold}),i.push({geo:ut(new Gt(4.6,.12,.35),{p:[-2.9,-.06,1],r:[0,.62,0]}),mat:An.gold});for(let n of[-1,1])i.push({geo:ut(new rn(.55,.68,3.4,12),{p:[1.15*n,-.05,2.5],r:[-Math.PI/2,0,0]}),mat:An.hull}),i.push({geo:ut(new hi(.62,.1,6,16),{p:[1.15*n,-.05,4.2]}),mat:An.gold}),i.push({geo:ut(new Gt(.16,1.6,1.8),{p:[.75*n,.9,3],r:[.35,0,-.38*n]}),mat:An.red}),i.push({geo:ut(new rn(.09,.09,1.6,6),{p:[2.4*n,-.12,-.6],r:[-Math.PI/2,0,0]}),mat:An.gold}),i.push({geo:ut(new as(.5,14),{p:[1.15*n,-.05,4.22]}),mat:An.glow});$t.body=ep(i),gn.add($t.body);let e=new It({uniforms:{uT:Dt.time,uP:{value:.5},uB:{value:0}},vertexShader:"varying vec2 vUv; void main(){ vUv = uv; gl_Position = projectionMatrix*modelViewMatrix*vec4(position,1.); }",fragmentShader:"uniform float uT; uniform 