<!-- SOLID-PLAYTIME · part 153 -->
lerSize.value.set(g.width,g.height),d.transmissionMap)U.transmissionMap.value=d.transmissionMap,n(d.transmissionMap,U.transmissionMapTransform);if(U.thickness.value=d.thickness,d.thicknessMap)U.thicknessMap.value=d.thicknessMap,n(d.thicknessMap,U.thicknessMapTransform);U.attenuationDistance.value=d.attenuationDistance,U.attenuationColor.value.copy(d.attenuationColor)}if(d.anisotropy>0){if(U.anisotropyVector.value.set(d.anisotropy*Math.cos(d.anisotropyRotation),d.anisotropy*Math.sin(d.anisotropyRotation)),d.anisotropyMap)U.anisotropyMap.value=d.anisotropyMap,n(d.anisotropyMap,U.anisotropyMapTransform)}if(U.specularIntensity.value=d.specularIntensity,U.specularColor.value.copy(d.specularColor),d.specularColorMap)U.specularColorMap.value=d.specularColorMap,n(d.specularColorMap,U.specularColorMapTransform);if(d.specularIntensityMap)U.specularIntensityMap.value=d.specularIntensityMap,n(d.specularIntensityMap,U.specularIntensityMapTransform)}function v(U,d){if(d.matcap)U.matcap.value=d.matcap}function y(U,d){let g=e.get(d).light;U.referencePosition.value.setFromMatrixPosition(g.matrixWorld),U.nearDistance.value=g.shadow.camera.near,U.farDistance.value=g.shadow.camera.far}return{refreshFogUniforms:i,refreshMaterialUniforms:s}}function M3(t,e,n,i){let s={},a={},r=[],o=t.getParameter(t.MAX_UNIFORM_BUFFER_BINDINGS);function l(g,m){let x=m.program;i.uniformBlockBinding(g,x)}function c(g,m){let x=s[g.id];if(x===void 0)v(g),x=u(g),s[g.id]=x,g.addEventListener("dispose",U);let S=m.program;i.updateUBOMapping(g,S);let A=e.render.frame;if(a[g.id]!==A)h(g),a[g.id]=A}function u(g){let m=f();g.__bindingPointIndex=m;let x=t.createBuffer(),{__size:S,usage:A}=g;return t.bindBuffer(t.UNIFORM_BUFFER,x),t.bufferData(t.UNIFORM_BUFFER,S,A),t.bindBuffer(t.UNIFORM_BUFFER,null),t.bindBufferBase(t.UNIFORM_BUFFER,m,x),x}function f(){for(let g=0;g<o;g++)if(r.indexOf(g)===-1)return r.push(g),g;return console.error("THREE.WebGLRenderer: Maximum number of simultaneously usable uniforms groups reached."),0}function h(g){let m=s[g.id],{uniforms:x,__cache:S}=g;t.bindBuffer(t.UNIFORM_BUFFER,m);for(let A=0,T=x.length;A<T;A++){let w=Array.isArray(x[A])?x[A]:[x[A]];for(let b=0,M=w.length;b<M;b++){let R=w[b];if(p(R,A,b,S)===!0){let O=R.__offset,V=Array.isArray(R.value)?R.value:[R.value],k=0;for(let et=0;et<V.length;et++){let Z=V[et],at=y(Z);if(typeof Z==="number"||typeof Z==="boolean")R.__data[0]=Z,t.bufferSubData(t.UNIFORM_BUFFER,O+k,R.__data);else if(Z.isMatrix3)R.__data[0]=Z.elements[0],R.__data[1]=Z.elements[1],R.__data[2]=Z.elements[2],R.__data[3]=0,R.__data[4]=Z.elements[3],R.__data[5]=Z.elements[4],R.__data[6]=Z.elements[5],R.__data[7]=0,R.__data[8]=Z.elements[6],R.__data[9]=Z.elements[7],R.__data[10]=Z.elements[8],R.__data[11]=0;else Z.toArray(R.__data,k),k+=at.storage/Float32Array.BYTES_PER_ELEMENT}t.bufferSubData(t.UNIFORM_BUFFER,O,R.__data)}}}t.bindBuffer(t.UNIFORM_BUFFER,null)}function p(g,m,x,S){let A=g.value,T=m+"_"+x;if(S[T]===void 0){if(typeof A==="number"||typeof A==="boolean")S[T]=A;else S[T]=A.clone();return!0}else{let w=S[T];if(typeof A==="number"||typeof A==="boolean"){if(w!==A)return S[T]=A,!0}else if(w.equals(A)===!1)return w.copy(A),!0}return!1}function v(g){let m=g.uniforms,x=0,S=16;for(let T=0,w=m.length;T<w;T++){let b=Array.isArray(m[T])?m[T]:[m[T]];for(let M=0,R=b.length;M<R;M++){let O=b[M],V=Array.isArray(O.value)?O.value:[O.value];for(let k=0,et=V.length;k<et;k++){let Z=V[k],at=y(Z),W=x%S,ht=W%at.boundary,mt=W+ht;if(x+=ht,mt!==0&&S-mt<at.storage)x+=S-mt;O.__data=new Float32Array(at.storage/Float32Array.BYTES_PER_ELEMENT),O.__offset=x,x+=at.storage}}}let A=x%S;if(A>0)x+=S-A;return g.__size=x,g.__cache={},this}function y(g){let m={boundary:0,storage:0};if(typeof g==="number"||typeof g==="boolean")m.boundary=4,m.storage=4;else if(g.isVector2)m.boundary=8,m.storage=8;else if(g.isVector3||g.isColor)m.boundary=16,m.storage=12;else if(g.isVector4)m.boundary=16,m.storage=16;else if(g.isMatrix3)m.boundary=48,m.storage=48;else if(g.isMatrix4)m.boundary=64,m.storage=64;else if(g.isTexture)console.warn("THREE.WebGLRenderer: Texture samplers can not be part of an uniforms group.");else console.warn("THREE.WebGLRenderer: Unsupported uniform value type.",g);return m}function U(g){let m=g.target;m.removeEventListener("dispose",U);let x=r.indexOf(m.__bindingPointIndex);r.splice(x,1),t.deleteBuffer(s[m.id]),delete s[m.id],delete a[m.id]}function d(){for(let g in s)t.deleteBuffer(s[g]);r=[],s={},a={}}return{bind:l,update:c,dispose:d}}class $c{constructor(t={}){let{canvas:e=IE(),context:n=null,depth:i=!0,stencil:s=!1,alpha:a=!1,antialias:r=!1,premultipliedAlpha:o=!0,preserveDrawingBuffer:l=!1,powerPreference:c="default",failIfMajorPerformanceCaveat:u=!1,reversedDepthBuffer:f=!1}=t;this.isWebGLRenderer=!0;let h;if(n!==null){if(typeof WebGLRenderingContext<"u"&&n instanceof WebGLRenderingContext)throw Error("THREE.WebGLRenderer: WebGL 1 is not supported since r163.");h=n.getContextAttributes().alpha}else h=