<!-- SOLID-PLAYTIME · part 128 -->
let e=new At(this._lodPlanes[0],t);this._renderer.compile(e,GU)}_sceneToCubeUV(t,e,n,i,s){let o=new xn(90,1,e,n),l=[1,-1,1,1,1,1],c=[1,1,1,-1,-1,-1],u=this._renderer,{autoClear:f,toneMapping:h}=u;if(u.getClearColor($E),u.toneMapping=Ps,u.autoClear=!1,u.state.buffers.depth.getReversed())u.setRenderTarget(i),u.clearDepth(),u.setRenderTarget(null);let v=new Pn({name:"PMREM.Background",side:fi,depthWrite:!1,depthTest:!1}),y=new At(new $e,v),U=!1,d=t.background;if(d){if(d.isColor)v.color.copy(d),t.background=null,U=!0}else v.color.copy($E),U=!0;for(let g=0;g<6;g++){let m=g%3;if(m===0)o.up.set(0,l[g],0),o.position.set(s.x,s.y,s.z),o.lookAt(s.x+c[g],s.y,s.z);else if(m===1)o.up.set(0,0,l[g]),o.position.set(s.x,s.y,s.z),o.lookAt(s.x,s.y+c[g],s.z);else o.up.set(0,l[g],0),o.position.set(s.x,s.y,s.z),o.lookAt(s.x,s.y,s.z+c[g]);let x=this._cubeSize;if(Jf(i,m*x,g>2?x:0,x,x),u.setRenderTarget(i),U)u.render(y,o);u.render(t,o)}y.geometry.dispose(),y.material.dispose(),u.toneMapping=h,u.autoClear=f,t.background=d}_textureToCubeUV(t,e){let n=this._renderer,i=t.mapping===Xo||t.mapping===cr;if(i){if(this._cubemapMaterial===null)this._cubemapMaterial=QE();this._cubemapMaterial.uniforms.flipEnvMap.value=t.isRenderTargetTexture===!1?-1:1}else if(this._equirectMaterial===null)this._equirectMaterial=YE();let s=i?this._cubemapMaterial:this._equirectMaterial,a=new At(this._lodPlanes[0],s),r=s.uniforms;r.envMap.value=t;let o=this._cubeSize;Jf(e,0,0,3*o,2*o),n.setRenderTarget(e),n.render(a,GU)}_applyPMREM(t){let e=this._renderer,n=e.autoClear;e.autoClear=!1;let i=this._lodPlanes.length;for(let s=1;s<i;s++){let a=Math.sqrt(this._sigmas[s]*this._sigmas[s]-this._sigmas[s-1]*this._sigmas[s-1]),r=JE[(i-s-1)%JE.length];this._blur(t,s-1,s,a,r)}e.autoClear=n}_blur(t,e,n,i,s){let a=this._pingPongRenderTarget;this._halfBlur(t,a,e,n,i,"latitudinal",s),this._halfBlur(a,t,n,n,i,"longitudinal",s)}_halfBlur(t,e,n,i,s,a,r){let o=this._renderer,l=this._blurMaterial;if(a!=="latitudinal"&&a!=="longitudinal")console.error("blur direction must be either latitudinal or longitudinal!");let c=3,u=new At(this._lodPlanes[i],l),f=l.uniforms,h=this._sizeLods[n]-1,p=isFinite(s)?Math.PI/(2*h):2*Math.PI/(2*yr-1),v=s/p,y=isFinite(s)?1+Math.floor(c*v):yr;if(y>yr)console.warn(`sigmaRadians, ${s}, is too large and will clip, as it requested ${y} samples when the maximum is set to ${yr}`);let U=[],d=0;for(let A=0;A<yr;++A){let T=A/v,w=Math.exp(-T*T/2);if(U.push(w),A===0)d+=w;else if(A<y)d+=2*w}for(let A=0;A<U.length;A++)U[A]=U[A]/d;if(f.envMap.value=t.texture,f.samples.value=y,f.weights.value=U,f.latitudinal.value=a==="latitudinal",r)f.poleAxis.value=r;let{_lodMax:g}=this;f.dTheta.value=p,f.mipInt.value=g-n;let m=this._sizeLods[i],x=3*m*(i>g-nl?i-g+nl:0),S=4*(this._cubeSize-m);Jf(e,x,S,3*m,2*m),o.setRenderTarget(e),o.render(u,GU)}}function BR(t){let e=[],n=[],i=[],s=t,a=t-nl+1+GE.length;for(let r=0;r<a;r++){let o=Math.pow(2,s);n.push(o);let l=1/o;if(r>t-nl)l=GE[r-t+nl-1];else if(r===0)l=0;i.push(l);let c=1/(o-2),u=-c,f=1+c,h=[u,u,f,u,f,f,u,u,f,f,u,f],p=6,v=6,y=3,U=2,d=1,g=new Float32Array(y*v*p),m=new Float32Array(U*v*p),x=new Float32Array(d*v*p);for(let A=0;A<p;A++){let T=A%3*2/3-1,w=A>2?0:-1,b=[T,w,0,T+0.6666666666666666,w,0,T+0.6666666666666666,w+1,0,T,w,0,T+0.6666666666666666,w+1,0,T,w+1,0];g.set(b,y*v*A),m.set(h,U*v*A);let M=[A,A,A,A,A,A];x.set(M,d*v*A)}let S=new me;if(S.setAttribute("position",new tn(g,y)),S.setAttribute("uv",new tn(m,U)),S.setAttribute("faceIndex",new tn(x,d)),e.push(S),s>nl)s--}return{lodPlanes:e,sizeLods:n,sigmas:i}}function WE(t,e,n){let i=new Is(t,e,n);return i.texture.mapping=Lc,i.texture.name="PMREM.cubeUv",i.scissorTest=!0,i}function Jf(t,e,n,i,s){t.viewport.set(e,n,i,s),t.scissor.set(e,n,i,s)}function OR(t,e,n){let i=new Float32Array(yr),s=new C(0,1,0);return new Zi({name:"SphericalGaussianBlur",defines:{n:yr,CUBEUV_TEXEL_WIDTH:1/e,CUBEUV_TEXEL_HEIGHT:1/n,CUBEUV_MAX_MIP:`${t}.0`},uniforms:{envMap:{value:null},samples:{value:1},weights:{value:i},latitudinal:{value:!1},dTheta:{value:0},mipInt:{value:0},poleAxis:{value:s}},vertexShader:KU(),fragmentShader:`

			precision mediump float;
			precision mediump int;

			varying vec3 vOutputDirection;

			uniform sampler2D envMap;
			uniform int samples;
			uniform float weights[ n ];
			uniform bool latitudinal;
			uniform float dTheta;
			uniform float mipInt;
			uniform vec3 poleAxis;

			#define ENVMAP_TYPE_CUBE_UV
			#include <cube_uv_reflection_fragment>

			vec3 getSample( float theta, vec3 axis ) {

				float cosTheta = cos( theta );
				// Rodrigues' axis-angle rotation
				vec3 sampleDirection = vOutputDirection * cosTheta
					+ cross( axis, vOutputDirection ) * sin( theta )
					+ axis * dot( axis, vOutputDirection ) * ( 1.0 - cosTheta );

				return bilinearCubeUV( envMap, sampleDirection, mipInt );

			}

			void main() {

				vec3 axis = latitudinal ? poleAxis : cross( poleAxis, vOutputDirection );

				if ( all( equal( axis, vec3( 0.0 ) ) ) ) {

	