@mulmoclaude/shapescript-plugin 2.4.0 → 2.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/vue.cjs CHANGED
@@ -1,4 +1,4 @@
1
- Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}});const e=require("./samples-BrJ4z8v-.cjs"),t=require("./toThreeJS-CaZGJjfO.cjs");let n=require("vue"),r=require("gui-chat-protocol/vue");function i(){let e=null,t=!1,n=null,r=null;function i(t,a){n(t,a),r=e.requestAnimationFrame(i)}return{start:function(){t!==!0&&n!==null&&e!==null&&(r=e.requestAnimationFrame(i),t=!0)},stop:function(){e!==null&&e.cancelAnimationFrame(r),t=!1},setAnimationLoop:function(e){n=e},setContext:function(t){e=t}}}function a(e){let t=new WeakMap;function n(t,n){let r=t.array,i=t.usage,a=r.byteLength,o=e.createBuffer();e.bindBuffer(n,o),e.bufferData(n,r,i),t.onUploadCallback();let s;if(r instanceof Float32Array)s=e.FLOAT;else if(typeof Float16Array<`u`&&r instanceof Float16Array)s=e.HALF_FLOAT;else if(r instanceof Uint16Array)s=t.isFloat16BufferAttribute?e.HALF_FLOAT:e.UNSIGNED_SHORT;else if(r instanceof Int16Array)s=e.SHORT;else if(r instanceof Uint32Array)s=e.UNSIGNED_INT;else if(r instanceof Int32Array)s=e.INT;else if(r instanceof Int8Array)s=e.BYTE;else if(r instanceof Uint8Array)s=e.UNSIGNED_BYTE;else if(r instanceof Uint8ClampedArray)s=e.UNSIGNED_BYTE;else throw Error(`THREE.WebGLAttributes: Unsupported buffer data format: `+r);return{buffer:o,type:s,bytesPerElement:r.BYTES_PER_ELEMENT,version:t.version,size:a}}function r(t,n,r){let i=n.array,a=n.updateRanges;if(e.bindBuffer(r,t),a.length===0)e.bufferSubData(r,0,i);else{a.sort((e,t)=>e.start-t.start);let t=0;for(let e=1;e<a.length;e++){let n=a[t],r=a[e];r.start<=n.start+n.count+1?n.count=Math.max(n.count,r.start+r.count-n.start):(++t,a[t]=r)}a.length=t+1;for(let t=0,n=a.length;t<n;t++){let n=a[t];e.bufferSubData(r,n.start*i.BYTES_PER_ELEMENT,i,n.start,n.count)}n.clearUpdateRanges()}n.onUploadCallback()}function i(e){return e.isInterleavedBufferAttribute&&(e=e.data),t.get(e)}function a(n){n.isInterleavedBufferAttribute&&(n=n.data);let r=t.get(n);r&&(e.deleteBuffer(r.buffer),t.delete(n))}function o(e,i){if(e.isInterleavedBufferAttribute&&(e=e.data),e.isGLBufferAttribute){let n=t.get(e);(!n||n.version<e.version)&&t.set(e,{buffer:e.buffer,type:e.type,bytesPerElement:e.elementSize,version:e.version});return}let a=t.get(e);if(a===void 0)t.set(e,n(e,i));else if(a.version<e.version){if(a.size!==e.array.byteLength)throw Error(`THREE.WebGLAttributes: The size of the buffer attribute's array buffer does not match the original size. Resizing buffer attributes is not supported.`);r(a.buffer,e,i),a.version=e.version}}return{get:i,remove:a,update:o}}var o={alphahash_fragment:`#ifdef USE_ALPHAHASH
1
+ Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}});const e=require("./samples-b6J0NoFm.cjs"),t=require("./toThreeJS-BETrskvw.cjs");let n=require("vue"),r=require("gui-chat-protocol/vue");function i(){let e=null,t=!1,n=null,r=null;function i(t,a){n(t,a),r=e.requestAnimationFrame(i)}return{start:function(){t!==!0&&n!==null&&e!==null&&(r=e.requestAnimationFrame(i),t=!0)},stop:function(){e!==null&&e.cancelAnimationFrame(r),t=!1},setAnimationLoop:function(e){n=e},setContext:function(t){e=t}}}function a(e){let t=new WeakMap;function n(t,n){let r=t.array,i=t.usage,a=r.byteLength,o=e.createBuffer();e.bindBuffer(n,o),e.bufferData(n,r,i),t.onUploadCallback();let s;if(r instanceof Float32Array)s=e.FLOAT;else if(typeof Float16Array<`u`&&r instanceof Float16Array)s=e.HALF_FLOAT;else if(r instanceof Uint16Array)s=t.isFloat16BufferAttribute?e.HALF_FLOAT:e.UNSIGNED_SHORT;else if(r instanceof Int16Array)s=e.SHORT;else if(r instanceof Uint32Array)s=e.UNSIGNED_INT;else if(r instanceof Int32Array)s=e.INT;else if(r instanceof Int8Array)s=e.BYTE;else if(r instanceof Uint8Array)s=e.UNSIGNED_BYTE;else if(r instanceof Uint8ClampedArray)s=e.UNSIGNED_BYTE;else throw Error(`THREE.WebGLAttributes: Unsupported buffer data format: `+r);return{buffer:o,type:s,bytesPerElement:r.BYTES_PER_ELEMENT,version:t.version,size:a}}function r(t,n,r){let i=n.array,a=n.updateRanges;if(e.bindBuffer(r,t),a.length===0)e.bufferSubData(r,0,i);else{a.sort((e,t)=>e.start-t.start);let t=0;for(let e=1;e<a.length;e++){let n=a[t],r=a[e];r.start<=n.start+n.count+1?n.count=Math.max(n.count,r.start+r.count-n.start):(++t,a[t]=r)}a.length=t+1;for(let t=0,n=a.length;t<n;t++){let n=a[t];e.bufferSubData(r,n.start*i.BYTES_PER_ELEMENT,i,n.start,n.count)}n.clearUpdateRanges()}n.onUploadCallback()}function i(e){return e.isInterleavedBufferAttribute&&(e=e.data),t.get(e)}function a(n){n.isInterleavedBufferAttribute&&(n=n.data);let r=t.get(n);r&&(e.deleteBuffer(r.buffer),t.delete(n))}function o(e,i){if(e.isInterleavedBufferAttribute&&(e=e.data),e.isGLBufferAttribute){let n=t.get(e);(!n||n.version<e.version)&&t.set(e,{buffer:e.buffer,type:e.type,bytesPerElement:e.elementSize,version:e.version});return}let a=t.get(e);if(a===void 0)t.set(e,n(e,i));else if(a.version<e.version){if(a.size!==e.array.byteLength)throw Error(`THREE.WebGLAttributes: The size of the buffer attribute's array buffer does not match the original size. Resizing buffer attributes is not supported.`);r(a.buffer,e,i),a.version=e.version}}return{get:i,remove:a,update:o}}var o={alphahash_fragment:`#ifdef USE_ALPHAHASH
2
2
  if ( diffuseColor.a < getAlphaHashThreshold( vPosition ) ) discard;
3
3
  #endif`,alphahash_pars_fragment:`#ifdef USE_ALPHAHASH
4
4
  const float ALPHA_HASH_SCALE = 0.05;
@@ -3664,7 +3664,7 @@ void main() {
3664
3664
  #include <tonemapping_fragment>
3665
3665
  #include <colorspace_fragment>
3666
3666
  #include <fog_fragment>
3667
- }`},s={common:{diffuse:{value:new t.g(16777215)},opacity:{value:1},map:{value:null},mapTransform:{value:new t.K},alphaMap:{value:null},alphaMapTransform:{value:new t.K},alphaTest:{value:0}},specularmap:{specularMap:{value:null},specularMapTransform:{value:new t.K}},envmap:{envMap:{value:null},envMapRotation:{value:new t.K},reflectivity:{value:1},ior:{value:1.5},refractionRatio:{value:.98},dfgLUT:{value:null}},aomap:{aoMap:{value:null},aoMapIntensity:{value:1},aoMapTransform:{value:new t.K}},lightmap:{lightMap:{value:null},lightMapIntensity:{value:1},lightMapTransform:{value:new t.K}},bumpmap:{bumpMap:{value:null},bumpMapTransform:{value:new t.K},bumpScale:{value:1}},normalmap:{normalMap:{value:null},normalMapTransform:{value:new t.K},normalScale:{value:new t.xn(1,1)}},displacementmap:{displacementMap:{value:null},displacementMapTransform:{value:new t.K},displacementScale:{value:1},displacementBias:{value:0}},emissivemap:{emissiveMap:{value:null},emissiveMapTransform:{value:new t.K}},metalnessmap:{metalnessMap:{value:null},metalnessMapTransform:{value:new t.K}},roughnessmap:{roughnessMap:{value:null},roughnessMapTransform:{value:new t.K}},gradientmap:{gradientMap:{value:null}},fog:{fogDensity:{value:25e-5},fogNear:{value:1},fogFar:{value:2e3},fogColor:{value:new t.g(16777215)}},lights:{ambientLightColor:{value:[]},lightProbe:{value:[]},directionalLights:{value:[],properties:{direction:{},color:{}}},directionalLightShadows:{value:[],properties:{shadowIntensity:1,shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{}}},directionalShadowMatrix:{value:[]},spotLights:{value:[],properties:{color:{},position:{},direction:{},distance:{},coneCos:{},penumbraCos:{},decay:{}}},spotLightShadows:{value:[],properties:{shadowIntensity:1,shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{}}},spotLightMap:{value:[]},spotLightMatrix:{value:[]},pointLights:{value:[],properties:{color:{},position:{},decay:{},distance:{}}},pointLightShadows:{value:[],properties:{shadowIntensity:1,shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{},shadowCameraNear:{},shadowCameraFar:{}}},pointShadowMatrix:{value:[]},hemisphereLights:{value:[],properties:{direction:{},skyColor:{},groundColor:{}}},rectAreaLights:{value:[],properties:{color:{},position:{},width:{},height:{}}},ltc_1:{value:null},ltc_2:{value:null},probesSH:{value:null},probesMin:{value:new t.Sn},probesMax:{value:new t.Sn},probesResolution:{value:new t.Sn}},points:{diffuse:{value:new t.g(16777215)},opacity:{value:1},size:{value:1},scale:{value:1},map:{value:null},alphaMap:{value:null},alphaMapTransform:{value:new t.K},alphaTest:{value:0},uvTransform:{value:new t.K}},sprite:{diffuse:{value:new t.g(16777215)},opacity:{value:1},center:{value:new t.xn(.5,.5)},rotation:{value:0},map:{value:null},mapTransform:{value:new t.K},alphaMap:{value:null},alphaMapTransform:{value:new t.K},alphaTest:{value:0}}},c={basic:{uniforms:t.Pn([s.common,s.specularmap,s.envmap,s.aomap,s.lightmap,s.fog]),vertexShader:o.meshbasic_vert,fragmentShader:o.meshbasic_frag},lambert:{uniforms:t.Pn([s.common,s.specularmap,s.envmap,s.aomap,s.lightmap,s.emissivemap,s.bumpmap,s.normalmap,s.displacementmap,s.fog,s.lights,{emissive:{value:new t.g(0)},envMapIntensity:{value:1}}]),vertexShader:o.meshlambert_vert,fragmentShader:o.meshlambert_frag},phong:{uniforms:t.Pn([s.common,s.specularmap,s.envmap,s.aomap,s.lightmap,s.emissivemap,s.bumpmap,s.normalmap,s.displacementmap,s.fog,s.lights,{emissive:{value:new t.g(0)},specular:{value:new t.g(1118481)},shininess:{value:30},envMapIntensity:{value:1}}]),vertexShader:o.meshphong_vert,fragmentShader:o.meshphong_frag},standard:{uniforms:t.Pn([s.common,s.envmap,s.aomap,s.lightmap,s.emissivemap,s.bumpmap,s.normalmap,s.displacementmap,s.roughnessmap,s.metalnessmap,s.fog,s.lights,{emissive:{value:new t.g(0)},roughness:{value:1},metalness:{value:0},envMapIntensity:{value:1}}]),vertexShader:o.meshphysical_vert,fragmentShader:o.meshphysical_frag},toon:{uniforms:t.Pn([s.common,s.aomap,s.lightmap,s.emissivemap,s.bumpmap,s.normalmap,s.displacementmap,s.gradientmap,s.fog,s.lights,{emissive:{value:new t.g(0)}}]),vertexShader:o.meshtoon_vert,fragmentShader:o.meshtoon_frag},matcap:{uniforms:t.Pn([s.common,s.bumpmap,s.normalmap,s.displacementmap,s.fog,{matcap:{value:null}}]),vertexShader:o.meshmatcap_vert,fragmentShader:o.meshmatcap_frag},points:{uniforms:t.Pn([s.points,s.fog]),vertexShader:o.points_vert,fragmentShader:o.points_frag},dashed:{uniforms:t.Pn([s.common,s.fog,{scale:{value:1},dashSize:{value:1},totalSize:{value:2}}]),vertexShader:o.linedashed_vert,fragmentShader:o.linedashed_frag},depth:{uniforms:t.Pn([s.common,s.displacementmap]),vertexShader:o.depth_vert,fragmentShader:o.depth_frag},normal:{uniforms:t.Pn([s.common,s.bumpmap,s.normalmap,s.displacementmap,{opacity:{value:1}}]),vertexShader:o.meshnormal_vert,fragmentShader:o.meshnormal_frag},sprite:{uniforms:t.Pn([s.sprite,s.fog]),vertexShader:o.sprite_vert,fragmentShader:o.sprite_frag},background:{uniforms:{uvTransform:{value:new t.K},t2D:{value:null},backgroundIntensity:{value:1}},vertexShader:o.background_vert,fragmentShader:o.background_frag},backgroundCube:{uniforms:{envMap:{value:null},backgroundBlurriness:{value:0},backgroundIntensity:{value:1},backgroundRotation:{value:new t.K}},vertexShader:o.backgroundCube_vert,fragmentShader:o.backgroundCube_frag},cube:{uniforms:{tCube:{value:null},tFlip:{value:-1},opacity:{value:1}},vertexShader:o.cube_vert,fragmentShader:o.cube_frag},equirect:{uniforms:{tEquirect:{value:null}},vertexShader:o.equirect_vert,fragmentShader:o.equirect_frag},distance:{uniforms:t.Pn([s.common,s.displacementmap,{referencePosition:{value:new t.Sn},nearDistance:{value:1},farDistance:{value:1e3}}]),vertexShader:o.distance_vert,fragmentShader:o.distance_frag},shadow:{uniforms:t.Pn([s.lights,s.fog,{color:{value:new t.g(0)},opacity:{value:1}}]),vertexShader:o.shadow_vert,fragmentShader:o.shadow_frag}};c.physical={uniforms:t.Pn([c.standard.uniforms,{clearcoat:{value:0},clearcoatMap:{value:null},clearcoatMapTransform:{value:new t.K},clearcoatNormalMap:{value:null},clearcoatNormalMapTransform:{value:new t.K},clearcoatNormalScale:{value:new t.xn(1,1)},clearcoatRoughness:{value:0},clearcoatRoughnessMap:{value:null},clearcoatRoughnessMapTransform:{value:new t.K},dispersion:{value:0},iridescence:{value:0},iridescenceMap:{value:null},iridescenceMapTransform:{value:new t.K},iridescenceIOR:{value:1.3},iridescenceThicknessMinimum:{value:100},iridescenceThicknessMaximum:{value:400},iridescenceThicknessMap:{value:null},iridescenceThicknessMapTransform:{value:new t.K},sheen:{value:0},sheenColor:{value:new t.g(0)},sheenColorMap:{value:null},sheenColorMapTransform:{value:new t.K},sheenRoughness:{value:1},sheenRoughnessMap:{value:null},sheenRoughnessMapTransform:{value:new t.K},transmission:{value:0},transmissionMap:{value:null},transmissionMapTransform:{value:new t.K},transmissionSamplerSize:{value:new t.xn},transmissionSamplerMap:{value:null},thickness:{value:0},thicknessMap:{value:null},thicknessMapTransform:{value:new t.K},attenuationDistance:{value:0},attenuationColor:{value:new t.g(0)},specularColor:{value:new t.g(1,1,1)},specularColorMap:{value:null},specularColorMapTransform:{value:new t.K},specularIntensity:{value:1},specularIntensityMap:{value:null},specularIntensityMapTransform:{value:new t.K},anisotropyVector:{value:new t.xn},anisotropyMap:{value:null},anisotropyMapTransform:{value:new t.K}}]),vertexShader:o.meshphysical_vert,fragmentShader:o.meshphysical_frag};var l={r:0,b:0,g:0},u=new t.q,d=new t.K;d.set(-1,0,0,0,1,0,0,0,1);function f(e,n,r,i,a,o){let s=new t.g(0),f=a===!0?0:1,p,m,h=null,g=0,_=null;function v(e){let t=e.isScene===!0?e.background:null;if(t&&t.isTexture){let r=e.backgroundBlurriness>0;t=n.get(t,r)}return t}function y(t){let n=!1,i=v(t);i===null?x(s,f):i&&i.isColor&&(x(i,1),n=!0);let a=e.xr.getEnvironmentBlendMode();a===`additive`?r.buffers.color.setClear(0,0,0,1,o):a===`alpha-blend`&&r.buffers.color.setClear(0,0,0,0,o),(e.autoClear||n)&&(r.buffers.depth.setTest(!0),r.buffers.depth.setMask(!0),r.buffers.color.setMask(!0),e.clear(e.autoClearColor,e.autoClearDepth,e.autoClearStencil))}function b(n,r){let a=v(r);a&&(a.isCubeTexture||a.mapping===306)?(m===void 0&&(m=new t.J(new t.d(1,1,1),new t.an({name:`BackgroundCubeMaterial`,uniforms:t.Dn(c.backgroundCube.uniforms),vertexShader:c.backgroundCube.vertexShader,fragmentShader:c.backgroundCube.fragmentShader,side:1,depthTest:!1,depthWrite:!1,fog:!1,allowOverride:!1})),m.geometry.deleteAttribute(`normal`),m.geometry.deleteAttribute(`uv`),m.onBeforeRender=function(e,t,n){this.matrixWorld.copyPosition(n.matrixWorld)},Object.defineProperty(m.material,"envMap",{get:function(){return this.uniforms.envMap.value}}),i.update(m)),m.material.uniforms.envMap.value=a,m.material.uniforms.backgroundBlurriness.value=r.backgroundBlurriness,m.material.uniforms.backgroundIntensity.value=r.backgroundIntensity,m.material.uniforms.backgroundRotation.value.setFromMatrix4(u.makeRotationFromEuler(r.backgroundRotation)).transpose(),a.isCubeTexture&&a.isRenderTargetTexture===!1&&m.material.uniforms.backgroundRotation.value.premultiply(d),m.material.toneMapped=t._.getTransfer(a.colorSpace)!==t.rn,(h!==a||g!==a.version||_!==e.toneMapping)&&(m.material.needsUpdate=!0,h=a,g=a.version,_=e.toneMapping),m.layers.enableAll(),n.unshift(m,m.geometry,m.material,0,0,null)):a&&a.isTexture&&(p===void 0&&(p=new t.J(new t.at(2,2),new t.an({name:`BackgroundMaterial`,uniforms:t.Dn(c.background.uniforms),vertexShader:c.background.vertexShader,fragmentShader:c.background.fragmentShader,side:0,depthTest:!1,depthWrite:!1,fog:!1,allowOverride:!1})),p.geometry.deleteAttribute(`normal`),Object.defineProperty(p.material,"map",{get:function(){return this.uniforms.t2D.value}}),i.update(p)),p.material.uniforms.t2D.value=a,p.material.uniforms.backgroundIntensity.value=r.backgroundIntensity,p.material.toneMapped=t._.getTransfer(a.colorSpace)!==t.rn,a.matrixAutoUpdate===!0&&a.updateMatrix(),p.material.uniforms.uvTransform.value.copy(a.matrix),(h!==a||g!==a.version||_!==e.toneMapping)&&(p.material.needsUpdate=!0,h=a,g=a.version,_=e.toneMapping),p.layers.enableAll(),n.unshift(p,p.geometry,p.material,0,0,null))}function x(n,i){n.getRGB(l,t.Mn(e)),r.buffers.color.setClear(l.r,l.g,l.b,i,o)}function S(){m!==void 0&&(m.geometry.dispose(),m.material.dispose(),m=void 0),p!==void 0&&(p.geometry.dispose(),p.material.dispose(),p=void 0)}return{getClearColor:function(){return s},setClearColor:function(e,t=1){s.set(e),f=t,x(s,f)},getClearAlpha:function(){return f},setClearAlpha:function(e){f=e,x(s,f)},render:y,addToRenderList:b,dispose:S}}function p(e,t){let n=e.getParameter(e.MAX_VERTEX_ATTRIBS),r={},i=f(null),a=i,o=!1;function s(n,r,i,s,c){let u=!1,f=d(n,s,i,r);a!==f&&(a=f,l(a.object)),u=p(n,s,i,c),u&&m(n,s,i,c),c!==null&&t.update(c,e.ELEMENT_ARRAY_BUFFER),(u||o)&&(o=!1,b(n,r,i,s),c!==null&&e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,t.get(c).buffer))}function c(){return e.createVertexArray()}function l(t){return e.bindVertexArray(t)}function u(t){return e.deleteVertexArray(t)}function d(e,t,n,i){let a=i.wireframe===!0,o=r[t.id];o===void 0&&(o={},r[t.id]=o);let s=e.isInstancedMesh===!0?e.id:0,l=o[s];l===void 0&&(l={},o[s]=l);let u=l[n.id];u===void 0&&(u={},l[n.id]=u);let d=u[a];return d===void 0&&(d=f(c()),u[a]=d),d}function f(e){let t=[],r=[],i=[];for(let e=0;e<n;e++)t[e]=0,r[e]=0,i[e]=0;return{geometry:null,program:null,wireframe:!1,newAttributes:t,enabledAttributes:r,attributeDivisors:i,object:e,attributes:{},index:null}}function p(e,t,n,r){let i=a.attributes,o=t.attributes,s=0,c=n.getAttributes();for(let t in c)if(c[t].location>=0){let n=i[t],r=o[t];if(r===void 0&&(t===`instanceMatrix`&&e.instanceMatrix&&(r=e.instanceMatrix),t===`instanceColor`&&e.instanceColor&&(r=e.instanceColor)),n===void 0||n.attribute!==r||r&&n.data!==r.data)return!0;s++}return a.attributesNum!==s||a.index!==r}function m(e,t,n,r){let i={},o=t.attributes,s=0,c=n.getAttributes();for(let t in c)if(c[t].location>=0){let n=o[t];n===void 0&&(t===`instanceMatrix`&&e.instanceMatrix&&(n=e.instanceMatrix),t===`instanceColor`&&e.instanceColor&&(n=e.instanceColor));let r={};r.attribute=n,n&&n.data&&(r.data=n.data),i[t]=r,s++}a.attributes=i,a.attributesNum=s,a.index=r}function h(){let e=a.newAttributes;for(let t=0,n=e.length;t<n;t++)e[t]=0}function g(e){_(e,0)}function _(t,n){let r=a.newAttributes,i=a.enabledAttributes,o=a.attributeDivisors;r[t]=1,i[t]===0&&(e.enableVertexAttribArray(t),i[t]=1),o[t]!==n&&(e.vertexAttribDivisor(t,n),o[t]=n)}function v(){let t=a.newAttributes,n=a.enabledAttributes;for(let r=0,i=n.length;r<i;r++)n[r]!==t[r]&&(e.disableVertexAttribArray(r),n[r]=0)}function y(t,n,r,i,a,o,s){s===!0?e.vertexAttribIPointer(t,n,r,a,o):e.vertexAttribPointer(t,n,r,i,a,o)}function b(n,r,i,a){h();let o=a.attributes,s=i.getAttributes(),c=r.defaultAttributeValues;for(let r in s){let i=s[r];if(i.location>=0){let s=o[r];if(s===void 0&&(r===`instanceMatrix`&&n.instanceMatrix&&(s=n.instanceMatrix),r===`instanceColor`&&n.instanceColor&&(s=n.instanceColor)),s!==void 0){let r=s.normalized,o=s.itemSize,c=t.get(s);if(c===void 0)continue;let l=c.buffer,u=c.type,d=c.bytesPerElement,f=u===e.INT||u===e.UNSIGNED_INT||s.gpuType===1013;if(s.isInterleavedBufferAttribute){let t=s.data,c=t.stride,p=s.offset;if(t.isInstancedInterleavedBuffer){for(let e=0;e<i.locationSize;e++)_(i.location+e,t.meshPerAttribute);n.isInstancedMesh!==!0&&a._maxInstanceCount===void 0&&(a._maxInstanceCount=t.meshPerAttribute*t.count)}else for(let e=0;e<i.locationSize;e++)g(i.location+e);e.bindBuffer(e.ARRAY_BUFFER,l);for(let e=0;e<i.locationSize;e++)y(i.location+e,o/i.locationSize,u,r,c*d,(p+o/i.locationSize*e)*d,f)}else{if(s.isInstancedBufferAttribute){for(let e=0;e<i.locationSize;e++)_(i.location+e,s.meshPerAttribute);n.isInstancedMesh!==!0&&a._maxInstanceCount===void 0&&(a._maxInstanceCount=s.meshPerAttribute*s.count)}else for(let e=0;e<i.locationSize;e++)g(i.location+e);e.bindBuffer(e.ARRAY_BUFFER,l);for(let e=0;e<i.locationSize;e++)y(i.location+e,o/i.locationSize,u,r,o*d,o/i.locationSize*e*d,f)}}else if(c!==void 0){let t=c[r];if(t!==void 0)switch(t.length){case 2:e.vertexAttrib2fv(i.location,t);break;case 3:e.vertexAttrib3fv(i.location,t);break;case 4:e.vertexAttrib4fv(i.location,t);break;default:e.vertexAttrib1fv(i.location,t)}}}}v()}function x(){T();for(let e in r){let t=r[e];for(let e in t){let n=t[e];for(let e in n){let t=n[e];for(let e in t)u(t[e].object),delete t[e];delete n[e]}}delete r[e]}}function S(e){if(r[e.id]===void 0)return;let t=r[e.id];for(let e in t){let n=t[e];for(let e in n){let t=n[e];for(let e in t)u(t[e].object),delete t[e];delete n[e]}}delete r[e.id]}function C(e){for(let t in r){let n=r[t];for(let t in n){let r=n[t];if(r[e.id]===void 0)continue;let i=r[e.id];for(let e in i)u(i[e].object),delete i[e];delete r[e.id]}}}function w(e){for(let t in r){let n=r[t],i=e.isInstancedMesh===!0?e.id:0,a=n[i];if(a!==void 0){for(let e in a){let t=a[e];for(let e in t)u(t[e].object),delete t[e];delete a[e]}delete n[i],Object.keys(n).length===0&&delete r[t]}}}function T(){E(),o=!0,a!==i&&(a=i,l(a.object))}function E(){i.geometry=null,i.program=null,i.wireframe=!1}return{setup:s,reset:T,resetDefaultState:E,dispose:x,releaseStatesOfGeometry:S,releaseStatesOfObject:w,releaseStatesOfProgram:C,initAttributes:h,enableAttribute:g,disableUnusedAttributes:v}}function m(e,t,n){let r;function i(e){r=e}function a(t,i){e.drawArrays(r,t,i),n.update(i,r,1)}function o(t,i,a){a!==0&&(e.drawArraysInstanced(r,t,i,a),n.update(i,r,a))}function s(e,i,a){if(a===0)return;t.get(`WEBGL_multi_draw`).multiDrawArraysWEBGL(r,e,0,i,0,a);let o=0;for(let e=0;e<a;e++)o+=i[e];n.update(o,r,1)}this.setMode=i,this.render=a,this.renderInstances=o,this.renderMultiDraw=s}function h(e,n,r,i){let a;function o(){if(a!==void 0)return a;if(n.has(`EXT_texture_filter_anisotropic`)===!0){let t=n.get(`EXT_texture_filter_anisotropic`);a=e.getParameter(t.MAX_TEXTURE_MAX_ANISOTROPY_EXT)}else a=0;return a}function s(t){return t===1023||i.convert(t)===e.getParameter(e.IMPLEMENTATION_COLOR_READ_FORMAT)}function c(t){let r=t===1016&&(n.has(`EXT_color_buffer_half_float`)||n.has(`EXT_color_buffer_float`));return!(t!==1009&&i.convert(t)!==e.getParameter(e.IMPLEMENTATION_COLOR_READ_TYPE)&&t!==1015&&!r)}function l(t){if(t===`highp`){if(e.getShaderPrecisionFormat(e.VERTEX_SHADER,e.HIGH_FLOAT).precision>0&&e.getShaderPrecisionFormat(e.FRAGMENT_SHADER,e.HIGH_FLOAT).precision>0)return`highp`;t=`mediump`}return t===`mediump`&&e.getShaderPrecisionFormat(e.VERTEX_SHADER,e.MEDIUM_FLOAT).precision>0&&e.getShaderPrecisionFormat(e.FRAGMENT_SHADER,e.MEDIUM_FLOAT).precision>0?`mediump`:`lowp`}let u=r.precision===void 0?`highp`:r.precision,d=l(u);d!==u&&(t.In(`WebGLRenderer:`,u,`not supported, using`,d,`instead.`),u=d);let f=r.logarithmicDepthBuffer===!0,p=r.reversedDepthBuffer===!0&&n.has(`EXT_clip_control`);r.reversedDepthBuffer===!0&&p===!1&&t.In(`WebGLRenderer: Unable to use reversed depth buffer due to missing EXT_clip_control extension. Fallback to default depth buffer.`);let m=e.getParameter(e.MAX_TEXTURE_IMAGE_UNITS),h=e.getParameter(e.MAX_VERTEX_TEXTURE_IMAGE_UNITS),g=e.getParameter(e.MAX_TEXTURE_SIZE),_=e.getParameter(e.MAX_CUBE_MAP_TEXTURE_SIZE),v=e.getParameter(e.MAX_VERTEX_ATTRIBS),y=e.getParameter(e.MAX_VERTEX_UNIFORM_VECTORS),b=e.getParameter(e.MAX_VARYING_VECTORS),x=e.getParameter(e.MAX_FRAGMENT_UNIFORM_VECTORS),S=e.getParameter(e.MAX_SAMPLES),C=e.getParameter(e.SAMPLES);return{isWebGL2:!0,getMaxAnisotropy:o,getMaxPrecision:l,textureFormatReadable:s,textureTypeReadable:c,precision:u,logarithmicDepthBuffer:f,reversedDepthBuffer:p,maxTextures:m,maxVertexTextures:h,maxTextureSize:g,maxCubemapSize:_,maxAttributes:v,maxVertexUniforms:y,maxVaryings:b,maxFragmentUniforms:x,maxSamples:S,samples:C}}function g(e){let n=this,r=null,i=0,a=!1,o=!1,s=new t.it,c=new t.K,l={value:null,needsUpdate:!1};this.uniform=l,this.numPlanes=0,this.numIntersection=0,this.init=function(e,t){let n=e.length!==0||t||i!==0||a;return a=t,i=e.length,n},this.beginShadows=function(){o=!0,d(null)},this.endShadows=function(){o=!1},this.setGlobalState=function(e,t){r=d(e,t,0)},this.setState=function(t,n,s){let c=t.clippingPlanes,f=t.clipIntersection,p=t.clipShadows,m=e.get(t);if(!a||c===null||c.length===0||o&&!p)o?d(null):u();else{let e=o?0:i,t=e*4,a=m.clippingState||null;l.value=a,a=d(c,n,t,s);for(let e=0;e!==t;++e)a[e]=r[e];m.clippingState=a,this.numIntersection=f?this.numPlanes:0,this.numPlanes+=e}};function u(){l.value!==r&&(l.value=r,l.needsUpdate=i>0),n.numPlanes=i,n.numIntersection=0}function d(e,t,r,i){let a=e===null?0:e.length,o=null;if(a!==0){if(o=l.value,i!==!0||o===null){let n=r+a*4,i=t.matrixWorldInverse;c.getNormalMatrix(i),(o===null||o.length<n)&&(o=new Float32Array(n));for(let t=0,n=r;t!==a;++t,n+=4)s.copy(e[t]).applyMatrix4(i,c),s.normal.toArray(o,n),o[n+3]=s.constant}l.value=o,l.needsUpdate=!0}return n.numPlanes=a,n.numIntersection=0,o}}var _=4,v=[.125,.215,.35,.446,.526,.582],y=20,b=256,x=new t.nt,S=new t.g,C=null,w=0,T=0,E=!1,D=new t.Sn,O=class{constructor(e){this._renderer=e,this._pingPongRenderTarget=null,this._lodMax=0,this._cubeSize=0,this._sizeLods=[],this._sigmas=[],this._lodMeshes=[],this._backgroundBox=null,this._cubemapMaterial=null,this._equirectMaterial=null,this._blurMaterial=null,this._ggxMaterial=null}fromScene(e,t=0,n=.1,r=100,i={}){let{size:a=256,position:o=D}=i;C=this._renderer.getRenderTarget(),w=this._renderer.getActiveCubeFace(),T=this._renderer.getActiveMipmapLevel(),E=this._renderer.xr.enabled,this._renderer.xr.enabled=!1,this._setSize(a);let s=this._allocateTargets();return s.depthBuffer=!0,this._sceneToCubeUV(e,n,r,s,o),t>0&&this._blur(s,0,0,t),this._applyPMREM(s),this._cleanup(s),s}fromEquirectangular(e,t=null){return this._fromTexture(e,t)}fromCubemap(e,t=null){return this._fromTexture(e,t)}compileCubemapShader(){this._cubemapMaterial===null&&(this._cubemapMaterial=P(),this._compileMaterial(this._cubemapMaterial))}compileEquirectangularShader(){this._equirectMaterial===null&&(this._equirectMaterial=ee(),this._compileMaterial(this._equirectMaterial))}dispose(){this._dispose(),this._cubemapMaterial!==null&&this._cubemapMaterial.dispose(),this._equirectMaterial!==null&&this._equirectMaterial.dispose(),this._backgroundBox!==null&&(this._backgroundBox.geometry.dispose(),this._backgroundBox.material.dispose())}_setSize(e){this._lodMax=Math.floor(Math.log2(e)),this._cubeSize=2**this._lodMax}_dispose(){this._blurMaterial!==null&&this._blurMaterial.dispose(),this._ggxMaterial!==null&&this._ggxMaterial.dispose(),this._pingPongRenderTarget!==null&&this._pingPongRenderTarget.dispose();for(let e=0;e<this._lodMeshes.length;e++)this._lodMeshes[e].geometry.dispose()}_cleanup(e){this._renderer.setRenderTarget(C,w,T),this._renderer.xr.enabled=E,e.scissorTest=!1,j(e,0,0,e.width,e.height)}_fromTexture(e,t){e.mapping===301||e.mapping===302?this._setSize(e.image.length===0?16:e.image[0].width||e.image[0].image.width):this._setSize(e.image.width/4),C=this._renderer.getRenderTarget(),w=this._renderer.getActiveCubeFace(),T=this._renderer.getActiveMipmapLevel(),E=this._renderer.xr.enabled,this._renderer.xr.enabled=!1;let n=t||this._allocateTargets();return this._textureToCubeUV(e,n),this._applyPMREM(n),this._cleanup(n),n}_allocateTargets(){let e=3*Math.max(this._cubeSize,112),n=4*this._cubeSize,r={magFilter:t.z,minFilter:t.z,generateMipmaps:!1,type:t.I,format:t.pt,colorSpace:t.H,depthBuffer:!1},i=A(e,n,r);if(this._pingPongRenderTarget===null||this._pingPongRenderTarget.width!==e||this._pingPongRenderTarget.height!==n){this._pingPongRenderTarget!==null&&this._dispose(),this._pingPongRenderTarget=A(e,n,r);let{_lodMax:t}=this;({lodMeshes:this._lodMeshes,sizeLods:this._sizeLods,sigmas:this._sigmas}=k(t)),this._blurMaterial=N(t,e,n),this._ggxMaterial=M(t,e,n)}return i}_compileMaterial(e){let n=new t.J(new t.p,e);this._renderer.compile(n,x)}_sceneToCubeUV(e,n,r,i,a){let o=new t.rt(90,1,n,r),s=[1,-1,1,1,1,1],c=[1,1,1,-1,-1,-1],l=this._renderer,u=l.autoClear,d=l.toneMapping;l.getClearColor(S),l.toneMapping=0,l.autoClear=!1,l.state.buffers.depth.getReversed()&&(l.setRenderTarget(i),l.clearDepth(),l.setRenderTarget(null)),this._backgroundBox===null&&(this._backgroundBox=new t.J(new t.d,new t.Y({name:`PMREM.Background`,side:1,depthWrite:!1,depthTest:!1})));let f=this._backgroundBox,p=f.material,m=!1,h=e.background;h?h.isColor&&(p.color.copy(h),e.background=null,m=!0):(p.color.copy(S),m=!0);for(let t=0;t<6;t++){let n=t%3;n===0?(o.up.set(0,s[t],0),o.position.set(a.x,a.y,a.z),o.lookAt(a.x+c[t],a.y,a.z)):n===1?(o.up.set(0,0,s[t]),o.position.set(a.x,a.y,a.z),o.lookAt(a.x,a.y+c[t],a.z)):(o.up.set(0,s[t],0),o.position.set(a.x,a.y,a.z),o.lookAt(a.x,a.y,a.z+c[t]));let r=this._cubeSize;j(i,n*r,t>2?r:0,r,r),l.setRenderTarget(i),m&&l.render(f,o),l.render(e,o)}l.toneMapping=d,l.autoClear=u,e.background=h}_textureToCubeUV(e,t){let n=this._renderer,r=e.mapping===301||e.mapping===302;r?(this._cubemapMaterial===null&&(this._cubemapMaterial=P()),this._cubemapMaterial.uniforms.flipEnvMap.value=e.isRenderTargetTexture===!1?-1:1):this._equirectMaterial===null&&(this._equirectMaterial=ee());let i=r?this._cubemapMaterial:this._equirectMaterial,a=this._lodMeshes[0];a.material=i;let o=i.uniforms;o.envMap.value=e;let s=this._cubeSize;j(t,0,0,3*s,2*s),n.setRenderTarget(t),n.render(a,x)}_applyPMREM(e){let t=this._renderer,n=t.autoClear;t.autoClear=!1;let r=this._lodMeshes.length;for(let t=1;t<r;t++)this._applyGGXFilter(e,t-1,t);t.autoClear=n}_applyGGXFilter(e,t,n){let r=this._renderer,i=this._pingPongRenderTarget,a=this._ggxMaterial,o=this._lodMeshes[n];o.material=a;let s=a.uniforms,c=n/(this._lodMeshes.length-1),l=t/(this._lodMeshes.length-1),u=Math.sqrt(c*c-l*l)*(0+c*1.25),{_lodMax:d}=this,f=this._sizeLods[n],p=3*f*(n>d-_?n-d+_:0),m=4*(this._cubeSize-f);s.envMap.value=e.texture,s.roughness.value=u,s.mipInt.value=d-t,j(i,p,m,3*f,2*f),r.setRenderTarget(i),r.render(o,x),s.envMap.value=i.texture,s.roughness.value=0,s.mipInt.value=d-n,j(e,p,m,3*f,2*f),r.setRenderTarget(e),r.render(o,x)}_blur(e,t,n,r,i){let a=this._pingPongRenderTarget;this._halfBlur(e,a,t,n,r,`latitudinal`,i),this._halfBlur(a,e,n,n,r,`longitudinal`,i)}_halfBlur(e,n,r,i,a,o,s){let c=this._renderer,l=this._blurMaterial;o!==`latitudinal`&&o!==`longitudinal`&&t.An(`blur direction must be either latitudinal or longitudinal!`);let u=this._lodMeshes[i];u.material=l;let d=l.uniforms,f=this._sizeLods[r]-1,p=isFinite(a)?Math.PI/(2*f):2*Math.PI/39,m=a/p,h=isFinite(a)?1+Math.floor(3*m):y;h>y&&t.In(`sigmaRadians, ${a}, is too large and will clip, as it requested ${h} samples when the maximum is set to ${y}`);let g=[],v=0;for(let e=0;e<y;++e){let t=e/m,n=Math.exp(-t*t/2);g.push(n),e===0?v+=n:e<h&&(v+=2*n)}for(let e=0;e<g.length;e++)g[e]=g[e]/v;d.envMap.value=e.texture,d.samples.value=h,d.weights.value=g,d.latitudinal.value=o===`latitudinal`,s&&(d.poleAxis.value=s);let{_lodMax:b}=this;d.dTheta.value=p,d.mipInt.value=b-r;let S=this._sizeLods[i];j(n,3*S*(i>b-_?i-b+_:0),4*(this._cubeSize-S),3*S,2*S),c.setRenderTarget(n),c.render(u,x)}};function k(e){let n=[],r=[],i=[],a=e,o=e-_+1+v.length;for(let s=0;s<o;s++){let o=2**a;n.push(o);let c=1/o;s>e-_?c=v[s-e+_-1]:s===0&&(c=0),r.push(c);let l=1/(o-2),u=-l,d=1+l,f=[u,u,d,u,d,d,u,u,d,d,u,d],p=new Float32Array(108),m=new Float32Array(72),h=new Float32Array(36);for(let e=0;e<6;e++){let t=e%3*2/3-1,n=e>2?0:-1,r=[t,n,0,t+2/3,n,0,t+2/3,n+1,0,t,n,0,t+2/3,n+1,0,t,n+1,0];p.set(r,18*e),m.set(f,12*e);let i=[e,e,e,e,e,e];h.set(i,6*e)}let g=new t.p;g.setAttribute(`position`,new t.f(p,3)),g.setAttribute(`uv`,new t.f(m,2)),g.setAttribute(`faceIndex`,new t.f(h,1)),i.push(new t.J(g,null)),a>_&&a--}return{lodMeshes:i,sizeLods:n,sigmas:r}}function A(e,n,r){let i=new t.Tn(e,n,r);return i.texture.mapping=306,i.texture.name=`PMREM.cubeUv`,i.scissorTest=!0,i}function j(e,t,n,r,i){e.viewport.set(t,n,r,i),e.scissor.set(t,n,r,i)}function M(e,n,r){return new t.an({name:`PMREMGGXConvolution`,defines:{GGX_SAMPLES:b,CUBEUV_TEXEL_WIDTH:1/n,CUBEUV_TEXEL_HEIGHT:1/r,CUBEUV_MAX_MIP:`${e}.0`},uniforms:{envMap:{value:null},roughness:{value:0},mipInt:{value:0}},vertexShader:F(),fragmentShader:`
3667
+ }`},s={common:{diffuse:{value:new t.g(16777215)},opacity:{value:1},map:{value:null},mapTransform:{value:new t.q},alphaMap:{value:null},alphaMapTransform:{value:new t.q},alphaTest:{value:0}},specularmap:{specularMap:{value:null},specularMapTransform:{value:new t.q}},envmap:{envMap:{value:null},envMapRotation:{value:new t.q},reflectivity:{value:1},ior:{value:1.5},refractionRatio:{value:.98},dfgLUT:{value:null}},aomap:{aoMap:{value:null},aoMapIntensity:{value:1},aoMapTransform:{value:new t.q}},lightmap:{lightMap:{value:null},lightMapIntensity:{value:1},lightMapTransform:{value:new t.q}},bumpmap:{bumpMap:{value:null},bumpMapTransform:{value:new t.q},bumpScale:{value:1}},normalmap:{normalMap:{value:null},normalMapTransform:{value:new t.q},normalScale:{value:new t.Sn(1,1)}},displacementmap:{displacementMap:{value:null},displacementMapTransform:{value:new t.q},displacementScale:{value:1},displacementBias:{value:0}},emissivemap:{emissiveMap:{value:null},emissiveMapTransform:{value:new t.q}},metalnessmap:{metalnessMap:{value:null},metalnessMapTransform:{value:new t.q}},roughnessmap:{roughnessMap:{value:null},roughnessMapTransform:{value:new t.q}},gradientmap:{gradientMap:{value:null}},fog:{fogDensity:{value:25e-5},fogNear:{value:1},fogFar:{value:2e3},fogColor:{value:new t.g(16777215)}},lights:{ambientLightColor:{value:[]},lightProbe:{value:[]},directionalLights:{value:[],properties:{direction:{},color:{}}},directionalLightShadows:{value:[],properties:{shadowIntensity:1,shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{}}},directionalShadowMatrix:{value:[]},spotLights:{value:[],properties:{color:{},position:{},direction:{},distance:{},coneCos:{},penumbraCos:{},decay:{}}},spotLightShadows:{value:[],properties:{shadowIntensity:1,shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{}}},spotLightMap:{value:[]},spotLightMatrix:{value:[]},pointLights:{value:[],properties:{color:{},position:{},decay:{},distance:{}}},pointLightShadows:{value:[],properties:{shadowIntensity:1,shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{},shadowCameraNear:{},shadowCameraFar:{}}},pointShadowMatrix:{value:[]},hemisphereLights:{value:[],properties:{direction:{},skyColor:{},groundColor:{}}},rectAreaLights:{value:[],properties:{color:{},position:{},width:{},height:{}}},ltc_1:{value:null},ltc_2:{value:null},probesSH:{value:null},probesMin:{value:new t.Cn},probesMax:{value:new t.Cn},probesResolution:{value:new t.Cn}},points:{diffuse:{value:new t.g(16777215)},opacity:{value:1},size:{value:1},scale:{value:1},map:{value:null},alphaMap:{value:null},alphaMapTransform:{value:new t.q},alphaTest:{value:0},uvTransform:{value:new t.q}},sprite:{diffuse:{value:new t.g(16777215)},opacity:{value:1},center:{value:new t.Sn(.5,.5)},rotation:{value:0},map:{value:null},mapTransform:{value:new t.q},alphaMap:{value:null},alphaMapTransform:{value:new t.q},alphaTest:{value:0}}},c={basic:{uniforms:t.Fn([s.common,s.specularmap,s.envmap,s.aomap,s.lightmap,s.fog]),vertexShader:o.meshbasic_vert,fragmentShader:o.meshbasic_frag},lambert:{uniforms:t.Fn([s.common,s.specularmap,s.envmap,s.aomap,s.lightmap,s.emissivemap,s.bumpmap,s.normalmap,s.displacementmap,s.fog,s.lights,{emissive:{value:new t.g(0)},envMapIntensity:{value:1}}]),vertexShader:o.meshlambert_vert,fragmentShader:o.meshlambert_frag},phong:{uniforms:t.Fn([s.common,s.specularmap,s.envmap,s.aomap,s.lightmap,s.emissivemap,s.bumpmap,s.normalmap,s.displacementmap,s.fog,s.lights,{emissive:{value:new t.g(0)},specular:{value:new t.g(1118481)},shininess:{value:30},envMapIntensity:{value:1}}]),vertexShader:o.meshphong_vert,fragmentShader:o.meshphong_frag},standard:{uniforms:t.Fn([s.common,s.envmap,s.aomap,s.lightmap,s.emissivemap,s.bumpmap,s.normalmap,s.displacementmap,s.roughnessmap,s.metalnessmap,s.fog,s.lights,{emissive:{value:new t.g(0)},roughness:{value:1},metalness:{value:0},envMapIntensity:{value:1}}]),vertexShader:o.meshphysical_vert,fragmentShader:o.meshphysical_frag},toon:{uniforms:t.Fn([s.common,s.aomap,s.lightmap,s.emissivemap,s.bumpmap,s.normalmap,s.displacementmap,s.gradientmap,s.fog,s.lights,{emissive:{value:new t.g(0)}}]),vertexShader:o.meshtoon_vert,fragmentShader:o.meshtoon_frag},matcap:{uniforms:t.Fn([s.common,s.bumpmap,s.normalmap,s.displacementmap,s.fog,{matcap:{value:null}}]),vertexShader:o.meshmatcap_vert,fragmentShader:o.meshmatcap_frag},points:{uniforms:t.Fn([s.points,s.fog]),vertexShader:o.points_vert,fragmentShader:o.points_frag},dashed:{uniforms:t.Fn([s.common,s.fog,{scale:{value:1},dashSize:{value:1},totalSize:{value:2}}]),vertexShader:o.linedashed_vert,fragmentShader:o.linedashed_frag},depth:{uniforms:t.Fn([s.common,s.displacementmap]),vertexShader:o.depth_vert,fragmentShader:o.depth_frag},normal:{uniforms:t.Fn([s.common,s.bumpmap,s.normalmap,s.displacementmap,{opacity:{value:1}}]),vertexShader:o.meshnormal_vert,fragmentShader:o.meshnormal_frag},sprite:{uniforms:t.Fn([s.sprite,s.fog]),vertexShader:o.sprite_vert,fragmentShader:o.sprite_frag},background:{uniforms:{uvTransform:{value:new t.q},t2D:{value:null},backgroundIntensity:{value:1}},vertexShader:o.background_vert,fragmentShader:o.background_frag},backgroundCube:{uniforms:{envMap:{value:null},backgroundBlurriness:{value:0},backgroundIntensity:{value:1},backgroundRotation:{value:new t.q}},vertexShader:o.backgroundCube_vert,fragmentShader:o.backgroundCube_frag},cube:{uniforms:{tCube:{value:null},tFlip:{value:-1},opacity:{value:1}},vertexShader:o.cube_vert,fragmentShader:o.cube_frag},equirect:{uniforms:{tEquirect:{value:null}},vertexShader:o.equirect_vert,fragmentShader:o.equirect_frag},distance:{uniforms:t.Fn([s.common,s.displacementmap,{referencePosition:{value:new t.Cn},nearDistance:{value:1},farDistance:{value:1e3}}]),vertexShader:o.distance_vert,fragmentShader:o.distance_frag},shadow:{uniforms:t.Fn([s.lights,s.fog,{color:{value:new t.g(0)},opacity:{value:1}}]),vertexShader:o.shadow_vert,fragmentShader:o.shadow_frag}};c.physical={uniforms:t.Fn([c.standard.uniforms,{clearcoat:{value:0},clearcoatMap:{value:null},clearcoatMapTransform:{value:new t.q},clearcoatNormalMap:{value:null},clearcoatNormalMapTransform:{value:new t.q},clearcoatNormalScale:{value:new t.Sn(1,1)},clearcoatRoughness:{value:0},clearcoatRoughnessMap:{value:null},clearcoatRoughnessMapTransform:{value:new t.q},dispersion:{value:0},iridescence:{value:0},iridescenceMap:{value:null},iridescenceMapTransform:{value:new t.q},iridescenceIOR:{value:1.3},iridescenceThicknessMinimum:{value:100},iridescenceThicknessMaximum:{value:400},iridescenceThicknessMap:{value:null},iridescenceThicknessMapTransform:{value:new t.q},sheen:{value:0},sheenColor:{value:new t.g(0)},sheenColorMap:{value:null},sheenColorMapTransform:{value:new t.q},sheenRoughness:{value:1},sheenRoughnessMap:{value:null},sheenRoughnessMapTransform:{value:new t.q},transmission:{value:0},transmissionMap:{value:null},transmissionMapTransform:{value:new t.q},transmissionSamplerSize:{value:new t.Sn},transmissionSamplerMap:{value:null},thickness:{value:0},thicknessMap:{value:null},thicknessMapTransform:{value:new t.q},attenuationDistance:{value:0},attenuationColor:{value:new t.g(0)},specularColor:{value:new t.g(1,1,1)},specularColorMap:{value:null},specularColorMapTransform:{value:new t.q},specularIntensity:{value:1},specularIntensityMap:{value:null},specularIntensityMapTransform:{value:new t.q},anisotropyVector:{value:new t.Sn},anisotropyMap:{value:null},anisotropyMapTransform:{value:new t.q}}]),vertexShader:o.meshphysical_vert,fragmentShader:o.meshphysical_frag};var l={r:0,b:0,g:0},u=new t.J,d=new t.q;d.set(-1,0,0,0,1,0,0,0,1);function f(e,n,r,i,a,o){let s=new t.g(0),f=a===!0?0:1,p,m,h=null,g=0,_=null;function v(e){let t=e.isScene===!0?e.background:null;if(t&&t.isTexture){let r=e.backgroundBlurriness>0;t=n.get(t,r)}return t}function y(t){let n=!1,i=v(t);i===null?x(s,f):i&&i.isColor&&(x(i,1),n=!0);let a=e.xr.getEnvironmentBlendMode();a===`additive`?r.buffers.color.setClear(0,0,0,1,o):a===`alpha-blend`&&r.buffers.color.setClear(0,0,0,0,o),(e.autoClear||n)&&(r.buffers.depth.setTest(!0),r.buffers.depth.setMask(!0),r.buffers.color.setMask(!0),e.clear(e.autoClearColor,e.autoClearDepth,e.autoClearStencil))}function b(n,r){let a=v(r);a&&(a.isCubeTexture||a.mapping===306)?(m===void 0&&(m=new t.Y(new t.d(1,1,1),new t.on({name:`BackgroundCubeMaterial`,uniforms:t.On(c.backgroundCube.uniforms),vertexShader:c.backgroundCube.vertexShader,fragmentShader:c.backgroundCube.fragmentShader,side:1,depthTest:!1,depthWrite:!1,fog:!1,allowOverride:!1})),m.geometry.deleteAttribute(`normal`),m.geometry.deleteAttribute(`uv`),m.onBeforeRender=function(e,t,n){this.matrixWorld.copyPosition(n.matrixWorld)},Object.defineProperty(m.material,"envMap",{get:function(){return this.uniforms.envMap.value}}),i.update(m)),m.material.uniforms.envMap.value=a,m.material.uniforms.backgroundBlurriness.value=r.backgroundBlurriness,m.material.uniforms.backgroundIntensity.value=r.backgroundIntensity,m.material.uniforms.backgroundRotation.value.setFromMatrix4(u.makeRotationFromEuler(r.backgroundRotation)).transpose(),a.isCubeTexture&&a.isRenderTargetTexture===!1&&m.material.uniforms.backgroundRotation.value.premultiply(d),m.material.toneMapped=t._.getTransfer(a.colorSpace)!==t.in,(h!==a||g!==a.version||_!==e.toneMapping)&&(m.material.needsUpdate=!0,h=a,g=a.version,_=e.toneMapping),m.layers.enableAll(),n.unshift(m,m.geometry,m.material,0,0,null)):a&&a.isTexture&&(p===void 0&&(p=new t.Y(new t.ot(2,2),new t.on({name:`BackgroundMaterial`,uniforms:t.On(c.background.uniforms),vertexShader:c.background.vertexShader,fragmentShader:c.background.fragmentShader,side:0,depthTest:!1,depthWrite:!1,fog:!1,allowOverride:!1})),p.geometry.deleteAttribute(`normal`),Object.defineProperty(p.material,"map",{get:function(){return this.uniforms.t2D.value}}),i.update(p)),p.material.uniforms.t2D.value=a,p.material.uniforms.backgroundIntensity.value=r.backgroundIntensity,p.material.toneMapped=t._.getTransfer(a.colorSpace)!==t.in,a.matrixAutoUpdate===!0&&a.updateMatrix(),p.material.uniforms.uvTransform.value.copy(a.matrix),(h!==a||g!==a.version||_!==e.toneMapping)&&(p.material.needsUpdate=!0,h=a,g=a.version,_=e.toneMapping),p.layers.enableAll(),n.unshift(p,p.geometry,p.material,0,0,null))}function x(n,i){n.getRGB(l,t.Nn(e)),r.buffers.color.setClear(l.r,l.g,l.b,i,o)}function S(){m!==void 0&&(m.geometry.dispose(),m.material.dispose(),m=void 0),p!==void 0&&(p.geometry.dispose(),p.material.dispose(),p=void 0)}return{getClearColor:function(){return s},setClearColor:function(e,t=1){s.set(e),f=t,x(s,f)},getClearAlpha:function(){return f},setClearAlpha:function(e){f=e,x(s,f)},render:y,addToRenderList:b,dispose:S}}function p(e,t){let n=e.getParameter(e.MAX_VERTEX_ATTRIBS),r={},i=f(null),a=i,o=!1;function s(n,r,i,s,c){let u=!1,f=d(n,s,i,r);a!==f&&(a=f,l(a.object)),u=p(n,s,i,c),u&&m(n,s,i,c),c!==null&&t.update(c,e.ELEMENT_ARRAY_BUFFER),(u||o)&&(o=!1,b(n,r,i,s),c!==null&&e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,t.get(c).buffer))}function c(){return e.createVertexArray()}function l(t){return e.bindVertexArray(t)}function u(t){return e.deleteVertexArray(t)}function d(e,t,n,i){let a=i.wireframe===!0,o=r[t.id];o===void 0&&(o={},r[t.id]=o);let s=e.isInstancedMesh===!0?e.id:0,l=o[s];l===void 0&&(l={},o[s]=l);let u=l[n.id];u===void 0&&(u={},l[n.id]=u);let d=u[a];return d===void 0&&(d=f(c()),u[a]=d),d}function f(e){let t=[],r=[],i=[];for(let e=0;e<n;e++)t[e]=0,r[e]=0,i[e]=0;return{geometry:null,program:null,wireframe:!1,newAttributes:t,enabledAttributes:r,attributeDivisors:i,object:e,attributes:{},index:null}}function p(e,t,n,r){let i=a.attributes,o=t.attributes,s=0,c=n.getAttributes();for(let t in c)if(c[t].location>=0){let n=i[t],r=o[t];if(r===void 0&&(t===`instanceMatrix`&&e.instanceMatrix&&(r=e.instanceMatrix),t===`instanceColor`&&e.instanceColor&&(r=e.instanceColor)),n===void 0||n.attribute!==r||r&&n.data!==r.data)return!0;s++}return a.attributesNum!==s||a.index!==r}function m(e,t,n,r){let i={},o=t.attributes,s=0,c=n.getAttributes();for(let t in c)if(c[t].location>=0){let n=o[t];n===void 0&&(t===`instanceMatrix`&&e.instanceMatrix&&(n=e.instanceMatrix),t===`instanceColor`&&e.instanceColor&&(n=e.instanceColor));let r={};r.attribute=n,n&&n.data&&(r.data=n.data),i[t]=r,s++}a.attributes=i,a.attributesNum=s,a.index=r}function h(){let e=a.newAttributes;for(let t=0,n=e.length;t<n;t++)e[t]=0}function g(e){_(e,0)}function _(t,n){let r=a.newAttributes,i=a.enabledAttributes,o=a.attributeDivisors;r[t]=1,i[t]===0&&(e.enableVertexAttribArray(t),i[t]=1),o[t]!==n&&(e.vertexAttribDivisor(t,n),o[t]=n)}function v(){let t=a.newAttributes,n=a.enabledAttributes;for(let r=0,i=n.length;r<i;r++)n[r]!==t[r]&&(e.disableVertexAttribArray(r),n[r]=0)}function y(t,n,r,i,a,o,s){s===!0?e.vertexAttribIPointer(t,n,r,a,o):e.vertexAttribPointer(t,n,r,i,a,o)}function b(n,r,i,a){h();let o=a.attributes,s=i.getAttributes(),c=r.defaultAttributeValues;for(let r in s){let i=s[r];if(i.location>=0){let s=o[r];if(s===void 0&&(r===`instanceMatrix`&&n.instanceMatrix&&(s=n.instanceMatrix),r===`instanceColor`&&n.instanceColor&&(s=n.instanceColor)),s!==void 0){let r=s.normalized,o=s.itemSize,c=t.get(s);if(c===void 0)continue;let l=c.buffer,u=c.type,d=c.bytesPerElement,f=u===e.INT||u===e.UNSIGNED_INT||s.gpuType===1013;if(s.isInterleavedBufferAttribute){let t=s.data,c=t.stride,p=s.offset;if(t.isInstancedInterleavedBuffer){for(let e=0;e<i.locationSize;e++)_(i.location+e,t.meshPerAttribute);n.isInstancedMesh!==!0&&a._maxInstanceCount===void 0&&(a._maxInstanceCount=t.meshPerAttribute*t.count)}else for(let e=0;e<i.locationSize;e++)g(i.location+e);e.bindBuffer(e.ARRAY_BUFFER,l);for(let e=0;e<i.locationSize;e++)y(i.location+e,o/i.locationSize,u,r,c*d,(p+o/i.locationSize*e)*d,f)}else{if(s.isInstancedBufferAttribute){for(let e=0;e<i.locationSize;e++)_(i.location+e,s.meshPerAttribute);n.isInstancedMesh!==!0&&a._maxInstanceCount===void 0&&(a._maxInstanceCount=s.meshPerAttribute*s.count)}else for(let e=0;e<i.locationSize;e++)g(i.location+e);e.bindBuffer(e.ARRAY_BUFFER,l);for(let e=0;e<i.locationSize;e++)y(i.location+e,o/i.locationSize,u,r,o*d,o/i.locationSize*e*d,f)}}else if(c!==void 0){let t=c[r];if(t!==void 0)switch(t.length){case 2:e.vertexAttrib2fv(i.location,t);break;case 3:e.vertexAttrib3fv(i.location,t);break;case 4:e.vertexAttrib4fv(i.location,t);break;default:e.vertexAttrib1fv(i.location,t)}}}}v()}function x(){T();for(let e in r){let t=r[e];for(let e in t){let n=t[e];for(let e in n){let t=n[e];for(let e in t)u(t[e].object),delete t[e];delete n[e]}}delete r[e]}}function S(e){if(r[e.id]===void 0)return;let t=r[e.id];for(let e in t){let n=t[e];for(let e in n){let t=n[e];for(let e in t)u(t[e].object),delete t[e];delete n[e]}}delete r[e.id]}function C(e){for(let t in r){let n=r[t];for(let t in n){let r=n[t];if(r[e.id]===void 0)continue;let i=r[e.id];for(let e in i)u(i[e].object),delete i[e];delete r[e.id]}}}function w(e){for(let t in r){let n=r[t],i=e.isInstancedMesh===!0?e.id:0,a=n[i];if(a!==void 0){for(let e in a){let t=a[e];for(let e in t)u(t[e].object),delete t[e];delete a[e]}delete n[i],Object.keys(n).length===0&&delete r[t]}}}function T(){E(),o=!0,a!==i&&(a=i,l(a.object))}function E(){i.geometry=null,i.program=null,i.wireframe=!1}return{setup:s,reset:T,resetDefaultState:E,dispose:x,releaseStatesOfGeometry:S,releaseStatesOfObject:w,releaseStatesOfProgram:C,initAttributes:h,enableAttribute:g,disableUnusedAttributes:v}}function m(e,t,n){let r;function i(e){r=e}function a(t,i){e.drawArrays(r,t,i),n.update(i,r,1)}function o(t,i,a){a!==0&&(e.drawArraysInstanced(r,t,i,a),n.update(i,r,a))}function s(e,i,a){if(a===0)return;t.get(`WEBGL_multi_draw`).multiDrawArraysWEBGL(r,e,0,i,0,a);let o=0;for(let e=0;e<a;e++)o+=i[e];n.update(o,r,1)}this.setMode=i,this.render=a,this.renderInstances=o,this.renderMultiDraw=s}function h(e,n,r,i){let a;function o(){if(a!==void 0)return a;if(n.has(`EXT_texture_filter_anisotropic`)===!0){let t=n.get(`EXT_texture_filter_anisotropic`);a=e.getParameter(t.MAX_TEXTURE_MAX_ANISOTROPY_EXT)}else a=0;return a}function s(t){return t===1023||i.convert(t)===e.getParameter(e.IMPLEMENTATION_COLOR_READ_FORMAT)}function c(t){let r=t===1016&&(n.has(`EXT_color_buffer_half_float`)||n.has(`EXT_color_buffer_float`));return!(t!==1009&&i.convert(t)!==e.getParameter(e.IMPLEMENTATION_COLOR_READ_TYPE)&&t!==1015&&!r)}function l(t){if(t===`highp`){if(e.getShaderPrecisionFormat(e.VERTEX_SHADER,e.HIGH_FLOAT).precision>0&&e.getShaderPrecisionFormat(e.FRAGMENT_SHADER,e.HIGH_FLOAT).precision>0)return`highp`;t=`mediump`}return t===`mediump`&&e.getShaderPrecisionFormat(e.VERTEX_SHADER,e.MEDIUM_FLOAT).precision>0&&e.getShaderPrecisionFormat(e.FRAGMENT_SHADER,e.MEDIUM_FLOAT).precision>0?`mediump`:`lowp`}let u=r.precision===void 0?`highp`:r.precision,d=l(u);d!==u&&(t.Ln(`WebGLRenderer:`,u,`not supported, using`,d,`instead.`),u=d);let f=r.logarithmicDepthBuffer===!0,p=r.reversedDepthBuffer===!0&&n.has(`EXT_clip_control`);r.reversedDepthBuffer===!0&&p===!1&&t.Ln(`WebGLRenderer: Unable to use reversed depth buffer due to missing EXT_clip_control extension. Fallback to default depth buffer.`);let m=e.getParameter(e.MAX_TEXTURE_IMAGE_UNITS),h=e.getParameter(e.MAX_VERTEX_TEXTURE_IMAGE_UNITS),g=e.getParameter(e.MAX_TEXTURE_SIZE),_=e.getParameter(e.MAX_CUBE_MAP_TEXTURE_SIZE),v=e.getParameter(e.MAX_VERTEX_ATTRIBS),y=e.getParameter(e.MAX_VERTEX_UNIFORM_VECTORS),b=e.getParameter(e.MAX_VARYING_VECTORS),x=e.getParameter(e.MAX_FRAGMENT_UNIFORM_VECTORS),S=e.getParameter(e.MAX_SAMPLES),C=e.getParameter(e.SAMPLES);return{isWebGL2:!0,getMaxAnisotropy:o,getMaxPrecision:l,textureFormatReadable:s,textureTypeReadable:c,precision:u,logarithmicDepthBuffer:f,reversedDepthBuffer:p,maxTextures:m,maxVertexTextures:h,maxTextureSize:g,maxCubemapSize:_,maxAttributes:v,maxVertexUniforms:y,maxVaryings:b,maxFragmentUniforms:x,maxSamples:S,samples:C}}function g(e){let n=this,r=null,i=0,a=!1,o=!1,s=new t.at,c=new t.q,l={value:null,needsUpdate:!1};this.uniform=l,this.numPlanes=0,this.numIntersection=0,this.init=function(e,t){let n=e.length!==0||t||i!==0||a;return a=t,i=e.length,n},this.beginShadows=function(){o=!0,d(null)},this.endShadows=function(){o=!1},this.setGlobalState=function(e,t){r=d(e,t,0)},this.setState=function(t,n,s){let c=t.clippingPlanes,f=t.clipIntersection,p=t.clipShadows,m=e.get(t);if(!a||c===null||c.length===0||o&&!p)o?d(null):u();else{let e=o?0:i,t=e*4,a=m.clippingState||null;l.value=a,a=d(c,n,t,s);for(let e=0;e!==t;++e)a[e]=r[e];m.clippingState=a,this.numIntersection=f?this.numPlanes:0,this.numPlanes+=e}};function u(){l.value!==r&&(l.value=r,l.needsUpdate=i>0),n.numPlanes=i,n.numIntersection=0}function d(e,t,r,i){let a=e===null?0:e.length,o=null;if(a!==0){if(o=l.value,i!==!0||o===null){let n=r+a*4,i=t.matrixWorldInverse;c.getNormalMatrix(i),(o===null||o.length<n)&&(o=new Float32Array(n));for(let t=0,n=r;t!==a;++t,n+=4)s.copy(e[t]).applyMatrix4(i,c),s.normal.toArray(o,n),o[n+3]=s.constant}l.value=o,l.needsUpdate=!0}return n.numPlanes=a,n.numIntersection=0,o}}var _=4,v=[.125,.215,.35,.446,.526,.582],y=20,b=256,x=new t.rt,S=new t.g,C=null,w=0,T=0,E=!1,D=new t.Cn,O=class{constructor(e){this._renderer=e,this._pingPongRenderTarget=null,this._lodMax=0,this._cubeSize=0,this._sizeLods=[],this._sigmas=[],this._lodMeshes=[],this._backgroundBox=null,this._cubemapMaterial=null,this._equirectMaterial=null,this._blurMaterial=null,this._ggxMaterial=null}fromScene(e,t=0,n=.1,r=100,i={}){let{size:a=256,position:o=D}=i;C=this._renderer.getRenderTarget(),w=this._renderer.getActiveCubeFace(),T=this._renderer.getActiveMipmapLevel(),E=this._renderer.xr.enabled,this._renderer.xr.enabled=!1,this._setSize(a);let s=this._allocateTargets();return s.depthBuffer=!0,this._sceneToCubeUV(e,n,r,s,o),t>0&&this._blur(s,0,0,t),this._applyPMREM(s),this._cleanup(s),s}fromEquirectangular(e,t=null){return this._fromTexture(e,t)}fromCubemap(e,t=null){return this._fromTexture(e,t)}compileCubemapShader(){this._cubemapMaterial===null&&(this._cubemapMaterial=P(),this._compileMaterial(this._cubemapMaterial))}compileEquirectangularShader(){this._equirectMaterial===null&&(this._equirectMaterial=ee(),this._compileMaterial(this._equirectMaterial))}dispose(){this._dispose(),this._cubemapMaterial!==null&&this._cubemapMaterial.dispose(),this._equirectMaterial!==null&&this._equirectMaterial.dispose(),this._backgroundBox!==null&&(this._backgroundBox.geometry.dispose(),this._backgroundBox.material.dispose())}_setSize(e){this._lodMax=Math.floor(Math.log2(e)),this._cubeSize=2**this._lodMax}_dispose(){this._blurMaterial!==null&&this._blurMaterial.dispose(),this._ggxMaterial!==null&&this._ggxMaterial.dispose(),this._pingPongRenderTarget!==null&&this._pingPongRenderTarget.dispose();for(let e=0;e<this._lodMeshes.length;e++)this._lodMeshes[e].geometry.dispose()}_cleanup(e){this._renderer.setRenderTarget(C,w,T),this._renderer.xr.enabled=E,e.scissorTest=!1,j(e,0,0,e.width,e.height)}_fromTexture(e,t){e.mapping===301||e.mapping===302?this._setSize(e.image.length===0?16:e.image[0].width||e.image[0].image.width):this._setSize(e.image.width/4),C=this._renderer.getRenderTarget(),w=this._renderer.getActiveCubeFace(),T=this._renderer.getActiveMipmapLevel(),E=this._renderer.xr.enabled,this._renderer.xr.enabled=!1;let n=t||this._allocateTargets();return this._textureToCubeUV(e,n),this._applyPMREM(n),this._cleanup(n),n}_allocateTargets(){let e=3*Math.max(this._cubeSize,112),n=4*this._cubeSize,r={magFilter:t.B,minFilter:t.B,generateMipmaps:!1,type:t.L,format:t.mt,colorSpace:t.U,depthBuffer:!1},i=A(e,n,r);if(this._pingPongRenderTarget===null||this._pingPongRenderTarget.width!==e||this._pingPongRenderTarget.height!==n){this._pingPongRenderTarget!==null&&this._dispose(),this._pingPongRenderTarget=A(e,n,r);let{_lodMax:t}=this;({lodMeshes:this._lodMeshes,sizeLods:this._sizeLods,sigmas:this._sigmas}=k(t)),this._blurMaterial=N(t,e,n),this._ggxMaterial=M(t,e,n)}return i}_compileMaterial(e){let n=new t.Y(new t.p,e);this._renderer.compile(n,x)}_sceneToCubeUV(e,n,r,i,a){let o=new t.it(90,1,n,r),s=[1,-1,1,1,1,1],c=[1,1,1,-1,-1,-1],l=this._renderer,u=l.autoClear,d=l.toneMapping;l.getClearColor(S),l.toneMapping=0,l.autoClear=!1,l.state.buffers.depth.getReversed()&&(l.setRenderTarget(i),l.clearDepth(),l.setRenderTarget(null)),this._backgroundBox===null&&(this._backgroundBox=new t.Y(new t.d,new t.X({name:`PMREM.Background`,side:1,depthWrite:!1,depthTest:!1})));let f=this._backgroundBox,p=f.material,m=!1,h=e.background;h?h.isColor&&(p.color.copy(h),e.background=null,m=!0):(p.color.copy(S),m=!0);for(let t=0;t<6;t++){let n=t%3;n===0?(o.up.set(0,s[t],0),o.position.set(a.x,a.y,a.z),o.lookAt(a.x+c[t],a.y,a.z)):n===1?(o.up.set(0,0,s[t]),o.position.set(a.x,a.y,a.z),o.lookAt(a.x,a.y+c[t],a.z)):(o.up.set(0,s[t],0),o.position.set(a.x,a.y,a.z),o.lookAt(a.x,a.y,a.z+c[t]));let r=this._cubeSize;j(i,n*r,t>2?r:0,r,r),l.setRenderTarget(i),m&&l.render(f,o),l.render(e,o)}l.toneMapping=d,l.autoClear=u,e.background=h}_textureToCubeUV(e,t){let n=this._renderer,r=e.mapping===301||e.mapping===302;r?(this._cubemapMaterial===null&&(this._cubemapMaterial=P()),this._cubemapMaterial.uniforms.flipEnvMap.value=e.isRenderTargetTexture===!1?-1:1):this._equirectMaterial===null&&(this._equirectMaterial=ee());let i=r?this._cubemapMaterial:this._equirectMaterial,a=this._lodMeshes[0];a.material=i;let o=i.uniforms;o.envMap.value=e;let s=this._cubeSize;j(t,0,0,3*s,2*s),n.setRenderTarget(t),n.render(a,x)}_applyPMREM(e){let t=this._renderer,n=t.autoClear;t.autoClear=!1;let r=this._lodMeshes.length;for(let t=1;t<r;t++)this._applyGGXFilter(e,t-1,t);t.autoClear=n}_applyGGXFilter(e,t,n){let r=this._renderer,i=this._pingPongRenderTarget,a=this._ggxMaterial,o=this._lodMeshes[n];o.material=a;let s=a.uniforms,c=n/(this._lodMeshes.length-1),l=t/(this._lodMeshes.length-1),u=Math.sqrt(c*c-l*l)*(0+c*1.25),{_lodMax:d}=this,f=this._sizeLods[n],p=3*f*(n>d-_?n-d+_:0),m=4*(this._cubeSize-f);s.envMap.value=e.texture,s.roughness.value=u,s.mipInt.value=d-t,j(i,p,m,3*f,2*f),r.setRenderTarget(i),r.render(o,x),s.envMap.value=i.texture,s.roughness.value=0,s.mipInt.value=d-n,j(e,p,m,3*f,2*f),r.setRenderTarget(e),r.render(o,x)}_blur(e,t,n,r,i){let a=this._pingPongRenderTarget;this._halfBlur(e,a,t,n,r,`latitudinal`,i),this._halfBlur(a,e,n,n,r,`longitudinal`,i)}_halfBlur(e,n,r,i,a,o,s){let c=this._renderer,l=this._blurMaterial;o!==`latitudinal`&&o!==`longitudinal`&&t.jn(`blur direction must be either latitudinal or longitudinal!`);let u=this._lodMeshes[i];u.material=l;let d=l.uniforms,f=this._sizeLods[r]-1,p=isFinite(a)?Math.PI/(2*f):2*Math.PI/39,m=a/p,h=isFinite(a)?1+Math.floor(3*m):y;h>y&&t.Ln(`sigmaRadians, ${a}, is too large and will clip, as it requested ${h} samples when the maximum is set to ${y}`);let g=[],v=0;for(let e=0;e<y;++e){let t=e/m,n=Math.exp(-t*t/2);g.push(n),e===0?v+=n:e<h&&(v+=2*n)}for(let e=0;e<g.length;e++)g[e]=g[e]/v;d.envMap.value=e.texture,d.samples.value=h,d.weights.value=g,d.latitudinal.value=o===`latitudinal`,s&&(d.poleAxis.value=s);let{_lodMax:b}=this;d.dTheta.value=p,d.mipInt.value=b-r;let S=this._sizeLods[i];j(n,3*S*(i>b-_?i-b+_:0),4*(this._cubeSize-S),3*S,2*S),c.setRenderTarget(n),c.render(u,x)}};function k(e){let n=[],r=[],i=[],a=e,o=e-_+1+v.length;for(let s=0;s<o;s++){let o=2**a;n.push(o);let c=1/o;s>e-_?c=v[s-e+_-1]:s===0&&(c=0),r.push(c);let l=1/(o-2),u=-l,d=1+l,f=[u,u,d,u,d,d,u,u,d,d,u,d],p=new Float32Array(108),m=new Float32Array(72),h=new Float32Array(36);for(let e=0;e<6;e++){let t=e%3*2/3-1,n=e>2?0:-1,r=[t,n,0,t+2/3,n,0,t+2/3,n+1,0,t,n,0,t+2/3,n+1,0,t,n+1,0];p.set(r,18*e),m.set(f,12*e);let i=[e,e,e,e,e,e];h.set(i,6*e)}let g=new t.p;g.setAttribute(`position`,new t.f(p,3)),g.setAttribute(`uv`,new t.f(m,2)),g.setAttribute(`faceIndex`,new t.f(h,1)),i.push(new t.Y(g,null)),a>_&&a--}return{lodMeshes:i,sizeLods:n,sigmas:r}}function A(e,n,r){let i=new t.En(e,n,r);return i.texture.mapping=306,i.texture.name=`PMREM.cubeUv`,i.scissorTest=!0,i}function j(e,t,n,r,i){e.viewport.set(t,n,r,i),e.scissor.set(t,n,r,i)}function M(e,n,r){return new t.on({name:`PMREMGGXConvolution`,defines:{GGX_SAMPLES:b,CUBEUV_TEXEL_WIDTH:1/n,CUBEUV_TEXEL_HEIGHT:1/r,CUBEUV_MAX_MIP:`${e}.0`},uniforms:{envMap:{value:null},roughness:{value:0},mipInt:{value:0}},vertexShader:F(),fragmentShader:`
3668
3668
 
3669
3669
  precision highp float;
3670
3670
  precision highp int;
@@ -3768,7 +3768,7 @@ void main() {
3768
3768
 
3769
3769
  gl_FragColor = vec4(prefilteredColor, 1.0);
3770
3770
  }
3771
- `,blending:0,depthTest:!1,depthWrite:!1})}function N(e,n,r){let i=new Float32Array(y),a=new t.Sn(0,1,0);return new t.an({name:`SphericalGaussianBlur`,defines:{n:y,CUBEUV_TEXEL_WIDTH:1/n,CUBEUV_TEXEL_HEIGHT:1/r,CUBEUV_MAX_MIP:`${e}.0`},uniforms:{envMap:{value:null},samples:{value:1},weights:{value:i},latitudinal:{value:!1},dTheta:{value:0},mipInt:{value:0},poleAxis:{value:a}},vertexShader:F(),fragmentShader:`
3771
+ `,blending:0,depthTest:!1,depthWrite:!1})}function N(e,n,r){let i=new Float32Array(y),a=new t.Cn(0,1,0);return new t.on({name:`SphericalGaussianBlur`,defines:{n:y,CUBEUV_TEXEL_WIDTH:1/n,CUBEUV_TEXEL_HEIGHT:1/r,CUBEUV_MAX_MIP:`${e}.0`},uniforms:{envMap:{value:null},samples:{value:1},weights:{value:i},latitudinal:{value:!1},dTheta:{value:0},mipInt:{value:0},poleAxis:{value:a}},vertexShader:F(),fragmentShader:`
3772
3772
 
3773
3773
  precision mediump float;
3774
3774
  precision mediump int;
@@ -3828,7 +3828,7 @@ void main() {
3828
3828
  }
3829
3829
 
3830
3830
  }
3831
- `,blending:0,depthTest:!1,depthWrite:!1})}function ee(){return new t.an({name:`EquirectangularToCubeUV`,uniforms:{envMap:{value:null}},vertexShader:F(),fragmentShader:`
3831
+ `,blending:0,depthTest:!1,depthWrite:!1})}function ee(){return new t.on({name:`EquirectangularToCubeUV`,uniforms:{envMap:{value:null}},vertexShader:F(),fragmentShader:`
3832
3832
 
3833
3833
  precision mediump float;
3834
3834
  precision mediump int;
@@ -3847,7 +3847,7 @@ void main() {
3847
3847
  gl_FragColor = vec4( texture2D ( envMap, uv ).rgb, 1.0 );
3848
3848
 
3849
3849
  }
3850
- `,blending:0,depthTest:!1,depthWrite:!1})}function P(){return new t.an({name:`CubemapToCubeUV`,uniforms:{envMap:{value:null},flipEnvMap:{value:-1}},vertexShader:F(),fragmentShader:`
3850
+ `,blending:0,depthTest:!1,depthWrite:!1})}function P(){return new t.on({name:`CubemapToCubeUV`,uniforms:{envMap:{value:null},flipEnvMap:{value:-1}},vertexShader:F(),fragmentShader:`
3851
3851
 
3852
3852
  precision mediump float;
3853
3853
  precision mediump int;
@@ -3918,7 +3918,7 @@ void main() {
3918
3918
  gl_Position = vec4( position, 1.0 );
3919
3919
 
3920
3920
  }
3921
- `}var I=class extends t.Tn{constructor(e=1,n={}){super(e,e,n),this.isWebGLCubeRenderTarget=!0;let r={width:e,height:e,depth:1},i=[r,r,r,r,r,r];this.texture=new t.x(i),this._setTextureOptions(n),this.texture.isRenderTargetTexture=!0}fromEquirectangularTexture(e,n){this.texture.type=n.type,this.texture.colorSpace=n.colorSpace,this.texture.generateMipmaps=n.generateMipmaps,this.texture.minFilter=n.minFilter,this.texture.magFilter=n.magFilter;let r={uniforms:{tEquirect:{value:null}},vertexShader:`
3921
+ `}var I=class extends t.En{constructor(e=1,n={}){super(e,e,n),this.isWebGLCubeRenderTarget=!0;let r={width:e,height:e,depth:1},i=[r,r,r,r,r,r];this.texture=new t.x(i),this._setTextureOptions(n),this.texture.isRenderTargetTexture=!0}fromEquirectangularTexture(e,n){this.texture.type=n.type,this.texture.colorSpace=n.colorSpace,this.texture.generateMipmaps=n.generateMipmaps,this.texture.minFilter=n.minFilter,this.texture.magFilter=n.magFilter;let r={uniforms:{tEquirect:{value:null}},vertexShader:`
3922
3922
 
3923
3923
  varying vec3 vWorldDirection;
3924
3924
 
@@ -3953,7 +3953,7 @@ void main() {
3953
3953
  gl_FragColor = texture2D( tEquirect, sampleUV );
3954
3954
 
3955
3955
  }
3956
- `},i=new t.d(5,5,5),a=new t.an({name:`CubemapFromEquirect`,uniforms:t.Dn(r.uniforms),vertexShader:r.vertexShader,fragmentShader:r.fragmentShader,side:1,blending:0});a.uniforms.tEquirect.value=n;let o=new t.J(i,a),s=n.minFilter;return n.minFilter===1008&&(n.minFilter=t.z),new t.y(1,10,this).update(e,o),n.minFilter=s,o.geometry.dispose(),o.material.dispose(),this}clear(e,t=!0,n=!0,r=!0){let i=e.getRenderTarget();for(let i=0;i<6;i++)e.setRenderTarget(this,i),e.clear(t,n,r);e.setRenderTarget(i)}};function te(e){let t=new WeakMap,n=new WeakMap,r=null;function i(e,t=!1){return e==null?null:t?o(e):a(e)}function a(n){if(n&&n.isTexture){let r=n.mapping;if(r===303||r===304){if(t.has(n)){let e=t.get(n).texture;return s(e,n.mapping)}{let r=n.image;if(r&&r.height>0){let i=new I(r.height);return i.fromEquirectangularTexture(e,n),t.set(n,i),n.addEventListener(`dispose`,l),s(i.texture,n.mapping)}return null}}}return n}function o(t){if(t&&t.isTexture){let i=t.mapping,a=i===303||i===304,o=i===301||i===302;if(a||o){let i=n.get(t),s=i===void 0?0:i.texture.pmremVersion;if(t.isRenderTargetTexture&&t.pmremVersion!==s)return r===null&&(r=new O(e)),i=a?r.fromEquirectangular(t,i):r.fromCubemap(t,i),i.texture.pmremVersion=t.pmremVersion,n.set(t,i),i.texture;if(i!==void 0)return i.texture;{let s=t.image;return a&&s&&s.height>0||o&&s&&c(s)?(r===null&&(r=new O(e)),i=a?r.fromEquirectangular(t):r.fromCubemap(t),i.texture.pmremVersion=t.pmremVersion,n.set(t,i),t.addEventListener(`dispose`,u),i.texture):null}}}return t}function s(e,t){return t===303?e.mapping=301:t===304&&(e.mapping=302),e}function c(e){let t=0;for(let n=0;n<6;n++)e[n]!==void 0&&t++;return t===6}function l(e){let n=e.target;n.removeEventListener(`dispose`,l);let r=t.get(n);r!==void 0&&(t.delete(n),r.dispose())}function u(e){let t=e.target;t.removeEventListener(`dispose`,u);let r=n.get(t);r!==void 0&&(n.delete(t),r.dispose())}function d(){t=new WeakMap,n=new WeakMap,r!==null&&(r.dispose(),r=null)}return{get:i,dispose:d}}function ne(e){let n={};function r(t){if(n[t]!==void 0)return n[t];let r=e.getExtension(t);return n[t]=r,r}return{has:function(e){return r(e)!==null},init:function(){r(`EXT_color_buffer_float`),r(`WEBGL_clip_cull_distance`),r(`OES_texture_float_linear`),r(`EXT_color_buffer_half_float`),r(`WEBGL_multisampled_render_to_texture`),r(`WEBGL_render_shared_exponent`)},get:function(e){let n=r(e);return n===null&&t.Ln(`WebGLRenderer: `+e+` extension not supported.`),n}}}function re(e,n,r,i){let a={},o=new WeakMap;function s(e){let t=e.target;t.index!==null&&n.remove(t.index);for(let e in t.attributes)n.remove(t.attributes[e]);t.removeEventListener(`dispose`,s),delete a[t.id];let c=o.get(t);c&&(n.remove(c),o.delete(t)),i.releaseStatesOfGeometry(t),t.isInstancedBufferGeometry===!0&&delete t._maxInstanceCount,r.memory.geometries--}function c(e,t){return a[t.id]===!0?t:(t.addEventListener(`dispose`,s),a[t.id]=!0,r.memory.geometries++,t)}function l(t){let r=t.attributes;for(let t in r)n.update(r[t],e.ARRAY_BUFFER)}function u(e){let r=[],i=e.index,a=e.attributes.position,s=0;if(a===void 0)return;if(i!==null){let e=i.array;s=i.version;for(let t=0,n=e.length;t<n;t+=3){let n=e[t+0],i=e[t+1],a=e[t+2];r.push(n,i,i,a,a,n)}}else{let e=a.array;s=a.version;for(let t=0,n=e.length/3-1;t<n;t+=3){let e=t+0,n=t+1,i=t+2;r.push(e,n,n,i,i,e)}}let c=new(a.count>=65535?t.dn:t.un)(r,1);c.version=s;let l=o.get(e);l&&n.remove(l),o.set(e,c)}function d(e){let t=o.get(e);if(t){let n=e.index;n!==null&&t.version<n.version&&u(e)}else u(e);return o.get(e)}return{get:c,update:l,getWireframeAttribute:d}}function ie(e,t,n){let r;function i(e){r=e}let a,o;function s(e){a=e.type,o=e.bytesPerElement}function c(t,i){e.drawElements(r,i,a,t*o),n.update(i,r,1)}function l(t,i,s){s!==0&&(e.drawElementsInstanced(r,i,a,t*o,s),n.update(i,r,s))}function u(e,i,o){if(o===0)return;t.get(`WEBGL_multi_draw`).multiDrawElementsWEBGL(r,i,0,a,e,0,o);let s=0;for(let e=0;e<o;e++)s+=i[e];n.update(s,r,1)}this.setMode=i,this.setIndex=s,this.render=c,this.renderInstances=l,this.renderMultiDraw=u}function ae(e){let n={geometries:0,textures:0},r={frame:0,calls:0,triangles:0,points:0,lines:0};function i(n,i,a){switch(r.calls++,i){case e.TRIANGLES:r.triangles+=n/3*a;break;case e.LINES:r.lines+=n/2*a;break;case e.LINE_STRIP:r.lines+=a*(n-1);break;case e.LINE_LOOP:r.lines+=a*n;break;case e.POINTS:r.points+=a*n;break;default:t.An(`WebGLInfo: Unknown draw mode:`,i)}}function a(){r.calls=0,r.triangles=0,r.points=0,r.lines=0}return{memory:n,render:r,programs:null,autoReset:!0,reset:a,update:i}}function oe(e,n,r){let i=new WeakMap,a=new t.Cn;function o(o,s,c){let l=o.morphTargetInfluences,u=s.morphAttributes.position||s.morphAttributes.normal||s.morphAttributes.color,d=u===void 0?0:u.length,f=i.get(s);if(f===void 0||f.count!==d){f!==void 0&&f.texture.dispose();let e=s.morphAttributes.position!==void 0,r=s.morphAttributes.normal!==void 0,o=s.morphAttributes.color!==void 0,c=s.morphAttributes.position||[],l=s.morphAttributes.normal||[],u=s.morphAttributes.color||[],m=0;e===!0&&(m=1),r===!0&&(m=2),o===!0&&(m=3);let h=s.attributes.position.count*m,g=1;h>n.maxTextureSize&&(g=Math.ceil(h/n.maxTextureSize),h=n.maxTextureSize);let _=new Float32Array(h*g*4*d),v=new t.C(_,h,g,d);v.type=t.M,v.needsUpdate=!0;let y=m*4;for(let t=0;t<d;t++){let n=c[t],i=l[t],s=u[t],d=h*g*4*t;for(let t=0;t<n.count;t++){let c=t*y;e===!0&&(a.fromBufferAttribute(n,t),_[d+c+0]=a.x,_[d+c+1]=a.y,_[d+c+2]=a.z,_[d+c+3]=0),r===!0&&(a.fromBufferAttribute(i,t),_[d+c+4]=a.x,_[d+c+5]=a.y,_[d+c+6]=a.z,_[d+c+7]=0),o===!0&&(a.fromBufferAttribute(s,t),_[d+c+8]=a.x,_[d+c+9]=a.y,_[d+c+10]=a.z,_[d+c+11]=s.itemSize===4?a.w:1)}}f={count:d,texture:v,size:new t.xn(h,g)},i.set(s,f);function p(){v.dispose(),i.delete(s),s.removeEventListener(`dispose`,p)}s.addEventListener(`dispose`,p)}if(o.isInstancedMesh===!0&&o.morphTexture!==null)c.getUniforms().setValue(e,`morphTexture`,o.morphTexture,r);else{let t=0;for(let e=0;e<l.length;e++)t+=l[e];let n=s.morphTargetsRelative?1:1-t;c.getUniforms().setValue(e,`morphTargetBaseInfluence`,n),c.getUniforms().setValue(e,`morphTargetInfluences`,l)}c.getUniforms().setValue(e,`morphTargetsTexture`,f.texture,r),c.getUniforms().setValue(e,`morphTargetsTextureSize`,f.size)}return{update:o}}function se(e,t,n,r,i){let a=new WeakMap;function o(r){let o=i.render.frame,s=r.geometry,l=t.get(r,s);if(a.get(l)!==o&&(t.update(l),a.set(l,o)),r.isInstancedMesh&&(r.hasEventListener(`dispose`,c)===!1&&r.addEventListener(`dispose`,c),a.get(r)!==o&&(n.update(r.instanceMatrix,e.ARRAY_BUFFER),r.instanceColor!==null&&n.update(r.instanceColor,e.ARRAY_BUFFER),a.set(r,o))),r.isSkinnedMesh){let e=r.skeleton;a.get(e)!==o&&(e.update(),a.set(e,o))}return l}function s(){a=new WeakMap}function c(e){let t=e.target;t.removeEventListener(`dispose`,c),r.releaseStatesOfObject(t),n.remove(t.instanceMatrix),t.instanceColor!==null&&n.remove(t.instanceColor)}return{update:o,dispose:s}}var L={1:`LINEAR_TONE_MAPPING`,2:`REINHARD_TONE_MAPPING`,3:`CINEON_TONE_MAPPING`,4:`ACES_FILMIC_TONE_MAPPING`,6:`AGX_TONE_MAPPING`,7:`NEUTRAL_TONE_MAPPING`,5:`CUSTOM_TONE_MAPPING`};function ce(e,n,r,i,a,o){let s=new t.Tn(n,r,{type:e,depthBuffer:a,stencilBuffer:o,samples:i?4:0,depthTexture:a?new t.D(n,r):void 0}),c=new t.Tn(n,r,{type:t.I,depthBuffer:!1,stencilBuffer:!1}),l=new t.p;l.setAttribute(`position`,new t.j([-1,3,0,-1,-1,0,3,-1,0],3)),l.setAttribute(`uv`,new t.j([0,2,0,0,2,0],2));let u=new t.Kt({uniforms:{tDiffuse:{value:null}},vertexShader:`
3956
+ `},i=new t.d(5,5,5),a=new t.on({name:`CubemapFromEquirect`,uniforms:t.On(r.uniforms),vertexShader:r.vertexShader,fragmentShader:r.fragmentShader,side:1,blending:0});a.uniforms.tEquirect.value=n;let o=new t.Y(i,a),s=n.minFilter;return n.minFilter===1008&&(n.minFilter=t.B),new t.y(1,10,this).update(e,o),n.minFilter=s,o.geometry.dispose(),o.material.dispose(),this}clear(e,t=!0,n=!0,r=!0){let i=e.getRenderTarget();for(let i=0;i<6;i++)e.setRenderTarget(this,i),e.clear(t,n,r);e.setRenderTarget(i)}};function te(e){let t=new WeakMap,n=new WeakMap,r=null;function i(e,t=!1){return e==null?null:t?o(e):a(e)}function a(n){if(n&&n.isTexture){let r=n.mapping;if(r===303||r===304){if(t.has(n)){let e=t.get(n).texture;return s(e,n.mapping)}{let r=n.image;if(r&&r.height>0){let i=new I(r.height);return i.fromEquirectangularTexture(e,n),t.set(n,i),n.addEventListener(`dispose`,l),s(i.texture,n.mapping)}return null}}}return n}function o(t){if(t&&t.isTexture){let i=t.mapping,a=i===303||i===304,o=i===301||i===302;if(a||o){let i=n.get(t),s=i===void 0?0:i.texture.pmremVersion;if(t.isRenderTargetTexture&&t.pmremVersion!==s)return r===null&&(r=new O(e)),i=a?r.fromEquirectangular(t,i):r.fromCubemap(t,i),i.texture.pmremVersion=t.pmremVersion,n.set(t,i),i.texture;if(i!==void 0)return i.texture;{let s=t.image;return a&&s&&s.height>0||o&&s&&c(s)?(r===null&&(r=new O(e)),i=a?r.fromEquirectangular(t):r.fromCubemap(t),i.texture.pmremVersion=t.pmremVersion,n.set(t,i),t.addEventListener(`dispose`,u),i.texture):null}}}return t}function s(e,t){return t===303?e.mapping=301:t===304&&(e.mapping=302),e}function c(e){let t=0;for(let n=0;n<6;n++)e[n]!==void 0&&t++;return t===6}function l(e){let n=e.target;n.removeEventListener(`dispose`,l);let r=t.get(n);r!==void 0&&(t.delete(n),r.dispose())}function u(e){let t=e.target;t.removeEventListener(`dispose`,u);let r=n.get(t);r!==void 0&&(n.delete(t),r.dispose())}function d(){t=new WeakMap,n=new WeakMap,r!==null&&(r.dispose(),r=null)}return{get:i,dispose:d}}function ne(e){let n={};function r(t){if(n[t]!==void 0)return n[t];let r=e.getExtension(t);return n[t]=r,r}return{has:function(e){return r(e)!==null},init:function(){r(`EXT_color_buffer_float`),r(`WEBGL_clip_cull_distance`),r(`OES_texture_float_linear`),r(`EXT_color_buffer_half_float`),r(`WEBGL_multisampled_render_to_texture`),r(`WEBGL_render_shared_exponent`)},get:function(e){let n=r(e);return n===null&&t.Rn(`WebGLRenderer: `+e+` extension not supported.`),n}}}function re(e,n,r,i){let a={},o=new WeakMap;function s(e){let t=e.target;t.index!==null&&n.remove(t.index);for(let e in t.attributes)n.remove(t.attributes[e]);t.removeEventListener(`dispose`,s),delete a[t.id];let c=o.get(t);c&&(n.remove(c),o.delete(t)),i.releaseStatesOfGeometry(t),t.isInstancedBufferGeometry===!0&&delete t._maxInstanceCount,r.memory.geometries--}function c(e,t){return a[t.id]===!0?t:(t.addEventListener(`dispose`,s),a[t.id]=!0,r.memory.geometries++,t)}function l(t){let r=t.attributes;for(let t in r)n.update(r[t],e.ARRAY_BUFFER)}function u(e){let r=[],i=e.index,a=e.attributes.position,s=0;if(a===void 0)return;if(i!==null){let e=i.array;s=i.version;for(let t=0,n=e.length;t<n;t+=3){let n=e[t+0],i=e[t+1],a=e[t+2];r.push(n,i,i,a,a,n)}}else{let e=a.array;s=a.version;for(let t=0,n=e.length/3-1;t<n;t+=3){let e=t+0,n=t+1,i=t+2;r.push(e,n,n,i,i,e)}}let c=new(a.count>=65535?t.fn:t.dn)(r,1);c.version=s;let l=o.get(e);l&&n.remove(l),o.set(e,c)}function d(e){let t=o.get(e);if(t){let n=e.index;n!==null&&t.version<n.version&&u(e)}else u(e);return o.get(e)}return{get:c,update:l,getWireframeAttribute:d}}function ie(e,t,n){let r;function i(e){r=e}let a,o;function s(e){a=e.type,o=e.bytesPerElement}function c(t,i){e.drawElements(r,i,a,t*o),n.update(i,r,1)}function l(t,i,s){s!==0&&(e.drawElementsInstanced(r,i,a,t*o,s),n.update(i,r,s))}function u(e,i,o){if(o===0)return;t.get(`WEBGL_multi_draw`).multiDrawElementsWEBGL(r,i,0,a,e,0,o);let s=0;for(let e=0;e<o;e++)s+=i[e];n.update(s,r,1)}this.setMode=i,this.setIndex=s,this.render=c,this.renderInstances=l,this.renderMultiDraw=u}function ae(e){let n={geometries:0,textures:0},r={frame:0,calls:0,triangles:0,points:0,lines:0};function i(n,i,a){switch(r.calls++,i){case e.TRIANGLES:r.triangles+=n/3*a;break;case e.LINES:r.lines+=n/2*a;break;case e.LINE_STRIP:r.lines+=a*(n-1);break;case e.LINE_LOOP:r.lines+=a*n;break;case e.POINTS:r.points+=a*n;break;default:t.jn(`WebGLInfo: Unknown draw mode:`,i)}}function a(){r.calls=0,r.triangles=0,r.points=0,r.lines=0}return{memory:n,render:r,programs:null,autoReset:!0,reset:a,update:i}}function oe(e,n,r){let i=new WeakMap,a=new t.wn;function o(o,s,c){let l=o.morphTargetInfluences,u=s.morphAttributes.position||s.morphAttributes.normal||s.morphAttributes.color,d=u===void 0?0:u.length,f=i.get(s);if(f===void 0||f.count!==d){f!==void 0&&f.texture.dispose();let e=s.morphAttributes.position!==void 0,r=s.morphAttributes.normal!==void 0,o=s.morphAttributes.color!==void 0,c=s.morphAttributes.position||[],l=s.morphAttributes.normal||[],u=s.morphAttributes.color||[],m=0;e===!0&&(m=1),r===!0&&(m=2),o===!0&&(m=3);let h=s.attributes.position.count*m,g=1;h>n.maxTextureSize&&(g=Math.ceil(h/n.maxTextureSize),h=n.maxTextureSize);let _=new Float32Array(h*g*4*d),v=new t.C(_,h,g,d);v.type=t.M,v.needsUpdate=!0;let y=m*4;for(let t=0;t<d;t++){let n=c[t],i=l[t],s=u[t],d=h*g*4*t;for(let t=0;t<n.count;t++){let c=t*y;e===!0&&(a.fromBufferAttribute(n,t),_[d+c+0]=a.x,_[d+c+1]=a.y,_[d+c+2]=a.z,_[d+c+3]=0),r===!0&&(a.fromBufferAttribute(i,t),_[d+c+4]=a.x,_[d+c+5]=a.y,_[d+c+6]=a.z,_[d+c+7]=0),o===!0&&(a.fromBufferAttribute(s,t),_[d+c+8]=a.x,_[d+c+9]=a.y,_[d+c+10]=a.z,_[d+c+11]=s.itemSize===4?a.w:1)}}f={count:d,texture:v,size:new t.Sn(h,g)},i.set(s,f);function p(){v.dispose(),i.delete(s),s.removeEventListener(`dispose`,p)}s.addEventListener(`dispose`,p)}if(o.isInstancedMesh===!0&&o.morphTexture!==null)c.getUniforms().setValue(e,`morphTexture`,o.morphTexture,r);else{let t=0;for(let e=0;e<l.length;e++)t+=l[e];let n=s.morphTargetsRelative?1:1-t;c.getUniforms().setValue(e,`morphTargetBaseInfluence`,n),c.getUniforms().setValue(e,`morphTargetInfluences`,l)}c.getUniforms().setValue(e,`morphTargetsTexture`,f.texture,r),c.getUniforms().setValue(e,`morphTargetsTextureSize`,f.size)}return{update:o}}function se(e,t,n,r,i){let a=new WeakMap;function o(r){let o=i.render.frame,s=r.geometry,l=t.get(r,s);if(a.get(l)!==o&&(t.update(l),a.set(l,o)),r.isInstancedMesh&&(r.hasEventListener(`dispose`,c)===!1&&r.addEventListener(`dispose`,c),a.get(r)!==o&&(n.update(r.instanceMatrix,e.ARRAY_BUFFER),r.instanceColor!==null&&n.update(r.instanceColor,e.ARRAY_BUFFER),a.set(r,o))),r.isSkinnedMesh){let e=r.skeleton;a.get(e)!==o&&(e.update(),a.set(e,o))}return l}function s(){a=new WeakMap}function c(e){let t=e.target;t.removeEventListener(`dispose`,c),r.releaseStatesOfObject(t),n.remove(t.instanceMatrix),t.instanceColor!==null&&n.remove(t.instanceColor)}return{update:o,dispose:s}}var L={1:`LINEAR_TONE_MAPPING`,2:`REINHARD_TONE_MAPPING`,3:`CINEON_TONE_MAPPING`,4:`ACES_FILMIC_TONE_MAPPING`,6:`AGX_TONE_MAPPING`,7:`NEUTRAL_TONE_MAPPING`,5:`CUSTOM_TONE_MAPPING`};function ce(e,n,r,i,a,o){let s=new t.En(n,r,{type:e,depthBuffer:a,stencilBuffer:o,samples:i?4:0,depthTexture:a?new t.D(n,r):void 0}),c=new t.En(n,r,{type:t.L,depthBuffer:!1,stencilBuffer:!1}),l=new t.p;l.setAttribute(`position`,new t.j([-1,3,0,-1,-1,0,3,-1,0],3)),l.setAttribute(`uv`,new t.j([0,2,0,0,2,0],2));let u=new t.qt({uniforms:{tDiffuse:{value:null}},vertexShader:`
3957
3957
  precision highp float;
3958
3958
 
3959
3959
  uniform mat4 modelViewMatrix;
@@ -3999,17 +3999,17 @@ void main() {
3999
3999
  #ifdef SRGB_TRANSFER
4000
4000
  gl_FragColor = sRGBTransferOETF( gl_FragColor );
4001
4001
  #endif
4002
- }`,depthTest:!1,depthWrite:!1}),d=new t.J(l,u),f=new t.nt(-1,1,1,-1,0,1),p=null,m=null,h=!1,g,_=null,v=[],y=!1;this.setSize=function(e,t){s.setSize(e,t),c.setSize(e,t);for(let n=0;n<v.length;n++){let r=v[n];r.setSize&&r.setSize(e,t)}},this.setEffects=function(e){v=e,y=v.length>0&&v[0].isRenderPass===!0;let t=s.width,n=s.height;for(let e=0;e<v.length;e++){let r=v[e];r.setSize&&r.setSize(t,n)}},this.begin=function(e,t){if(h||e.toneMapping===0&&v.length===0)return!1;if(_=t,t!==null){let e=t.width,n=t.height;(s.width!==e||s.height!==n)&&this.setSize(e,n)}return y===!1&&e.setRenderTarget(s),g=e.toneMapping,e.toneMapping=0,!0},this.hasRenderPass=function(){return y},this.end=function(e,n){e.toneMapping=g,h=!0;let r=s,i=c;for(let t=0;t<v.length;t++){let a=v[t];if(a.enabled!==!1&&(a.render(e,i,r,n),a.needsSwap!==!1)){let e=r;r=i,i=e}}if(p!==e.outputColorSpace||m!==e.toneMapping){p=e.outputColorSpace,m=e.toneMapping,u.defines={},t._.getTransfer(p)===`srgb`&&(u.defines.SRGB_TRANSFER=``);let n=L[m];n&&(u.defines[n]=``),u.needsUpdate=!0}u.uniforms.tDiffuse.value=r.texture,e.setRenderTarget(_),e.render(d,f),_=null,h=!1},this.isCompositing=function(){return h},this.dispose=function(){s.depthTexture&&s.depthTexture.dispose(),s.dispose(),c.dispose(),l.dispose(),u.dispose()}}var le=new t.ln,R=new t.D(1,1),z=new t.C,B=new t.S,V=new t.x,H=[],ue=[],de=new Float32Array(16),fe=new Float32Array(9),pe=new Float32Array(4);function U(e,t,n){let r=e[0];if(r<=0||r>0)return e;let i=t*n,a=H[i];if(a===void 0&&(a=new Float32Array(i),H[i]=a),t!==0){r.toArray(a,0);for(let r=1,i=0;r!==t;++r)i+=n,e[r].toArray(a,i)}return a}function W(e,t){if(e.length!==t.length)return!1;for(let n=0,r=e.length;n<r;n++)if(e[n]!==t[n])return!1;return!0}function G(e,t){for(let n=0,r=t.length;n<r;n++)e[n]=t[n]}function me(e,t){let n=ue[t];n===void 0&&(n=new Int32Array(t),ue[t]=n);for(let r=0;r!==t;++r)n[r]=e.allocateTextureUnit();return n}function he(e,t){let n=this.cache;n[0]!==t&&(e.uniform1f(this.addr,t),n[0]=t)}function ge(e,t){let n=this.cache;if(t.x!==void 0)(n[0]!==t.x||n[1]!==t.y)&&(e.uniform2f(this.addr,t.x,t.y),n[0]=t.x,n[1]=t.y);else{if(W(n,t))return;e.uniform2fv(this.addr,t),G(n,t)}}function _e(e,t){let n=this.cache;if(t.x!==void 0)(n[0]!==t.x||n[1]!==t.y||n[2]!==t.z)&&(e.uniform3f(this.addr,t.x,t.y,t.z),n[0]=t.x,n[1]=t.y,n[2]=t.z);else if(t.r!==void 0)(n[0]!==t.r||n[1]!==t.g||n[2]!==t.b)&&(e.uniform3f(this.addr,t.r,t.g,t.b),n[0]=t.r,n[1]=t.g,n[2]=t.b);else{if(W(n,t))return;e.uniform3fv(this.addr,t),G(n,t)}}function ve(e,t){let n=this.cache;if(t.x!==void 0)(n[0]!==t.x||n[1]!==t.y||n[2]!==t.z||n[3]!==t.w)&&(e.uniform4f(this.addr,t.x,t.y,t.z,t.w),n[0]=t.x,n[1]=t.y,n[2]=t.z,n[3]=t.w);else{if(W(n,t))return;e.uniform4fv(this.addr,t),G(n,t)}}function ye(e,t){let n=this.cache,r=t.elements;if(r===void 0){if(W(n,t))return;e.uniformMatrix2fv(this.addr,!1,t),G(n,t)}else{if(W(n,r))return;pe.set(r),e.uniformMatrix2fv(this.addr,!1,pe),G(n,r)}}function be(e,t){let n=this.cache,r=t.elements;if(r===void 0){if(W(n,t))return;e.uniformMatrix3fv(this.addr,!1,t),G(n,t)}else{if(W(n,r))return;fe.set(r),e.uniformMatrix3fv(this.addr,!1,fe),G(n,r)}}function xe(e,t){let n=this.cache,r=t.elements;if(r===void 0){if(W(n,t))return;e.uniformMatrix4fv(this.addr,!1,t),G(n,t)}else{if(W(n,r))return;de.set(r),e.uniformMatrix4fv(this.addr,!1,de),G(n,r)}}function Se(e,t){let n=this.cache;n[0]!==t&&(e.uniform1i(this.addr,t),n[0]=t)}function Ce(e,t){let n=this.cache;if(t.x!==void 0)(n[0]!==t.x||n[1]!==t.y)&&(e.uniform2i(this.addr,t.x,t.y),n[0]=t.x,n[1]=t.y);else{if(W(n,t))return;e.uniform2iv(this.addr,t),G(n,t)}}function we(e,t){let n=this.cache;if(t.x!==void 0)(n[0]!==t.x||n[1]!==t.y||n[2]!==t.z)&&(e.uniform3i(this.addr,t.x,t.y,t.z),n[0]=t.x,n[1]=t.y,n[2]=t.z);else{if(W(n,t))return;e.uniform3iv(this.addr,t),G(n,t)}}function Te(e,t){let n=this.cache;if(t.x!==void 0)(n[0]!==t.x||n[1]!==t.y||n[2]!==t.z||n[3]!==t.w)&&(e.uniform4i(this.addr,t.x,t.y,t.z,t.w),n[0]=t.x,n[1]=t.y,n[2]=t.z,n[3]=t.w);else{if(W(n,t))return;e.uniform4iv(this.addr,t),G(n,t)}}function Ee(e,t){let n=this.cache;n[0]!==t&&(e.uniform1ui(this.addr,t),n[0]=t)}function De(e,t){let n=this.cache;if(t.x!==void 0)(n[0]!==t.x||n[1]!==t.y)&&(e.uniform2ui(this.addr,t.x,t.y),n[0]=t.x,n[1]=t.y);else{if(W(n,t))return;e.uniform2uiv(this.addr,t),G(n,t)}}function K(e,t){let n=this.cache;if(t.x!==void 0)(n[0]!==t.x||n[1]!==t.y||n[2]!==t.z)&&(e.uniform3ui(this.addr,t.x,t.y,t.z),n[0]=t.x,n[1]=t.y,n[2]=t.z);else{if(W(n,t))return;e.uniform3uiv(this.addr,t),G(n,t)}}function Oe(e,t){let n=this.cache;if(t.x!==void 0)(n[0]!==t.x||n[1]!==t.y||n[2]!==t.z||n[3]!==t.w)&&(e.uniform4ui(this.addr,t.x,t.y,t.z,t.w),n[0]=t.x,n[1]=t.y,n[2]=t.z,n[3]=t.w);else{if(W(n,t))return;e.uniform4uiv(this.addr,t),G(n,t)}}function q(e,t,n){let r=this.cache,i=n.allocateTextureUnit();r[0]!==i&&(e.uniform1i(this.addr,i),r[0]=i);let a;this.type===e.SAMPLER_2D_SHADOW?(R.compareFunction=n.isReversedDepthBuffer()?518:515,a=R):a=le,n.setTexture2D(t||a,i)}function ke(e,t,n){let r=this.cache,i=n.allocateTextureUnit();r[0]!==i&&(e.uniform1i(this.addr,i),r[0]=i),n.setTexture3D(t||B,i)}function J(e,t,n){let r=this.cache,i=n.allocateTextureUnit();r[0]!==i&&(e.uniform1i(this.addr,i),r[0]=i),n.setTextureCube(t||V,i)}function Ae(e,t,n){let r=this.cache,i=n.allocateTextureUnit();r[0]!==i&&(e.uniform1i(this.addr,i),r[0]=i),n.setTexture2DArray(t||z,i)}function Y(e){switch(e){case 5126:return he;case 35664:return ge;case 35665:return _e;case 35666:return ve;case 35674:return ye;case 35675:return be;case 35676:return xe;case 5124:case 35670:return Se;case 35667:case 35671:return Ce;case 35668:case 35672:return we;case 35669:case 35673:return Te;case 5125:return Ee;case 36294:return De;case 36295:return K;case 36296:return Oe;case 35678:case 36198:case 36298:case 36306:case 35682:return q;case 35679:case 36299:case 36307:return ke;case 35680:case 36300:case 36308:case 36293:return J;case 36289:case 36303:case 36311:case 36292:return Ae}}function X(e,t){e.uniform1fv(this.addr,t)}function je(e,t){let n=U(t,this.size,2);e.uniform2fv(this.addr,n)}function Me(e,t){let n=U(t,this.size,3);e.uniform3fv(this.addr,n)}function Ne(e,t){let n=U(t,this.size,4);e.uniform4fv(this.addr,n)}function Pe(e,t){let n=U(t,this.size,4);e.uniformMatrix2fv(this.addr,!1,n)}function Fe(e,t){let n=U(t,this.size,9);e.uniformMatrix3fv(this.addr,!1,n)}function Ie(e,t){let n=U(t,this.size,16);e.uniformMatrix4fv(this.addr,!1,n)}function Le(e,t){e.uniform1iv(this.addr,t)}function Re(e,t){e.uniform2iv(this.addr,t)}function ze(e,t){e.uniform3iv(this.addr,t)}function Be(e,t){e.uniform4iv(this.addr,t)}function Ve(e,t){e.uniform1uiv(this.addr,t)}function He(e,t){e.uniform2uiv(this.addr,t)}function Ue(e,t){e.uniform3uiv(this.addr,t)}function We(e,t){e.uniform4uiv(this.addr,t)}function Ge(e,t,n){let r=this.cache,i=t.length,a=me(n,i);W(r,a)||(e.uniform1iv(this.addr,a),G(r,a));let o;o=this.type===e.SAMPLER_2D_SHADOW?R:le;for(let e=0;e!==i;++e)n.setTexture2D(t[e]||o,a[e])}function Ke(e,t,n){let r=this.cache,i=t.length,a=me(n,i);W(r,a)||(e.uniform1iv(this.addr,a),G(r,a));for(let e=0;e!==i;++e)n.setTexture3D(t[e]||B,a[e])}function qe(e,t,n){let r=this.cache,i=t.length,a=me(n,i);W(r,a)||(e.uniform1iv(this.addr,a),G(r,a));for(let e=0;e!==i;++e)n.setTextureCube(t[e]||V,a[e])}function Je(e,t,n){let r=this.cache,i=t.length,a=me(n,i);W(r,a)||(e.uniform1iv(this.addr,a),G(r,a));for(let e=0;e!==i;++e)n.setTexture2DArray(t[e]||z,a[e])}function Z(e){switch(e){case 5126:return X;case 35664:return je;case 35665:return Me;case 35666:return Ne;case 35674:return Pe;case 35675:return Fe;case 35676:return Ie;case 5124:case 35670:return Le;case 35667:case 35671:return Re;case 35668:case 35672:return ze;case 35669:case 35673:return Be;case 5125:return Ve;case 36294:return He;case 36295:return Ue;case 36296:return We;case 35678:case 36198:case 36298:case 36306:case 35682:return Ge;case 35679:case 36299:case 36307:return Ke;case 35680:case 36300:case 36308:case 36293:return qe;case 36289:case 36303:case 36311:case 36292:return Je}}var Ye=class{constructor(e,t,n){this.id=e,this.addr=n,this.cache=[],this.type=t.type,this.setValue=Y(t.type)}},Xe=class{constructor(e,t,n){this.id=e,this.addr=n,this.cache=[],this.type=t.type,this.size=t.size,this.setValue=Z(t.type)}},Ze=class{constructor(e){this.id=e,this.seq=[],this.map={}}setValue(e,t,n){let r=this.seq;for(let i=0,a=r.length;i!==a;++i){let a=r[i];a.setValue(e,t[a.id],n)}}},Qe=/(\w+)(\])?(\[|\.)?/g;function $e(e,t){e.seq.push(t),e.map[t.id]=t}function et(e,t,n){let r=e.name,i=r.length;for(Qe.lastIndex=0;;){let a=Qe.exec(r),o=Qe.lastIndex,s=a[1],c=a[2]===`]`,l=a[3];if(c&&(s|=0),l===void 0||l===`[`&&o+2===i){$e(n,l===void 0?new Ye(s,e,t):new Xe(s,e,t));break}{let e=n.map[s];e===void 0&&(e=new Ze(s),$e(n,e)),n=e}}}var tt=class{constructor(e,t){this.seq=[],this.map={};let n=e.getProgramParameter(t,e.ACTIVE_UNIFORMS);for(let r=0;r<n;++r){let n=e.getActiveUniform(t,r);et(n,e.getUniformLocation(t,n.name),this)}let r=[],i=[];for(let t of this.seq)t.type===e.SAMPLER_2D_SHADOW||t.type===e.SAMPLER_CUBE_SHADOW||t.type===e.SAMPLER_2D_ARRAY_SHADOW?r.push(t):i.push(t);r.length>0&&(this.seq=r.concat(i))}setValue(e,t,n,r){let i=this.map[t];i!==void 0&&i.setValue(e,n,r)}setOptional(e,t,n){let r=t[n];r!==void 0&&this.setValue(e,n,r)}static upload(e,t,n,r){for(let i=0,a=t.length;i!==a;++i){let a=t[i],o=n[a.id];o.needsUpdate!==!1&&a.setValue(e,o.value,r)}}static seqWithValue(e,t){let n=[];for(let r=0,i=e.length;r!==i;++r){let i=e[r];i.id in t&&n.push(i)}return n}};function nt(e,t,n){let r=e.createShader(t);return e.shaderSource(r,n),e.compileShader(r),r}var rt=37297,it=0;function at(e,t){let n=e.split(`
4002
+ }`,depthTest:!1,depthWrite:!1}),d=new t.Y(l,u),f=new t.rt(-1,1,1,-1,0,1),p=null,m=null,h=!1,g,_=null,v=[],y=!1;this.setSize=function(e,t){s.setSize(e,t),c.setSize(e,t);for(let n=0;n<v.length;n++){let r=v[n];r.setSize&&r.setSize(e,t)}},this.setEffects=function(e){v=e,y=v.length>0&&v[0].isRenderPass===!0;let t=s.width,n=s.height;for(let e=0;e<v.length;e++){let r=v[e];r.setSize&&r.setSize(t,n)}},this.begin=function(e,t){if(h||e.toneMapping===0&&v.length===0)return!1;if(_=t,t!==null){let e=t.width,n=t.height;(s.width!==e||s.height!==n)&&this.setSize(e,n)}return y===!1&&e.setRenderTarget(s),g=e.toneMapping,e.toneMapping=0,!0},this.hasRenderPass=function(){return y},this.end=function(e,n){e.toneMapping=g,h=!0;let r=s,i=c;for(let t=0;t<v.length;t++){let a=v[t];if(a.enabled!==!1&&(a.render(e,i,r,n),a.needsSwap!==!1)){let e=r;r=i,i=e}}if(p!==e.outputColorSpace||m!==e.toneMapping){p=e.outputColorSpace,m=e.toneMapping,u.defines={},t._.getTransfer(p)===`srgb`&&(u.defines.SRGB_TRANSFER=``);let n=L[m];n&&(u.defines[n]=``),u.needsUpdate=!0}u.uniforms.tDiffuse.value=r.texture,e.setRenderTarget(_),e.render(d,f),_=null,h=!1},this.isCompositing=function(){return h},this.dispose=function(){s.depthTexture&&s.depthTexture.dispose(),s.dispose(),c.dispose(),l.dispose(),u.dispose()}}var le=new t.un,R=new t.D(1,1),z=new t.C,B=new t.S,V=new t.x,H=[],ue=[],de=new Float32Array(16),fe=new Float32Array(9),pe=new Float32Array(4);function U(e,t,n){let r=e[0];if(r<=0||r>0)return e;let i=t*n,a=H[i];if(a===void 0&&(a=new Float32Array(i),H[i]=a),t!==0){r.toArray(a,0);for(let r=1,i=0;r!==t;++r)i+=n,e[r].toArray(a,i)}return a}function W(e,t){if(e.length!==t.length)return!1;for(let n=0,r=e.length;n<r;n++)if(e[n]!==t[n])return!1;return!0}function G(e,t){for(let n=0,r=t.length;n<r;n++)e[n]=t[n]}function me(e,t){let n=ue[t];n===void 0&&(n=new Int32Array(t),ue[t]=n);for(let r=0;r!==t;++r)n[r]=e.allocateTextureUnit();return n}function he(e,t){let n=this.cache;n[0]!==t&&(e.uniform1f(this.addr,t),n[0]=t)}function ge(e,t){let n=this.cache;if(t.x!==void 0)(n[0]!==t.x||n[1]!==t.y)&&(e.uniform2f(this.addr,t.x,t.y),n[0]=t.x,n[1]=t.y);else{if(W(n,t))return;e.uniform2fv(this.addr,t),G(n,t)}}function _e(e,t){let n=this.cache;if(t.x!==void 0)(n[0]!==t.x||n[1]!==t.y||n[2]!==t.z)&&(e.uniform3f(this.addr,t.x,t.y,t.z),n[0]=t.x,n[1]=t.y,n[2]=t.z);else if(t.r!==void 0)(n[0]!==t.r||n[1]!==t.g||n[2]!==t.b)&&(e.uniform3f(this.addr,t.r,t.g,t.b),n[0]=t.r,n[1]=t.g,n[2]=t.b);else{if(W(n,t))return;e.uniform3fv(this.addr,t),G(n,t)}}function ve(e,t){let n=this.cache;if(t.x!==void 0)(n[0]!==t.x||n[1]!==t.y||n[2]!==t.z||n[3]!==t.w)&&(e.uniform4f(this.addr,t.x,t.y,t.z,t.w),n[0]=t.x,n[1]=t.y,n[2]=t.z,n[3]=t.w);else{if(W(n,t))return;e.uniform4fv(this.addr,t),G(n,t)}}function ye(e,t){let n=this.cache,r=t.elements;if(r===void 0){if(W(n,t))return;e.uniformMatrix2fv(this.addr,!1,t),G(n,t)}else{if(W(n,r))return;pe.set(r),e.uniformMatrix2fv(this.addr,!1,pe),G(n,r)}}function be(e,t){let n=this.cache,r=t.elements;if(r===void 0){if(W(n,t))return;e.uniformMatrix3fv(this.addr,!1,t),G(n,t)}else{if(W(n,r))return;fe.set(r),e.uniformMatrix3fv(this.addr,!1,fe),G(n,r)}}function xe(e,t){let n=this.cache,r=t.elements;if(r===void 0){if(W(n,t))return;e.uniformMatrix4fv(this.addr,!1,t),G(n,t)}else{if(W(n,r))return;de.set(r),e.uniformMatrix4fv(this.addr,!1,de),G(n,r)}}function Se(e,t){let n=this.cache;n[0]!==t&&(e.uniform1i(this.addr,t),n[0]=t)}function Ce(e,t){let n=this.cache;if(t.x!==void 0)(n[0]!==t.x||n[1]!==t.y)&&(e.uniform2i(this.addr,t.x,t.y),n[0]=t.x,n[1]=t.y);else{if(W(n,t))return;e.uniform2iv(this.addr,t),G(n,t)}}function we(e,t){let n=this.cache;if(t.x!==void 0)(n[0]!==t.x||n[1]!==t.y||n[2]!==t.z)&&(e.uniform3i(this.addr,t.x,t.y,t.z),n[0]=t.x,n[1]=t.y,n[2]=t.z);else{if(W(n,t))return;e.uniform3iv(this.addr,t),G(n,t)}}function Te(e,t){let n=this.cache;if(t.x!==void 0)(n[0]!==t.x||n[1]!==t.y||n[2]!==t.z||n[3]!==t.w)&&(e.uniform4i(this.addr,t.x,t.y,t.z,t.w),n[0]=t.x,n[1]=t.y,n[2]=t.z,n[3]=t.w);else{if(W(n,t))return;e.uniform4iv(this.addr,t),G(n,t)}}function Ee(e,t){let n=this.cache;n[0]!==t&&(e.uniform1ui(this.addr,t),n[0]=t)}function De(e,t){let n=this.cache;if(t.x!==void 0)(n[0]!==t.x||n[1]!==t.y)&&(e.uniform2ui(this.addr,t.x,t.y),n[0]=t.x,n[1]=t.y);else{if(W(n,t))return;e.uniform2uiv(this.addr,t),G(n,t)}}function K(e,t){let n=this.cache;if(t.x!==void 0)(n[0]!==t.x||n[1]!==t.y||n[2]!==t.z)&&(e.uniform3ui(this.addr,t.x,t.y,t.z),n[0]=t.x,n[1]=t.y,n[2]=t.z);else{if(W(n,t))return;e.uniform3uiv(this.addr,t),G(n,t)}}function Oe(e,t){let n=this.cache;if(t.x!==void 0)(n[0]!==t.x||n[1]!==t.y||n[2]!==t.z||n[3]!==t.w)&&(e.uniform4ui(this.addr,t.x,t.y,t.z,t.w),n[0]=t.x,n[1]=t.y,n[2]=t.z,n[3]=t.w);else{if(W(n,t))return;e.uniform4uiv(this.addr,t),G(n,t)}}function q(e,t,n){let r=this.cache,i=n.allocateTextureUnit();r[0]!==i&&(e.uniform1i(this.addr,i),r[0]=i);let a;this.type===e.SAMPLER_2D_SHADOW?(R.compareFunction=n.isReversedDepthBuffer()?518:515,a=R):a=le,n.setTexture2D(t||a,i)}function ke(e,t,n){let r=this.cache,i=n.allocateTextureUnit();r[0]!==i&&(e.uniform1i(this.addr,i),r[0]=i),n.setTexture3D(t||B,i)}function J(e,t,n){let r=this.cache,i=n.allocateTextureUnit();r[0]!==i&&(e.uniform1i(this.addr,i),r[0]=i),n.setTextureCube(t||V,i)}function Ae(e,t,n){let r=this.cache,i=n.allocateTextureUnit();r[0]!==i&&(e.uniform1i(this.addr,i),r[0]=i),n.setTexture2DArray(t||z,i)}function Y(e){switch(e){case 5126:return he;case 35664:return ge;case 35665:return _e;case 35666:return ve;case 35674:return ye;case 35675:return be;case 35676:return xe;case 5124:case 35670:return Se;case 35667:case 35671:return Ce;case 35668:case 35672:return we;case 35669:case 35673:return Te;case 5125:return Ee;case 36294:return De;case 36295:return K;case 36296:return Oe;case 35678:case 36198:case 36298:case 36306:case 35682:return q;case 35679:case 36299:case 36307:return ke;case 35680:case 36300:case 36308:case 36293:return J;case 36289:case 36303:case 36311:case 36292:return Ae}}function X(e,t){e.uniform1fv(this.addr,t)}function je(e,t){let n=U(t,this.size,2);e.uniform2fv(this.addr,n)}function Me(e,t){let n=U(t,this.size,3);e.uniform3fv(this.addr,n)}function Ne(e,t){let n=U(t,this.size,4);e.uniform4fv(this.addr,n)}function Pe(e,t){let n=U(t,this.size,4);e.uniformMatrix2fv(this.addr,!1,n)}function Fe(e,t){let n=U(t,this.size,9);e.uniformMatrix3fv(this.addr,!1,n)}function Ie(e,t){let n=U(t,this.size,16);e.uniformMatrix4fv(this.addr,!1,n)}function Le(e,t){e.uniform1iv(this.addr,t)}function Re(e,t){e.uniform2iv(this.addr,t)}function ze(e,t){e.uniform3iv(this.addr,t)}function Be(e,t){e.uniform4iv(this.addr,t)}function Ve(e,t){e.uniform1uiv(this.addr,t)}function He(e,t){e.uniform2uiv(this.addr,t)}function Ue(e,t){e.uniform3uiv(this.addr,t)}function We(e,t){e.uniform4uiv(this.addr,t)}function Ge(e,t,n){let r=this.cache,i=t.length,a=me(n,i);W(r,a)||(e.uniform1iv(this.addr,a),G(r,a));let o;o=this.type===e.SAMPLER_2D_SHADOW?R:le;for(let e=0;e!==i;++e)n.setTexture2D(t[e]||o,a[e])}function Ke(e,t,n){let r=this.cache,i=t.length,a=me(n,i);W(r,a)||(e.uniform1iv(this.addr,a),G(r,a));for(let e=0;e!==i;++e)n.setTexture3D(t[e]||B,a[e])}function qe(e,t,n){let r=this.cache,i=t.length,a=me(n,i);W(r,a)||(e.uniform1iv(this.addr,a),G(r,a));for(let e=0;e!==i;++e)n.setTextureCube(t[e]||V,a[e])}function Je(e,t,n){let r=this.cache,i=t.length,a=me(n,i);W(r,a)||(e.uniform1iv(this.addr,a),G(r,a));for(let e=0;e!==i;++e)n.setTexture2DArray(t[e]||z,a[e])}function Z(e){switch(e){case 5126:return X;case 35664:return je;case 35665:return Me;case 35666:return Ne;case 35674:return Pe;case 35675:return Fe;case 35676:return Ie;case 5124:case 35670:return Le;case 35667:case 35671:return Re;case 35668:case 35672:return ze;case 35669:case 35673:return Be;case 5125:return Ve;case 36294:return He;case 36295:return Ue;case 36296:return We;case 35678:case 36198:case 36298:case 36306:case 35682:return Ge;case 35679:case 36299:case 36307:return Ke;case 35680:case 36300:case 36308:case 36293:return qe;case 36289:case 36303:case 36311:case 36292:return Je}}var Ye=class{constructor(e,t,n){this.id=e,this.addr=n,this.cache=[],this.type=t.type,this.setValue=Y(t.type)}},Xe=class{constructor(e,t,n){this.id=e,this.addr=n,this.cache=[],this.type=t.type,this.size=t.size,this.setValue=Z(t.type)}},Ze=class{constructor(e){this.id=e,this.seq=[],this.map={}}setValue(e,t,n){let r=this.seq;for(let i=0,a=r.length;i!==a;++i){let a=r[i];a.setValue(e,t[a.id],n)}}},Qe=/(\w+)(\])?(\[|\.)?/g;function $e(e,t){e.seq.push(t),e.map[t.id]=t}function et(e,t,n){let r=e.name,i=r.length;for(Qe.lastIndex=0;;){let a=Qe.exec(r),o=Qe.lastIndex,s=a[1],c=a[2]===`]`,l=a[3];if(c&&(s|=0),l===void 0||l===`[`&&o+2===i){$e(n,l===void 0?new Ye(s,e,t):new Xe(s,e,t));break}{let e=n.map[s];e===void 0&&(e=new Ze(s),$e(n,e)),n=e}}}var tt=class{constructor(e,t){this.seq=[],this.map={};let n=e.getProgramParameter(t,e.ACTIVE_UNIFORMS);for(let r=0;r<n;++r){let n=e.getActiveUniform(t,r);et(n,e.getUniformLocation(t,n.name),this)}let r=[],i=[];for(let t of this.seq)t.type===e.SAMPLER_2D_SHADOW||t.type===e.SAMPLER_CUBE_SHADOW||t.type===e.SAMPLER_2D_ARRAY_SHADOW?r.push(t):i.push(t);r.length>0&&(this.seq=r.concat(i))}setValue(e,t,n,r){let i=this.map[t];i!==void 0&&i.setValue(e,n,r)}setOptional(e,t,n){let r=t[n];r!==void 0&&this.setValue(e,n,r)}static upload(e,t,n,r){for(let i=0,a=t.length;i!==a;++i){let a=t[i],o=n[a.id];o.needsUpdate!==!1&&a.setValue(e,o.value,r)}}static seqWithValue(e,t){let n=[];for(let r=0,i=e.length;r!==i;++r){let i=e[r];i.id in t&&n.push(i)}return n}};function nt(e,t,n){let r=e.createShader(t);return e.shaderSource(r,n),e.compileShader(r),r}var rt=37297,it=0;function at(e,t){let n=e.split(`
4003
4003
  `),r=[],i=Math.max(t-6,0),a=Math.min(t+6,n.length);for(let e=i;e<a;e++){let i=e+1;r.push(`${i===t?`>`:` `} ${i}: ${n[e]}`)}return r.join(`
4004
- `)}var ot=new t.K;function st(e){t._._getMatrix(ot,t._.workingColorSpace,e);let n=`mat3( ${ot.elements.map(e=>e.toFixed(4))} )`;switch(t._.getTransfer(e)){case t.U:return[n,`LinearTransferOETF`];case t.rn:return[n,`sRGBTransferOETF`];default:return t.In(`WebGLProgram: Unsupported color space: `,e),[n,`LinearTransferOETF`]}}function ct(e,t,n){let r=e.getShaderParameter(t,e.COMPILE_STATUS),i=(e.getShaderInfoLog(t)||``).trim();if(r&&i===``)return``;let a=/ERROR: 0:(\d+)/.exec(i);if(a){let r=parseInt(a[1]);return n.toUpperCase()+`
4004
+ `)}var ot=new t.q;function st(e){t._._getMatrix(ot,t._.workingColorSpace,e);let n=`mat3( ${ot.elements.map(e=>e.toFixed(4))} )`;switch(t._.getTransfer(e)){case t.W:return[n,`LinearTransferOETF`];case t.in:return[n,`sRGBTransferOETF`];default:return t.Ln(`WebGLProgram: Unsupported color space: `,e),[n,`LinearTransferOETF`]}}function ct(e,t,n){let r=e.getShaderParameter(t,e.COMPILE_STATUS),i=(e.getShaderInfoLog(t)||``).trim();if(r&&i===``)return``;let a=/ERROR: 0:(\d+)/.exec(i);if(a){let r=parseInt(a[1]);return n.toUpperCase()+`
4005
4005
 
4006
4006
  `+i+`
4007
4007
 
4008
4008
  `+at(e.getShaderSource(t),r)}return i}function lt(e,t){let n=st(t);return[`vec4 ${e}( vec4 value ) {`,` return ${n[1]}( vec4( value.rgb * ${n[0]}, value.a ) );`,`}`].join(`
4009
- `)}var ut={1:`Linear`,2:`Reinhard`,3:`Cineon`,4:`ACESFilmic`,6:`AgX`,7:`Neutral`,5:`Custom`};function dt(e,n){let r=ut[n];return r===void 0?(t.In(`WebGLProgram: Unsupported toneMapping:`,n),`vec3 `+e+`( vec3 color ) { return LinearToneMapping( color ); }`):`vec3 `+e+`( vec3 color ) { return `+r+`ToneMapping( color ); }`}var ft=new t.Sn;function pt(){return t._.getLuminanceCoefficients(ft),[`float luminance( const in vec3 rgb ) {`,` const vec3 weights = vec3( ${ft.x.toFixed(4)}, ${ft.y.toFixed(4)}, ${ft.z.toFixed(4)} );`,` return dot( weights, rgb );`,`}`].join(`
4009
+ `)}var ut={1:`Linear`,2:`Reinhard`,3:`Cineon`,4:`ACESFilmic`,6:`AgX`,7:`Neutral`,5:`Custom`};function dt(e,n){let r=ut[n];return r===void 0?(t.Ln(`WebGLProgram: Unsupported toneMapping:`,n),`vec3 `+e+`( vec3 color ) { return LinearToneMapping( color ); }`):`vec3 `+e+`( vec3 color ) { return `+r+`ToneMapping( color ); }`}var ft=new t.Cn;function pt(){return t._.getLuminanceCoefficients(ft),[`float luminance( const in vec3 rgb ) {`,` const vec3 weights = vec3( ${ft.x.toFixed(4)}, ${ft.y.toFixed(4)}, ${ft.z.toFixed(4)} );`,` return dot( weights, rgb );`,`}`].join(`
4010
4010
  `)}function mt(e){return[e.extensionClipCullDistance?`#extension GL_ANGLE_clip_cull_distance : require`:``,e.extensionMultiDraw?`#extension GL_ANGLE_multi_draw : require`:``].filter(_t).join(`
4011
4011
  `)}function ht(e){let t=[];for(let n in e){let r=e[n];r!==!1&&t.push(`#define `+n+` `+r)}return t.join(`
4012
- `)}function gt(e,t){let n={},r=e.getProgramParameter(t,e.ACTIVE_ATTRIBUTES);for(let i=0;i<r;i++){let r=e.getActiveAttrib(t,i),a=r.name,o=1;r.type===e.FLOAT_MAT2&&(o=2),r.type===e.FLOAT_MAT3&&(o=3),r.type===e.FLOAT_MAT4&&(o=4),n[a]={type:r.type,location:e.getAttribLocation(t,a),locationSize:o}}return n}function _t(e){return e!==``}function vt(e,t){let n=t.numSpotLightShadows+t.numSpotLightMaps-t.numSpotLightShadowsWithMaps;return e.replace(/NUM_DIR_LIGHTS/g,t.numDirLights).replace(/NUM_SPOT_LIGHTS/g,t.numSpotLights).replace(/NUM_SPOT_LIGHT_MAPS/g,t.numSpotLightMaps).replace(/NUM_SPOT_LIGHT_COORDS/g,n).replace(/NUM_RECT_AREA_LIGHTS/g,t.numRectAreaLights).replace(/NUM_POINT_LIGHTS/g,t.numPointLights).replace(/NUM_HEMI_LIGHTS/g,t.numHemiLights).replace(/NUM_DIR_LIGHT_SHADOWS/g,t.numDirLightShadows).replace(/NUM_SPOT_LIGHT_SHADOWS_WITH_MAPS/g,t.numSpotLightShadowsWithMaps).replace(/NUM_SPOT_LIGHT_SHADOWS/g,t.numSpotLightShadows).replace(/NUM_POINT_LIGHT_SHADOWS/g,t.numPointLightShadows)}function yt(e,t){return e.replace(/NUM_CLIPPING_PLANES/g,t.numClippingPlanes).replace(/UNION_CLIPPING_PLANES/g,t.numClippingPlanes-t.numClipIntersection)}var bt=/^[ \t]*#include +<([\w\d./]+)>/gm;function xt(e){return e.replace(bt,Ct)}var St=new Map;function Ct(e,n){let r=o[n];if(r===void 0){let e=St.get(n);if(e!==void 0)r=o[e],t.In(`WebGLRenderer: Shader chunk "%s" has been deprecated. Use "%s" instead.`,n,e);else throw Error(`THREE.WebGLProgram: Can not resolve #include <`+n+`>`)}return xt(r)}var wt=/#pragma unroll_loop_start\s+for\s*\(\s*int\s+i\s*=\s*(\d+)\s*;\s*i\s*<\s*(\d+)\s*;\s*i\s*\+\+\s*\)\s*{([\s\S]+?)}\s+#pragma unroll_loop_end/g;function Tt(e){return e.replace(wt,Et)}function Et(e,t,n,r){let i=``;for(let e=parseInt(t);e<parseInt(n);e++)i+=r.replace(/\[\s*i\s*\]/g,`[ `+e+` ]`).replace(/UNROLLED_LOOP_INDEX/g,e);return i}function Dt(e){let t=`precision ${e.precision} float;
4012
+ `)}function gt(e,t){let n={},r=e.getProgramParameter(t,e.ACTIVE_ATTRIBUTES);for(let i=0;i<r;i++){let r=e.getActiveAttrib(t,i),a=r.name,o=1;r.type===e.FLOAT_MAT2&&(o=2),r.type===e.FLOAT_MAT3&&(o=3),r.type===e.FLOAT_MAT4&&(o=4),n[a]={type:r.type,location:e.getAttribLocation(t,a),locationSize:o}}return n}function _t(e){return e!==``}function vt(e,t){let n=t.numSpotLightShadows+t.numSpotLightMaps-t.numSpotLightShadowsWithMaps;return e.replace(/NUM_DIR_LIGHTS/g,t.numDirLights).replace(/NUM_SPOT_LIGHTS/g,t.numSpotLights).replace(/NUM_SPOT_LIGHT_MAPS/g,t.numSpotLightMaps).replace(/NUM_SPOT_LIGHT_COORDS/g,n).replace(/NUM_RECT_AREA_LIGHTS/g,t.numRectAreaLights).replace(/NUM_POINT_LIGHTS/g,t.numPointLights).replace(/NUM_HEMI_LIGHTS/g,t.numHemiLights).replace(/NUM_DIR_LIGHT_SHADOWS/g,t.numDirLightShadows).replace(/NUM_SPOT_LIGHT_SHADOWS_WITH_MAPS/g,t.numSpotLightShadowsWithMaps).replace(/NUM_SPOT_LIGHT_SHADOWS/g,t.numSpotLightShadows).replace(/NUM_POINT_LIGHT_SHADOWS/g,t.numPointLightShadows)}function yt(e,t){return e.replace(/NUM_CLIPPING_PLANES/g,t.numClippingPlanes).replace(/UNION_CLIPPING_PLANES/g,t.numClippingPlanes-t.numClipIntersection)}var bt=/^[ \t]*#include +<([\w\d./]+)>/gm;function xt(e){return e.replace(bt,Ct)}var St=new Map;function Ct(e,n){let r=o[n];if(r===void 0){let e=St.get(n);if(e!==void 0)r=o[e],t.Ln(`WebGLRenderer: Shader chunk "%s" has been deprecated. Use "%s" instead.`,n,e);else throw Error(`THREE.WebGLProgram: Can not resolve #include <`+n+`>`)}return xt(r)}var wt=/#pragma unroll_loop_start\s+for\s*\(\s*int\s+i\s*=\s*(\d+)\s*;\s*i\s*<\s*(\d+)\s*;\s*i\s*\+\+\s*\)\s*{([\s\S]+?)}\s+#pragma unroll_loop_end/g;function Tt(e){return e.replace(wt,Et)}function Et(e,t,n,r){let i=``;for(let e=parseInt(t);e<parseInt(n);e++)i+=r.replace(/\[\s*i\s*\]/g,`[ `+e+` ]`).replace(/UNROLLED_LOOP_INDEX/g,e);return i}function Dt(e){let t=`precision ${e.precision} float;
4013
4013
  precision ${e.precision} int;
4014
4014
  precision ${e.precision} sampler2D;
4015
4015
  precision ${e.precision} samplerCube;
@@ -4043,14 +4043,14 @@ void main() {
4043
4043
  `)+`
4044
4044
  `+v,y=[`#define varying in`,r.glslVersion===`300 es`?``:`layout(location = 0) out highp vec4 pc_fragColor;`,r.glslVersion===`300 es`?``:`#define gl_FragColor pc_fragColor`,`#define gl_FragDepthEXT gl_FragDepth`,`#define texture2D texture`,`#define textureCube texture`,`#define texture2DProj textureProj`,`#define texture2DLodEXT textureLod`,`#define texture2DProjLodEXT textureProjLod`,`#define textureCubeLodEXT textureLod`,`#define texture2DGradEXT textureGrad`,`#define texture2DProjGradEXT textureProjGrad`,`#define textureCubeGradEXT textureGrad`].join(`
4045
4045
  `)+`
4046
- `+y);let x=b+v+c,S=b+y+l,C=nt(a,a.VERTEX_SHADER,x),w=nt(a,a.FRAGMENT_SHADER,S);a.attachShader(_,C),a.attachShader(_,w),r.index0AttributeName===void 0?r.hasPositionAttribute===!0&&a.bindAttribLocation(_,0,`position`):a.bindAttribLocation(_,0,r.index0AttributeName),a.linkProgram(_);function T(n){if(e.debug.checkShaderErrors){let r=a.getProgramInfoLog(_)||``,i=a.getShaderInfoLog(C)||``,o=a.getShaderInfoLog(w)||``,s=r.trim(),c=i.trim(),l=o.trim(),u=!0,d=!0;if(a.getProgramParameter(_,a.LINK_STATUS)===!1){if(u=!1,typeof e.debug.onShaderError==`function`)e.debug.onShaderError(a,_,C,w);else{let e=ct(a,C,`vertex`),r=ct(a,w,`fragment`);t.An(`WebGLProgram: Shader Error `+a.getError()+` - VALIDATE_STATUS `+a.getProgramParameter(_,a.VALIDATE_STATUS)+`
4046
+ `+y);let x=b+v+c,S=b+y+l,C=nt(a,a.VERTEX_SHADER,x),w=nt(a,a.FRAGMENT_SHADER,S);a.attachShader(_,C),a.attachShader(_,w),r.index0AttributeName===void 0?r.hasPositionAttribute===!0&&a.bindAttribLocation(_,0,`position`):a.bindAttribLocation(_,0,r.index0AttributeName),a.linkProgram(_);function T(n){if(e.debug.checkShaderErrors){let r=a.getProgramInfoLog(_)||``,i=a.getShaderInfoLog(C)||``,o=a.getShaderInfoLog(w)||``,s=r.trim(),c=i.trim(),l=o.trim(),u=!0,d=!0;if(a.getProgramParameter(_,a.LINK_STATUS)===!1){if(u=!1,typeof e.debug.onShaderError==`function`)e.debug.onShaderError(a,_,C,w);else{let e=ct(a,C,`vertex`),r=ct(a,w,`fragment`);t.jn(`WebGLProgram: Shader Error `+a.getError()+` - VALIDATE_STATUS `+a.getProgramParameter(_,a.VALIDATE_STATUS)+`
4047
4047
 
4048
4048
  Material Name: `+n.name+`
4049
4049
  Material Type: `+n.type+`
4050
4050
 
4051
4051
  Program Info Log: `+s+`
4052
4052
  `+e+`
4053
- `+r)}}else s===``?(c===``||l===``)&&(d=!1):t.In(`WebGLProgram: Program Info Log:`,s);d&&(n.diagnostics={runnable:u,programLog:s,vertexShader:{log:c,prefix:v},fragmentShader:{log:l,prefix:y}})}a.deleteShader(C),a.deleteShader(w),E=new tt(a,_),D=gt(a,_)}let E;this.getUniforms=function(){return E===void 0&&T(this),E};let D;this.getAttributes=function(){return D===void 0&&T(this),D};let O=r.rendererExtensionParallelShaderCompile===!1;return this.isReady=function(){return O===!1&&(O=a.getProgramParameter(_,rt)),O},this.destroy=function(){i.releaseStatesOfProgram(this),a.deleteProgram(_),this.program=void 0},this.type=r.shaderType,this.name=r.shaderName,this.id=it++,this.cacheKey=n,this.usedTimes=1,this.program=_,this.vertexShader=C,this.fragmentShader=w,this}var Rt=0,zt=class{constructor(){this.shaderCache=new Map,this.materialCache=new Map}update(e,t,n){let r=this._getShaderCacheForMaterial(e);return r.has(t)===!1&&(r.add(t),t.usedTimes++),r.has(n)===!1&&(r.add(n),n.usedTimes++),this}remove(e){let t=this.materialCache.get(e);for(let e of t)e.usedTimes--,e.usedTimes===0&&this.shaderCache.delete(e.code);return this.materialCache.delete(e),this}getVertexShaderStage(e){return this._getShaderStage(e.vertexShader)}getFragmentShaderStage(e){return this._getShaderStage(e.fragmentShader)}dispose(){this.shaderCache.clear(),this.materialCache.clear()}_getShaderCacheForMaterial(e){let t=this.materialCache,n=t.get(e);return n===void 0&&(n=new Set,t.set(e,n)),n}_getShaderStage(e){let t=this.shaderCache,n=t.get(e);return n===void 0&&(n=new Bt(e),t.set(e,n)),n}},Bt=class{constructor(e){this.id=Rt++,this.code=e,this.usedTimes=0}};function Vt(e){return e===1030||e===37490||e===36285}function Ht(e,n,r,i,a,o){let s=new t.R,l=new zt,u=new Set,d=[],f=new Map,p=i.logarithmicDepthBuffer,m=i.precision,h={MeshDepthMaterial:`depth`,MeshDistanceMaterial:`distance`,MeshNormalMaterial:`normal`,MeshBasicMaterial:`basic`,MeshLambertMaterial:`lambert`,MeshPhongMaterial:`phong`,MeshToonMaterial:`toon`,MeshStandardMaterial:`physical`,MeshPhysicalMaterial:`physical`,MeshMatcapMaterial:`matcap`,LineBasicMaterial:`basic`,LineDashedMaterial:`dashed`,PointsMaterial:`points`,ShadowMaterial:`shadow`,SpriteMaterial:`sprite`};function g(e){return u.add(e),e===0?`uv`:`uv${e}`}function _(a,s,d,f,_,v){let y=f.fog,b=_.geometry,x=a.isMeshStandardMaterial||a.isMeshLambertMaterial||a.isMeshPhongMaterial?f.environment:null,S=a.isMeshStandardMaterial||a.isMeshLambertMaterial&&!a.envMap||a.isMeshPhongMaterial&&!a.envMap,C=n.get(a.envMap||x,S),w=C&&C.mapping===306?C.image.height:null,T=h[a.type];a.precision!==null&&(m=i.getMaxPrecision(a.precision),m!==a.precision&&t.In(`WebGLProgram.getParameters:`,a.precision,`not supported, using`,m,`instead.`));let E=b.morphAttributes.position||b.morphAttributes.normal||b.morphAttributes.color,D=E===void 0?0:E.length,O=0;b.morphAttributes.position!==void 0&&(O=1),b.morphAttributes.normal!==void 0&&(O=2),b.morphAttributes.color!==void 0&&(O=3);let k,A,j,M;if(T){let e=c[T];k=e.vertexShader,A=e.fragmentShader}else{k=a.vertexShader,A=a.fragmentShader;let e=l.getVertexShaderStage(a),t=l.getFragmentShaderStage(a);l.update(a,e,t),j=e.id,M=t.id}let N=e.getRenderTarget(),ee=e.state.buffers.depth.getReversed(),P=_.isInstancedMesh===!0,F=_.isBatchedMesh===!0,I=!!a.map,te=!!a.matcap,ne=!!C,re=!!a.aoMap,ie=!!a.lightMap,ae=!!a.bumpMap&&a.wireframe===!1,oe=!!a.normalMap,se=!!a.displacementMap,L=!!a.emissiveMap,ce=!!a.metalnessMap,le=!!a.roughnessMap,R=a.anisotropy>0,z=a.clearcoat>0,B=a.dispersion>0,V=a.iridescence>0,H=a.sheen>0,ue=a.transmission>0,de=R&&!!a.anisotropyMap,fe=z&&!!a.clearcoatMap,pe=z&&!!a.clearcoatNormalMap,U=z&&!!a.clearcoatRoughnessMap,W=V&&!!a.iridescenceMap,G=V&&!!a.iridescenceThicknessMap,me=H&&!!a.sheenColorMap,he=H&&!!a.sheenRoughnessMap,ge=!!a.specularMap,_e=!!a.specularColorMap,ve=!!a.specularIntensityMap,ye=ue&&!!a.transmissionMap,be=ue&&!!a.thicknessMap,xe=!!a.gradientMap,Se=!!a.alphaMap,Ce=a.alphaTest>0,we=!!a.alphaHash,Te=!!a.extensions,Ee=0;a.toneMapped&&(N===null||N.isXRRenderTarget===!0)&&(Ee=e.toneMapping);let De={shaderID:T,shaderType:a.type,shaderName:a.name,vertexShader:k,fragmentShader:A,defines:a.defines,customVertexShaderID:j,customFragmentShaderID:M,isRawShaderMaterial:a.isRawShaderMaterial===!0,glslVersion:a.glslVersion,precision:m,batching:F,batchingColor:F&&_._colorsTexture!==null,instancing:P,instancingColor:P&&_.instanceColor!==null,instancingMorph:P&&_.morphTexture!==null,outputColorSpace:N===null?e.outputColorSpace:N.isXRRenderTarget===!0?N.texture.colorSpace:t._.workingColorSpace,alphaToCoverage:!!a.alphaToCoverage,map:I,matcap:te,envMap:ne,envMapMode:ne&&C.mapping,envMapCubeUVHeight:w,aoMap:re,lightMap:ie,bumpMap:ae,normalMap:oe,displacementMap:se,emissiveMap:L,normalMapObjectSpace:oe&&a.normalMapType===1,normalMapTangentSpace:oe&&a.normalMapType===0,packedNormalMap:oe&&a.normalMapType===0&&Vt(a.normalMap.format),metalnessMap:ce,roughnessMap:le,anisotropy:R,anisotropyMap:de,clearcoat:z,clearcoatMap:fe,clearcoatNormalMap:pe,clearcoatRoughnessMap:U,dispersion:B,iridescence:V,iridescenceMap:W,iridescenceThicknessMap:G,sheen:H,sheenColorMap:me,sheenRoughnessMap:he,specularMap:ge,specularColorMap:_e,specularIntensityMap:ve,transmission:ue,transmissionMap:ye,thicknessMap:be,gradientMap:xe,opaque:a.transparent===!1&&a.blending===1&&a.alphaToCoverage===!1,alphaMap:Se,alphaTest:Ce,alphaHash:we,combine:a.combine,mapUv:I&&g(a.map.channel),aoMapUv:re&&g(a.aoMap.channel),lightMapUv:ie&&g(a.lightMap.channel),bumpMapUv:ae&&g(a.bumpMap.channel),normalMapUv:oe&&g(a.normalMap.channel),displacementMapUv:se&&g(a.displacementMap.channel),emissiveMapUv:L&&g(a.emissiveMap.channel),metalnessMapUv:ce&&g(a.metalnessMap.channel),roughnessMapUv:le&&g(a.roughnessMap.channel),anisotropyMapUv:de&&g(a.anisotropyMap.channel),clearcoatMapUv:fe&&g(a.clearcoatMap.channel),clearcoatNormalMapUv:pe&&g(a.clearcoatNormalMap.channel),clearcoatRoughnessMapUv:U&&g(a.clearcoatRoughnessMap.channel),iridescenceMapUv:W&&g(a.iridescenceMap.channel),iridescenceThicknessMapUv:G&&g(a.iridescenceThicknessMap.channel),sheenColorMapUv:me&&g(a.sheenColorMap.channel),sheenRoughnessMapUv:he&&g(a.sheenRoughnessMap.channel),specularMapUv:ge&&g(a.specularMap.channel),specularColorMapUv:_e&&g(a.specularColorMap.channel),specularIntensityMapUv:ve&&g(a.specularIntensityMap.channel),transmissionMapUv:ye&&g(a.transmissionMap.channel),thicknessMapUv:be&&g(a.thicknessMap.channel),alphaMapUv:Se&&g(a.alphaMap.channel),vertexTangents:!!b.attributes.tangent&&(oe||R),vertexNormals:!!b.attributes.normal,vertexColors:a.vertexColors,vertexAlphas:a.vertexColors===!0&&!!b.attributes.color&&b.attributes.color.itemSize===4,pointsUvs:_.isPoints===!0&&!!b.attributes.uv&&(I||Se),fog:!!y,useFog:a.fog===!0,fogExp2:!!y&&y.isFogExp2,flatShading:a.wireframe===!1&&(a.flatShading===!0||b.attributes.normal===void 0&&oe===!1&&(a.isMeshLambertMaterial||a.isMeshPhongMaterial||a.isMeshStandardMaterial||a.isMeshPhysicalMaterial)),sizeAttenuation:a.sizeAttenuation===!0,logarithmicDepthBuffer:p,reversedDepthBuffer:ee,skinning:_.isSkinnedMesh===!0,hasPositionAttribute:b.attributes.position!==void 0,morphTargets:b.morphAttributes.position!==void 0,morphNormals:b.morphAttributes.normal!==void 0,morphColors:b.morphAttributes.color!==void 0,morphTargetsCount:D,morphTextureStride:O,numDirLights:s.directional.length,numPointLights:s.point.length,numSpotLights:s.spot.length,numSpotLightMaps:s.spotLightMap.length,numRectAreaLights:s.rectArea.length,numHemiLights:s.hemi.length,numDirLightShadows:s.directionalShadowMap.length,numPointLightShadows:s.pointShadowMap.length,numSpotLightShadows:s.spotShadowMap.length,numSpotLightShadowsWithMaps:s.numSpotLightShadowsWithMaps,numLightProbes:s.numLightProbes,numLightProbeGrids:v.length,numClippingPlanes:o.numPlanes,numClipIntersection:o.numIntersection,dithering:a.dithering,shadowMapEnabled:e.shadowMap.enabled&&d.length>0,shadowMapType:e.shadowMap.type,toneMapping:Ee,decodeVideoTexture:I&&a.map.isVideoTexture===!0&&t._.getTransfer(a.map.colorSpace)===`srgb`,decodeVideoTextureEmissive:L&&a.emissiveMap.isVideoTexture===!0&&t._.getTransfer(a.emissiveMap.colorSpace)===`srgb`,premultipliedAlpha:a.premultipliedAlpha,doubleSided:a.side===2,flipSided:a.side===1,useDepthPacking:a.depthPacking>=0,depthPacking:a.depthPacking||0,index0AttributeName:a.index0AttributeName,extensionClipCullDistance:Te&&a.extensions.clipCullDistance===!0&&r.has(`WEBGL_clip_cull_distance`),extensionMultiDraw:(Te&&a.extensions.multiDraw===!0||F)&&r.has(`WEBGL_multi_draw`),rendererExtensionParallelShaderCompile:r.has(`KHR_parallel_shader_compile`),customProgramCacheKey:a.customProgramCacheKey()};return De.vertexUv1s=u.has(1),De.vertexUv2s=u.has(2),De.vertexUv3s=u.has(3),u.clear(),De}function v(t){let n=[];if(t.shaderID?n.push(t.shaderID):(n.push(t.customVertexShaderID),n.push(t.customFragmentShaderID)),t.defines!==void 0)for(let e in t.defines)n.push(e),n.push(t.defines[e]);return t.isRawShaderMaterial===!1&&(y(n,t),b(n,t),n.push(e.outputColorSpace)),n.push(t.customProgramCacheKey),n.join()}function y(e,t){e.push(t.precision),e.push(t.outputColorSpace),e.push(t.envMapMode),e.push(t.envMapCubeUVHeight),e.push(t.mapUv),e.push(t.alphaMapUv),e.push(t.lightMapUv),e.push(t.aoMapUv),e.push(t.bumpMapUv),e.push(t.normalMapUv),e.push(t.displacementMapUv),e.push(t.emissiveMapUv),e.push(t.metalnessMapUv),e.push(t.roughnessMapUv),e.push(t.anisotropyMapUv),e.push(t.clearcoatMapUv),e.push(t.clearcoatNormalMapUv),e.push(t.clearcoatRoughnessMapUv),e.push(t.iridescenceMapUv),e.push(t.iridescenceThicknessMapUv),e.push(t.sheenColorMapUv),e.push(t.sheenRoughnessMapUv),e.push(t.specularMapUv),e.push(t.specularColorMapUv),e.push(t.specularIntensityMapUv),e.push(t.transmissionMapUv),e.push(t.thicknessMapUv),e.push(t.combine),e.push(t.fogExp2),e.push(t.sizeAttenuation),e.push(t.morphTargetsCount),e.push(t.morphAttributeCount),e.push(t.numDirLights),e.push(t.numPointLights),e.push(t.numSpotLights),e.push(t.numSpotLightMaps),e.push(t.numHemiLights),e.push(t.numRectAreaLights),e.push(t.numDirLightShadows),e.push(t.numPointLightShadows),e.push(t.numSpotLightShadows),e.push(t.numSpotLightShadowsWithMaps),e.push(t.numLightProbes),e.push(t.shadowMapType),e.push(t.toneMapping),e.push(t.numClippingPlanes),e.push(t.numClipIntersection),e.push(t.depthPacking)}function b(e,t){s.disableAll(),t.instancing&&s.enable(0),t.instancingColor&&s.enable(1),t.instancingMorph&&s.enable(2),t.matcap&&s.enable(3),t.envMap&&s.enable(4),t.normalMapObjectSpace&&s.enable(5),t.normalMapTangentSpace&&s.enable(6),t.clearcoat&&s.enable(7),t.iridescence&&s.enable(8),t.alphaTest&&s.enable(9),t.vertexColors&&s.enable(10),t.vertexAlphas&&s.enable(11),t.vertexUv1s&&s.enable(12),t.vertexUv2s&&s.enable(13),t.vertexUv3s&&s.enable(14),t.vertexTangents&&s.enable(15),t.anisotropy&&s.enable(16),t.alphaHash&&s.enable(17),t.batching&&s.enable(18),t.dispersion&&s.enable(19),t.batchingColor&&s.enable(20),t.gradientMap&&s.enable(21),t.packedNormalMap&&s.enable(22),t.vertexNormals&&s.enable(23),e.push(s.mask),s.disableAll(),t.fog&&s.enable(0),t.useFog&&s.enable(1),t.flatShading&&s.enable(2),t.logarithmicDepthBuffer&&s.enable(3),t.reversedDepthBuffer&&s.enable(4),t.skinning&&s.enable(5),t.morphTargets&&s.enable(6),t.morphNormals&&s.enable(7),t.morphColors&&s.enable(8),t.premultipliedAlpha&&s.enable(9),t.shadowMapEnabled&&s.enable(10),t.doubleSided&&s.enable(11),t.flipSided&&s.enable(12),t.useDepthPacking&&s.enable(13),t.dithering&&s.enable(14),t.transmission&&s.enable(15),t.sheen&&s.enable(16),t.opaque&&s.enable(17),t.pointsUvs&&s.enable(18),t.decodeVideoTexture&&s.enable(19),t.decodeVideoTextureEmissive&&s.enable(20),t.alphaToCoverage&&s.enable(21),t.numLightProbeGrids>0&&s.enable(22),t.hasPositionAttribute&&s.enable(23),e.push(s.mask)}function x(e){let n=h[e.type],r;if(n){let e=c[n];r=t.fn.clone(e.uniforms)}else r=e.uniforms;return r}function S(t,n){let r=f.get(n);return r===void 0?(r=new Lt(e,n,t,a),d.push(r),f.set(n,r)):++r.usedTimes,r}function C(e){if(--e.usedTimes===0){let t=d.indexOf(e);d[t]=d[d.length-1],d.pop(),f.delete(e.cacheKey),e.destroy()}}function w(e){l.remove(e)}function T(){l.dispose()}return{getParameters:_,getProgramCacheKey:v,getUniforms:x,acquireProgram:S,releaseProgram:C,releaseShaderCache:w,programs:d,dispose:T}}function Ut(){let e=new WeakMap;function t(t){return e.has(t)}function n(t){let n=e.get(t);return n===void 0&&(n={},e.set(t,n)),n}function r(t){e.delete(t)}function i(t,n,r){e.get(t)[n]=r}function a(){e=new WeakMap}return{has:t,get:n,remove:r,update:i,dispose:a}}function Wt(e,t){return e.groupOrder===t.groupOrder?e.renderOrder===t.renderOrder?e.material.id===t.material.id?e.materialVariant===t.materialVariant?e.z===t.z?e.id-t.id:e.z-t.z:e.materialVariant-t.materialVariant:e.material.id-t.material.id:e.renderOrder-t.renderOrder:e.groupOrder-t.groupOrder}function Gt(e,t){return e.groupOrder===t.groupOrder?e.renderOrder===t.renderOrder?e.z===t.z?e.id-t.id:t.z-e.z:e.renderOrder-t.renderOrder:e.groupOrder-t.groupOrder}function Kt(){let e=[],t=0,n=[],r=[],i=[];function a(){t=0,n.length=0,r.length=0,i.length=0}function o(e){let t=0;return e.isInstancedMesh&&(t+=2),e.isSkinnedMesh&&(t+=1),t}function s(n,r,i,a,s,c){let l=e[t];return l===void 0?(l={id:n.id,object:n,geometry:r,material:i,materialVariant:o(n),groupOrder:a,renderOrder:n.renderOrder,z:s,group:c},e[t]=l):(l.id=n.id,l.object=n,l.geometry=r,l.material=i,l.materialVariant=o(n),l.groupOrder=a,l.renderOrder=n.renderOrder,l.z=s,l.group=c),t++,l}function c(e,t,a,o,c,l){let u=s(e,t,a,o,c,l);a.transmission>0?r.push(u):a.transparent===!0?i.push(u):n.push(u)}function l(e,t,a,o,c,l){let u=s(e,t,a,o,c,l);a.transmission>0?r.unshift(u):a.transparent===!0?i.unshift(u):n.unshift(u)}function u(e,t,a){n.length>1&&n.sort(e||Wt),r.length>1&&r.sort(t||Gt),i.length>1&&i.sort(t||Gt),a&&(n.reverse(),r.reverse(),i.reverse())}function d(){for(let n=t,r=e.length;n<r;n++){let t=e[n];if(t.id===null)break;t.id=null,t.object=null,t.geometry=null,t.material=null,t.group=null}}return{opaque:n,transmissive:r,transparent:i,init:a,push:c,unshift:l,finish:d,sort:u}}function qt(){let e=new WeakMap;function t(t,n){let r=e.get(t),i;return r===void 0?(i=new Kt,e.set(t,[i])):n>=r.length?(i=new Kt,r.push(i)):i=r[n],i}function n(){e=new WeakMap}return{get:t,dispose:n}}function Jt(){let e={};return{get:function(n){if(e[n.id]!==void 0)return e[n.id];let r;switch(n.type){case`DirectionalLight`:r={direction:new t.Sn,color:new t.g};break;case`SpotLight`:r={position:new t.Sn,direction:new t.Sn,color:new t.g,distance:0,coneCos:0,penumbraCos:0,decay:0};break;case`PointLight`:r={position:new t.Sn,color:new t.g,distance:0,decay:0};break;case`HemisphereLight`:r={direction:new t.Sn,skyColor:new t.g,groundColor:new t.g};break;case`RectAreaLight`:r={color:new t.g,position:new t.Sn,halfWidth:new t.Sn,halfHeight:new t.Sn}}return e[n.id]=r,r}}}function Yt(){let e={};return{get:function(n){if(e[n.id]!==void 0)return e[n.id];let r;switch(n.type){case`DirectionalLight`:r={shadowIntensity:1,shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new t.xn};break;case`SpotLight`:r={shadowIntensity:1,shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new t.xn};break;case`PointLight`:r={shadowIntensity:1,shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new t.xn,shadowCameraNear:1,shadowCameraFar:1e3}}return e[n.id]=r,r}}}var Xt=0;function Zt(e,t){return(t.castShadow?2:0)-(e.castShadow?2:0)+ +!!t.map-!!e.map}function Qt(e){let n=new Jt,r=Yt(),i={version:0,hash:{directionalLength:-1,pointLength:-1,spotLength:-1,rectAreaLength:-1,hemiLength:-1,numDirectionalShadows:-1,numPointShadows:-1,numSpotShadows:-1,numSpotMaps:-1,numLightProbes:-1},ambient:[0,0,0],probe:[],directional:[],directionalShadow:[],directionalShadowMap:[],directionalShadowMatrix:[],spot:[],spotLightMap:[],spotShadow:[],spotShadowMap:[],spotLightMatrix:[],rectArea:[],rectAreaLTC1:null,rectAreaLTC2:null,point:[],pointShadow:[],pointShadowMap:[],pointShadowMatrix:[],hemi:[],numSpotLightShadowsWithMaps:0,numLightProbes:0};for(let e=0;e<9;e++)i.probe.push(new t.Sn);let a=new t.Sn,o=new t.q,c=new t.q;function l(t){let a=0,o=0,c=0;for(let e=0;e<9;e++)i.probe[e].set(0,0,0);let l=0,u=0,d=0,f=0,p=0,m=0,h=0,g=0,_=0,v=0,y=0;t.sort(Zt);for(let e=0,s=t.length;e<s;e++){let s=t[e],b=s.color,x=s.intensity,S=s.distance,C=null;if(s.shadow&&s.shadow.map&&(C=s.shadow.map.texture.format===1030?s.shadow.map.texture:s.shadow.map.depthTexture||s.shadow.map.texture),s.isAmbientLight)a+=b.r*x,o+=b.g*x,c+=b.b*x;else if(s.isLightProbe){for(let e=0;e<9;e++)i.probe[e].addScaledVector(s.sh.coefficients[e],x);y++}else if(s.isDirectionalLight){let e=n.get(s);if(e.color.copy(s.color).multiplyScalar(s.intensity),s.castShadow){let e=s.shadow,t=r.get(s);t.shadowIntensity=e.intensity,t.shadowBias=e.bias,t.shadowNormalBias=e.normalBias,t.shadowRadius=e.radius,t.shadowMapSize=e.mapSize,i.directionalShadow[l]=t,i.directionalShadowMap[l]=C,i.directionalShadowMatrix[l]=s.shadow.matrix,m++}i.directional[l]=e,l++}else if(s.isSpotLight){let e=n.get(s);e.position.setFromMatrixPosition(s.matrixWorld),e.color.copy(b).multiplyScalar(x),e.distance=S,e.coneCos=Math.cos(s.angle),e.penumbraCos=Math.cos(s.angle*(1-s.penumbra)),e.decay=s.decay,i.spot[d]=e;let t=s.shadow;if(s.map&&(i.spotLightMap[_]=s.map,_++,t.updateMatrices(s),s.castShadow&&v++),i.spotLightMatrix[d]=t.matrix,s.castShadow){let e=r.get(s);e.shadowIntensity=t.intensity,e.shadowBias=t.bias,e.shadowNormalBias=t.normalBias,e.shadowRadius=t.radius,e.shadowMapSize=t.mapSize,i.spotShadow[d]=e,i.spotShadowMap[d]=C,g++}d++}else if(s.isRectAreaLight){let e=n.get(s);e.color.copy(b).multiplyScalar(x),e.halfWidth.set(s.width*.5,0,0),e.halfHeight.set(0,s.height*.5,0),i.rectArea[f]=e,f++}else if(s.isPointLight){let e=n.get(s);if(e.color.copy(s.color).multiplyScalar(s.intensity),e.distance=s.distance,e.decay=s.decay,s.castShadow){let e=s.shadow,t=r.get(s);t.shadowIntensity=e.intensity,t.shadowBias=e.bias,t.shadowNormalBias=e.normalBias,t.shadowRadius=e.radius,t.shadowMapSize=e.mapSize,t.shadowCameraNear=e.camera.near,t.shadowCameraFar=e.camera.far,i.pointShadow[u]=t,i.pointShadowMap[u]=C,i.pointShadowMatrix[u]=s.shadow.matrix,h++}i.point[u]=e,u++}else if(s.isHemisphereLight){let e=n.get(s);e.skyColor.copy(s.color).multiplyScalar(x),e.groundColor.copy(s.groundColor).multiplyScalar(x),i.hemi[p]=e,p++}}f>0&&(e.has(`OES_texture_float_linear`)===!0?(i.rectAreaLTC1=s.LTC_FLOAT_1,i.rectAreaLTC2=s.LTC_FLOAT_2):(i.rectAreaLTC1=s.LTC_HALF_1,i.rectAreaLTC2=s.LTC_HALF_2)),i.ambient[0]=a,i.ambient[1]=o,i.ambient[2]=c;let b=i.hash;(b.directionalLength!==l||b.pointLength!==u||b.spotLength!==d||b.rectAreaLength!==f||b.hemiLength!==p||b.numDirectionalShadows!==m||b.numPointShadows!==h||b.numSpotShadows!==g||b.numSpotMaps!==_||b.numLightProbes!==y)&&(i.directional.length=l,i.spot.length=d,i.rectArea.length=f,i.point.length=u,i.hemi.length=p,i.directionalShadow.length=m,i.directionalShadowMap.length=m,i.pointShadow.length=h,i.pointShadowMap.length=h,i.spotShadow.length=g,i.spotShadowMap.length=g,i.directionalShadowMatrix.length=m,i.pointShadowMatrix.length=h,i.spotLightMatrix.length=g+_-v,i.spotLightMap.length=_,i.numSpotLightShadowsWithMaps=v,i.numLightProbes=y,b.directionalLength=l,b.pointLength=u,b.spotLength=d,b.rectAreaLength=f,b.hemiLength=p,b.numDirectionalShadows=m,b.numPointShadows=h,b.numSpotShadows=g,b.numSpotMaps=_,b.numLightProbes=y,i.version=Xt++)}function u(e,t){let n=0,r=0,s=0,l=0,u=0,d=t.matrixWorldInverse;for(let t=0,f=e.length;t<f;t++){let f=e[t];if(f.isDirectionalLight){let e=i.directional[n];e.direction.setFromMatrixPosition(f.matrixWorld),a.setFromMatrixPosition(f.target.matrixWorld),e.direction.sub(a),e.direction.transformDirection(d),n++}else if(f.isSpotLight){let e=i.spot[s];e.position.setFromMatrixPosition(f.matrixWorld),e.position.applyMatrix4(d),e.direction.setFromMatrixPosition(f.matrixWorld),a.setFromMatrixPosition(f.target.matrixWorld),e.direction.sub(a),e.direction.transformDirection(d),s++}else if(f.isRectAreaLight){let e=i.rectArea[l];e.position.setFromMatrixPosition(f.matrixWorld),e.position.applyMatrix4(d),c.identity(),o.copy(f.matrixWorld),o.premultiply(d),c.extractRotation(o),e.halfWidth.set(f.width*.5,0,0),e.halfHeight.set(0,f.height*.5,0),e.halfWidth.applyMatrix4(c),e.halfHeight.applyMatrix4(c),l++}else if(f.isPointLight){let e=i.point[r];e.position.setFromMatrixPosition(f.matrixWorld),e.position.applyMatrix4(d),r++}else if(f.isHemisphereLight){let e=i.hemi[u];e.direction.setFromMatrixPosition(f.matrixWorld),e.direction.transformDirection(d),u++}}}return{setup:l,setupView:u,state:i}}function $t(e){let t=new Qt(e),n=[],r=[],i=[];function a(e){d.camera=e,n.length=0,r.length=0,i.length=0}function o(e){n.push(e)}function s(e){r.push(e)}function c(e){i.push(e)}function l(){t.setup(n)}function u(e){t.setupView(n,e)}let d={lightsArray:n,shadowsArray:r,lightProbeGridArray:i,camera:null,lights:t,transmissionRenderTarget:{},textureUnits:0};return{init:a,state:d,setupLights:l,setupLightsView:u,pushLight:o,pushShadow:s,pushLightProbeGrid:c}}function en(e){let t=new WeakMap;function n(n,r=0){let i=t.get(n),a;return i===void 0?(a=new $t(e),t.set(n,[a])):r>=i.length?(a=new $t(e),i.push(a)):a=i[r],a}function r(){t=new WeakMap}return{get:n,dispose:r}}var tn=`void main() {
4053
+ `+r)}}else s===``?(c===``||l===``)&&(d=!1):t.Ln(`WebGLProgram: Program Info Log:`,s);d&&(n.diagnostics={runnable:u,programLog:s,vertexShader:{log:c,prefix:v},fragmentShader:{log:l,prefix:y}})}a.deleteShader(C),a.deleteShader(w),E=new tt(a,_),D=gt(a,_)}let E;this.getUniforms=function(){return E===void 0&&T(this),E};let D;this.getAttributes=function(){return D===void 0&&T(this),D};let O=r.rendererExtensionParallelShaderCompile===!1;return this.isReady=function(){return O===!1&&(O=a.getProgramParameter(_,rt)),O},this.destroy=function(){i.releaseStatesOfProgram(this),a.deleteProgram(_),this.program=void 0},this.type=r.shaderType,this.name=r.shaderName,this.id=it++,this.cacheKey=n,this.usedTimes=1,this.program=_,this.vertexShader=C,this.fragmentShader=w,this}var Rt=0,zt=class{constructor(){this.shaderCache=new Map,this.materialCache=new Map}update(e,t,n){let r=this._getShaderCacheForMaterial(e);return r.has(t)===!1&&(r.add(t),t.usedTimes++),r.has(n)===!1&&(r.add(n),n.usedTimes++),this}remove(e){let t=this.materialCache.get(e);for(let e of t)e.usedTimes--,e.usedTimes===0&&this.shaderCache.delete(e.code);return this.materialCache.delete(e),this}getVertexShaderStage(e){return this._getShaderStage(e.vertexShader)}getFragmentShaderStage(e){return this._getShaderStage(e.fragmentShader)}dispose(){this.shaderCache.clear(),this.materialCache.clear()}_getShaderCacheForMaterial(e){let t=this.materialCache,n=t.get(e);return n===void 0&&(n=new Set,t.set(e,n)),n}_getShaderStage(e){let t=this.shaderCache,n=t.get(e);return n===void 0&&(n=new Bt(e),t.set(e,n)),n}},Bt=class{constructor(e){this.id=Rt++,this.code=e,this.usedTimes=0}};function Vt(e){return e===1030||e===37490||e===36285}function Ht(e,n,r,i,a,o){let s=new t.z,l=new zt,u=new Set,d=[],f=new Map,p=i.logarithmicDepthBuffer,m=i.precision,h={MeshDepthMaterial:`depth`,MeshDistanceMaterial:`distance`,MeshNormalMaterial:`normal`,MeshBasicMaterial:`basic`,MeshLambertMaterial:`lambert`,MeshPhongMaterial:`phong`,MeshToonMaterial:`toon`,MeshStandardMaterial:`physical`,MeshPhysicalMaterial:`physical`,MeshMatcapMaterial:`matcap`,LineBasicMaterial:`basic`,LineDashedMaterial:`dashed`,PointsMaterial:`points`,ShadowMaterial:`shadow`,SpriteMaterial:`sprite`};function g(e){return u.add(e),e===0?`uv`:`uv${e}`}function _(a,s,d,f,_,v){let y=f.fog,b=_.geometry,x=a.isMeshStandardMaterial||a.isMeshLambertMaterial||a.isMeshPhongMaterial?f.environment:null,S=a.isMeshStandardMaterial||a.isMeshLambertMaterial&&!a.envMap||a.isMeshPhongMaterial&&!a.envMap,C=n.get(a.envMap||x,S),w=C&&C.mapping===306?C.image.height:null,T=h[a.type];a.precision!==null&&(m=i.getMaxPrecision(a.precision),m!==a.precision&&t.Ln(`WebGLProgram.getParameters:`,a.precision,`not supported, using`,m,`instead.`));let E=b.morphAttributes.position||b.morphAttributes.normal||b.morphAttributes.color,D=E===void 0?0:E.length,O=0;b.morphAttributes.position!==void 0&&(O=1),b.morphAttributes.normal!==void 0&&(O=2),b.morphAttributes.color!==void 0&&(O=3);let k,A,j,M;if(T){let e=c[T];k=e.vertexShader,A=e.fragmentShader}else{k=a.vertexShader,A=a.fragmentShader;let e=l.getVertexShaderStage(a),t=l.getFragmentShaderStage(a);l.update(a,e,t),j=e.id,M=t.id}let N=e.getRenderTarget(),ee=e.state.buffers.depth.getReversed(),P=_.isInstancedMesh===!0,F=_.isBatchedMesh===!0,I=!!a.map,te=!!a.matcap,ne=!!C,re=!!a.aoMap,ie=!!a.lightMap,ae=!!a.bumpMap&&a.wireframe===!1,oe=!!a.normalMap,se=!!a.displacementMap,L=!!a.emissiveMap,ce=!!a.metalnessMap,le=!!a.roughnessMap,R=a.anisotropy>0,z=a.clearcoat>0,B=a.dispersion>0,V=a.iridescence>0,H=a.sheen>0,ue=a.transmission>0,de=R&&!!a.anisotropyMap,fe=z&&!!a.clearcoatMap,pe=z&&!!a.clearcoatNormalMap,U=z&&!!a.clearcoatRoughnessMap,W=V&&!!a.iridescenceMap,G=V&&!!a.iridescenceThicknessMap,me=H&&!!a.sheenColorMap,he=H&&!!a.sheenRoughnessMap,ge=!!a.specularMap,_e=!!a.specularColorMap,ve=!!a.specularIntensityMap,ye=ue&&!!a.transmissionMap,be=ue&&!!a.thicknessMap,xe=!!a.gradientMap,Se=!!a.alphaMap,Ce=a.alphaTest>0,we=!!a.alphaHash,Te=!!a.extensions,Ee=0;a.toneMapped&&(N===null||N.isXRRenderTarget===!0)&&(Ee=e.toneMapping);let De={shaderID:T,shaderType:a.type,shaderName:a.name,vertexShader:k,fragmentShader:A,defines:a.defines,customVertexShaderID:j,customFragmentShaderID:M,isRawShaderMaterial:a.isRawShaderMaterial===!0,glslVersion:a.glslVersion,precision:m,batching:F,batchingColor:F&&_._colorsTexture!==null,instancing:P,instancingColor:P&&_.instanceColor!==null,instancingMorph:P&&_.morphTexture!==null,outputColorSpace:N===null?e.outputColorSpace:N.isXRRenderTarget===!0?N.texture.colorSpace:t._.workingColorSpace,alphaToCoverage:!!a.alphaToCoverage,map:I,matcap:te,envMap:ne,envMapMode:ne&&C.mapping,envMapCubeUVHeight:w,aoMap:re,lightMap:ie,bumpMap:ae,normalMap:oe,displacementMap:se,emissiveMap:L,normalMapObjectSpace:oe&&a.normalMapType===1,normalMapTangentSpace:oe&&a.normalMapType===0,packedNormalMap:oe&&a.normalMapType===0&&Vt(a.normalMap.format),metalnessMap:ce,roughnessMap:le,anisotropy:R,anisotropyMap:de,clearcoat:z,clearcoatMap:fe,clearcoatNormalMap:pe,clearcoatRoughnessMap:U,dispersion:B,iridescence:V,iridescenceMap:W,iridescenceThicknessMap:G,sheen:H,sheenColorMap:me,sheenRoughnessMap:he,specularMap:ge,specularColorMap:_e,specularIntensityMap:ve,transmission:ue,transmissionMap:ye,thicknessMap:be,gradientMap:xe,opaque:a.transparent===!1&&a.blending===1&&a.alphaToCoverage===!1,alphaMap:Se,alphaTest:Ce,alphaHash:we,combine:a.combine,mapUv:I&&g(a.map.channel),aoMapUv:re&&g(a.aoMap.channel),lightMapUv:ie&&g(a.lightMap.channel),bumpMapUv:ae&&g(a.bumpMap.channel),normalMapUv:oe&&g(a.normalMap.channel),displacementMapUv:se&&g(a.displacementMap.channel),emissiveMapUv:L&&g(a.emissiveMap.channel),metalnessMapUv:ce&&g(a.metalnessMap.channel),roughnessMapUv:le&&g(a.roughnessMap.channel),anisotropyMapUv:de&&g(a.anisotropyMap.channel),clearcoatMapUv:fe&&g(a.clearcoatMap.channel),clearcoatNormalMapUv:pe&&g(a.clearcoatNormalMap.channel),clearcoatRoughnessMapUv:U&&g(a.clearcoatRoughnessMap.channel),iridescenceMapUv:W&&g(a.iridescenceMap.channel),iridescenceThicknessMapUv:G&&g(a.iridescenceThicknessMap.channel),sheenColorMapUv:me&&g(a.sheenColorMap.channel),sheenRoughnessMapUv:he&&g(a.sheenRoughnessMap.channel),specularMapUv:ge&&g(a.specularMap.channel),specularColorMapUv:_e&&g(a.specularColorMap.channel),specularIntensityMapUv:ve&&g(a.specularIntensityMap.channel),transmissionMapUv:ye&&g(a.transmissionMap.channel),thicknessMapUv:be&&g(a.thicknessMap.channel),alphaMapUv:Se&&g(a.alphaMap.channel),vertexTangents:!!b.attributes.tangent&&(oe||R),vertexNormals:!!b.attributes.normal,vertexColors:a.vertexColors,vertexAlphas:a.vertexColors===!0&&!!b.attributes.color&&b.attributes.color.itemSize===4,pointsUvs:_.isPoints===!0&&!!b.attributes.uv&&(I||Se),fog:!!y,useFog:a.fog===!0,fogExp2:!!y&&y.isFogExp2,flatShading:a.wireframe===!1&&(a.flatShading===!0||b.attributes.normal===void 0&&oe===!1&&(a.isMeshLambertMaterial||a.isMeshPhongMaterial||a.isMeshStandardMaterial||a.isMeshPhysicalMaterial)),sizeAttenuation:a.sizeAttenuation===!0,logarithmicDepthBuffer:p,reversedDepthBuffer:ee,skinning:_.isSkinnedMesh===!0,hasPositionAttribute:b.attributes.position!==void 0,morphTargets:b.morphAttributes.position!==void 0,morphNormals:b.morphAttributes.normal!==void 0,morphColors:b.morphAttributes.color!==void 0,morphTargetsCount:D,morphTextureStride:O,numDirLights:s.directional.length,numPointLights:s.point.length,numSpotLights:s.spot.length,numSpotLightMaps:s.spotLightMap.length,numRectAreaLights:s.rectArea.length,numHemiLights:s.hemi.length,numDirLightShadows:s.directionalShadowMap.length,numPointLightShadows:s.pointShadowMap.length,numSpotLightShadows:s.spotShadowMap.length,numSpotLightShadowsWithMaps:s.numSpotLightShadowsWithMaps,numLightProbes:s.numLightProbes,numLightProbeGrids:v.length,numClippingPlanes:o.numPlanes,numClipIntersection:o.numIntersection,dithering:a.dithering,shadowMapEnabled:e.shadowMap.enabled&&d.length>0,shadowMapType:e.shadowMap.type,toneMapping:Ee,decodeVideoTexture:I&&a.map.isVideoTexture===!0&&t._.getTransfer(a.map.colorSpace)===`srgb`,decodeVideoTextureEmissive:L&&a.emissiveMap.isVideoTexture===!0&&t._.getTransfer(a.emissiveMap.colorSpace)===`srgb`,premultipliedAlpha:a.premultipliedAlpha,doubleSided:a.side===2,flipSided:a.side===1,useDepthPacking:a.depthPacking>=0,depthPacking:a.depthPacking||0,index0AttributeName:a.index0AttributeName,extensionClipCullDistance:Te&&a.extensions.clipCullDistance===!0&&r.has(`WEBGL_clip_cull_distance`),extensionMultiDraw:(Te&&a.extensions.multiDraw===!0||F)&&r.has(`WEBGL_multi_draw`),rendererExtensionParallelShaderCompile:r.has(`KHR_parallel_shader_compile`),customProgramCacheKey:a.customProgramCacheKey()};return De.vertexUv1s=u.has(1),De.vertexUv2s=u.has(2),De.vertexUv3s=u.has(3),u.clear(),De}function v(t){let n=[];if(t.shaderID?n.push(t.shaderID):(n.push(t.customVertexShaderID),n.push(t.customFragmentShaderID)),t.defines!==void 0)for(let e in t.defines)n.push(e),n.push(t.defines[e]);return t.isRawShaderMaterial===!1&&(y(n,t),b(n,t),n.push(e.outputColorSpace)),n.push(t.customProgramCacheKey),n.join()}function y(e,t){e.push(t.precision),e.push(t.outputColorSpace),e.push(t.envMapMode),e.push(t.envMapCubeUVHeight),e.push(t.mapUv),e.push(t.alphaMapUv),e.push(t.lightMapUv),e.push(t.aoMapUv),e.push(t.bumpMapUv),e.push(t.normalMapUv),e.push(t.displacementMapUv),e.push(t.emissiveMapUv),e.push(t.metalnessMapUv),e.push(t.roughnessMapUv),e.push(t.anisotropyMapUv),e.push(t.clearcoatMapUv),e.push(t.clearcoatNormalMapUv),e.push(t.clearcoatRoughnessMapUv),e.push(t.iridescenceMapUv),e.push(t.iridescenceThicknessMapUv),e.push(t.sheenColorMapUv),e.push(t.sheenRoughnessMapUv),e.push(t.specularMapUv),e.push(t.specularColorMapUv),e.push(t.specularIntensityMapUv),e.push(t.transmissionMapUv),e.push(t.thicknessMapUv),e.push(t.combine),e.push(t.fogExp2),e.push(t.sizeAttenuation),e.push(t.morphTargetsCount),e.push(t.morphAttributeCount),e.push(t.numDirLights),e.push(t.numPointLights),e.push(t.numSpotLights),e.push(t.numSpotLightMaps),e.push(t.numHemiLights),e.push(t.numRectAreaLights),e.push(t.numDirLightShadows),e.push(t.numPointLightShadows),e.push(t.numSpotLightShadows),e.push(t.numSpotLightShadowsWithMaps),e.push(t.numLightProbes),e.push(t.shadowMapType),e.push(t.toneMapping),e.push(t.numClippingPlanes),e.push(t.numClipIntersection),e.push(t.depthPacking)}function b(e,t){s.disableAll(),t.instancing&&s.enable(0),t.instancingColor&&s.enable(1),t.instancingMorph&&s.enable(2),t.matcap&&s.enable(3),t.envMap&&s.enable(4),t.normalMapObjectSpace&&s.enable(5),t.normalMapTangentSpace&&s.enable(6),t.clearcoat&&s.enable(7),t.iridescence&&s.enable(8),t.alphaTest&&s.enable(9),t.vertexColors&&s.enable(10),t.vertexAlphas&&s.enable(11),t.vertexUv1s&&s.enable(12),t.vertexUv2s&&s.enable(13),t.vertexUv3s&&s.enable(14),t.vertexTangents&&s.enable(15),t.anisotropy&&s.enable(16),t.alphaHash&&s.enable(17),t.batching&&s.enable(18),t.dispersion&&s.enable(19),t.batchingColor&&s.enable(20),t.gradientMap&&s.enable(21),t.packedNormalMap&&s.enable(22),t.vertexNormals&&s.enable(23),e.push(s.mask),s.disableAll(),t.fog&&s.enable(0),t.useFog&&s.enable(1),t.flatShading&&s.enable(2),t.logarithmicDepthBuffer&&s.enable(3),t.reversedDepthBuffer&&s.enable(4),t.skinning&&s.enable(5),t.morphTargets&&s.enable(6),t.morphNormals&&s.enable(7),t.morphColors&&s.enable(8),t.premultipliedAlpha&&s.enable(9),t.shadowMapEnabled&&s.enable(10),t.doubleSided&&s.enable(11),t.flipSided&&s.enable(12),t.useDepthPacking&&s.enable(13),t.dithering&&s.enable(14),t.transmission&&s.enable(15),t.sheen&&s.enable(16),t.opaque&&s.enable(17),t.pointsUvs&&s.enable(18),t.decodeVideoTexture&&s.enable(19),t.decodeVideoTextureEmissive&&s.enable(20),t.alphaToCoverage&&s.enable(21),t.numLightProbeGrids>0&&s.enable(22),t.hasPositionAttribute&&s.enable(23),e.push(s.mask)}function x(e){let n=h[e.type],r;if(n){let e=c[n];r=t.pn.clone(e.uniforms)}else r=e.uniforms;return r}function S(t,n){let r=f.get(n);return r===void 0?(r=new Lt(e,n,t,a),d.push(r),f.set(n,r)):++r.usedTimes,r}function C(e){if(--e.usedTimes===0){let t=d.indexOf(e);d[t]=d[d.length-1],d.pop(),f.delete(e.cacheKey),e.destroy()}}function w(e){l.remove(e)}function T(){l.dispose()}return{getParameters:_,getProgramCacheKey:v,getUniforms:x,acquireProgram:S,releaseProgram:C,releaseShaderCache:w,programs:d,dispose:T}}function Ut(){let e=new WeakMap;function t(t){return e.has(t)}function n(t){let n=e.get(t);return n===void 0&&(n={},e.set(t,n)),n}function r(t){e.delete(t)}function i(t,n,r){e.get(t)[n]=r}function a(){e=new WeakMap}return{has:t,get:n,remove:r,update:i,dispose:a}}function Wt(e,t){return e.groupOrder===t.groupOrder?e.renderOrder===t.renderOrder?e.material.id===t.material.id?e.materialVariant===t.materialVariant?e.z===t.z?e.id-t.id:e.z-t.z:e.materialVariant-t.materialVariant:e.material.id-t.material.id:e.renderOrder-t.renderOrder:e.groupOrder-t.groupOrder}function Gt(e,t){return e.groupOrder===t.groupOrder?e.renderOrder===t.renderOrder?e.z===t.z?e.id-t.id:t.z-e.z:e.renderOrder-t.renderOrder:e.groupOrder-t.groupOrder}function Kt(){let e=[],t=0,n=[],r=[],i=[];function a(){t=0,n.length=0,r.length=0,i.length=0}function o(e){let t=0;return e.isInstancedMesh&&(t+=2),e.isSkinnedMesh&&(t+=1),t}function s(n,r,i,a,s,c){let l=e[t];return l===void 0?(l={id:n.id,object:n,geometry:r,material:i,materialVariant:o(n),groupOrder:a,renderOrder:n.renderOrder,z:s,group:c},e[t]=l):(l.id=n.id,l.object=n,l.geometry=r,l.material=i,l.materialVariant=o(n),l.groupOrder=a,l.renderOrder=n.renderOrder,l.z=s,l.group=c),t++,l}function c(e,t,a,o,c,l){let u=s(e,t,a,o,c,l);a.transmission>0?r.push(u):a.transparent===!0?i.push(u):n.push(u)}function l(e,t,a,o,c,l){let u=s(e,t,a,o,c,l);a.transmission>0?r.unshift(u):a.transparent===!0?i.unshift(u):n.unshift(u)}function u(e,t,a){n.length>1&&n.sort(e||Wt),r.length>1&&r.sort(t||Gt),i.length>1&&i.sort(t||Gt),a&&(n.reverse(),r.reverse(),i.reverse())}function d(){for(let n=t,r=e.length;n<r;n++){let t=e[n];if(t.id===null)break;t.id=null,t.object=null,t.geometry=null,t.material=null,t.group=null}}return{opaque:n,transmissive:r,transparent:i,init:a,push:c,unshift:l,finish:d,sort:u}}function qt(){let e=new WeakMap;function t(t,n){let r=e.get(t),i;return r===void 0?(i=new Kt,e.set(t,[i])):n>=r.length?(i=new Kt,r.push(i)):i=r[n],i}function n(){e=new WeakMap}return{get:t,dispose:n}}function Jt(){let e={};return{get:function(n){if(e[n.id]!==void 0)return e[n.id];let r;switch(n.type){case`DirectionalLight`:r={direction:new t.Cn,color:new t.g};break;case`SpotLight`:r={position:new t.Cn,direction:new t.Cn,color:new t.g,distance:0,coneCos:0,penumbraCos:0,decay:0};break;case`PointLight`:r={position:new t.Cn,color:new t.g,distance:0,decay:0};break;case`HemisphereLight`:r={direction:new t.Cn,skyColor:new t.g,groundColor:new t.g};break;case`RectAreaLight`:r={color:new t.g,position:new t.Cn,halfWidth:new t.Cn,halfHeight:new t.Cn}}return e[n.id]=r,r}}}function Yt(){let e={};return{get:function(n){if(e[n.id]!==void 0)return e[n.id];let r;switch(n.type){case`DirectionalLight`:r={shadowIntensity:1,shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new t.Sn};break;case`SpotLight`:r={shadowIntensity:1,shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new t.Sn};break;case`PointLight`:r={shadowIntensity:1,shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new t.Sn,shadowCameraNear:1,shadowCameraFar:1e3}}return e[n.id]=r,r}}}var Xt=0;function Zt(e,t){return(t.castShadow?2:0)-(e.castShadow?2:0)+ +!!t.map-!!e.map}function Qt(e){let n=new Jt,r=Yt(),i={version:0,hash:{directionalLength:-1,pointLength:-1,spotLength:-1,rectAreaLength:-1,hemiLength:-1,numDirectionalShadows:-1,numPointShadows:-1,numSpotShadows:-1,numSpotMaps:-1,numLightProbes:-1},ambient:[0,0,0],probe:[],directional:[],directionalShadow:[],directionalShadowMap:[],directionalShadowMatrix:[],spot:[],spotLightMap:[],spotShadow:[],spotShadowMap:[],spotLightMatrix:[],rectArea:[],rectAreaLTC1:null,rectAreaLTC2:null,point:[],pointShadow:[],pointShadowMap:[],pointShadowMatrix:[],hemi:[],numSpotLightShadowsWithMaps:0,numLightProbes:0};for(let e=0;e<9;e++)i.probe.push(new t.Cn);let a=new t.Cn,o=new t.J,c=new t.J;function l(t){let a=0,o=0,c=0;for(let e=0;e<9;e++)i.probe[e].set(0,0,0);let l=0,u=0,d=0,f=0,p=0,m=0,h=0,g=0,_=0,v=0,y=0;t.sort(Zt);for(let e=0,s=t.length;e<s;e++){let s=t[e],b=s.color,x=s.intensity,S=s.distance,C=null;if(s.shadow&&s.shadow.map&&(C=s.shadow.map.texture.format===1030?s.shadow.map.texture:s.shadow.map.depthTexture||s.shadow.map.texture),s.isAmbientLight)a+=b.r*x,o+=b.g*x,c+=b.b*x;else if(s.isLightProbe){for(let e=0;e<9;e++)i.probe[e].addScaledVector(s.sh.coefficients[e],x);y++}else if(s.isDirectionalLight){let e=n.get(s);if(e.color.copy(s.color).multiplyScalar(s.intensity),s.castShadow){let e=s.shadow,t=r.get(s);t.shadowIntensity=e.intensity,t.shadowBias=e.bias,t.shadowNormalBias=e.normalBias,t.shadowRadius=e.radius,t.shadowMapSize=e.mapSize,i.directionalShadow[l]=t,i.directionalShadowMap[l]=C,i.directionalShadowMatrix[l]=s.shadow.matrix,m++}i.directional[l]=e,l++}else if(s.isSpotLight){let e=n.get(s);e.position.setFromMatrixPosition(s.matrixWorld),e.color.copy(b).multiplyScalar(x),e.distance=S,e.coneCos=Math.cos(s.angle),e.penumbraCos=Math.cos(s.angle*(1-s.penumbra)),e.decay=s.decay,i.spot[d]=e;let t=s.shadow;if(s.map&&(i.spotLightMap[_]=s.map,_++,t.updateMatrices(s),s.castShadow&&v++),i.spotLightMatrix[d]=t.matrix,s.castShadow){let e=r.get(s);e.shadowIntensity=t.intensity,e.shadowBias=t.bias,e.shadowNormalBias=t.normalBias,e.shadowRadius=t.radius,e.shadowMapSize=t.mapSize,i.spotShadow[d]=e,i.spotShadowMap[d]=C,g++}d++}else if(s.isRectAreaLight){let e=n.get(s);e.color.copy(b).multiplyScalar(x),e.halfWidth.set(s.width*.5,0,0),e.halfHeight.set(0,s.height*.5,0),i.rectArea[f]=e,f++}else if(s.isPointLight){let e=n.get(s);if(e.color.copy(s.color).multiplyScalar(s.intensity),e.distance=s.distance,e.decay=s.decay,s.castShadow){let e=s.shadow,t=r.get(s);t.shadowIntensity=e.intensity,t.shadowBias=e.bias,t.shadowNormalBias=e.normalBias,t.shadowRadius=e.radius,t.shadowMapSize=e.mapSize,t.shadowCameraNear=e.camera.near,t.shadowCameraFar=e.camera.far,i.pointShadow[u]=t,i.pointShadowMap[u]=C,i.pointShadowMatrix[u]=s.shadow.matrix,h++}i.point[u]=e,u++}else if(s.isHemisphereLight){let e=n.get(s);e.skyColor.copy(s.color).multiplyScalar(x),e.groundColor.copy(s.groundColor).multiplyScalar(x),i.hemi[p]=e,p++}}f>0&&(e.has(`OES_texture_float_linear`)===!0?(i.rectAreaLTC1=s.LTC_FLOAT_1,i.rectAreaLTC2=s.LTC_FLOAT_2):(i.rectAreaLTC1=s.LTC_HALF_1,i.rectAreaLTC2=s.LTC_HALF_2)),i.ambient[0]=a,i.ambient[1]=o,i.ambient[2]=c;let b=i.hash;(b.directionalLength!==l||b.pointLength!==u||b.spotLength!==d||b.rectAreaLength!==f||b.hemiLength!==p||b.numDirectionalShadows!==m||b.numPointShadows!==h||b.numSpotShadows!==g||b.numSpotMaps!==_||b.numLightProbes!==y)&&(i.directional.length=l,i.spot.length=d,i.rectArea.length=f,i.point.length=u,i.hemi.length=p,i.directionalShadow.length=m,i.directionalShadowMap.length=m,i.pointShadow.length=h,i.pointShadowMap.length=h,i.spotShadow.length=g,i.spotShadowMap.length=g,i.directionalShadowMatrix.length=m,i.pointShadowMatrix.length=h,i.spotLightMatrix.length=g+_-v,i.spotLightMap.length=_,i.numSpotLightShadowsWithMaps=v,i.numLightProbes=y,b.directionalLength=l,b.pointLength=u,b.spotLength=d,b.rectAreaLength=f,b.hemiLength=p,b.numDirectionalShadows=m,b.numPointShadows=h,b.numSpotShadows=g,b.numSpotMaps=_,b.numLightProbes=y,i.version=Xt++)}function u(e,t){let n=0,r=0,s=0,l=0,u=0,d=t.matrixWorldInverse;for(let t=0,f=e.length;t<f;t++){let f=e[t];if(f.isDirectionalLight){let e=i.directional[n];e.direction.setFromMatrixPosition(f.matrixWorld),a.setFromMatrixPosition(f.target.matrixWorld),e.direction.sub(a),e.direction.transformDirection(d),n++}else if(f.isSpotLight){let e=i.spot[s];e.position.setFromMatrixPosition(f.matrixWorld),e.position.applyMatrix4(d),e.direction.setFromMatrixPosition(f.matrixWorld),a.setFromMatrixPosition(f.target.matrixWorld),e.direction.sub(a),e.direction.transformDirection(d),s++}else if(f.isRectAreaLight){let e=i.rectArea[l];e.position.setFromMatrixPosition(f.matrixWorld),e.position.applyMatrix4(d),c.identity(),o.copy(f.matrixWorld),o.premultiply(d),c.extractRotation(o),e.halfWidth.set(f.width*.5,0,0),e.halfHeight.set(0,f.height*.5,0),e.halfWidth.applyMatrix4(c),e.halfHeight.applyMatrix4(c),l++}else if(f.isPointLight){let e=i.point[r];e.position.setFromMatrixPosition(f.matrixWorld),e.position.applyMatrix4(d),r++}else if(f.isHemisphereLight){let e=i.hemi[u];e.direction.setFromMatrixPosition(f.matrixWorld),e.direction.transformDirection(d),u++}}}return{setup:l,setupView:u,state:i}}function $t(e){let t=new Qt(e),n=[],r=[],i=[];function a(e){d.camera=e,n.length=0,r.length=0,i.length=0}function o(e){n.push(e)}function s(e){r.push(e)}function c(e){i.push(e)}function l(){t.setup(n)}function u(e){t.setupView(n,e)}let d={lightsArray:n,shadowsArray:r,lightProbeGridArray:i,camera:null,lights:t,transmissionRenderTarget:{},textureUnits:0};return{init:a,state:d,setupLights:l,setupLightsView:u,pushLight:o,pushShadow:s,pushLightProbeGrid:c}}function en(e){let t=new WeakMap;function n(n,r=0){let i=t.get(n),a;return i===void 0?(a=new $t(e),t.set(n,[a])):r>=i.length?(a=new $t(e),i.push(a)):a=i[r],a}function r(){t=new WeakMap}return{get:n,dispose:r}}var tn=`void main() {
4054
4054
  gl_Position = vec4( position, 1.0 );
4055
4055
  }`,nn=`uniform sampler2D shadow_pass;
4056
4056
  uniform vec2 resolution;
@@ -4077,7 +4077,7 @@ void main() {
4077
4077
  squared_mean = squared_mean / samples;
4078
4078
  float std_dev = sqrt( max( 0.0, squared_mean - mean * mean ) );
4079
4079
  gl_FragColor = vec4( mean, std_dev, 0.0, 1.0 );
4080
- }`,rn=[new t.Sn(1,0,0),new t.Sn(-1,0,0),new t.Sn(0,1,0),new t.Sn(0,-1,0),new t.Sn(0,0,1),new t.Sn(0,0,-1)],an=[new t.Sn(0,-1,0),new t.Sn(0,-1,0),new t.Sn(0,0,1),new t.Sn(0,0,-1),new t.Sn(0,-1,0),new t.Sn(0,-1,0)],on=new t.q,sn=new t.Sn,cn=new t.Sn;function ln(e,n,r){let i=new t.N,a=new t.xn,o=new t.xn,s=new t.Cn,c=new t.X,l=new t.Z,u={},d=r.maxTextureSize,f={0:1,1:0,2:2},p=new t.an({defines:{VSM_SAMPLES:8},uniforms:{shadow_pass:{value:null},resolution:{value:new t.xn},radius:{value:4}},vertexShader:tn,fragmentShader:nn}),m=p.clone();m.defines.HORIZONTAL_PASS=1;let h=new t.p;h.setAttribute(`position`,new t.f(new Float32Array([-1,-1,.5,3,-1,.5,-1,3,.5]),3));let g=new t.J(h,p),_=this;this.enabled=!1,this.autoUpdate=!0,this.needsUpdate=!1,this.type=1;let v=this.type;this.render=function(n,r,c){if(_.enabled===!1||_.autoUpdate===!1&&_.needsUpdate===!1||n.length===0)return;this.type===2&&(t.In(`WebGLShadowMap: PCFSoftShadowMap has been deprecated. Using PCFShadowMap instead.`),this.type=1);let l=e.getRenderTarget(),u=e.getActiveCubeFace(),f=e.getActiveMipmapLevel(),p=e.state;p.setBlending(0),p.buffers.depth.getReversed()===!0?p.buffers.color.setClear(0,0,0,0):p.buffers.color.setClear(1,1,1,1),p.buffers.depth.setTest(!0),p.setScissorTest(!1);let m=v!==this.type;m&&r.traverse(function(e){e.material&&(Array.isArray(e.material)?e.material.forEach(e=>e.needsUpdate=!0):e.material.needsUpdate=!0)});for(let l=0,u=n.length;l<u;l++){let u=n[l],f=u.shadow;if(f===void 0){t.In(`WebGLShadowMap:`,u,`has no shadow.`);continue}if(f.autoUpdate===!1&&f.needsUpdate===!1)continue;a.copy(f.mapSize);let h=f.getFrameExtents();a.multiply(h),o.copy(f.mapSize),(a.x>d||a.y>d)&&(a.x>d&&(o.x=Math.floor(d/h.x),a.x=o.x*h.x,f.mapSize.x=o.x),a.y>d&&(o.y=Math.floor(d/h.y),a.y=o.y*h.y,f.mapSize.y=o.y));let g=e.state.buffers.depth.getReversed();if(f.camera._reversedDepth=g,f.map===null||m===!0){if(f.map!==null&&(f.map.depthTexture!==null&&(f.map.depthTexture.dispose(),f.map.depthTexture=null),f.map.dispose()),this.type===3){if(u.isPointLight){t.In(`WebGLShadowMap: VSM shadow maps are not supported for PointLights. Use PCF or BasicShadowMap instead.`);continue}f.map=new t.Tn(a.x,a.y,{format:t.Wt,type:t.I,minFilter:t.z,magFilter:t.z,generateMipmaps:!1}),f.map.texture.name=u.name+`.shadowMap`,f.map.depthTexture=new t.D(a.x,a.y,t.M),f.map.depthTexture.name=u.name+`.shadowMapDepth`,f.map.depthTexture.format=t.T,f.map.depthTexture.compareFunction=null,f.map.depthTexture.minFilter=t.$,f.map.depthTexture.magFilter=t.$}else u.isPointLight?(f.map=new I(a.x),f.map.depthTexture=new t.b(a.x,t._n)):(f.map=new t.Tn(a.x,a.y),f.map.depthTexture=new t.D(a.x,a.y,t._n)),f.map.depthTexture.name=u.name+`.shadowMap`,f.map.depthTexture.format=t.T,this.type===1?(f.map.depthTexture.compareFunction=g?518:515,f.map.depthTexture.minFilter=t.z,f.map.depthTexture.magFilter=t.z):(f.map.depthTexture.compareFunction=null,f.map.depthTexture.minFilter=t.$,f.map.depthTexture.magFilter=t.$);f.camera.updateProjectionMatrix()}let _=f.map.isWebGLCubeRenderTarget?6:1;for(let t=0;t<_;t++){if(f.map.isWebGLCubeRenderTarget)e.setRenderTarget(f.map,t),e.clear();else{t===0&&(e.setRenderTarget(f.map),e.clear());let n=f.getViewport(t);s.set(o.x*n.x,o.y*n.y,o.x*n.z,o.y*n.w),p.viewport(s)}if(u.isPointLight){let e=f.camera,n=f.matrix,r=u.distance||e.far;r!==e.far&&(e.far=r,e.updateProjectionMatrix()),sn.setFromMatrixPosition(u.matrixWorld),e.position.copy(sn),cn.copy(e.position),cn.add(rn[t]),e.up.copy(an[t]),e.lookAt(cn),e.updateMatrixWorld(),n.makeTranslation(-sn.x,-sn.y,-sn.z),on.multiplyMatrices(e.projectionMatrix,e.matrixWorldInverse),f._frustum.setFromProjectionMatrix(on,e.coordinateSystem,e.reversedDepth)}else f.updateMatrices(u);i=f.getFrustum(),x(r,c,f.camera,u,this.type)}f.isPointLightShadow!==!0&&this.type===3&&y(f,c),f.needsUpdate=!1}v=this.type,_.needsUpdate=!1,e.setRenderTarget(l,u,f)};function y(r,i){let o=n.update(g);p.defines.VSM_SAMPLES!==r.blurSamples&&(p.defines.VSM_SAMPLES=r.blurSamples,m.defines.VSM_SAMPLES=r.blurSamples,p.needsUpdate=!0,m.needsUpdate=!0),r.mapPass===null&&(r.mapPass=new t.Tn(a.x,a.y,{format:t.Wt,type:t.I})),p.uniforms.shadow_pass.value=r.map.depthTexture,p.uniforms.resolution.value=r.mapSize,p.uniforms.radius.value=r.radius,e.setRenderTarget(r.mapPass),e.clear(),e.renderBufferDirect(i,null,o,p,g,null),m.uniforms.shadow_pass.value=r.mapPass.texture,m.uniforms.resolution.value=r.mapSize,m.uniforms.radius.value=r.radius,e.setRenderTarget(r.map),e.clear(),e.renderBufferDirect(i,null,o,m,g,null)}function b(t,n,r,i){let a=null,o=r.isPointLight===!0?t.customDistanceMaterial:t.customDepthMaterial;if(o!==void 0)a=o;else if(a=r.isPointLight===!0?l:c,e.localClippingEnabled&&n.clipShadows===!0&&Array.isArray(n.clippingPlanes)&&n.clippingPlanes.length!==0||n.displacementMap&&n.displacementScale!==0||n.alphaMap&&n.alphaTest>0||n.map&&n.alphaTest>0||n.alphaToCoverage===!0){let e=a.uuid,t=n.uuid,r=u[e];r===void 0&&(r={},u[e]=r);let i=r[t];i===void 0&&(i=a.clone(),r[t]=i,n.addEventListener(`dispose`,S)),a=i}if(a.visible=n.visible,a.wireframe=n.wireframe,i===3?a.side=n.shadowSide===null?n.side:n.shadowSide:a.side=n.shadowSide===null?f[n.side]:n.shadowSide,a.alphaMap=n.alphaMap,a.alphaTest=n.alphaToCoverage===!0?.5:n.alphaTest,a.map=n.map,a.clipShadows=n.clipShadows,a.clippingPlanes=n.clippingPlanes,a.clipIntersection=n.clipIntersection,a.displacementMap=n.displacementMap,a.displacementScale=n.displacementScale,a.displacementBias=n.displacementBias,a.wireframeLinewidth=n.wireframeLinewidth,a.linewidth=n.linewidth,r.isPointLight===!0&&a.isMeshDistanceMaterial===!0){let t=e.properties.get(a);t.light=r}return a}function x(t,r,a,o,s){if(t.visible===!1)return;if(t.layers.test(r.layers)&&(t.isMesh||t.isLine||t.isPoints)&&(t.castShadow||t.receiveShadow&&s===3)&&(!t.frustumCulled||i.intersectsObject(t))){t.modelViewMatrix.multiplyMatrices(a.matrixWorldInverse,t.matrixWorld);let i=n.update(t),c=t.material;if(Array.isArray(c)){let n=i.groups;for(let l=0,u=n.length;l<u;l++){let u=n[l],d=c[u.materialIndex];if(d&&d.visible){let n=b(t,d,o,s);t.onBeforeShadow(e,t,r,a,i,n,u),e.renderBufferDirect(a,null,i,n,t,u),t.onAfterShadow(e,t,r,a,i,n,u)}}}else if(c.visible){let n=b(t,c,o,s);t.onBeforeShadow(e,t,r,a,i,n,null),e.renderBufferDirect(a,null,i,n,t,null),t.onAfterShadow(e,t,r,a,i,n,null)}}let c=t.children;for(let e=0,t=c.length;e<t;e++)x(c[e],r,a,o,s)}function S(e){e.target.removeEventListener(`dispose`,S);for(let t in u){let n=u[t],r=e.target.uuid;r in n&&(n[r].dispose(),delete n[r])}}}function un(e,n){function r(){let n=!1,r=new t.Cn,i=null,a=new t.Cn(0,0,0,0);return{setMask:function(t){i!==t&&!n&&(e.colorMask(t,t,t,t),i=t)},setLocked:function(e){n=e},setClear:function(t,n,i,o,s){s===!0&&(t*=o,n*=o,i*=o),r.set(t,n,i,o),a.equals(r)===!1&&(e.clearColor(t,n,i,o),a.copy(r))},reset:function(){n=!1,i=null,a.set(-1,0,0,0)}}}function i(){let r=!1,i=!1,a=null,o=null,s=null;return{setReversed:function(e){if(i!==e){let t=n.get(`EXT_clip_control`);e?t.clipControlEXT(t.LOWER_LEFT_EXT,t.ZERO_TO_ONE_EXT):t.clipControlEXT(t.LOWER_LEFT_EXT,t.NEGATIVE_ONE_TO_ONE_EXT),i=e;let r=s;s=null,this.setClear(r)}},getReversed:function(){return i},setTest:function(t){t?L(e.DEPTH_TEST):ce(e.DEPTH_TEST)},setMask:function(t){a!==t&&!r&&(e.depthMask(t),a=t)},setFunc:function(n){if(i&&(n=t.Zt[n]),o!==n){switch(n){case 0:e.depthFunc(e.NEVER);break;case 1:e.depthFunc(e.ALWAYS);break;case 2:e.depthFunc(e.LESS);break;case 3:e.depthFunc(e.LEQUAL);break;case 4:e.depthFunc(e.EQUAL);break;case 5:e.depthFunc(e.GEQUAL);break;case 6:e.depthFunc(e.GREATER);break;case 7:e.depthFunc(e.NOTEQUAL);break;default:e.depthFunc(e.LEQUAL)}o=n}},setLocked:function(e){r=e},setClear:function(t){s!==t&&(s=t,i&&(t=1-t),e.clearDepth(t))},reset:function(){r=!1,a=null,o=null,s=null,i=!1}}}function a(){let t=!1,n=null,r=null,i=null,a=null,o=null,s=null,c=null,l=null;return{setTest:function(n){t||(n?L(e.STENCIL_TEST):ce(e.STENCIL_TEST))},setMask:function(r){n!==r&&!t&&(e.stencilMask(r),n=r)},setFunc:function(t,n,o){(r!==t||i!==n||a!==o)&&(e.stencilFunc(t,n,o),r=t,i=n,a=o)},setOp:function(t,n,r){(o!==t||s!==n||c!==r)&&(e.stencilOp(t,n,r),o=t,s=n,c=r)},setLocked:function(e){t=e},setClear:function(t){l!==t&&(e.clearStencil(t),l=t)},reset:function(){t=!1,n=null,r=null,i=null,a=null,o=null,s=null,c=null,l=null}}}let o=new r,s=new i,c=new a,l=new WeakMap,u=new WeakMap,d={},f={},p={},m=new WeakMap,h=[],g=null,_=!1,v=null,y=null,b=null,x=null,S=null,C=null,w=null,T=new t.g(0,0,0),E=0,D=!1,O=null,k=null,A=null,j=null,M=null,N=e.getParameter(e.MAX_COMBINED_TEXTURE_IMAGE_UNITS),ee=!1,P=0,F=e.getParameter(e.VERSION);F.indexOf(`WebGL`)===-1?F.indexOf(`OpenGL ES`)!==-1&&(P=parseFloat(/^OpenGL ES (\d)/.exec(F)[1]),ee=P>=2):(P=parseFloat(/^WebGL (\d)/.exec(F)[1]),ee=P>=1);let I=null,te={},ne=e.getParameter(e.SCISSOR_BOX),re=e.getParameter(e.VIEWPORT),ie=new t.Cn().fromArray(ne),ae=new t.Cn().fromArray(re);function oe(t,n,r,i){let a=new Uint8Array(4),o=e.createTexture();e.bindTexture(t,o),e.texParameteri(t,e.TEXTURE_MIN_FILTER,e.NEAREST),e.texParameteri(t,e.TEXTURE_MAG_FILTER,e.NEAREST);for(let o=0;o<r;o++)t===e.TEXTURE_3D||t===e.TEXTURE_2D_ARRAY?e.texImage3D(n,0,e.RGBA,1,1,i,0,e.RGBA,e.UNSIGNED_BYTE,a):e.texImage2D(n+o,0,e.RGBA,1,1,0,e.RGBA,e.UNSIGNED_BYTE,a);return o}let se={};se[e.TEXTURE_2D]=oe(e.TEXTURE_2D,e.TEXTURE_2D,1),se[e.TEXTURE_CUBE_MAP]=oe(e.TEXTURE_CUBE_MAP,e.TEXTURE_CUBE_MAP_POSITIVE_X,6),se[e.TEXTURE_2D_ARRAY]=oe(e.TEXTURE_2D_ARRAY,e.TEXTURE_2D_ARRAY,1,1),se[e.TEXTURE_3D]=oe(e.TEXTURE_3D,e.TEXTURE_3D,1,1),o.setClear(0,0,0,1),s.setClear(1),c.setClear(0),L(e.DEPTH_TEST),s.setFunc(3),de(!1),fe(1),L(e.CULL_FACE),H(0);function L(t){d[t]!==!0&&(e.enable(t),d[t]=!0)}function ce(t){d[t]!==!1&&(e.disable(t),d[t]=!1)}function le(t,n){return p[t]!==n&&(e.bindFramebuffer(t,n),p[t]=n,t===e.DRAW_FRAMEBUFFER&&(p[e.FRAMEBUFFER]=n),t===e.FRAMEBUFFER&&(p[e.DRAW_FRAMEBUFFER]=n),!0)}function R(t,n){let r=h,i=!1;if(t){r=m.get(n),r===void 0&&(r=[],m.set(n,r));let a=t.textures;if(r.length!==a.length||r[0]!==e.COLOR_ATTACHMENT0){for(let t=0,n=a.length;t<n;t++)r[t]=e.COLOR_ATTACHMENT0+t;r.length=a.length,i=!0}}else r[0]!==e.BACK&&(r[0]=e.BACK,i=!0);i&&e.drawBuffers(r)}function z(t){return g!==t&&(e.useProgram(t),g=t,!0)}let B={100:e.FUNC_ADD,101:e.FUNC_SUBTRACT,102:e.FUNC_REVERSE_SUBTRACT};B[103]=e.MIN,B[104]=e.MAX;let V={200:e.ZERO,201:e.ONE,202:e.SRC_COLOR,204:e.SRC_ALPHA,210:e.SRC_ALPHA_SATURATE,208:e.DST_COLOR,206:e.DST_ALPHA,203:e.ONE_MINUS_SRC_COLOR,205:e.ONE_MINUS_SRC_ALPHA,209:e.ONE_MINUS_DST_COLOR,207:e.ONE_MINUS_DST_ALPHA,211:e.CONSTANT_COLOR,212:e.ONE_MINUS_CONSTANT_COLOR,213:e.CONSTANT_ALPHA,214:e.ONE_MINUS_CONSTANT_ALPHA};function H(n,r,i,a,o,s,c,l,u,d){if(n===0){_===!0&&(ce(e.BLEND),_=!1);return}if(_===!1&&(L(e.BLEND),_=!0),n!==5){if(n!==v||d!==D){if((y!==100||S!==100)&&(e.blendEquation(e.FUNC_ADD),y=100,S=100),d)switch(n){case 1:e.blendFuncSeparate(e.ONE,e.ONE_MINUS_SRC_ALPHA,e.ONE,e.ONE_MINUS_SRC_ALPHA);break;case 2:e.blendFunc(e.ONE,e.ONE);break;case 3:e.blendFuncSeparate(e.ZERO,e.ONE_MINUS_SRC_COLOR,e.ZERO,e.ONE);break;case 4:e.blendFuncSeparate(e.DST_COLOR,e.ONE_MINUS_SRC_ALPHA,e.ZERO,e.ONE);break;default:t.An(`WebGLState: Invalid blending: `,n)}else switch(n){case 1:e.blendFuncSeparate(e.SRC_ALPHA,e.ONE_MINUS_SRC_ALPHA,e.ONE,e.ONE_MINUS_SRC_ALPHA);break;case 2:e.blendFuncSeparate(e.SRC_ALPHA,e.ONE,e.ONE,e.ONE);break;case 3:t.An(`WebGLState: SubtractiveBlending requires material.premultipliedAlpha = true`);break;case 4:t.An(`WebGLState: MultiplyBlending requires material.premultipliedAlpha = true`);break;default:t.An(`WebGLState: Invalid blending: `,n)}b=null,x=null,C=null,w=null,T.set(0,0,0),E=0,v=n,D=d}return}o||=r,s||=i,c||=a,(r!==y||o!==S)&&(e.blendEquationSeparate(B[r],B[o]),y=r,S=o),(i!==b||a!==x||s!==C||c!==w)&&(e.blendFuncSeparate(V[i],V[a],V[s],V[c]),b=i,x=a,C=s,w=c),(l.equals(T)===!1||u!==E)&&(e.blendColor(l.r,l.g,l.b,u),T.copy(l),E=u),v=n,D=!1}function ue(t,n){t.side===2?ce(e.CULL_FACE):L(e.CULL_FACE);let r=t.side===1;n&&(r=!r),de(r),t.blending===1&&t.transparent===!1?H(0):H(t.blending,t.blendEquation,t.blendSrc,t.blendDst,t.blendEquationAlpha,t.blendSrcAlpha,t.blendDstAlpha,t.blendColor,t.blendAlpha,t.premultipliedAlpha),s.setFunc(t.depthFunc),s.setTest(t.depthTest),s.setMask(t.depthWrite),o.setMask(t.colorWrite);let i=t.stencilWrite;c.setTest(i),i&&(c.setMask(t.stencilWriteMask),c.setFunc(t.stencilFunc,t.stencilRef,t.stencilFuncMask),c.setOp(t.stencilFail,t.stencilZFail,t.stencilZPass)),U(t.polygonOffset,t.polygonOffsetFactor,t.polygonOffsetUnits),t.alphaToCoverage===!0?L(e.SAMPLE_ALPHA_TO_COVERAGE):ce(e.SAMPLE_ALPHA_TO_COVERAGE)}function de(t){O!==t&&(t?e.frontFace(e.CW):e.frontFace(e.CCW),O=t)}function fe(t){t===0?ce(e.CULL_FACE):(L(e.CULL_FACE),t!==k&&(t===1?e.cullFace(e.BACK):t===2?e.cullFace(e.FRONT):e.cullFace(e.FRONT_AND_BACK))),k=t}function pe(t){t!==A&&(ee&&e.lineWidth(t),A=t)}function U(t,n,r){t?(L(e.POLYGON_OFFSET_FILL),(j!==n||M!==r)&&(j=n,M=r,s.getReversed()&&(n=-n),e.polygonOffset(n,r))):ce(e.POLYGON_OFFSET_FILL)}function W(t){t?L(e.SCISSOR_TEST):ce(e.SCISSOR_TEST)}function G(t){t===void 0&&(t=e.TEXTURE0+N-1),I!==t&&(e.activeTexture(t),I=t)}function me(t,n,r){r===void 0&&(r=I===null?e.TEXTURE0+N-1:I);let i=te[r];i===void 0&&(i={type:void 0,texture:void 0},te[r]=i),(i.type!==t||i.texture!==n)&&(I!==r&&(e.activeTexture(r),I=r),e.bindTexture(t,n||se[t]),i.type=t,i.texture=n)}function he(){let t=te[I];t!==void 0&&t.type!==void 0&&(e.bindTexture(t.type,null),t.type=void 0,t.texture=void 0)}function ge(){try{e.compressedTexImage2D(...arguments)}catch(e){t.An(`WebGLState:`,e)}}function _e(){try{e.compressedTexImage3D(...arguments)}catch(e){t.An(`WebGLState:`,e)}}function ve(){try{e.texSubImage2D(...arguments)}catch(e){t.An(`WebGLState:`,e)}}function ye(){try{e.texSubImage3D(...arguments)}catch(e){t.An(`WebGLState:`,e)}}function be(){try{e.compressedTexSubImage2D(...arguments)}catch(e){t.An(`WebGLState:`,e)}}function xe(){try{e.compressedTexSubImage3D(...arguments)}catch(e){t.An(`WebGLState:`,e)}}function Se(){try{e.texStorage2D(...arguments)}catch(e){t.An(`WebGLState:`,e)}}function Ce(){try{e.texStorage3D(...arguments)}catch(e){t.An(`WebGLState:`,e)}}function we(){try{e.texImage2D(...arguments)}catch(e){t.An(`WebGLState:`,e)}}function Te(){try{e.texImage3D(...arguments)}catch(e){t.An(`WebGLState:`,e)}}function Ee(t){return f[t]===void 0?e.getParameter(t):f[t]}function De(t,n){f[t]!==n&&(e.pixelStorei(t,n),f[t]=n)}function K(t){ie.equals(t)===!1&&(e.scissor(t.x,t.y,t.z,t.w),ie.copy(t))}function Oe(t){ae.equals(t)===!1&&(e.viewport(t.x,t.y,t.z,t.w),ae.copy(t))}function q(t,n){let r=u.get(n);r===void 0&&(r=new WeakMap,u.set(n,r));let i=r.get(t);i===void 0&&(i=e.getUniformBlockIndex(n,t.name),r.set(t,i))}function ke(t,n){let r=u.get(n).get(t);l.get(n)!==r&&(e.uniformBlockBinding(n,r,t.__bindingPointIndex),l.set(n,r))}function J(){e.disable(e.BLEND),e.disable(e.CULL_FACE),e.disable(e.DEPTH_TEST),e.disable(e.POLYGON_OFFSET_FILL),e.disable(e.SCISSOR_TEST),e.disable(e.STENCIL_TEST),e.disable(e.SAMPLE_ALPHA_TO_COVERAGE),e.blendEquation(e.FUNC_ADD),e.blendFunc(e.ONE,e.ZERO),e.blendFuncSeparate(e.ONE,e.ZERO,e.ONE,e.ZERO),e.blendColor(0,0,0,0),e.colorMask(!0,!0,!0,!0),e.clearColor(0,0,0,0),e.depthMask(!0),e.depthFunc(e.LESS),s.setReversed(!1),e.clearDepth(1),e.stencilMask(4294967295),e.stencilFunc(e.ALWAYS,0,4294967295),e.stencilOp(e.KEEP,e.KEEP,e.KEEP),e.clearStencil(0),e.cullFace(e.BACK),e.frontFace(e.CCW),e.polygonOffset(0,0),e.activeTexture(e.TEXTURE0),e.bindFramebuffer(e.FRAMEBUFFER,null),e.bindFramebuffer(e.DRAW_FRAMEBUFFER,null),e.bindFramebuffer(e.READ_FRAMEBUFFER,null),e.useProgram(null),e.lineWidth(1),e.scissor(0,0,e.canvas.width,e.canvas.height),e.viewport(0,0,e.canvas.width,e.canvas.height),e.pixelStorei(e.PACK_ALIGNMENT,4),e.pixelStorei(e.UNPACK_ALIGNMENT,4),e.pixelStorei(e.UNPACK_FLIP_Y_WEBGL,!1),e.pixelStorei(e.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!1),e.pixelStorei(e.UNPACK_COLORSPACE_CONVERSION_WEBGL,e.BROWSER_DEFAULT_WEBGL),e.pixelStorei(e.PACK_ROW_LENGTH,0),e.pixelStorei(e.PACK_SKIP_PIXELS,0),e.pixelStorei(e.PACK_SKIP_ROWS,0),e.pixelStorei(e.UNPACK_ROW_LENGTH,0),e.pixelStorei(e.UNPACK_IMAGE_HEIGHT,0),e.pixelStorei(e.UNPACK_SKIP_PIXELS,0),e.pixelStorei(e.UNPACK_SKIP_ROWS,0),e.pixelStorei(e.UNPACK_SKIP_IMAGES,0),d={},f={},I=null,te={},p={},m=new WeakMap,h=[],g=null,_=!1,v=null,y=null,b=null,x=null,S=null,C=null,w=null,T=new t.g(0,0,0),E=0,D=!1,O=null,k=null,A=null,j=null,M=null,ie.set(0,0,e.canvas.width,e.canvas.height),ae.set(0,0,e.canvas.width,e.canvas.height),o.reset(),s.reset(),c.reset()}return{buffers:{color:o,depth:s,stencil:c},enable:L,disable:ce,bindFramebuffer:le,drawBuffers:R,useProgram:z,setBlending:H,setMaterial:ue,setFlipSided:de,setCullFace:fe,setLineWidth:pe,setPolygonOffset:U,setScissorTest:W,activeTexture:G,bindTexture:me,unbindTexture:he,compressedTexImage2D:ge,compressedTexImage3D:_e,texImage2D:we,texImage3D:Te,pixelStorei:De,getParameter:Ee,updateUBOMapping:q,uniformBlockBinding:ke,texStorage2D:Se,texStorage3D:Ce,texSubImage2D:ve,texSubImage3D:ye,compressedTexSubImage2D:be,compressedTexSubImage3D:xe,scissor:K,viewport:Oe,reset:J}}function dn(e,n,r,i,a,o,s){let c=n.has(`WEBGL_multisampled_render_to_texture`)?n.get(`WEBGL_multisampled_render_to_texture`):null,l=typeof navigator>`u`?!1:/OculusBrowser/g.test(navigator.userAgent),u=new t.xn,d=new WeakMap,f=new Set,p,m=new WeakMap,h=!1;try{h=typeof OffscreenCanvas<`u`&&new OffscreenCanvas(1,1).getContext(`2d`)!==null}catch{}function g(e,n){return h?new OffscreenCanvas(e,n):t.kn(`canvas`)}function _(e,n,r){let i=1,a=ge(e);if((a.width>r||a.height>r)&&(i=r/Math.max(a.width,a.height)),i<1){if(typeof HTMLImageElement<`u`&&e instanceof HTMLImageElement||typeof HTMLCanvasElement<`u`&&e instanceof HTMLCanvasElement||typeof ImageBitmap<`u`&&e instanceof ImageBitmap||typeof VideoFrame<`u`&&e instanceof VideoFrame){let r=Math.floor(i*a.width),o=Math.floor(i*a.height);p===void 0&&(p=g(r,o));let s=n?g(r,o):p;return s.width=r,s.height=o,s.getContext(`2d`).drawImage(e,0,0,r,o),t.In(`WebGLRenderer: Texture has been resized from (`+a.width+`x`+a.height+`) to (`+r+`x`+o+`).`),s}return`data`in e&&t.In(`WebGLRenderer: Image in DataTexture is too big (`+a.width+`x`+a.height+`).`),e}return e}function v(e){return e.generateMipmaps}function y(t){e.generateMipmap(t)}function b(t){return t.isWebGLCubeRenderTarget?e.TEXTURE_CUBE_MAP:t.isWebGL3DRenderTarget?e.TEXTURE_3D:t.isWebGLArrayRenderTarget||t.isCompressedArrayTexture?e.TEXTURE_2D_ARRAY:e.TEXTURE_2D}function x(r,i,a,o,s,c=!1){if(r!==null){if(e[r]!==void 0)return e[r];t.In(`WebGLRenderer: Attempt to use non-existing WebGL internal format '`+r+`'`)}let l;o&&(l=n.get(`EXT_texture_norm16`),l||t.In(`WebGLRenderer: Unable to use normalized textures without EXT_texture_norm16 extension`));let u=i;if(i===e.RED&&(a===e.FLOAT&&(u=e.R32F),a===e.HALF_FLOAT&&(u=e.R16F),a===e.UNSIGNED_BYTE&&(u=e.R8),a===e.UNSIGNED_SHORT&&l&&(u=l.R16_EXT),a===e.SHORT&&l&&(u=l.R16_SNORM_EXT)),i===e.RED_INTEGER&&(a===e.UNSIGNED_BYTE&&(u=e.R8UI),a===e.UNSIGNED_SHORT&&(u=e.R16UI),a===e.UNSIGNED_INT&&(u=e.R32UI),a===e.BYTE&&(u=e.R8I),a===e.SHORT&&(u=e.R16I),a===e.INT&&(u=e.R32I)),i===e.RG&&(a===e.FLOAT&&(u=e.RG32F),a===e.HALF_FLOAT&&(u=e.RG16F),a===e.UNSIGNED_BYTE&&(u=e.RG8),a===e.UNSIGNED_SHORT&&l&&(u=l.RG16_EXT),a===e.SHORT&&l&&(u=l.RG16_SNORM_EXT)),i===e.RG_INTEGER&&(a===e.UNSIGNED_BYTE&&(u=e.RG8UI),a===e.UNSIGNED_SHORT&&(u=e.RG16UI),a===e.UNSIGNED_INT&&(u=e.RG32UI),a===e.BYTE&&(u=e.RG8I),a===e.SHORT&&(u=e.RG16I),a===e.INT&&(u=e.RG32I)),i===e.RGB_INTEGER&&(a===e.UNSIGNED_BYTE&&(u=e.RGB8UI),a===e.UNSIGNED_SHORT&&(u=e.RGB16UI),a===e.UNSIGNED_INT&&(u=e.RGB32UI),a===e.BYTE&&(u=e.RGB8I),a===e.SHORT&&(u=e.RGB16I),a===e.INT&&(u=e.RGB32I)),i===e.RGBA_INTEGER&&(a===e.UNSIGNED_BYTE&&(u=e.RGBA8UI),a===e.UNSIGNED_SHORT&&(u=e.RGBA16UI),a===e.UNSIGNED_INT&&(u=e.RGBA32UI),a===e.BYTE&&(u=e.RGBA8I),a===e.SHORT&&(u=e.RGBA16I),a===e.INT&&(u=e.RGBA32I)),i===e.RGB&&(a===e.UNSIGNED_SHORT&&l&&(u=l.RGB16_EXT),a===e.SHORT&&l&&(u=l.RGB16_SNORM_EXT),a===e.UNSIGNED_INT_5_9_9_9_REV&&(u=e.RGB9_E5),a===e.UNSIGNED_INT_10F_11F_11F_REV&&(u=e.R11F_G11F_B10F)),i===e.RGBA){let n=c?t.U:t._.getTransfer(s);a===e.FLOAT&&(u=e.RGBA32F),a===e.HALF_FLOAT&&(u=e.RGBA16F),a===e.UNSIGNED_BYTE&&(u=n===`srgb`?e.SRGB8_ALPHA8:e.RGBA8),a===e.UNSIGNED_SHORT&&l&&(u=l.RGBA16_EXT),a===e.SHORT&&l&&(u=l.RGBA16_SNORM_EXT),a===e.UNSIGNED_SHORT_4_4_4_4&&(u=e.RGBA4),a===e.UNSIGNED_SHORT_5_5_5_1&&(u=e.RGB5_A1)}return(u===e.R16F||u===e.R32F||u===e.RG16F||u===e.RG32F||u===e.RGBA16F||u===e.RGBA32F)&&n.get(`EXT_color_buffer_float`),u}function S(n,r){let i;return n?r===null||r===1014||r===1020?i=e.DEPTH24_STENCIL8:r===1015?i=e.DEPTH32F_STENCIL8:r===1012&&(i=e.DEPTH24_STENCIL8,t.In(`DepthTexture: 16 bit depth attachment is not supported with stencil. Using 24-bit attachment.`)):r===null||r===1014||r===1020?i=e.DEPTH_COMPONENT24:r===1015?i=e.DEPTH_COMPONENT32F:r===1012&&(i=e.DEPTH_COMPONENT16),i}function C(e,t){return v(e)===!0||e.isFramebufferTexture&&e.minFilter!==1003&&e.minFilter!==1006?Math.log2(Math.max(t.width,t.height))+1:e.mipmaps!==void 0&&e.mipmaps.length>0?e.mipmaps.length:e.isCompressedTexture&&Array.isArray(e.image)?t.mipmaps.length:1}function w(e){let t=e.target;t.removeEventListener(`dispose`,w),E(t),t.isVideoTexture&&d.delete(t),t.isHTMLTexture&&f.delete(t)}function T(e){let t=e.target;t.removeEventListener(`dispose`,T),O(t)}function E(e){let t=i.get(e);if(t.__webglInit===void 0)return;let n=e.source,r=m.get(n);if(r){let i=r[t.__cacheKey];i.usedTimes--,i.usedTimes===0&&D(e),Object.keys(r).length===0&&m.delete(n)}i.remove(e)}function D(t){let n=i.get(t);e.deleteTexture(n.__webglTexture);let r=t.source,a=m.get(r);delete a[n.__cacheKey],s.memory.textures--}function O(t){let n=i.get(t);if(t.depthTexture&&(t.depthTexture.dispose(),i.remove(t.depthTexture)),t.isWebGLCubeRenderTarget)for(let t=0;t<6;t++){if(Array.isArray(n.__webglFramebuffer[t]))for(let r=0;r<n.__webglFramebuffer[t].length;r++)e.deleteFramebuffer(n.__webglFramebuffer[t][r]);else e.deleteFramebuffer(n.__webglFramebuffer[t]);n.__webglDepthbuffer&&e.deleteRenderbuffer(n.__webglDepthbuffer[t])}else{if(Array.isArray(n.__webglFramebuffer))for(let t=0;t<n.__webglFramebuffer.length;t++)e.deleteFramebuffer(n.__webglFramebuffer[t]);else e.deleteFramebuffer(n.__webglFramebuffer);if(n.__webglDepthbuffer&&e.deleteRenderbuffer(n.__webglDepthbuffer),n.__webglMultisampledFramebuffer&&e.deleteFramebuffer(n.__webglMultisampledFramebuffer),n.__webglColorRenderbuffer)for(let t=0;t<n.__webglColorRenderbuffer.length;t++)n.__webglColorRenderbuffer[t]&&e.deleteRenderbuffer(n.__webglColorRenderbuffer[t]);n.__webglDepthRenderbuffer&&e.deleteRenderbuffer(n.__webglDepthRenderbuffer)}let r=t.textures;for(let t=0,n=r.length;t<n;t++){let n=i.get(r[t]);n.__webglTexture&&(e.deleteTexture(n.__webglTexture),s.memory.textures--),i.remove(r[t])}i.remove(t)}let k=0;function A(){k=0}function j(){return k}function M(e){k=e}function N(){let e=k;return e>=a.maxTextures&&t.In(`WebGLTextures: Trying to use `+e+` texture units while this GPU supports only `+a.maxTextures),k+=1,e}function ee(e){let t=[];return t.push(e.wrapS),t.push(e.wrapT),t.push(e.wrapR||0),t.push(e.magFilter),t.push(e.minFilter),t.push(e.anisotropy),t.push(e.internalFormat),t.push(e.format),t.push(e.type),t.push(e.generateMipmaps),t.push(e.premultiplyAlpha),t.push(e.flipY),t.push(e.unpackAlignment),t.push(e.colorSpace),t.join()}function P(n,a){let o=i.get(n);if(n.isVideoTexture&&me(n),n.isRenderTargetTexture===!1&&n.isExternalTexture!==!0&&n.version>0&&o.__version!==n.version){let e=n.image;if(e===null)t.In(`WebGLRenderer: Texture marked for update but no image data found.`);else if(e.complete===!1)t.In(`WebGLRenderer: Texture marked for update but image is incomplete`);else{ce(o,n,a);return}}else n.isExternalTexture&&(o.__webglTexture=n.sourceTexture?n.sourceTexture:null);r.bindTexture(e.TEXTURE_2D,o.__webglTexture,e.TEXTURE0+a)}function F(t,n){let a=i.get(t);if(t.isRenderTargetTexture===!1&&t.version>0&&a.__version!==t.version){ce(a,t,n);return}t.isExternalTexture&&(a.__webglTexture=t.sourceTexture?t.sourceTexture:null),r.bindTexture(e.TEXTURE_2D_ARRAY,a.__webglTexture,e.TEXTURE0+n)}function I(t,n){let a=i.get(t);if(t.isRenderTargetTexture===!1&&t.version>0&&a.__version!==t.version){ce(a,t,n);return}r.bindTexture(e.TEXTURE_3D,a.__webglTexture,e.TEXTURE0+n)}function te(t,n){let a=i.get(t);if(t.isCubeDepthTexture!==!0&&t.version>0&&a.__version!==t.version){le(a,t,n);return}r.bindTexture(e.TEXTURE_CUBE_MAP,a.__webglTexture,e.TEXTURE0+n)}let ne={[t.Xt]:e.REPEAT,[t.h]:e.CLAMP_TO_EDGE,[t.Q]:e.MIRRORED_REPEAT},re={[t.$]:e.NEAREST,[t.tt]:e.NEAREST_MIPMAP_NEAREST,[t.et]:e.NEAREST_MIPMAP_LINEAR,[t.z]:e.LINEAR,[t.V]:e.LINEAR_MIPMAP_NEAREST,[t.B]:e.LINEAR_MIPMAP_LINEAR},ie={512:e.NEVER,519:e.ALWAYS,513:e.LESS,515:e.LEQUAL,514:e.EQUAL,518:e.GEQUAL,516:e.GREATER,517:e.NOTEQUAL};function ae(r,o){if(o.type===1015&&n.has(`OES_texture_float_linear`)===!1&&(o.magFilter===1006||o.magFilter===1007||o.magFilter===1005||o.magFilter===1008||o.minFilter===1006||o.minFilter===1007||o.minFilter===1005||o.minFilter===1008)&&t.In(`WebGLRenderer: Unable to use linear filtering with floating point textures. OES_texture_float_linear not supported on this device.`),e.texParameteri(r,e.TEXTURE_WRAP_S,ne[o.wrapS]),e.texParameteri(r,e.TEXTURE_WRAP_T,ne[o.wrapT]),(r===e.TEXTURE_3D||r===e.TEXTURE_2D_ARRAY)&&e.texParameteri(r,e.TEXTURE_WRAP_R,ne[o.wrapR]),e.texParameteri(r,e.TEXTURE_MAG_FILTER,re[o.magFilter]),e.texParameteri(r,e.TEXTURE_MIN_FILTER,re[o.minFilter]),o.compareFunction&&(e.texParameteri(r,e.TEXTURE_COMPARE_MODE,e.COMPARE_REF_TO_TEXTURE),e.texParameteri(r,e.TEXTURE_COMPARE_FUNC,ie[o.compareFunction])),n.has(`EXT_texture_filter_anisotropic`)===!0){if(o.magFilter===1003||o.minFilter!==1005&&o.minFilter!==1008||o.type===1015&&n.has(`OES_texture_float_linear`)===!1)return;if(o.anisotropy>1||i.get(o).__currentAnisotropy){let t=n.get(`EXT_texture_filter_anisotropic`);e.texParameterf(r,t.TEXTURE_MAX_ANISOTROPY_EXT,Math.min(o.anisotropy,a.getMaxAnisotropy())),i.get(o).__currentAnisotropy=o.anisotropy}}}function oe(t,n){let r=!1;t.__webglInit===void 0&&(t.__webglInit=!0,n.addEventListener(`dispose`,w));let i=n.source,a=m.get(i);a===void 0&&(a={},m.set(i,a));let o=ee(n);if(o!==t.__cacheKey){a[o]===void 0&&(a[o]={texture:e.createTexture(),usedTimes:0},s.memory.textures++,r=!0),a[o].usedTimes++;let i=a[t.__cacheKey];i!==void 0&&(a[t.__cacheKey].usedTimes--,i.usedTimes===0&&D(n)),t.__cacheKey=o,t.__webglTexture=a[o].texture}return r}function se(e,t,n){return Math.floor(Math.floor(e/n)/t)}function L(t,n,i,a){let o=t.updateRanges;if(o.length===0)r.texSubImage2D(e.TEXTURE_2D,0,0,0,n.width,n.height,i,a,n.data);else{o.sort((e,t)=>e.start-t.start);let s=0;for(let e=1;e<o.length;e++){let t=o[s],r=o[e],i=t.start+t.count,a=se(r.start,n.width,4),c=se(t.start,n.width,4);r.start<=i+1&&a===c&&se(r.start+r.count-1,n.width,4)===a?t.count=Math.max(t.count,r.start+r.count-t.start):(++s,o[s]=r)}o.length=s+1;let c=r.getParameter(e.UNPACK_ROW_LENGTH),l=r.getParameter(e.UNPACK_SKIP_PIXELS),u=r.getParameter(e.UNPACK_SKIP_ROWS);r.pixelStorei(e.UNPACK_ROW_LENGTH,n.width);for(let t=0,s=o.length;t<s;t++){let s=o[t],c=Math.floor(s.start/4),l=Math.ceil(s.count/4),u=c%n.width,d=Math.floor(c/n.width),f=l;r.pixelStorei(e.UNPACK_SKIP_PIXELS,u),r.pixelStorei(e.UNPACK_SKIP_ROWS,d),r.texSubImage2D(e.TEXTURE_2D,0,u,d,f,1,i,a,n.data)}t.clearUpdateRanges(),r.pixelStorei(e.UNPACK_ROW_LENGTH,c),r.pixelStorei(e.UNPACK_SKIP_PIXELS,l),r.pixelStorei(e.UNPACK_SKIP_ROWS,u)}}function ce(n,s,c){let l=e.TEXTURE_2D;(s.isDataArrayTexture||s.isCompressedArrayTexture)&&(l=e.TEXTURE_2D_ARRAY),s.isData3DTexture&&(l=e.TEXTURE_3D);let u=oe(n,s),d=s.source;r.bindTexture(l,n.__webglTexture,e.TEXTURE0+c);let p=i.get(d);if(d.version!==p.__version||u===!0){if(r.activeTexture(e.TEXTURE0+c),!(typeof ImageBitmap<`u`&&s.image instanceof ImageBitmap)){let n=t._.getPrimaries(t._.workingColorSpace),i=s.colorSpace===``?null:t._.getPrimaries(s.colorSpace),a=s.colorSpace===``||n===i?e.NONE:e.BROWSER_DEFAULT_WEBGL;r.pixelStorei(e.UNPACK_FLIP_Y_WEBGL,s.flipY),r.pixelStorei(e.UNPACK_PREMULTIPLY_ALPHA_WEBGL,s.premultiplyAlpha),r.pixelStorei(e.UNPACK_COLORSPACE_CONVERSION_WEBGL,a)}r.pixelStorei(e.UNPACK_ALIGNMENT,s.unpackAlignment);let n=_(s.image,!1,a.maxTextureSize);n=he(s,n);let i=o.convert(s.format,s.colorSpace),m=o.convert(s.type),h=x(s.internalFormat,i,m,s.normalized,s.colorSpace,s.isVideoTexture);ae(l,s);let g,b=s.mipmaps,w=s.isVideoTexture!==!0,T=p.__version===void 0||u===!0,E=d.dataReady,D=C(s,n);if(s.isDepthTexture)h=S(s.format===t.E,s.type),T&&(w?r.texStorage2D(e.TEXTURE_2D,1,h,n.width,n.height):r.texImage2D(e.TEXTURE_2D,0,h,n.width,n.height,0,i,m,null));else if(s.isDataTexture){if(b.length>0){w&&T&&r.texStorage2D(e.TEXTURE_2D,D,h,b[0].width,b[0].height);for(let t=0,n=b.length;t<n;t++)g=b[t],w?E&&r.texSubImage2D(e.TEXTURE_2D,t,0,0,g.width,g.height,i,m,g.data):r.texImage2D(e.TEXTURE_2D,t,h,g.width,g.height,0,i,m,g.data);s.generateMipmaps=!1}else w?(T&&r.texStorage2D(e.TEXTURE_2D,D,h,n.width,n.height),E&&L(s,n,i,m)):r.texImage2D(e.TEXTURE_2D,0,h,n.width,n.height,0,i,m,n.data)}else if(s.isCompressedTexture){if(s.isCompressedArrayTexture){w&&T&&r.texStorage3D(e.TEXTURE_2D_ARRAY,D,h,b[0].width,b[0].height,n.depth);for(let a=0,o=b.length;a<o;a++)if(g=b[a],s.format!==1023){if(i!==null){if(w){if(E){if(s.layerUpdates.size>0){let n=t.jn(g.width,g.height,s.format,s.type);for(let t of s.layerUpdates){let o=g.data.subarray(t*n/g.data.BYTES_PER_ELEMENT,(t+1)*n/g.data.BYTES_PER_ELEMENT);r.compressedTexSubImage3D(e.TEXTURE_2D_ARRAY,a,0,0,t,g.width,g.height,1,i,o)}s.clearLayerUpdates()}else r.compressedTexSubImage3D(e.TEXTURE_2D_ARRAY,a,0,0,0,g.width,g.height,n.depth,i,g.data)}}else r.compressedTexImage3D(e.TEXTURE_2D_ARRAY,a,h,g.width,g.height,n.depth,0,g.data,0,0)}else t.In(`WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()`)}else w?E&&r.texSubImage3D(e.TEXTURE_2D_ARRAY,a,0,0,0,g.width,g.height,n.depth,i,m,g.data):r.texImage3D(e.TEXTURE_2D_ARRAY,a,h,g.width,g.height,n.depth,0,i,m,g.data)}else{w&&T&&r.texStorage2D(e.TEXTURE_2D,D,h,b[0].width,b[0].height);for(let n=0,a=b.length;n<a;n++)g=b[n],s.format===1023?w?E&&r.texSubImage2D(e.TEXTURE_2D,n,0,0,g.width,g.height,i,m,g.data):r.texImage2D(e.TEXTURE_2D,n,h,g.width,g.height,0,i,m,g.data):i===null?t.In(`WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()`):w?E&&r.compressedTexSubImage2D(e.TEXTURE_2D,n,0,0,g.width,g.height,i,g.data):r.compressedTexImage2D(e.TEXTURE_2D,n,h,g.width,g.height,0,g.data)}}else if(s.isDataArrayTexture){if(w){if(T&&r.texStorage3D(e.TEXTURE_2D_ARRAY,D,h,n.width,n.height,n.depth),E){if(s.layerUpdates.size>0){let a=t.jn(n.width,n.height,s.format,s.type);for(let t of s.layerUpdates){let o=n.data.subarray(t*a/n.data.BYTES_PER_ELEMENT,(t+1)*a/n.data.BYTES_PER_ELEMENT);r.texSubImage3D(e.TEXTURE_2D_ARRAY,0,0,0,t,n.width,n.height,1,i,m,o)}s.clearLayerUpdates()}else r.texSubImage3D(e.TEXTURE_2D_ARRAY,0,0,0,0,n.width,n.height,n.depth,i,m,n.data)}}else r.texImage3D(e.TEXTURE_2D_ARRAY,0,h,n.width,n.height,n.depth,0,i,m,n.data)}else if(s.isData3DTexture)w?(T&&r.texStorage3D(e.TEXTURE_3D,D,h,n.width,n.height,n.depth),E&&r.texSubImage3D(e.TEXTURE_3D,0,0,0,0,n.width,n.height,n.depth,i,m,n.data)):r.texImage3D(e.TEXTURE_3D,0,h,n.width,n.height,n.depth,0,i,m,n.data);else if(s.isFramebufferTexture){if(T){if(w)r.texStorage2D(e.TEXTURE_2D,D,h,n.width,n.height);else{let t=n.width,a=n.height;for(let n=0;n<D;n++)r.texImage2D(e.TEXTURE_2D,n,h,t,a,0,i,m,null),t>>=1,a>>=1}}}else if(s.isHTMLTexture){if(`texElementImage2D`in e){let t=e.canvas;if(t.hasAttribute(`layoutsubtree`)||t.setAttribute(`layoutsubtree`,`true`),n.parentNode!==t){t.appendChild(n),f.add(s),t.onpaint=e=>{let t=e.changedElements;for(let e of f)t.includes(e.image)&&(e.needsUpdate=!0)},t.requestPaint();return}if(e.texElementImage2D.length===3)e.texElementImage2D(e.TEXTURE_2D,e.RGBA8,n);else{let t=e.RGBA,r=e.RGBA,i=e.UNSIGNED_BYTE;e.texElementImage2D(e.TEXTURE_2D,0,t,r,i,n)}e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,e.LINEAR),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)}}else if(b.length>0){if(w&&T){let t=ge(b[0]);r.texStorage2D(e.TEXTURE_2D,D,h,t.width,t.height)}for(let t=0,n=b.length;t<n;t++)g=b[t],w?E&&r.texSubImage2D(e.TEXTURE_2D,t,0,0,i,m,g):r.texImage2D(e.TEXTURE_2D,t,h,i,m,g);s.generateMipmaps=!1}else if(w){if(T){let t=ge(n);r.texStorage2D(e.TEXTURE_2D,D,h,t.width,t.height)}E&&r.texSubImage2D(e.TEXTURE_2D,0,0,0,i,m,n)}else r.texImage2D(e.TEXTURE_2D,0,h,i,m,n);v(s)&&y(l),p.__version=d.version,s.onUpdate&&s.onUpdate(s)}n.__version=s.version}function le(n,s,c){if(s.image.length!==6)return;let l=oe(n,s),u=s.source;r.bindTexture(e.TEXTURE_CUBE_MAP,n.__webglTexture,e.TEXTURE0+c);let d=i.get(u);if(u.version!==d.__version||l===!0){r.activeTexture(e.TEXTURE0+c);let n=t._.getPrimaries(t._.workingColorSpace),i=s.colorSpace===``?null:t._.getPrimaries(s.colorSpace),f=s.colorSpace===``||n===i?e.NONE:e.BROWSER_DEFAULT_WEBGL;r.pixelStorei(e.UNPACK_FLIP_Y_WEBGL,s.flipY),r.pixelStorei(e.UNPACK_PREMULTIPLY_ALPHA_WEBGL,s.premultiplyAlpha),r.pixelStorei(e.UNPACK_ALIGNMENT,s.unpackAlignment),r.pixelStorei(e.UNPACK_COLORSPACE_CONVERSION_WEBGL,f);let p=s.isCompressedTexture||s.image[0].isCompressedTexture,m=s.image[0]&&s.image[0].isDataTexture,h=[];for(let e=0;e<6;e++)!p&&!m?h[e]=_(s.image[e],!0,a.maxCubemapSize):h[e]=m?s.image[e].image:s.image[e],h[e]=he(s,h[e]);let g=h[0],b=o.convert(s.format,s.colorSpace),S=o.convert(s.type),w=x(s.internalFormat,b,S,s.normalized,s.colorSpace),T=s.isVideoTexture!==!0,E=d.__version===void 0||l===!0,D=u.dataReady,O=C(s,g);ae(e.TEXTURE_CUBE_MAP,s);let k;if(p){T&&E&&r.texStorage2D(e.TEXTURE_CUBE_MAP,O,w,g.width,g.height);for(let n=0;n<6;n++){k=h[n].mipmaps;for(let i=0;i<k.length;i++){let a=k[i];s.format===1023?T?D&&r.texSubImage2D(e.TEXTURE_CUBE_MAP_POSITIVE_X+n,i,0,0,a.width,a.height,b,S,a.data):r.texImage2D(e.TEXTURE_CUBE_MAP_POSITIVE_X+n,i,w,a.width,a.height,0,b,S,a.data):b===null?t.In(`WebGLRenderer: Attempt to load unsupported compressed texture format in .setTextureCube()`):T?D&&r.compressedTexSubImage2D(e.TEXTURE_CUBE_MAP_POSITIVE_X+n,i,0,0,a.width,a.height,b,a.data):r.compressedTexImage2D(e.TEXTURE_CUBE_MAP_POSITIVE_X+n,i,w,a.width,a.height,0,a.data)}}}else{if(k=s.mipmaps,T&&E){k.length>0&&O++;let t=ge(h[0]);r.texStorage2D(e.TEXTURE_CUBE_MAP,O,w,t.width,t.height)}for(let t=0;t<6;t++)if(m){T?D&&r.texSubImage2D(e.TEXTURE_CUBE_MAP_POSITIVE_X+t,0,0,0,h[t].width,h[t].height,b,S,h[t].data):r.texImage2D(e.TEXTURE_CUBE_MAP_POSITIVE_X+t,0,w,h[t].width,h[t].height,0,b,S,h[t].data);for(let n=0;n<k.length;n++){let i=k[n].image[t].image;T?D&&r.texSubImage2D(e.TEXTURE_CUBE_MAP_POSITIVE_X+t,n+1,0,0,i.width,i.height,b,S,i.data):r.texImage2D(e.TEXTURE_CUBE_MAP_POSITIVE_X+t,n+1,w,i.width,i.height,0,b,S,i.data)}}else{T?D&&r.texSubImage2D(e.TEXTURE_CUBE_MAP_POSITIVE_X+t,0,0,0,b,S,h[t]):r.texImage2D(e.TEXTURE_CUBE_MAP_POSITIVE_X+t,0,w,b,S,h[t]);for(let n=0;n<k.length;n++){let i=k[n];T?D&&r.texSubImage2D(e.TEXTURE_CUBE_MAP_POSITIVE_X+t,n+1,0,0,b,S,i.image[t]):r.texImage2D(e.TEXTURE_CUBE_MAP_POSITIVE_X+t,n+1,w,b,S,i.image[t])}}}v(s)&&y(e.TEXTURE_CUBE_MAP),d.__version=u.version,s.onUpdate&&s.onUpdate(s)}n.__version=s.version}function R(t,n,a,s,l,u){let d=o.convert(a.format,a.colorSpace),f=o.convert(a.type),p=x(a.internalFormat,d,f,a.normalized,a.colorSpace),m=i.get(n),h=i.get(a);if(h.__renderTarget=n,!m.__hasExternalTextures){let t=Math.max(1,n.width>>u),i=Math.max(1,n.height>>u);l===e.TEXTURE_3D||l===e.TEXTURE_2D_ARRAY?r.texImage3D(l,u,p,t,i,n.depth,0,d,f,null):r.texImage2D(l,u,p,t,i,0,d,f,null)}r.bindFramebuffer(e.FRAMEBUFFER,t),G(n)?c.framebufferTexture2DMultisampleEXT(e.FRAMEBUFFER,s,l,h.__webglTexture,0,W(n)):(l===e.TEXTURE_2D||l>=e.TEXTURE_CUBE_MAP_POSITIVE_X&&l<=e.TEXTURE_CUBE_MAP_NEGATIVE_Z)&&e.framebufferTexture2D(e.FRAMEBUFFER,s,l,h.__webglTexture,u),r.bindFramebuffer(e.FRAMEBUFFER,null)}function z(t,n,r){if(e.bindRenderbuffer(e.RENDERBUFFER,t),n.depthBuffer){let i=n.depthTexture,a=i&&i.isDepthTexture?i.type:null,o=S(n.stencilBuffer,a),s=n.stencilBuffer?e.DEPTH_STENCIL_ATTACHMENT:e.DEPTH_ATTACHMENT;G(n)?c.renderbufferStorageMultisampleEXT(e.RENDERBUFFER,W(n),o,n.width,n.height):r?e.renderbufferStorageMultisample(e.RENDERBUFFER,W(n),o,n.width,n.height):e.renderbufferStorage(e.RENDERBUFFER,o,n.width,n.height),e.framebufferRenderbuffer(e.FRAMEBUFFER,s,e.RENDERBUFFER,t)}else{let t=n.textures;for(let i=0;i<t.length;i++){let a=t[i],s=o.convert(a.format,a.colorSpace),l=o.convert(a.type),u=x(a.internalFormat,s,l,a.normalized,a.colorSpace);G(n)?c.renderbufferStorageMultisampleEXT(e.RENDERBUFFER,W(n),u,n.width,n.height):r?e.renderbufferStorageMultisample(e.RENDERBUFFER,W(n),u,n.width,n.height):e.renderbufferStorage(e.RENDERBUFFER,u,n.width,n.height)}}e.bindRenderbuffer(e.RENDERBUFFER,null)}function B(t,n,a){let s=n.isWebGLCubeRenderTarget===!0;if(r.bindFramebuffer(e.FRAMEBUFFER,t),!(n.depthTexture&&n.depthTexture.isDepthTexture))throw Error(`THREE.WebGLTextures: renderTarget.depthTexture must be an instance of THREE.DepthTexture.`);let l=i.get(n.depthTexture);if(l.__renderTarget=n,(!l.__webglTexture||n.depthTexture.image.width!==n.width||n.depthTexture.image.height!==n.height)&&(n.depthTexture.image.width=n.width,n.depthTexture.image.height=n.height,n.depthTexture.needsUpdate=!0),s){if(l.__webglInit===void 0&&(l.__webglInit=!0,n.depthTexture.addEventListener(`dispose`,w)),l.__webglTexture===void 0){l.__webglTexture=e.createTexture(),r.bindTexture(e.TEXTURE_CUBE_MAP,l.__webglTexture),ae(e.TEXTURE_CUBE_MAP,n.depthTexture);let t=o.convert(n.depthTexture.format),i=o.convert(n.depthTexture.type),a;n.depthTexture.format===1026?a=e.DEPTH_COMPONENT24:n.depthTexture.format===1027&&(a=e.DEPTH24_STENCIL8);for(let r=0;r<6;r++)e.texImage2D(e.TEXTURE_CUBE_MAP_POSITIVE_X+r,0,a,n.width,n.height,0,t,i,null)}}else P(n.depthTexture,0);let u=l.__webglTexture,d=W(n),f=s?e.TEXTURE_CUBE_MAP_POSITIVE_X+a:e.TEXTURE_2D,p=n.depthTexture.format===1027?e.DEPTH_STENCIL_ATTACHMENT:e.DEPTH_ATTACHMENT;if(n.depthTexture.format===1026)G(n)?c.framebufferTexture2DMultisampleEXT(e.FRAMEBUFFER,p,f,u,0,d):e.framebufferTexture2D(e.FRAMEBUFFER,p,f,u,0);else if(n.depthTexture.format===1027)G(n)?c.framebufferTexture2DMultisampleEXT(e.FRAMEBUFFER,p,f,u,0,d):e.framebufferTexture2D(e.FRAMEBUFFER,p,f,u,0);else throw Error(`THREE.WebGLTextures: Unknown depthTexture format.`)}function V(t){let n=i.get(t),a=t.isWebGLCubeRenderTarget===!0;if(n.__boundDepthTexture!==t.depthTexture){let e=t.depthTexture;if(n.__depthDisposeCallback&&n.__depthDisposeCallback(),e){let t=()=>{delete n.__boundDepthTexture,delete n.__depthDisposeCallback,e.removeEventListener(`dispose`,t)};e.addEventListener(`dispose`,t),n.__depthDisposeCallback=t}n.__boundDepthTexture=e}if(t.depthTexture&&!n.__autoAllocateDepthBuffer){if(a)for(let e=0;e<6;e++)B(n.__webglFramebuffer[e],t,e);else{let e=t.texture.mipmaps;e&&e.length>0?B(n.__webglFramebuffer[0],t,0):B(n.__webglFramebuffer,t,0)}}else if(a){n.__webglDepthbuffer=[];for(let i=0;i<6;i++)if(r.bindFramebuffer(e.FRAMEBUFFER,n.__webglFramebuffer[i]),n.__webglDepthbuffer[i]===void 0)n.__webglDepthbuffer[i]=e.createRenderbuffer(),z(n.__webglDepthbuffer[i],t,!1);else{let r=t.stencilBuffer?e.DEPTH_STENCIL_ATTACHMENT:e.DEPTH_ATTACHMENT,a=n.__webglDepthbuffer[i];e.bindRenderbuffer(e.RENDERBUFFER,a),e.framebufferRenderbuffer(e.FRAMEBUFFER,r,e.RENDERBUFFER,a)}}else{let i=t.texture.mipmaps;if(i&&i.length>0?r.bindFramebuffer(e.FRAMEBUFFER,n.__webglFramebuffer[0]):r.bindFramebuffer(e.FRAMEBUFFER,n.__webglFramebuffer),n.__webglDepthbuffer===void 0)n.__webglDepthbuffer=e.createRenderbuffer(),z(n.__webglDepthbuffer,t,!1);else{let r=t.stencilBuffer?e.DEPTH_STENCIL_ATTACHMENT:e.DEPTH_ATTACHMENT,i=n.__webglDepthbuffer;e.bindRenderbuffer(e.RENDERBUFFER,i),e.framebufferRenderbuffer(e.FRAMEBUFFER,r,e.RENDERBUFFER,i)}}r.bindFramebuffer(e.FRAMEBUFFER,null)}function H(t,n,r){let a=i.get(t);n!==void 0&&R(a.__webglFramebuffer,t,t.texture,e.COLOR_ATTACHMENT0,e.TEXTURE_2D,0),r!==void 0&&V(t)}function ue(t){let n=t.texture,a=i.get(t),c=i.get(n);t.addEventListener(`dispose`,T);let l=t.textures,u=t.isWebGLCubeRenderTarget===!0,d=l.length>1;if(d||(c.__webglTexture===void 0&&(c.__webglTexture=e.createTexture()),c.__version=n.version,s.memory.textures++),u){a.__webglFramebuffer=[];for(let t=0;t<6;t++)if(n.mipmaps&&n.mipmaps.length>0){a.__webglFramebuffer[t]=[];for(let r=0;r<n.mipmaps.length;r++)a.__webglFramebuffer[t][r]=e.createFramebuffer()}else a.__webglFramebuffer[t]=e.createFramebuffer()}else{if(n.mipmaps&&n.mipmaps.length>0){a.__webglFramebuffer=[];for(let t=0;t<n.mipmaps.length;t++)a.__webglFramebuffer[t]=e.createFramebuffer()}else a.__webglFramebuffer=e.createFramebuffer();if(d)for(let t=0,n=l.length;t<n;t++){let n=i.get(l[t]);n.__webglTexture===void 0&&(n.__webglTexture=e.createTexture(),s.memory.textures++)}if(t.samples>0&&G(t)===!1){a.__webglMultisampledFramebuffer=e.createFramebuffer(),a.__webglColorRenderbuffer=[],r.bindFramebuffer(e.FRAMEBUFFER,a.__webglMultisampledFramebuffer);for(let n=0;n<l.length;n++){let r=l[n];a.__webglColorRenderbuffer[n]=e.createRenderbuffer(),e.bindRenderbuffer(e.RENDERBUFFER,a.__webglColorRenderbuffer[n]);let i=o.convert(r.format,r.colorSpace),s=o.convert(r.type),c=x(r.internalFormat,i,s,r.normalized,r.colorSpace,t.isXRRenderTarget===!0),u=W(t);e.renderbufferStorageMultisample(e.RENDERBUFFER,u,c,t.width,t.height),e.framebufferRenderbuffer(e.FRAMEBUFFER,e.COLOR_ATTACHMENT0+n,e.RENDERBUFFER,a.__webglColorRenderbuffer[n])}e.bindRenderbuffer(e.RENDERBUFFER,null),t.depthBuffer&&(a.__webglDepthRenderbuffer=e.createRenderbuffer(),z(a.__webglDepthRenderbuffer,t,!0)),r.bindFramebuffer(e.FRAMEBUFFER,null)}}if(u){r.bindTexture(e.TEXTURE_CUBE_MAP,c.__webglTexture),ae(e.TEXTURE_CUBE_MAP,n);for(let r=0;r<6;r++)if(n.mipmaps&&n.mipmaps.length>0)for(let i=0;i<n.mipmaps.length;i++)R(a.__webglFramebuffer[r][i],t,n,e.COLOR_ATTACHMENT0,e.TEXTURE_CUBE_MAP_POSITIVE_X+r,i);else R(a.__webglFramebuffer[r],t,n,e.COLOR_ATTACHMENT0,e.TEXTURE_CUBE_MAP_POSITIVE_X+r,0);v(n)&&y(e.TEXTURE_CUBE_MAP),r.unbindTexture()}else if(d){for(let n=0,o=l.length;n<o;n++){let o=l[n],s=i.get(o),c=e.TEXTURE_2D;(t.isWebGL3DRenderTarget||t.isWebGLArrayRenderTarget)&&(c=t.isWebGL3DRenderTarget?e.TEXTURE_3D:e.TEXTURE_2D_ARRAY),r.bindTexture(c,s.__webglTexture),ae(c,o),R(a.__webglFramebuffer,t,o,e.COLOR_ATTACHMENT0+n,c,0),v(o)&&y(c)}r.unbindTexture()}else{let i=e.TEXTURE_2D;if((t.isWebGL3DRenderTarget||t.isWebGLArrayRenderTarget)&&(i=t.isWebGL3DRenderTarget?e.TEXTURE_3D:e.TEXTURE_2D_ARRAY),r.bindTexture(i,c.__webglTexture),ae(i,n),n.mipmaps&&n.mipmaps.length>0)for(let r=0;r<n.mipmaps.length;r++)R(a.__webglFramebuffer[r],t,n,e.COLOR_ATTACHMENT0,i,r);else R(a.__webglFramebuffer,t,n,e.COLOR_ATTACHMENT0,i,0);v(n)&&y(i),r.unbindTexture()}t.depthBuffer&&V(t)}function de(e){let t=e.textures;for(let n=0,a=t.length;n<a;n++){let a=t[n];if(v(a)){let t=b(e),n=i.get(a).__webglTexture;r.bindTexture(t,n),y(t),r.unbindTexture()}}}let fe=[],pe=[];function U(t){if(t.samples>0){if(G(t)===!1){let n=t.textures,a=t.width,o=t.height,s=e.COLOR_BUFFER_BIT,c=t.stencilBuffer?e.DEPTH_STENCIL_ATTACHMENT:e.DEPTH_ATTACHMENT,u=i.get(t),d=n.length>1;if(d)for(let t=0;t<n.length;t++)r.bindFramebuffer(e.FRAMEBUFFER,u.__webglMultisampledFramebuffer),e.framebufferRenderbuffer(e.FRAMEBUFFER,e.COLOR_ATTACHMENT0+t,e.RENDERBUFFER,null),r.bindFramebuffer(e.FRAMEBUFFER,u.__webglFramebuffer),e.framebufferTexture2D(e.DRAW_FRAMEBUFFER,e.COLOR_ATTACHMENT0+t,e.TEXTURE_2D,null,0);r.bindFramebuffer(e.READ_FRAMEBUFFER,u.__webglMultisampledFramebuffer);let f=t.texture.mipmaps;f&&f.length>0?r.bindFramebuffer(e.DRAW_FRAMEBUFFER,u.__webglFramebuffer[0]):r.bindFramebuffer(e.DRAW_FRAMEBUFFER,u.__webglFramebuffer);for(let r=0;r<n.length;r++){if(t.resolveDepthBuffer&&(t.depthBuffer&&(s|=e.DEPTH_BUFFER_BIT),t.stencilBuffer&&t.resolveStencilBuffer&&(s|=e.STENCIL_BUFFER_BIT)),d){e.framebufferRenderbuffer(e.READ_FRAMEBUFFER,e.COLOR_ATTACHMENT0,e.RENDERBUFFER,u.__webglColorRenderbuffer[r]);let t=i.get(n[r]).__webglTexture;e.framebufferTexture2D(e.DRAW_FRAMEBUFFER,e.COLOR_ATTACHMENT0,e.TEXTURE_2D,t,0)}e.blitFramebuffer(0,0,a,o,0,0,a,o,s,e.NEAREST),l===!0&&(fe.length=0,pe.length=0,fe.push(e.COLOR_ATTACHMENT0+r),t.depthBuffer&&t.resolveDepthBuffer===!1&&(fe.push(c),pe.push(c),e.invalidateFramebuffer(e.DRAW_FRAMEBUFFER,pe)),e.invalidateFramebuffer(e.READ_FRAMEBUFFER,fe))}if(r.bindFramebuffer(e.READ_FRAMEBUFFER,null),r.bindFramebuffer(e.DRAW_FRAMEBUFFER,null),d)for(let t=0;t<n.length;t++){r.bindFramebuffer(e.FRAMEBUFFER,u.__webglMultisampledFramebuffer),e.framebufferRenderbuffer(e.FRAMEBUFFER,e.COLOR_ATTACHMENT0+t,e.RENDERBUFFER,u.__webglColorRenderbuffer[t]);let a=i.get(n[t]).__webglTexture;r.bindFramebuffer(e.FRAMEBUFFER,u.__webglFramebuffer),e.framebufferTexture2D(e.DRAW_FRAMEBUFFER,e.COLOR_ATTACHMENT0+t,e.TEXTURE_2D,a,0)}r.bindFramebuffer(e.DRAW_FRAMEBUFFER,u.__webglMultisampledFramebuffer)}else if(t.depthBuffer&&t.resolveDepthBuffer===!1&&l){let n=t.stencilBuffer?e.DEPTH_STENCIL_ATTACHMENT:e.DEPTH_ATTACHMENT;e.invalidateFramebuffer(e.DRAW_FRAMEBUFFER,[n])}}}function W(e){return Math.min(a.maxSamples,e.samples)}function G(e){let t=i.get(e);return e.samples>0&&n.has(`WEBGL_multisampled_render_to_texture`)===!0&&t.__useRenderToTexture!==!1}function me(e){let t=s.render.frame;d.get(e)!==t&&(d.set(e,t),e.update())}function he(e,n){let r=e.colorSpace,i=e.format,a=e.type;return e.isCompressedTexture===!0||e.isVideoTexture===!0||r!==`srgb-linear`&&r!==``&&(t._.getTransfer(r)===`srgb`?(i!==1023||a!==1009)&&t.In(`WebGLTextures: sRGB encoded textures have to use RGBAFormat and UnsignedByteType.`):t.An(`WebGLTextures: Unsupported texture color space:`,r)),n}function ge(e){return typeof HTMLImageElement<`u`&&e instanceof HTMLImageElement?(u.width=e.naturalWidth||e.width,u.height=e.naturalHeight||e.height):typeof VideoFrame<`u`&&e instanceof VideoFrame?(u.width=e.displayWidth,u.height=e.displayHeight):(u.width=e.width,u.height=e.height),u}this.allocateTextureUnit=N,this.resetTextureUnits=A,this.getTextureUnits=j,this.setTextureUnits=M,this.setTexture2D=P,this.setTexture2DArray=F,this.setTexture3D=I,this.setTextureCube=te,this.rebindTextures=H,this.setupRenderTarget=ue,this.updateRenderTargetMipmap=de,this.updateMultisampleRenderTarget=U,this.setupDepthRenderbuffer=V,this.setupFrameBufferTexture=R,this.useMultisampledRTT=G,this.isReversedDepthBuffer=function(){return r.buffers.depth.getReversed()}}function fn(e,n){function r(r,i=``){let a,o=t._.getTransfer(i);if(r===1009)return e.UNSIGNED_BYTE;if(r===1017)return e.UNSIGNED_SHORT_4_4_4_4;if(r===1018)return e.UNSIGNED_SHORT_5_5_5_1;if(r===35902)return e.UNSIGNED_INT_5_9_9_9_REV;if(r===35899)return e.UNSIGNED_INT_10F_11F_11F_REV;if(r===1010)return e.BYTE;if(r===1011)return e.SHORT;if(r===1012)return e.UNSIGNED_SHORT;if(r===1013)return e.INT;if(r===1014)return e.UNSIGNED_INT;if(r===1015)return e.FLOAT;if(r===1016)return e.HALF_FLOAT;if(r===1021)return e.ALPHA;if(r===1022)return e.RGB;if(r===1023)return e.RGBA;if(r===1026)return e.DEPTH_COMPONENT;if(r===1027)return e.DEPTH_STENCIL;if(r===1028)return e.RED;if(r===1029)return e.RED_INTEGER;if(r===1030)return e.RG;if(r===1031)return e.RG_INTEGER;if(r===1033)return e.RGBA_INTEGER;if(r===33776||r===33777||r===33778||r===33779){if(o===`srgb`){if(a=n.get(`WEBGL_compressed_texture_s3tc_srgb`),a!==null){if(r===33776)return a.COMPRESSED_SRGB_S3TC_DXT1_EXT;if(r===33777)return a.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT;if(r===33778)return a.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT;if(r===33779)return a.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT}else return null}else if(a=n.get(`WEBGL_compressed_texture_s3tc`),a!==null){if(r===33776)return a.COMPRESSED_RGB_S3TC_DXT1_EXT;if(r===33777)return a.COMPRESSED_RGBA_S3TC_DXT1_EXT;if(r===33778)return a.COMPRESSED_RGBA_S3TC_DXT3_EXT;if(r===33779)return a.COMPRESSED_RGBA_S3TC_DXT5_EXT}else return null}if(r===35840||r===35841||r===35842||r===35843){if(a=n.get(`WEBGL_compressed_texture_pvrtc`),a!==null){if(r===35840)return a.COMPRESSED_RGB_PVRTC_4BPPV1_IMG;if(r===35841)return a.COMPRESSED_RGB_PVRTC_2BPPV1_IMG;if(r===35842)return a.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;if(r===35843)return a.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG}else return null}if(r===36196||r===37492||r===37496||r===37488||r===37489||r===37490||r===37491){if(a=n.get(`WEBGL_compressed_texture_etc`),a!==null){if(r===36196||r===37492)return o===`srgb`?a.COMPRESSED_SRGB8_ETC2:a.COMPRESSED_RGB8_ETC2;if(r===37496)return o===`srgb`?a.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC:a.COMPRESSED_RGBA8_ETC2_EAC;if(r===37488)return a.COMPRESSED_R11_EAC;if(r===37489)return a.COMPRESSED_SIGNED_R11_EAC;if(r===37490)return a.COMPRESSED_RG11_EAC;if(r===37491)return a.COMPRESSED_SIGNED_RG11_EAC}else return null}if(r===37808||r===37809||r===37810||r===37811||r===37812||r===37813||r===37814||r===37815||r===37816||r===37817||r===37818||r===37819||r===37820||r===37821){if(a=n.get(`WEBGL_compressed_texture_astc`),a!==null){if(r===37808)return o===`srgb`?a.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR:a.COMPRESSED_RGBA_ASTC_4x4_KHR;if(r===37809)return o===`srgb`?a.COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR:a.COMPRESSED_RGBA_ASTC_5x4_KHR;if(r===37810)return o===`srgb`?a.COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR:a.COMPRESSED_RGBA_ASTC_5x5_KHR;if(r===37811)return o===`srgb`?a.COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR:a.COMPRESSED_RGBA_ASTC_6x5_KHR;if(r===37812)return o===`srgb`?a.COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR:a.COMPRESSED_RGBA_ASTC_6x6_KHR;if(r===37813)return o===`srgb`?a.COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR:a.COMPRESSED_RGBA_ASTC_8x5_KHR;if(r===37814)return o===`srgb`?a.COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR:a.COMPRESSED_RGBA_ASTC_8x6_KHR;if(r===37815)return o===`srgb`?a.COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR:a.COMPRESSED_RGBA_ASTC_8x8_KHR;if(r===37816)return o===`srgb`?a.COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR:a.COMPRESSED_RGBA_ASTC_10x5_KHR;if(r===37817)return o===`srgb`?a.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR:a.COMPRESSED_RGBA_ASTC_10x6_KHR;if(r===37818)return o===`srgb`?a.COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR:a.COMPRESSED_RGBA_ASTC_10x8_KHR;if(r===37819)return o===`srgb`?a.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR:a.COMPRESSED_RGBA_ASTC_10x10_KHR;if(r===37820)return o===`srgb`?a.COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR:a.COMPRESSED_RGBA_ASTC_12x10_KHR;if(r===37821)return o===`srgb`?a.COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR:a.COMPRESSED_RGBA_ASTC_12x12_KHR}else return null}if(r===36492||r===36494||r===36495){if(a=n.get(`EXT_texture_compression_bptc`),a!==null){if(r===36492)return o===`srgb`?a.COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT:a.COMPRESSED_RGBA_BPTC_UNORM_EXT;if(r===36494)return a.COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT;if(r===36495)return a.COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT}else return null}if(r===36283||r===36284||r===36285||r===36286){if(a=n.get(`EXT_texture_compression_rgtc`),a!==null){if(r===36283)return a.COMPRESSED_RED_RGTC1_EXT;if(r===36284)return a.COMPRESSED_SIGNED_RED_RGTC1_EXT;if(r===36285)return a.COMPRESSED_RED_GREEN_RGTC2_EXT;if(r===36286)return a.COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT}else return null}return r===1020?e.UNSIGNED_INT_24_8:e[r]===void 0?null:e[r]}return{convert:r}}var pn=`
4080
+ }`,rn=[new t.Cn(1,0,0),new t.Cn(-1,0,0),new t.Cn(0,1,0),new t.Cn(0,-1,0),new t.Cn(0,0,1),new t.Cn(0,0,-1)],an=[new t.Cn(0,-1,0),new t.Cn(0,-1,0),new t.Cn(0,0,1),new t.Cn(0,0,-1),new t.Cn(0,-1,0),new t.Cn(0,-1,0)],on=new t.J,sn=new t.Cn,cn=new t.Cn;function ln(e,n,r){let i=new t.N,a=new t.Sn,o=new t.Sn,s=new t.wn,c=new t.Z,l=new t.Q,u={},d=r.maxTextureSize,f={0:1,1:0,2:2},p=new t.on({defines:{VSM_SAMPLES:8},uniforms:{shadow_pass:{value:null},resolution:{value:new t.Sn},radius:{value:4}},vertexShader:tn,fragmentShader:nn}),m=p.clone();m.defines.HORIZONTAL_PASS=1;let h=new t.p;h.setAttribute(`position`,new t.f(new Float32Array([-1,-1,.5,3,-1,.5,-1,3,.5]),3));let g=new t.Y(h,p),_=this;this.enabled=!1,this.autoUpdate=!0,this.needsUpdate=!1,this.type=1;let v=this.type;this.render=function(n,r,c){if(_.enabled===!1||_.autoUpdate===!1&&_.needsUpdate===!1||n.length===0)return;this.type===2&&(t.Ln(`WebGLShadowMap: PCFSoftShadowMap has been deprecated. Using PCFShadowMap instead.`),this.type=1);let l=e.getRenderTarget(),u=e.getActiveCubeFace(),f=e.getActiveMipmapLevel(),p=e.state;p.setBlending(0),p.buffers.depth.getReversed()===!0?p.buffers.color.setClear(0,0,0,0):p.buffers.color.setClear(1,1,1,1),p.buffers.depth.setTest(!0),p.setScissorTest(!1);let m=v!==this.type;m&&r.traverse(function(e){e.material&&(Array.isArray(e.material)?e.material.forEach(e=>e.needsUpdate=!0):e.material.needsUpdate=!0)});for(let l=0,u=n.length;l<u;l++){let u=n[l],f=u.shadow;if(f===void 0){t.Ln(`WebGLShadowMap:`,u,`has no shadow.`);continue}if(f.autoUpdate===!1&&f.needsUpdate===!1)continue;a.copy(f.mapSize);let h=f.getFrameExtents();a.multiply(h),o.copy(f.mapSize),(a.x>d||a.y>d)&&(a.x>d&&(o.x=Math.floor(d/h.x),a.x=o.x*h.x,f.mapSize.x=o.x),a.y>d&&(o.y=Math.floor(d/h.y),a.y=o.y*h.y,f.mapSize.y=o.y));let g=e.state.buffers.depth.getReversed();if(f.camera._reversedDepth=g,f.map===null||m===!0){if(f.map!==null&&(f.map.depthTexture!==null&&(f.map.depthTexture.dispose(),f.map.depthTexture=null),f.map.dispose()),this.type===3){if(u.isPointLight){t.Ln(`WebGLShadowMap: VSM shadow maps are not supported for PointLights. Use PCF or BasicShadowMap instead.`);continue}f.map=new t.En(a.x,a.y,{format:t.Gt,type:t.L,minFilter:t.B,magFilter:t.B,generateMipmaps:!1}),f.map.texture.name=u.name+`.shadowMap`,f.map.depthTexture=new t.D(a.x,a.y,t.M),f.map.depthTexture.name=u.name+`.shadowMapDepth`,f.map.depthTexture.format=t.T,f.map.depthTexture.compareFunction=null,f.map.depthTexture.minFilter=t.et,f.map.depthTexture.magFilter=t.et}else u.isPointLight?(f.map=new I(a.x),f.map.depthTexture=new t.b(a.x,t.vn)):(f.map=new t.En(a.x,a.y),f.map.depthTexture=new t.D(a.x,a.y,t.vn)),f.map.depthTexture.name=u.name+`.shadowMap`,f.map.depthTexture.format=t.T,this.type===1?(f.map.depthTexture.compareFunction=g?518:515,f.map.depthTexture.minFilter=t.B,f.map.depthTexture.magFilter=t.B):(f.map.depthTexture.compareFunction=null,f.map.depthTexture.minFilter=t.et,f.map.depthTexture.magFilter=t.et);f.camera.updateProjectionMatrix()}let _=f.map.isWebGLCubeRenderTarget?6:1;for(let t=0;t<_;t++){if(f.map.isWebGLCubeRenderTarget)e.setRenderTarget(f.map,t),e.clear();else{t===0&&(e.setRenderTarget(f.map),e.clear());let n=f.getViewport(t);s.set(o.x*n.x,o.y*n.y,o.x*n.z,o.y*n.w),p.viewport(s)}if(u.isPointLight){let e=f.camera,n=f.matrix,r=u.distance||e.far;r!==e.far&&(e.far=r,e.updateProjectionMatrix()),sn.setFromMatrixPosition(u.matrixWorld),e.position.copy(sn),cn.copy(e.position),cn.add(rn[t]),e.up.copy(an[t]),e.lookAt(cn),e.updateMatrixWorld(),n.makeTranslation(-sn.x,-sn.y,-sn.z),on.multiplyMatrices(e.projectionMatrix,e.matrixWorldInverse),f._frustum.setFromProjectionMatrix(on,e.coordinateSystem,e.reversedDepth)}else f.updateMatrices(u);i=f.getFrustum(),x(r,c,f.camera,u,this.type)}f.isPointLightShadow!==!0&&this.type===3&&y(f,c),f.needsUpdate=!1}v=this.type,_.needsUpdate=!1,e.setRenderTarget(l,u,f)};function y(r,i){let o=n.update(g);p.defines.VSM_SAMPLES!==r.blurSamples&&(p.defines.VSM_SAMPLES=r.blurSamples,m.defines.VSM_SAMPLES=r.blurSamples,p.needsUpdate=!0,m.needsUpdate=!0),r.mapPass===null&&(r.mapPass=new t.En(a.x,a.y,{format:t.Gt,type:t.L})),p.uniforms.shadow_pass.value=r.map.depthTexture,p.uniforms.resolution.value=r.mapSize,p.uniforms.radius.value=r.radius,e.setRenderTarget(r.mapPass),e.clear(),e.renderBufferDirect(i,null,o,p,g,null),m.uniforms.shadow_pass.value=r.mapPass.texture,m.uniforms.resolution.value=r.mapSize,m.uniforms.radius.value=r.radius,e.setRenderTarget(r.map),e.clear(),e.renderBufferDirect(i,null,o,m,g,null)}function b(t,n,r,i){let a=null,o=r.isPointLight===!0?t.customDistanceMaterial:t.customDepthMaterial;if(o!==void 0)a=o;else if(a=r.isPointLight===!0?l:c,e.localClippingEnabled&&n.clipShadows===!0&&Array.isArray(n.clippingPlanes)&&n.clippingPlanes.length!==0||n.displacementMap&&n.displacementScale!==0||n.alphaMap&&n.alphaTest>0||n.map&&n.alphaTest>0||n.alphaToCoverage===!0){let e=a.uuid,t=n.uuid,r=u[e];r===void 0&&(r={},u[e]=r);let i=r[t];i===void 0&&(i=a.clone(),r[t]=i,n.addEventListener(`dispose`,S)),a=i}if(a.visible=n.visible,a.wireframe=n.wireframe,i===3?a.side=n.shadowSide===null?n.side:n.shadowSide:a.side=n.shadowSide===null?f[n.side]:n.shadowSide,a.alphaMap=n.alphaMap,a.alphaTest=n.alphaToCoverage===!0?.5:n.alphaTest,a.map=n.map,a.clipShadows=n.clipShadows,a.clippingPlanes=n.clippingPlanes,a.clipIntersection=n.clipIntersection,a.displacementMap=n.displacementMap,a.displacementScale=n.displacementScale,a.displacementBias=n.displacementBias,a.wireframeLinewidth=n.wireframeLinewidth,a.linewidth=n.linewidth,r.isPointLight===!0&&a.isMeshDistanceMaterial===!0){let t=e.properties.get(a);t.light=r}return a}function x(t,r,a,o,s){if(t.visible===!1)return;if(t.layers.test(r.layers)&&(t.isMesh||t.isLine||t.isPoints)&&(t.castShadow||t.receiveShadow&&s===3)&&(!t.frustumCulled||i.intersectsObject(t))){t.modelViewMatrix.multiplyMatrices(a.matrixWorldInverse,t.matrixWorld);let i=n.update(t),c=t.material;if(Array.isArray(c)){let n=i.groups;for(let l=0,u=n.length;l<u;l++){let u=n[l],d=c[u.materialIndex];if(d&&d.visible){let n=b(t,d,o,s);t.onBeforeShadow(e,t,r,a,i,n,u),e.renderBufferDirect(a,null,i,n,t,u),t.onAfterShadow(e,t,r,a,i,n,u)}}}else if(c.visible){let n=b(t,c,o,s);t.onBeforeShadow(e,t,r,a,i,n,null),e.renderBufferDirect(a,null,i,n,t,null),t.onAfterShadow(e,t,r,a,i,n,null)}}let c=t.children;for(let e=0,t=c.length;e<t;e++)x(c[e],r,a,o,s)}function S(e){e.target.removeEventListener(`dispose`,S);for(let t in u){let n=u[t],r=e.target.uuid;r in n&&(n[r].dispose(),delete n[r])}}}function un(e,n){function r(){let n=!1,r=new t.wn,i=null,a=new t.wn(0,0,0,0);return{setMask:function(t){i!==t&&!n&&(e.colorMask(t,t,t,t),i=t)},setLocked:function(e){n=e},setClear:function(t,n,i,o,s){s===!0&&(t*=o,n*=o,i*=o),r.set(t,n,i,o),a.equals(r)===!1&&(e.clearColor(t,n,i,o),a.copy(r))},reset:function(){n=!1,i=null,a.set(-1,0,0,0)}}}function i(){let r=!1,i=!1,a=null,o=null,s=null;return{setReversed:function(e){if(i!==e){let t=n.get(`EXT_clip_control`);e?t.clipControlEXT(t.LOWER_LEFT_EXT,t.ZERO_TO_ONE_EXT):t.clipControlEXT(t.LOWER_LEFT_EXT,t.NEGATIVE_ONE_TO_ONE_EXT),i=e;let r=s;s=null,this.setClear(r)}},getReversed:function(){return i},setTest:function(t){t?L(e.DEPTH_TEST):ce(e.DEPTH_TEST)},setMask:function(t){a!==t&&!r&&(e.depthMask(t),a=t)},setFunc:function(n){if(i&&(n=t.Qt[n]),o!==n){switch(n){case 0:e.depthFunc(e.NEVER);break;case 1:e.depthFunc(e.ALWAYS);break;case 2:e.depthFunc(e.LESS);break;case 3:e.depthFunc(e.LEQUAL);break;case 4:e.depthFunc(e.EQUAL);break;case 5:e.depthFunc(e.GEQUAL);break;case 6:e.depthFunc(e.GREATER);break;case 7:e.depthFunc(e.NOTEQUAL);break;default:e.depthFunc(e.LEQUAL)}o=n}},setLocked:function(e){r=e},setClear:function(t){s!==t&&(s=t,i&&(t=1-t),e.clearDepth(t))},reset:function(){r=!1,a=null,o=null,s=null,i=!1}}}function a(){let t=!1,n=null,r=null,i=null,a=null,o=null,s=null,c=null,l=null;return{setTest:function(n){t||(n?L(e.STENCIL_TEST):ce(e.STENCIL_TEST))},setMask:function(r){n!==r&&!t&&(e.stencilMask(r),n=r)},setFunc:function(t,n,o){(r!==t||i!==n||a!==o)&&(e.stencilFunc(t,n,o),r=t,i=n,a=o)},setOp:function(t,n,r){(o!==t||s!==n||c!==r)&&(e.stencilOp(t,n,r),o=t,s=n,c=r)},setLocked:function(e){t=e},setClear:function(t){l!==t&&(e.clearStencil(t),l=t)},reset:function(){t=!1,n=null,r=null,i=null,a=null,o=null,s=null,c=null,l=null}}}let o=new r,s=new i,c=new a,l=new WeakMap,u=new WeakMap,d={},f={},p={},m=new WeakMap,h=[],g=null,_=!1,v=null,y=null,b=null,x=null,S=null,C=null,w=null,T=new t.g(0,0,0),E=0,D=!1,O=null,k=null,A=null,j=null,M=null,N=e.getParameter(e.MAX_COMBINED_TEXTURE_IMAGE_UNITS),ee=!1,P=0,F=e.getParameter(e.VERSION);F.indexOf(`WebGL`)===-1?F.indexOf(`OpenGL ES`)!==-1&&(P=parseFloat(/^OpenGL ES (\d)/.exec(F)[1]),ee=P>=2):(P=parseFloat(/^WebGL (\d)/.exec(F)[1]),ee=P>=1);let I=null,te={},ne=e.getParameter(e.SCISSOR_BOX),re=e.getParameter(e.VIEWPORT),ie=new t.wn().fromArray(ne),ae=new t.wn().fromArray(re);function oe(t,n,r,i){let a=new Uint8Array(4),o=e.createTexture();e.bindTexture(t,o),e.texParameteri(t,e.TEXTURE_MIN_FILTER,e.NEAREST),e.texParameteri(t,e.TEXTURE_MAG_FILTER,e.NEAREST);for(let o=0;o<r;o++)t===e.TEXTURE_3D||t===e.TEXTURE_2D_ARRAY?e.texImage3D(n,0,e.RGBA,1,1,i,0,e.RGBA,e.UNSIGNED_BYTE,a):e.texImage2D(n+o,0,e.RGBA,1,1,0,e.RGBA,e.UNSIGNED_BYTE,a);return o}let se={};se[e.TEXTURE_2D]=oe(e.TEXTURE_2D,e.TEXTURE_2D,1),se[e.TEXTURE_CUBE_MAP]=oe(e.TEXTURE_CUBE_MAP,e.TEXTURE_CUBE_MAP_POSITIVE_X,6),se[e.TEXTURE_2D_ARRAY]=oe(e.TEXTURE_2D_ARRAY,e.TEXTURE_2D_ARRAY,1,1),se[e.TEXTURE_3D]=oe(e.TEXTURE_3D,e.TEXTURE_3D,1,1),o.setClear(0,0,0,1),s.setClear(1),c.setClear(0),L(e.DEPTH_TEST),s.setFunc(3),de(!1),fe(1),L(e.CULL_FACE),H(0);function L(t){d[t]!==!0&&(e.enable(t),d[t]=!0)}function ce(t){d[t]!==!1&&(e.disable(t),d[t]=!1)}function le(t,n){return p[t]!==n&&(e.bindFramebuffer(t,n),p[t]=n,t===e.DRAW_FRAMEBUFFER&&(p[e.FRAMEBUFFER]=n),t===e.FRAMEBUFFER&&(p[e.DRAW_FRAMEBUFFER]=n),!0)}function R(t,n){let r=h,i=!1;if(t){r=m.get(n),r===void 0&&(r=[],m.set(n,r));let a=t.textures;if(r.length!==a.length||r[0]!==e.COLOR_ATTACHMENT0){for(let t=0,n=a.length;t<n;t++)r[t]=e.COLOR_ATTACHMENT0+t;r.length=a.length,i=!0}}else r[0]!==e.BACK&&(r[0]=e.BACK,i=!0);i&&e.drawBuffers(r)}function z(t){return g!==t&&(e.useProgram(t),g=t,!0)}let B={100:e.FUNC_ADD,101:e.FUNC_SUBTRACT,102:e.FUNC_REVERSE_SUBTRACT};B[103]=e.MIN,B[104]=e.MAX;let V={200:e.ZERO,201:e.ONE,202:e.SRC_COLOR,204:e.SRC_ALPHA,210:e.SRC_ALPHA_SATURATE,208:e.DST_COLOR,206:e.DST_ALPHA,203:e.ONE_MINUS_SRC_COLOR,205:e.ONE_MINUS_SRC_ALPHA,209:e.ONE_MINUS_DST_COLOR,207:e.ONE_MINUS_DST_ALPHA,211:e.CONSTANT_COLOR,212:e.ONE_MINUS_CONSTANT_COLOR,213:e.CONSTANT_ALPHA,214:e.ONE_MINUS_CONSTANT_ALPHA};function H(n,r,i,a,o,s,c,l,u,d){if(n===0){_===!0&&(ce(e.BLEND),_=!1);return}if(_===!1&&(L(e.BLEND),_=!0),n!==5){if(n!==v||d!==D){if((y!==100||S!==100)&&(e.blendEquation(e.FUNC_ADD),y=100,S=100),d)switch(n){case 1:e.blendFuncSeparate(e.ONE,e.ONE_MINUS_SRC_ALPHA,e.ONE,e.ONE_MINUS_SRC_ALPHA);break;case 2:e.blendFunc(e.ONE,e.ONE);break;case 3:e.blendFuncSeparate(e.ZERO,e.ONE_MINUS_SRC_COLOR,e.ZERO,e.ONE);break;case 4:e.blendFuncSeparate(e.DST_COLOR,e.ONE_MINUS_SRC_ALPHA,e.ZERO,e.ONE);break;default:t.jn(`WebGLState: Invalid blending: `,n)}else switch(n){case 1:e.blendFuncSeparate(e.SRC_ALPHA,e.ONE_MINUS_SRC_ALPHA,e.ONE,e.ONE_MINUS_SRC_ALPHA);break;case 2:e.blendFuncSeparate(e.SRC_ALPHA,e.ONE,e.ONE,e.ONE);break;case 3:t.jn(`WebGLState: SubtractiveBlending requires material.premultipliedAlpha = true`);break;case 4:t.jn(`WebGLState: MultiplyBlending requires material.premultipliedAlpha = true`);break;default:t.jn(`WebGLState: Invalid blending: `,n)}b=null,x=null,C=null,w=null,T.set(0,0,0),E=0,v=n,D=d}return}o||=r,s||=i,c||=a,(r!==y||o!==S)&&(e.blendEquationSeparate(B[r],B[o]),y=r,S=o),(i!==b||a!==x||s!==C||c!==w)&&(e.blendFuncSeparate(V[i],V[a],V[s],V[c]),b=i,x=a,C=s,w=c),(l.equals(T)===!1||u!==E)&&(e.blendColor(l.r,l.g,l.b,u),T.copy(l),E=u),v=n,D=!1}function ue(t,n){t.side===2?ce(e.CULL_FACE):L(e.CULL_FACE);let r=t.side===1;n&&(r=!r),de(r),t.blending===1&&t.transparent===!1?H(0):H(t.blending,t.blendEquation,t.blendSrc,t.blendDst,t.blendEquationAlpha,t.blendSrcAlpha,t.blendDstAlpha,t.blendColor,t.blendAlpha,t.premultipliedAlpha),s.setFunc(t.depthFunc),s.setTest(t.depthTest),s.setMask(t.depthWrite),o.setMask(t.colorWrite);let i=t.stencilWrite;c.setTest(i),i&&(c.setMask(t.stencilWriteMask),c.setFunc(t.stencilFunc,t.stencilRef,t.stencilFuncMask),c.setOp(t.stencilFail,t.stencilZFail,t.stencilZPass)),U(t.polygonOffset,t.polygonOffsetFactor,t.polygonOffsetUnits),t.alphaToCoverage===!0?L(e.SAMPLE_ALPHA_TO_COVERAGE):ce(e.SAMPLE_ALPHA_TO_COVERAGE)}function de(t){O!==t&&(t?e.frontFace(e.CW):e.frontFace(e.CCW),O=t)}function fe(t){t===0?ce(e.CULL_FACE):(L(e.CULL_FACE),t!==k&&(t===1?e.cullFace(e.BACK):t===2?e.cullFace(e.FRONT):e.cullFace(e.FRONT_AND_BACK))),k=t}function pe(t){t!==A&&(ee&&e.lineWidth(t),A=t)}function U(t,n,r){t?(L(e.POLYGON_OFFSET_FILL),(j!==n||M!==r)&&(j=n,M=r,s.getReversed()&&(n=-n),e.polygonOffset(n,r))):ce(e.POLYGON_OFFSET_FILL)}function W(t){t?L(e.SCISSOR_TEST):ce(e.SCISSOR_TEST)}function G(t){t===void 0&&(t=e.TEXTURE0+N-1),I!==t&&(e.activeTexture(t),I=t)}function me(t,n,r){r===void 0&&(r=I===null?e.TEXTURE0+N-1:I);let i=te[r];i===void 0&&(i={type:void 0,texture:void 0},te[r]=i),(i.type!==t||i.texture!==n)&&(I!==r&&(e.activeTexture(r),I=r),e.bindTexture(t,n||se[t]),i.type=t,i.texture=n)}function he(){let t=te[I];t!==void 0&&t.type!==void 0&&(e.bindTexture(t.type,null),t.type=void 0,t.texture=void 0)}function ge(){try{e.compressedTexImage2D(...arguments)}catch(e){t.jn(`WebGLState:`,e)}}function _e(){try{e.compressedTexImage3D(...arguments)}catch(e){t.jn(`WebGLState:`,e)}}function ve(){try{e.texSubImage2D(...arguments)}catch(e){t.jn(`WebGLState:`,e)}}function ye(){try{e.texSubImage3D(...arguments)}catch(e){t.jn(`WebGLState:`,e)}}function be(){try{e.compressedTexSubImage2D(...arguments)}catch(e){t.jn(`WebGLState:`,e)}}function xe(){try{e.compressedTexSubImage3D(...arguments)}catch(e){t.jn(`WebGLState:`,e)}}function Se(){try{e.texStorage2D(...arguments)}catch(e){t.jn(`WebGLState:`,e)}}function Ce(){try{e.texStorage3D(...arguments)}catch(e){t.jn(`WebGLState:`,e)}}function we(){try{e.texImage2D(...arguments)}catch(e){t.jn(`WebGLState:`,e)}}function Te(){try{e.texImage3D(...arguments)}catch(e){t.jn(`WebGLState:`,e)}}function Ee(t){return f[t]===void 0?e.getParameter(t):f[t]}function De(t,n){f[t]!==n&&(e.pixelStorei(t,n),f[t]=n)}function K(t){ie.equals(t)===!1&&(e.scissor(t.x,t.y,t.z,t.w),ie.copy(t))}function Oe(t){ae.equals(t)===!1&&(e.viewport(t.x,t.y,t.z,t.w),ae.copy(t))}function q(t,n){let r=u.get(n);r===void 0&&(r=new WeakMap,u.set(n,r));let i=r.get(t);i===void 0&&(i=e.getUniformBlockIndex(n,t.name),r.set(t,i))}function ke(t,n){let r=u.get(n).get(t);l.get(n)!==r&&(e.uniformBlockBinding(n,r,t.__bindingPointIndex),l.set(n,r))}function J(){e.disable(e.BLEND),e.disable(e.CULL_FACE),e.disable(e.DEPTH_TEST),e.disable(e.POLYGON_OFFSET_FILL),e.disable(e.SCISSOR_TEST),e.disable(e.STENCIL_TEST),e.disable(e.SAMPLE_ALPHA_TO_COVERAGE),e.blendEquation(e.FUNC_ADD),e.blendFunc(e.ONE,e.ZERO),e.blendFuncSeparate(e.ONE,e.ZERO,e.ONE,e.ZERO),e.blendColor(0,0,0,0),e.colorMask(!0,!0,!0,!0),e.clearColor(0,0,0,0),e.depthMask(!0),e.depthFunc(e.LESS),s.setReversed(!1),e.clearDepth(1),e.stencilMask(4294967295),e.stencilFunc(e.ALWAYS,0,4294967295),e.stencilOp(e.KEEP,e.KEEP,e.KEEP),e.clearStencil(0),e.cullFace(e.BACK),e.frontFace(e.CCW),e.polygonOffset(0,0),e.activeTexture(e.TEXTURE0),e.bindFramebuffer(e.FRAMEBUFFER,null),e.bindFramebuffer(e.DRAW_FRAMEBUFFER,null),e.bindFramebuffer(e.READ_FRAMEBUFFER,null),e.useProgram(null),e.lineWidth(1),e.scissor(0,0,e.canvas.width,e.canvas.height),e.viewport(0,0,e.canvas.width,e.canvas.height),e.pixelStorei(e.PACK_ALIGNMENT,4),e.pixelStorei(e.UNPACK_ALIGNMENT,4),e.pixelStorei(e.UNPACK_FLIP_Y_WEBGL,!1),e.pixelStorei(e.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!1),e.pixelStorei(e.UNPACK_COLORSPACE_CONVERSION_WEBGL,e.BROWSER_DEFAULT_WEBGL),e.pixelStorei(e.PACK_ROW_LENGTH,0),e.pixelStorei(e.PACK_SKIP_PIXELS,0),e.pixelStorei(e.PACK_SKIP_ROWS,0),e.pixelStorei(e.UNPACK_ROW_LENGTH,0),e.pixelStorei(e.UNPACK_IMAGE_HEIGHT,0),e.pixelStorei(e.UNPACK_SKIP_PIXELS,0),e.pixelStorei(e.UNPACK_SKIP_ROWS,0),e.pixelStorei(e.UNPACK_SKIP_IMAGES,0),d={},f={},I=null,te={},p={},m=new WeakMap,h=[],g=null,_=!1,v=null,y=null,b=null,x=null,S=null,C=null,w=null,T=new t.g(0,0,0),E=0,D=!1,O=null,k=null,A=null,j=null,M=null,ie.set(0,0,e.canvas.width,e.canvas.height),ae.set(0,0,e.canvas.width,e.canvas.height),o.reset(),s.reset(),c.reset()}return{buffers:{color:o,depth:s,stencil:c},enable:L,disable:ce,bindFramebuffer:le,drawBuffers:R,useProgram:z,setBlending:H,setMaterial:ue,setFlipSided:de,setCullFace:fe,setLineWidth:pe,setPolygonOffset:U,setScissorTest:W,activeTexture:G,bindTexture:me,unbindTexture:he,compressedTexImage2D:ge,compressedTexImage3D:_e,texImage2D:we,texImage3D:Te,pixelStorei:De,getParameter:Ee,updateUBOMapping:q,uniformBlockBinding:ke,texStorage2D:Se,texStorage3D:Ce,texSubImage2D:ve,texSubImage3D:ye,compressedTexSubImage2D:be,compressedTexSubImage3D:xe,scissor:K,viewport:Oe,reset:J}}function dn(e,n,r,i,a,o,s){let c=n.has(`WEBGL_multisampled_render_to_texture`)?n.get(`WEBGL_multisampled_render_to_texture`):null,l=typeof navigator>`u`?!1:/OculusBrowser/g.test(navigator.userAgent),u=new t.Sn,d=new WeakMap,f=new Set,p,m=new WeakMap,h=!1;try{h=typeof OffscreenCanvas<`u`&&new OffscreenCanvas(1,1).getContext(`2d`)!==null}catch{}function g(e,n){return h?new OffscreenCanvas(e,n):t.An(`canvas`)}function _(e,n,r){let i=1,a=ge(e);if((a.width>r||a.height>r)&&(i=r/Math.max(a.width,a.height)),i<1){if(typeof HTMLImageElement<`u`&&e instanceof HTMLImageElement||typeof HTMLCanvasElement<`u`&&e instanceof HTMLCanvasElement||typeof ImageBitmap<`u`&&e instanceof ImageBitmap||typeof VideoFrame<`u`&&e instanceof VideoFrame){let r=Math.floor(i*a.width),o=Math.floor(i*a.height);p===void 0&&(p=g(r,o));let s=n?g(r,o):p;return s.width=r,s.height=o,s.getContext(`2d`).drawImage(e,0,0,r,o),t.Ln(`WebGLRenderer: Texture has been resized from (`+a.width+`x`+a.height+`) to (`+r+`x`+o+`).`),s}return`data`in e&&t.Ln(`WebGLRenderer: Image in DataTexture is too big (`+a.width+`x`+a.height+`).`),e}return e}function v(e){return e.generateMipmaps}function y(t){e.generateMipmap(t)}function b(t){return t.isWebGLCubeRenderTarget?e.TEXTURE_CUBE_MAP:t.isWebGL3DRenderTarget?e.TEXTURE_3D:t.isWebGLArrayRenderTarget||t.isCompressedArrayTexture?e.TEXTURE_2D_ARRAY:e.TEXTURE_2D}function x(r,i,a,o,s,c=!1){if(r!==null){if(e[r]!==void 0)return e[r];t.Ln(`WebGLRenderer: Attempt to use non-existing WebGL internal format '`+r+`'`)}let l;o&&(l=n.get(`EXT_texture_norm16`),l||t.Ln(`WebGLRenderer: Unable to use normalized textures without EXT_texture_norm16 extension`));let u=i;if(i===e.RED&&(a===e.FLOAT&&(u=e.R32F),a===e.HALF_FLOAT&&(u=e.R16F),a===e.UNSIGNED_BYTE&&(u=e.R8),a===e.UNSIGNED_SHORT&&l&&(u=l.R16_EXT),a===e.SHORT&&l&&(u=l.R16_SNORM_EXT)),i===e.RED_INTEGER&&(a===e.UNSIGNED_BYTE&&(u=e.R8UI),a===e.UNSIGNED_SHORT&&(u=e.R16UI),a===e.UNSIGNED_INT&&(u=e.R32UI),a===e.BYTE&&(u=e.R8I),a===e.SHORT&&(u=e.R16I),a===e.INT&&(u=e.R32I)),i===e.RG&&(a===e.FLOAT&&(u=e.RG32F),a===e.HALF_FLOAT&&(u=e.RG16F),a===e.UNSIGNED_BYTE&&(u=e.RG8),a===e.UNSIGNED_SHORT&&l&&(u=l.RG16_EXT),a===e.SHORT&&l&&(u=l.RG16_SNORM_EXT)),i===e.RG_INTEGER&&(a===e.UNSIGNED_BYTE&&(u=e.RG8UI),a===e.UNSIGNED_SHORT&&(u=e.RG16UI),a===e.UNSIGNED_INT&&(u=e.RG32UI),a===e.BYTE&&(u=e.RG8I),a===e.SHORT&&(u=e.RG16I),a===e.INT&&(u=e.RG32I)),i===e.RGB_INTEGER&&(a===e.UNSIGNED_BYTE&&(u=e.RGB8UI),a===e.UNSIGNED_SHORT&&(u=e.RGB16UI),a===e.UNSIGNED_INT&&(u=e.RGB32UI),a===e.BYTE&&(u=e.RGB8I),a===e.SHORT&&(u=e.RGB16I),a===e.INT&&(u=e.RGB32I)),i===e.RGBA_INTEGER&&(a===e.UNSIGNED_BYTE&&(u=e.RGBA8UI),a===e.UNSIGNED_SHORT&&(u=e.RGBA16UI),a===e.UNSIGNED_INT&&(u=e.RGBA32UI),a===e.BYTE&&(u=e.RGBA8I),a===e.SHORT&&(u=e.RGBA16I),a===e.INT&&(u=e.RGBA32I)),i===e.RGB&&(a===e.UNSIGNED_SHORT&&l&&(u=l.RGB16_EXT),a===e.SHORT&&l&&(u=l.RGB16_SNORM_EXT),a===e.UNSIGNED_INT_5_9_9_9_REV&&(u=e.RGB9_E5),a===e.UNSIGNED_INT_10F_11F_11F_REV&&(u=e.R11F_G11F_B10F)),i===e.RGBA){let n=c?t.W:t._.getTransfer(s);a===e.FLOAT&&(u=e.RGBA32F),a===e.HALF_FLOAT&&(u=e.RGBA16F),a===e.UNSIGNED_BYTE&&(u=n===`srgb`?e.SRGB8_ALPHA8:e.RGBA8),a===e.UNSIGNED_SHORT&&l&&(u=l.RGBA16_EXT),a===e.SHORT&&l&&(u=l.RGBA16_SNORM_EXT),a===e.UNSIGNED_SHORT_4_4_4_4&&(u=e.RGBA4),a===e.UNSIGNED_SHORT_5_5_5_1&&(u=e.RGB5_A1)}return(u===e.R16F||u===e.R32F||u===e.RG16F||u===e.RG32F||u===e.RGBA16F||u===e.RGBA32F)&&n.get(`EXT_color_buffer_float`),u}function S(n,r){let i;return n?r===null||r===1014||r===1020?i=e.DEPTH24_STENCIL8:r===1015?i=e.DEPTH32F_STENCIL8:r===1012&&(i=e.DEPTH24_STENCIL8,t.Ln(`DepthTexture: 16 bit depth attachment is not supported with stencil. Using 24-bit attachment.`)):r===null||r===1014||r===1020?i=e.DEPTH_COMPONENT24:r===1015?i=e.DEPTH_COMPONENT32F:r===1012&&(i=e.DEPTH_COMPONENT16),i}function C(e,t){return v(e)===!0||e.isFramebufferTexture&&e.minFilter!==1003&&e.minFilter!==1006?Math.log2(Math.max(t.width,t.height))+1:e.mipmaps!==void 0&&e.mipmaps.length>0?e.mipmaps.length:e.isCompressedTexture&&Array.isArray(e.image)?t.mipmaps.length:1}function w(e){let t=e.target;t.removeEventListener(`dispose`,w),E(t),t.isVideoTexture&&d.delete(t),t.isHTMLTexture&&f.delete(t)}function T(e){let t=e.target;t.removeEventListener(`dispose`,T),O(t)}function E(e){let t=i.get(e);if(t.__webglInit===void 0)return;let n=e.source,r=m.get(n);if(r){let i=r[t.__cacheKey];i.usedTimes--,i.usedTimes===0&&D(e),Object.keys(r).length===0&&m.delete(n)}i.remove(e)}function D(t){let n=i.get(t);e.deleteTexture(n.__webglTexture);let r=t.source,a=m.get(r);delete a[n.__cacheKey],s.memory.textures--}function O(t){let n=i.get(t);if(t.depthTexture&&(t.depthTexture.dispose(),i.remove(t.depthTexture)),t.isWebGLCubeRenderTarget)for(let t=0;t<6;t++){if(Array.isArray(n.__webglFramebuffer[t]))for(let r=0;r<n.__webglFramebuffer[t].length;r++)e.deleteFramebuffer(n.__webglFramebuffer[t][r]);else e.deleteFramebuffer(n.__webglFramebuffer[t]);n.__webglDepthbuffer&&e.deleteRenderbuffer(n.__webglDepthbuffer[t])}else{if(Array.isArray(n.__webglFramebuffer))for(let t=0;t<n.__webglFramebuffer.length;t++)e.deleteFramebuffer(n.__webglFramebuffer[t]);else e.deleteFramebuffer(n.__webglFramebuffer);if(n.__webglDepthbuffer&&e.deleteRenderbuffer(n.__webglDepthbuffer),n.__webglMultisampledFramebuffer&&e.deleteFramebuffer(n.__webglMultisampledFramebuffer),n.__webglColorRenderbuffer)for(let t=0;t<n.__webglColorRenderbuffer.length;t++)n.__webglColorRenderbuffer[t]&&e.deleteRenderbuffer(n.__webglColorRenderbuffer[t]);n.__webglDepthRenderbuffer&&e.deleteRenderbuffer(n.__webglDepthRenderbuffer)}let r=t.textures;for(let t=0,n=r.length;t<n;t++){let n=i.get(r[t]);n.__webglTexture&&(e.deleteTexture(n.__webglTexture),s.memory.textures--),i.remove(r[t])}i.remove(t)}let k=0;function A(){k=0}function j(){return k}function M(e){k=e}function N(){let e=k;return e>=a.maxTextures&&t.Ln(`WebGLTextures: Trying to use `+e+` texture units while this GPU supports only `+a.maxTextures),k+=1,e}function ee(e){let t=[];return t.push(e.wrapS),t.push(e.wrapT),t.push(e.wrapR||0),t.push(e.magFilter),t.push(e.minFilter),t.push(e.anisotropy),t.push(e.internalFormat),t.push(e.format),t.push(e.type),t.push(e.generateMipmaps),t.push(e.premultiplyAlpha),t.push(e.flipY),t.push(e.unpackAlignment),t.push(e.colorSpace),t.join()}function P(n,a){let o=i.get(n);if(n.isVideoTexture&&me(n),n.isRenderTargetTexture===!1&&n.isExternalTexture!==!0&&n.version>0&&o.__version!==n.version){let e=n.image;if(e===null)t.Ln(`WebGLRenderer: Texture marked for update but no image data found.`);else if(e.complete===!1)t.Ln(`WebGLRenderer: Texture marked for update but image is incomplete`);else{ce(o,n,a);return}}else n.isExternalTexture&&(o.__webglTexture=n.sourceTexture?n.sourceTexture:null);r.bindTexture(e.TEXTURE_2D,o.__webglTexture,e.TEXTURE0+a)}function F(t,n){let a=i.get(t);if(t.isRenderTargetTexture===!1&&t.version>0&&a.__version!==t.version){ce(a,t,n);return}t.isExternalTexture&&(a.__webglTexture=t.sourceTexture?t.sourceTexture:null),r.bindTexture(e.TEXTURE_2D_ARRAY,a.__webglTexture,e.TEXTURE0+n)}function I(t,n){let a=i.get(t);if(t.isRenderTargetTexture===!1&&t.version>0&&a.__version!==t.version){ce(a,t,n);return}r.bindTexture(e.TEXTURE_3D,a.__webglTexture,e.TEXTURE0+n)}function te(t,n){let a=i.get(t);if(t.isCubeDepthTexture!==!0&&t.version>0&&a.__version!==t.version){le(a,t,n);return}r.bindTexture(e.TEXTURE_CUBE_MAP,a.__webglTexture,e.TEXTURE0+n)}let ne={[t.Zt]:e.REPEAT,[t.h]:e.CLAMP_TO_EDGE,[t.$]:e.MIRRORED_REPEAT},re={[t.et]:e.NEAREST,[t.nt]:e.NEAREST_MIPMAP_NEAREST,[t.tt]:e.NEAREST_MIPMAP_LINEAR,[t.B]:e.LINEAR,[t.H]:e.LINEAR_MIPMAP_NEAREST,[t.V]:e.LINEAR_MIPMAP_LINEAR},ie={512:e.NEVER,519:e.ALWAYS,513:e.LESS,515:e.LEQUAL,514:e.EQUAL,518:e.GEQUAL,516:e.GREATER,517:e.NOTEQUAL};function ae(r,o){if(o.type===1015&&n.has(`OES_texture_float_linear`)===!1&&(o.magFilter===1006||o.magFilter===1007||o.magFilter===1005||o.magFilter===1008||o.minFilter===1006||o.minFilter===1007||o.minFilter===1005||o.minFilter===1008)&&t.Ln(`WebGLRenderer: Unable to use linear filtering with floating point textures. OES_texture_float_linear not supported on this device.`),e.texParameteri(r,e.TEXTURE_WRAP_S,ne[o.wrapS]),e.texParameteri(r,e.TEXTURE_WRAP_T,ne[o.wrapT]),(r===e.TEXTURE_3D||r===e.TEXTURE_2D_ARRAY)&&e.texParameteri(r,e.TEXTURE_WRAP_R,ne[o.wrapR]),e.texParameteri(r,e.TEXTURE_MAG_FILTER,re[o.magFilter]),e.texParameteri(r,e.TEXTURE_MIN_FILTER,re[o.minFilter]),o.compareFunction&&(e.texParameteri(r,e.TEXTURE_COMPARE_MODE,e.COMPARE_REF_TO_TEXTURE),e.texParameteri(r,e.TEXTURE_COMPARE_FUNC,ie[o.compareFunction])),n.has(`EXT_texture_filter_anisotropic`)===!0){if(o.magFilter===1003||o.minFilter!==1005&&o.minFilter!==1008||o.type===1015&&n.has(`OES_texture_float_linear`)===!1)return;if(o.anisotropy>1||i.get(o).__currentAnisotropy){let t=n.get(`EXT_texture_filter_anisotropic`);e.texParameterf(r,t.TEXTURE_MAX_ANISOTROPY_EXT,Math.min(o.anisotropy,a.getMaxAnisotropy())),i.get(o).__currentAnisotropy=o.anisotropy}}}function oe(t,n){let r=!1;t.__webglInit===void 0&&(t.__webglInit=!0,n.addEventListener(`dispose`,w));let i=n.source,a=m.get(i);a===void 0&&(a={},m.set(i,a));let o=ee(n);if(o!==t.__cacheKey){a[o]===void 0&&(a[o]={texture:e.createTexture(),usedTimes:0},s.memory.textures++,r=!0),a[o].usedTimes++;let i=a[t.__cacheKey];i!==void 0&&(a[t.__cacheKey].usedTimes--,i.usedTimes===0&&D(n)),t.__cacheKey=o,t.__webglTexture=a[o].texture}return r}function se(e,t,n){return Math.floor(Math.floor(e/n)/t)}function L(t,n,i,a){let o=t.updateRanges;if(o.length===0)r.texSubImage2D(e.TEXTURE_2D,0,0,0,n.width,n.height,i,a,n.data);else{o.sort((e,t)=>e.start-t.start);let s=0;for(let e=1;e<o.length;e++){let t=o[s],r=o[e],i=t.start+t.count,a=se(r.start,n.width,4),c=se(t.start,n.width,4);r.start<=i+1&&a===c&&se(r.start+r.count-1,n.width,4)===a?t.count=Math.max(t.count,r.start+r.count-t.start):(++s,o[s]=r)}o.length=s+1;let c=r.getParameter(e.UNPACK_ROW_LENGTH),l=r.getParameter(e.UNPACK_SKIP_PIXELS),u=r.getParameter(e.UNPACK_SKIP_ROWS);r.pixelStorei(e.UNPACK_ROW_LENGTH,n.width);for(let t=0,s=o.length;t<s;t++){let s=o[t],c=Math.floor(s.start/4),l=Math.ceil(s.count/4),u=c%n.width,d=Math.floor(c/n.width),f=l;r.pixelStorei(e.UNPACK_SKIP_PIXELS,u),r.pixelStorei(e.UNPACK_SKIP_ROWS,d),r.texSubImage2D(e.TEXTURE_2D,0,u,d,f,1,i,a,n.data)}t.clearUpdateRanges(),r.pixelStorei(e.UNPACK_ROW_LENGTH,c),r.pixelStorei(e.UNPACK_SKIP_PIXELS,l),r.pixelStorei(e.UNPACK_SKIP_ROWS,u)}}function ce(n,s,c){let l=e.TEXTURE_2D;(s.isDataArrayTexture||s.isCompressedArrayTexture)&&(l=e.TEXTURE_2D_ARRAY),s.isData3DTexture&&(l=e.TEXTURE_3D);let u=oe(n,s),d=s.source;r.bindTexture(l,n.__webglTexture,e.TEXTURE0+c);let p=i.get(d);if(d.version!==p.__version||u===!0){if(r.activeTexture(e.TEXTURE0+c),!(typeof ImageBitmap<`u`&&s.image instanceof ImageBitmap)){let n=t._.getPrimaries(t._.workingColorSpace),i=s.colorSpace===``?null:t._.getPrimaries(s.colorSpace),a=s.colorSpace===``||n===i?e.NONE:e.BROWSER_DEFAULT_WEBGL;r.pixelStorei(e.UNPACK_FLIP_Y_WEBGL,s.flipY),r.pixelStorei(e.UNPACK_PREMULTIPLY_ALPHA_WEBGL,s.premultiplyAlpha),r.pixelStorei(e.UNPACK_COLORSPACE_CONVERSION_WEBGL,a)}r.pixelStorei(e.UNPACK_ALIGNMENT,s.unpackAlignment);let n=_(s.image,!1,a.maxTextureSize);n=he(s,n);let i=o.convert(s.format,s.colorSpace),m=o.convert(s.type),h=x(s.internalFormat,i,m,s.normalized,s.colorSpace,s.isVideoTexture);ae(l,s);let g,b=s.mipmaps,w=s.isVideoTexture!==!0,T=p.__version===void 0||u===!0,E=d.dataReady,D=C(s,n);if(s.isDepthTexture)h=S(s.format===t.E,s.type),T&&(w?r.texStorage2D(e.TEXTURE_2D,1,h,n.width,n.height):r.texImage2D(e.TEXTURE_2D,0,h,n.width,n.height,0,i,m,null));else if(s.isDataTexture){if(b.length>0){w&&T&&r.texStorage2D(e.TEXTURE_2D,D,h,b[0].width,b[0].height);for(let t=0,n=b.length;t<n;t++)g=b[t],w?E&&r.texSubImage2D(e.TEXTURE_2D,t,0,0,g.width,g.height,i,m,g.data):r.texImage2D(e.TEXTURE_2D,t,h,g.width,g.height,0,i,m,g.data);s.generateMipmaps=!1}else w?(T&&r.texStorage2D(e.TEXTURE_2D,D,h,n.width,n.height),E&&L(s,n,i,m)):r.texImage2D(e.TEXTURE_2D,0,h,n.width,n.height,0,i,m,n.data)}else if(s.isCompressedTexture){if(s.isCompressedArrayTexture){w&&T&&r.texStorage3D(e.TEXTURE_2D_ARRAY,D,h,b[0].width,b[0].height,n.depth);for(let a=0,o=b.length;a<o;a++)if(g=b[a],s.format!==1023){if(i!==null){if(w){if(E){if(s.layerUpdates.size>0){let n=t.Mn(g.width,g.height,s.format,s.type);for(let t of s.layerUpdates){let o=g.data.subarray(t*n/g.data.BYTES_PER_ELEMENT,(t+1)*n/g.data.BYTES_PER_ELEMENT);r.compressedTexSubImage3D(e.TEXTURE_2D_ARRAY,a,0,0,t,g.width,g.height,1,i,o)}s.clearLayerUpdates()}else r.compressedTexSubImage3D(e.TEXTURE_2D_ARRAY,a,0,0,0,g.width,g.height,n.depth,i,g.data)}}else r.compressedTexImage3D(e.TEXTURE_2D_ARRAY,a,h,g.width,g.height,n.depth,0,g.data,0,0)}else t.Ln(`WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()`)}else w?E&&r.texSubImage3D(e.TEXTURE_2D_ARRAY,a,0,0,0,g.width,g.height,n.depth,i,m,g.data):r.texImage3D(e.TEXTURE_2D_ARRAY,a,h,g.width,g.height,n.depth,0,i,m,g.data)}else{w&&T&&r.texStorage2D(e.TEXTURE_2D,D,h,b[0].width,b[0].height);for(let n=0,a=b.length;n<a;n++)g=b[n],s.format===1023?w?E&&r.texSubImage2D(e.TEXTURE_2D,n,0,0,g.width,g.height,i,m,g.data):r.texImage2D(e.TEXTURE_2D,n,h,g.width,g.height,0,i,m,g.data):i===null?t.Ln(`WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()`):w?E&&r.compressedTexSubImage2D(e.TEXTURE_2D,n,0,0,g.width,g.height,i,g.data):r.compressedTexImage2D(e.TEXTURE_2D,n,h,g.width,g.height,0,g.data)}}else if(s.isDataArrayTexture){if(w){if(T&&r.texStorage3D(e.TEXTURE_2D_ARRAY,D,h,n.width,n.height,n.depth),E){if(s.layerUpdates.size>0){let a=t.Mn(n.width,n.height,s.format,s.type);for(let t of s.layerUpdates){let o=n.data.subarray(t*a/n.data.BYTES_PER_ELEMENT,(t+1)*a/n.data.BYTES_PER_ELEMENT);r.texSubImage3D(e.TEXTURE_2D_ARRAY,0,0,0,t,n.width,n.height,1,i,m,o)}s.clearLayerUpdates()}else r.texSubImage3D(e.TEXTURE_2D_ARRAY,0,0,0,0,n.width,n.height,n.depth,i,m,n.data)}}else r.texImage3D(e.TEXTURE_2D_ARRAY,0,h,n.width,n.height,n.depth,0,i,m,n.data)}else if(s.isData3DTexture)w?(T&&r.texStorage3D(e.TEXTURE_3D,D,h,n.width,n.height,n.depth),E&&r.texSubImage3D(e.TEXTURE_3D,0,0,0,0,n.width,n.height,n.depth,i,m,n.data)):r.texImage3D(e.TEXTURE_3D,0,h,n.width,n.height,n.depth,0,i,m,n.data);else if(s.isFramebufferTexture){if(T){if(w)r.texStorage2D(e.TEXTURE_2D,D,h,n.width,n.height);else{let t=n.width,a=n.height;for(let n=0;n<D;n++)r.texImage2D(e.TEXTURE_2D,n,h,t,a,0,i,m,null),t>>=1,a>>=1}}}else if(s.isHTMLTexture){if(`texElementImage2D`in e){let t=e.canvas;if(t.hasAttribute(`layoutsubtree`)||t.setAttribute(`layoutsubtree`,`true`),n.parentNode!==t){t.appendChild(n),f.add(s),t.onpaint=e=>{let t=e.changedElements;for(let e of f)t.includes(e.image)&&(e.needsUpdate=!0)},t.requestPaint();return}if(e.texElementImage2D.length===3)e.texElementImage2D(e.TEXTURE_2D,e.RGBA8,n);else{let t=e.RGBA,r=e.RGBA,i=e.UNSIGNED_BYTE;e.texElementImage2D(e.TEXTURE_2D,0,t,r,i,n)}e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,e.LINEAR),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)}}else if(b.length>0){if(w&&T){let t=ge(b[0]);r.texStorage2D(e.TEXTURE_2D,D,h,t.width,t.height)}for(let t=0,n=b.length;t<n;t++)g=b[t],w?E&&r.texSubImage2D(e.TEXTURE_2D,t,0,0,i,m,g):r.texImage2D(e.TEXTURE_2D,t,h,i,m,g);s.generateMipmaps=!1}else if(w){if(T){let t=ge(n);r.texStorage2D(e.TEXTURE_2D,D,h,t.width,t.height)}E&&r.texSubImage2D(e.TEXTURE_2D,0,0,0,i,m,n)}else r.texImage2D(e.TEXTURE_2D,0,h,i,m,n);v(s)&&y(l),p.__version=d.version,s.onUpdate&&s.onUpdate(s)}n.__version=s.version}function le(n,s,c){if(s.image.length!==6)return;let l=oe(n,s),u=s.source;r.bindTexture(e.TEXTURE_CUBE_MAP,n.__webglTexture,e.TEXTURE0+c);let d=i.get(u);if(u.version!==d.__version||l===!0){r.activeTexture(e.TEXTURE0+c);let n=t._.getPrimaries(t._.workingColorSpace),i=s.colorSpace===``?null:t._.getPrimaries(s.colorSpace),f=s.colorSpace===``||n===i?e.NONE:e.BROWSER_DEFAULT_WEBGL;r.pixelStorei(e.UNPACK_FLIP_Y_WEBGL,s.flipY),r.pixelStorei(e.UNPACK_PREMULTIPLY_ALPHA_WEBGL,s.premultiplyAlpha),r.pixelStorei(e.UNPACK_ALIGNMENT,s.unpackAlignment),r.pixelStorei(e.UNPACK_COLORSPACE_CONVERSION_WEBGL,f);let p=s.isCompressedTexture||s.image[0].isCompressedTexture,m=s.image[0]&&s.image[0].isDataTexture,h=[];for(let e=0;e<6;e++)!p&&!m?h[e]=_(s.image[e],!0,a.maxCubemapSize):h[e]=m?s.image[e].image:s.image[e],h[e]=he(s,h[e]);let g=h[0],b=o.convert(s.format,s.colorSpace),S=o.convert(s.type),w=x(s.internalFormat,b,S,s.normalized,s.colorSpace),T=s.isVideoTexture!==!0,E=d.__version===void 0||l===!0,D=u.dataReady,O=C(s,g);ae(e.TEXTURE_CUBE_MAP,s);let k;if(p){T&&E&&r.texStorage2D(e.TEXTURE_CUBE_MAP,O,w,g.width,g.height);for(let n=0;n<6;n++){k=h[n].mipmaps;for(let i=0;i<k.length;i++){let a=k[i];s.format===1023?T?D&&r.texSubImage2D(e.TEXTURE_CUBE_MAP_POSITIVE_X+n,i,0,0,a.width,a.height,b,S,a.data):r.texImage2D(e.TEXTURE_CUBE_MAP_POSITIVE_X+n,i,w,a.width,a.height,0,b,S,a.data):b===null?t.Ln(`WebGLRenderer: Attempt to load unsupported compressed texture format in .setTextureCube()`):T?D&&r.compressedTexSubImage2D(e.TEXTURE_CUBE_MAP_POSITIVE_X+n,i,0,0,a.width,a.height,b,a.data):r.compressedTexImage2D(e.TEXTURE_CUBE_MAP_POSITIVE_X+n,i,w,a.width,a.height,0,a.data)}}}else{if(k=s.mipmaps,T&&E){k.length>0&&O++;let t=ge(h[0]);r.texStorage2D(e.TEXTURE_CUBE_MAP,O,w,t.width,t.height)}for(let t=0;t<6;t++)if(m){T?D&&r.texSubImage2D(e.TEXTURE_CUBE_MAP_POSITIVE_X+t,0,0,0,h[t].width,h[t].height,b,S,h[t].data):r.texImage2D(e.TEXTURE_CUBE_MAP_POSITIVE_X+t,0,w,h[t].width,h[t].height,0,b,S,h[t].data);for(let n=0;n<k.length;n++){let i=k[n].image[t].image;T?D&&r.texSubImage2D(e.TEXTURE_CUBE_MAP_POSITIVE_X+t,n+1,0,0,i.width,i.height,b,S,i.data):r.texImage2D(e.TEXTURE_CUBE_MAP_POSITIVE_X+t,n+1,w,i.width,i.height,0,b,S,i.data)}}else{T?D&&r.texSubImage2D(e.TEXTURE_CUBE_MAP_POSITIVE_X+t,0,0,0,b,S,h[t]):r.texImage2D(e.TEXTURE_CUBE_MAP_POSITIVE_X+t,0,w,b,S,h[t]);for(let n=0;n<k.length;n++){let i=k[n];T?D&&r.texSubImage2D(e.TEXTURE_CUBE_MAP_POSITIVE_X+t,n+1,0,0,b,S,i.image[t]):r.texImage2D(e.TEXTURE_CUBE_MAP_POSITIVE_X+t,n+1,w,b,S,i.image[t])}}}v(s)&&y(e.TEXTURE_CUBE_MAP),d.__version=u.version,s.onUpdate&&s.onUpdate(s)}n.__version=s.version}function R(t,n,a,s,l,u){let d=o.convert(a.format,a.colorSpace),f=o.convert(a.type),p=x(a.internalFormat,d,f,a.normalized,a.colorSpace),m=i.get(n),h=i.get(a);if(h.__renderTarget=n,!m.__hasExternalTextures){let t=Math.max(1,n.width>>u),i=Math.max(1,n.height>>u);l===e.TEXTURE_3D||l===e.TEXTURE_2D_ARRAY?r.texImage3D(l,u,p,t,i,n.depth,0,d,f,null):r.texImage2D(l,u,p,t,i,0,d,f,null)}r.bindFramebuffer(e.FRAMEBUFFER,t),G(n)?c.framebufferTexture2DMultisampleEXT(e.FRAMEBUFFER,s,l,h.__webglTexture,0,W(n)):(l===e.TEXTURE_2D||l>=e.TEXTURE_CUBE_MAP_POSITIVE_X&&l<=e.TEXTURE_CUBE_MAP_NEGATIVE_Z)&&e.framebufferTexture2D(e.FRAMEBUFFER,s,l,h.__webglTexture,u),r.bindFramebuffer(e.FRAMEBUFFER,null)}function z(t,n,r){if(e.bindRenderbuffer(e.RENDERBUFFER,t),n.depthBuffer){let i=n.depthTexture,a=i&&i.isDepthTexture?i.type:null,o=S(n.stencilBuffer,a),s=n.stencilBuffer?e.DEPTH_STENCIL_ATTACHMENT:e.DEPTH_ATTACHMENT;G(n)?c.renderbufferStorageMultisampleEXT(e.RENDERBUFFER,W(n),o,n.width,n.height):r?e.renderbufferStorageMultisample(e.RENDERBUFFER,W(n),o,n.width,n.height):e.renderbufferStorage(e.RENDERBUFFER,o,n.width,n.height),e.framebufferRenderbuffer(e.FRAMEBUFFER,s,e.RENDERBUFFER,t)}else{let t=n.textures;for(let i=0;i<t.length;i++){let a=t[i],s=o.convert(a.format,a.colorSpace),l=o.convert(a.type),u=x(a.internalFormat,s,l,a.normalized,a.colorSpace);G(n)?c.renderbufferStorageMultisampleEXT(e.RENDERBUFFER,W(n),u,n.width,n.height):r?e.renderbufferStorageMultisample(e.RENDERBUFFER,W(n),u,n.width,n.height):e.renderbufferStorage(e.RENDERBUFFER,u,n.width,n.height)}}e.bindRenderbuffer(e.RENDERBUFFER,null)}function B(t,n,a){let s=n.isWebGLCubeRenderTarget===!0;if(r.bindFramebuffer(e.FRAMEBUFFER,t),!(n.depthTexture&&n.depthTexture.isDepthTexture))throw Error(`THREE.WebGLTextures: renderTarget.depthTexture must be an instance of THREE.DepthTexture.`);let l=i.get(n.depthTexture);if(l.__renderTarget=n,(!l.__webglTexture||n.depthTexture.image.width!==n.width||n.depthTexture.image.height!==n.height)&&(n.depthTexture.image.width=n.width,n.depthTexture.image.height=n.height,n.depthTexture.needsUpdate=!0),s){if(l.__webglInit===void 0&&(l.__webglInit=!0,n.depthTexture.addEventListener(`dispose`,w)),l.__webglTexture===void 0){l.__webglTexture=e.createTexture(),r.bindTexture(e.TEXTURE_CUBE_MAP,l.__webglTexture),ae(e.TEXTURE_CUBE_MAP,n.depthTexture);let t=o.convert(n.depthTexture.format),i=o.convert(n.depthTexture.type),a;n.depthTexture.format===1026?a=e.DEPTH_COMPONENT24:n.depthTexture.format===1027&&(a=e.DEPTH24_STENCIL8);for(let r=0;r<6;r++)e.texImage2D(e.TEXTURE_CUBE_MAP_POSITIVE_X+r,0,a,n.width,n.height,0,t,i,null)}}else P(n.depthTexture,0);let u=l.__webglTexture,d=W(n),f=s?e.TEXTURE_CUBE_MAP_POSITIVE_X+a:e.TEXTURE_2D,p=n.depthTexture.format===1027?e.DEPTH_STENCIL_ATTACHMENT:e.DEPTH_ATTACHMENT;if(n.depthTexture.format===1026)G(n)?c.framebufferTexture2DMultisampleEXT(e.FRAMEBUFFER,p,f,u,0,d):e.framebufferTexture2D(e.FRAMEBUFFER,p,f,u,0);else if(n.depthTexture.format===1027)G(n)?c.framebufferTexture2DMultisampleEXT(e.FRAMEBUFFER,p,f,u,0,d):e.framebufferTexture2D(e.FRAMEBUFFER,p,f,u,0);else throw Error(`THREE.WebGLTextures: Unknown depthTexture format.`)}function V(t){let n=i.get(t),a=t.isWebGLCubeRenderTarget===!0;if(n.__boundDepthTexture!==t.depthTexture){let e=t.depthTexture;if(n.__depthDisposeCallback&&n.__depthDisposeCallback(),e){let t=()=>{delete n.__boundDepthTexture,delete n.__depthDisposeCallback,e.removeEventListener(`dispose`,t)};e.addEventListener(`dispose`,t),n.__depthDisposeCallback=t}n.__boundDepthTexture=e}if(t.depthTexture&&!n.__autoAllocateDepthBuffer){if(a)for(let e=0;e<6;e++)B(n.__webglFramebuffer[e],t,e);else{let e=t.texture.mipmaps;e&&e.length>0?B(n.__webglFramebuffer[0],t,0):B(n.__webglFramebuffer,t,0)}}else if(a){n.__webglDepthbuffer=[];for(let i=0;i<6;i++)if(r.bindFramebuffer(e.FRAMEBUFFER,n.__webglFramebuffer[i]),n.__webglDepthbuffer[i]===void 0)n.__webglDepthbuffer[i]=e.createRenderbuffer(),z(n.__webglDepthbuffer[i],t,!1);else{let r=t.stencilBuffer?e.DEPTH_STENCIL_ATTACHMENT:e.DEPTH_ATTACHMENT,a=n.__webglDepthbuffer[i];e.bindRenderbuffer(e.RENDERBUFFER,a),e.framebufferRenderbuffer(e.FRAMEBUFFER,r,e.RENDERBUFFER,a)}}else{let i=t.texture.mipmaps;if(i&&i.length>0?r.bindFramebuffer(e.FRAMEBUFFER,n.__webglFramebuffer[0]):r.bindFramebuffer(e.FRAMEBUFFER,n.__webglFramebuffer),n.__webglDepthbuffer===void 0)n.__webglDepthbuffer=e.createRenderbuffer(),z(n.__webglDepthbuffer,t,!1);else{let r=t.stencilBuffer?e.DEPTH_STENCIL_ATTACHMENT:e.DEPTH_ATTACHMENT,i=n.__webglDepthbuffer;e.bindRenderbuffer(e.RENDERBUFFER,i),e.framebufferRenderbuffer(e.FRAMEBUFFER,r,e.RENDERBUFFER,i)}}r.bindFramebuffer(e.FRAMEBUFFER,null)}function H(t,n,r){let a=i.get(t);n!==void 0&&R(a.__webglFramebuffer,t,t.texture,e.COLOR_ATTACHMENT0,e.TEXTURE_2D,0),r!==void 0&&V(t)}function ue(t){let n=t.texture,a=i.get(t),c=i.get(n);t.addEventListener(`dispose`,T);let l=t.textures,u=t.isWebGLCubeRenderTarget===!0,d=l.length>1;if(d||(c.__webglTexture===void 0&&(c.__webglTexture=e.createTexture()),c.__version=n.version,s.memory.textures++),u){a.__webglFramebuffer=[];for(let t=0;t<6;t++)if(n.mipmaps&&n.mipmaps.length>0){a.__webglFramebuffer[t]=[];for(let r=0;r<n.mipmaps.length;r++)a.__webglFramebuffer[t][r]=e.createFramebuffer()}else a.__webglFramebuffer[t]=e.createFramebuffer()}else{if(n.mipmaps&&n.mipmaps.length>0){a.__webglFramebuffer=[];for(let t=0;t<n.mipmaps.length;t++)a.__webglFramebuffer[t]=e.createFramebuffer()}else a.__webglFramebuffer=e.createFramebuffer();if(d)for(let t=0,n=l.length;t<n;t++){let n=i.get(l[t]);n.__webglTexture===void 0&&(n.__webglTexture=e.createTexture(),s.memory.textures++)}if(t.samples>0&&G(t)===!1){a.__webglMultisampledFramebuffer=e.createFramebuffer(),a.__webglColorRenderbuffer=[],r.bindFramebuffer(e.FRAMEBUFFER,a.__webglMultisampledFramebuffer);for(let n=0;n<l.length;n++){let r=l[n];a.__webglColorRenderbuffer[n]=e.createRenderbuffer(),e.bindRenderbuffer(e.RENDERBUFFER,a.__webglColorRenderbuffer[n]);let i=o.convert(r.format,r.colorSpace),s=o.convert(r.type),c=x(r.internalFormat,i,s,r.normalized,r.colorSpace,t.isXRRenderTarget===!0),u=W(t);e.renderbufferStorageMultisample(e.RENDERBUFFER,u,c,t.width,t.height),e.framebufferRenderbuffer(e.FRAMEBUFFER,e.COLOR_ATTACHMENT0+n,e.RENDERBUFFER,a.__webglColorRenderbuffer[n])}e.bindRenderbuffer(e.RENDERBUFFER,null),t.depthBuffer&&(a.__webglDepthRenderbuffer=e.createRenderbuffer(),z(a.__webglDepthRenderbuffer,t,!0)),r.bindFramebuffer(e.FRAMEBUFFER,null)}}if(u){r.bindTexture(e.TEXTURE_CUBE_MAP,c.__webglTexture),ae(e.TEXTURE_CUBE_MAP,n);for(let r=0;r<6;r++)if(n.mipmaps&&n.mipmaps.length>0)for(let i=0;i<n.mipmaps.length;i++)R(a.__webglFramebuffer[r][i],t,n,e.COLOR_ATTACHMENT0,e.TEXTURE_CUBE_MAP_POSITIVE_X+r,i);else R(a.__webglFramebuffer[r],t,n,e.COLOR_ATTACHMENT0,e.TEXTURE_CUBE_MAP_POSITIVE_X+r,0);v(n)&&y(e.TEXTURE_CUBE_MAP),r.unbindTexture()}else if(d){for(let n=0,o=l.length;n<o;n++){let o=l[n],s=i.get(o),c=e.TEXTURE_2D;(t.isWebGL3DRenderTarget||t.isWebGLArrayRenderTarget)&&(c=t.isWebGL3DRenderTarget?e.TEXTURE_3D:e.TEXTURE_2D_ARRAY),r.bindTexture(c,s.__webglTexture),ae(c,o),R(a.__webglFramebuffer,t,o,e.COLOR_ATTACHMENT0+n,c,0),v(o)&&y(c)}r.unbindTexture()}else{let i=e.TEXTURE_2D;if((t.isWebGL3DRenderTarget||t.isWebGLArrayRenderTarget)&&(i=t.isWebGL3DRenderTarget?e.TEXTURE_3D:e.TEXTURE_2D_ARRAY),r.bindTexture(i,c.__webglTexture),ae(i,n),n.mipmaps&&n.mipmaps.length>0)for(let r=0;r<n.mipmaps.length;r++)R(a.__webglFramebuffer[r],t,n,e.COLOR_ATTACHMENT0,i,r);else R(a.__webglFramebuffer,t,n,e.COLOR_ATTACHMENT0,i,0);v(n)&&y(i),r.unbindTexture()}t.depthBuffer&&V(t)}function de(e){let t=e.textures;for(let n=0,a=t.length;n<a;n++){let a=t[n];if(v(a)){let t=b(e),n=i.get(a).__webglTexture;r.bindTexture(t,n),y(t),r.unbindTexture()}}}let fe=[],pe=[];function U(t){if(t.samples>0){if(G(t)===!1){let n=t.textures,a=t.width,o=t.height,s=e.COLOR_BUFFER_BIT,c=t.stencilBuffer?e.DEPTH_STENCIL_ATTACHMENT:e.DEPTH_ATTACHMENT,u=i.get(t),d=n.length>1;if(d)for(let t=0;t<n.length;t++)r.bindFramebuffer(e.FRAMEBUFFER,u.__webglMultisampledFramebuffer),e.framebufferRenderbuffer(e.FRAMEBUFFER,e.COLOR_ATTACHMENT0+t,e.RENDERBUFFER,null),r.bindFramebuffer(e.FRAMEBUFFER,u.__webglFramebuffer),e.framebufferTexture2D(e.DRAW_FRAMEBUFFER,e.COLOR_ATTACHMENT0+t,e.TEXTURE_2D,null,0);r.bindFramebuffer(e.READ_FRAMEBUFFER,u.__webglMultisampledFramebuffer);let f=t.texture.mipmaps;f&&f.length>0?r.bindFramebuffer(e.DRAW_FRAMEBUFFER,u.__webglFramebuffer[0]):r.bindFramebuffer(e.DRAW_FRAMEBUFFER,u.__webglFramebuffer);for(let r=0;r<n.length;r++){if(t.resolveDepthBuffer&&(t.depthBuffer&&(s|=e.DEPTH_BUFFER_BIT),t.stencilBuffer&&t.resolveStencilBuffer&&(s|=e.STENCIL_BUFFER_BIT)),d){e.framebufferRenderbuffer(e.READ_FRAMEBUFFER,e.COLOR_ATTACHMENT0,e.RENDERBUFFER,u.__webglColorRenderbuffer[r]);let t=i.get(n[r]).__webglTexture;e.framebufferTexture2D(e.DRAW_FRAMEBUFFER,e.COLOR_ATTACHMENT0,e.TEXTURE_2D,t,0)}e.blitFramebuffer(0,0,a,o,0,0,a,o,s,e.NEAREST),l===!0&&(fe.length=0,pe.length=0,fe.push(e.COLOR_ATTACHMENT0+r),t.depthBuffer&&t.resolveDepthBuffer===!1&&(fe.push(c),pe.push(c),e.invalidateFramebuffer(e.DRAW_FRAMEBUFFER,pe)),e.invalidateFramebuffer(e.READ_FRAMEBUFFER,fe))}if(r.bindFramebuffer(e.READ_FRAMEBUFFER,null),r.bindFramebuffer(e.DRAW_FRAMEBUFFER,null),d)for(let t=0;t<n.length;t++){r.bindFramebuffer(e.FRAMEBUFFER,u.__webglMultisampledFramebuffer),e.framebufferRenderbuffer(e.FRAMEBUFFER,e.COLOR_ATTACHMENT0+t,e.RENDERBUFFER,u.__webglColorRenderbuffer[t]);let a=i.get(n[t]).__webglTexture;r.bindFramebuffer(e.FRAMEBUFFER,u.__webglFramebuffer),e.framebufferTexture2D(e.DRAW_FRAMEBUFFER,e.COLOR_ATTACHMENT0+t,e.TEXTURE_2D,a,0)}r.bindFramebuffer(e.DRAW_FRAMEBUFFER,u.__webglMultisampledFramebuffer)}else if(t.depthBuffer&&t.resolveDepthBuffer===!1&&l){let n=t.stencilBuffer?e.DEPTH_STENCIL_ATTACHMENT:e.DEPTH_ATTACHMENT;e.invalidateFramebuffer(e.DRAW_FRAMEBUFFER,[n])}}}function W(e){return Math.min(a.maxSamples,e.samples)}function G(e){let t=i.get(e);return e.samples>0&&n.has(`WEBGL_multisampled_render_to_texture`)===!0&&t.__useRenderToTexture!==!1}function me(e){let t=s.render.frame;d.get(e)!==t&&(d.set(e,t),e.update())}function he(e,n){let r=e.colorSpace,i=e.format,a=e.type;return e.isCompressedTexture===!0||e.isVideoTexture===!0||r!==`srgb-linear`&&r!==``&&(t._.getTransfer(r)===`srgb`?(i!==1023||a!==1009)&&t.Ln(`WebGLTextures: sRGB encoded textures have to use RGBAFormat and UnsignedByteType.`):t.jn(`WebGLTextures: Unsupported texture color space:`,r)),n}function ge(e){return typeof HTMLImageElement<`u`&&e instanceof HTMLImageElement?(u.width=e.naturalWidth||e.width,u.height=e.naturalHeight||e.height):typeof VideoFrame<`u`&&e instanceof VideoFrame?(u.width=e.displayWidth,u.height=e.displayHeight):(u.width=e.width,u.height=e.height),u}this.allocateTextureUnit=N,this.resetTextureUnits=A,this.getTextureUnits=j,this.setTextureUnits=M,this.setTexture2D=P,this.setTexture2DArray=F,this.setTexture3D=I,this.setTextureCube=te,this.rebindTextures=H,this.setupRenderTarget=ue,this.updateRenderTargetMipmap=de,this.updateMultisampleRenderTarget=U,this.setupDepthRenderbuffer=V,this.setupFrameBufferTexture=R,this.useMultisampledRTT=G,this.isReversedDepthBuffer=function(){return r.buffers.depth.getReversed()}}function fn(e,n){function r(r,i=``){let a,o=t._.getTransfer(i);if(r===1009)return e.UNSIGNED_BYTE;if(r===1017)return e.UNSIGNED_SHORT_4_4_4_4;if(r===1018)return e.UNSIGNED_SHORT_5_5_5_1;if(r===35902)return e.UNSIGNED_INT_5_9_9_9_REV;if(r===35899)return e.UNSIGNED_INT_10F_11F_11F_REV;if(r===1010)return e.BYTE;if(r===1011)return e.SHORT;if(r===1012)return e.UNSIGNED_SHORT;if(r===1013)return e.INT;if(r===1014)return e.UNSIGNED_INT;if(r===1015)return e.FLOAT;if(r===1016)return e.HALF_FLOAT;if(r===1021)return e.ALPHA;if(r===1022)return e.RGB;if(r===1023)return e.RGBA;if(r===1026)return e.DEPTH_COMPONENT;if(r===1027)return e.DEPTH_STENCIL;if(r===1028)return e.RED;if(r===1029)return e.RED_INTEGER;if(r===1030)return e.RG;if(r===1031)return e.RG_INTEGER;if(r===1033)return e.RGBA_INTEGER;if(r===33776||r===33777||r===33778||r===33779){if(o===`srgb`){if(a=n.get(`WEBGL_compressed_texture_s3tc_srgb`),a!==null){if(r===33776)return a.COMPRESSED_SRGB_S3TC_DXT1_EXT;if(r===33777)return a.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT;if(r===33778)return a.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT;if(r===33779)return a.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT}else return null}else if(a=n.get(`WEBGL_compressed_texture_s3tc`),a!==null){if(r===33776)return a.COMPRESSED_RGB_S3TC_DXT1_EXT;if(r===33777)return a.COMPRESSED_RGBA_S3TC_DXT1_EXT;if(r===33778)return a.COMPRESSED_RGBA_S3TC_DXT3_EXT;if(r===33779)return a.COMPRESSED_RGBA_S3TC_DXT5_EXT}else return null}if(r===35840||r===35841||r===35842||r===35843){if(a=n.get(`WEBGL_compressed_texture_pvrtc`),a!==null){if(r===35840)return a.COMPRESSED_RGB_PVRTC_4BPPV1_IMG;if(r===35841)return a.COMPRESSED_RGB_PVRTC_2BPPV1_IMG;if(r===35842)return a.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;if(r===35843)return a.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG}else return null}if(r===36196||r===37492||r===37496||r===37488||r===37489||r===37490||r===37491){if(a=n.get(`WEBGL_compressed_texture_etc`),a!==null){if(r===36196||r===37492)return o===`srgb`?a.COMPRESSED_SRGB8_ETC2:a.COMPRESSED_RGB8_ETC2;if(r===37496)return o===`srgb`?a.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC:a.COMPRESSED_RGBA8_ETC2_EAC;if(r===37488)return a.COMPRESSED_R11_EAC;if(r===37489)return a.COMPRESSED_SIGNED_R11_EAC;if(r===37490)return a.COMPRESSED_RG11_EAC;if(r===37491)return a.COMPRESSED_SIGNED_RG11_EAC}else return null}if(r===37808||r===37809||r===37810||r===37811||r===37812||r===37813||r===37814||r===37815||r===37816||r===37817||r===37818||r===37819||r===37820||r===37821){if(a=n.get(`WEBGL_compressed_texture_astc`),a!==null){if(r===37808)return o===`srgb`?a.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR:a.COMPRESSED_RGBA_ASTC_4x4_KHR;if(r===37809)return o===`srgb`?a.COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR:a.COMPRESSED_RGBA_ASTC_5x4_KHR;if(r===37810)return o===`srgb`?a.COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR:a.COMPRESSED_RGBA_ASTC_5x5_KHR;if(r===37811)return o===`srgb`?a.COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR:a.COMPRESSED_RGBA_ASTC_6x5_KHR;if(r===37812)return o===`srgb`?a.COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR:a.COMPRESSED_RGBA_ASTC_6x6_KHR;if(r===37813)return o===`srgb`?a.COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR:a.COMPRESSED_RGBA_ASTC_8x5_KHR;if(r===37814)return o===`srgb`?a.COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR:a.COMPRESSED_RGBA_ASTC_8x6_KHR;if(r===37815)return o===`srgb`?a.COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR:a.COMPRESSED_RGBA_ASTC_8x8_KHR;if(r===37816)return o===`srgb`?a.COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR:a.COMPRESSED_RGBA_ASTC_10x5_KHR;if(r===37817)return o===`srgb`?a.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR:a.COMPRESSED_RGBA_ASTC_10x6_KHR;if(r===37818)return o===`srgb`?a.COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR:a.COMPRESSED_RGBA_ASTC_10x8_KHR;if(r===37819)return o===`srgb`?a.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR:a.COMPRESSED_RGBA_ASTC_10x10_KHR;if(r===37820)return o===`srgb`?a.COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR:a.COMPRESSED_RGBA_ASTC_12x10_KHR;if(r===37821)return o===`srgb`?a.COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR:a.COMPRESSED_RGBA_ASTC_12x12_KHR}else return null}if(r===36492||r===36494||r===36495){if(a=n.get(`EXT_texture_compression_bptc`),a!==null){if(r===36492)return o===`srgb`?a.COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT:a.COMPRESSED_RGBA_BPTC_UNORM_EXT;if(r===36494)return a.COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT;if(r===36495)return a.COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT}else return null}if(r===36283||r===36284||r===36285||r===36286){if(a=n.get(`EXT_texture_compression_rgtc`),a!==null){if(r===36283)return a.COMPRESSED_RED_RGTC1_EXT;if(r===36284)return a.COMPRESSED_SIGNED_RED_RGTC1_EXT;if(r===36285)return a.COMPRESSED_RED_GREEN_RGTC2_EXT;if(r===36286)return a.COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT}else return null}return r===1020?e.UNSIGNED_INT_24_8:e[r]===void 0?null:e[r]}return{convert:r}}var pn=`
4081
4081
  void main() {
4082
4082
 
4083
4083
  gl_Position = vec4( position, 1.0 );
@@ -4101,8 +4101,8 @@ void main() {
4101
4101
 
4102
4102
  }
4103
4103
 
4104
- }`,hn=class{constructor(){this.texture=null,this.mesh=null,this.depthNear=0,this.depthFar=0}init(e,n){if(this.texture===null){let r=new t.A(e.texture);(e.depthNear!==n.depthNear||e.depthFar!==n.depthFar)&&(this.depthNear=e.depthNear,this.depthFar=e.depthFar),this.texture=r}}getMesh(e){if(this.texture!==null&&this.mesh===null){let n=e.cameras[0].viewport,r=new t.an({vertexShader:pn,fragmentShader:mn,uniforms:{depthColor:{value:this.texture},depthWidth:{value:n.z},depthHeight:{value:n.w}}});this.mesh=new t.J(new t.at(20,20),r)}return this.mesh}reset(){this.texture=null,this.mesh=null}getDepthTexture(){return this.texture}},gn=class extends t.k{constructor(e,n){super();let r=this,a=null,o=1,s=null,c=`local-floor`,l=1,u=null,d=null,f=null,p=null,m=null,h=null,g=typeof XRWebGLBinding<`u`,_=new hn,v={},y=n.getContextAttributes(),b=null,x=null,S=[],C=[],w=new t.xn,T=null,E=new t.rt;E.viewport=new t.Cn;let D=new t.rt;D.viewport=new t.Cn;let O=[E,D],k=new t.u,A=null,j=null;this.cameraAutoUpdate=!0,this.enabled=!1,this.isPresenting=!1,this.getController=function(e){let n=S[e];return n===void 0&&(n=new t.En,S[e]=n),n.getTargetRaySpace()},this.getControllerGrip=function(e){let n=S[e];return n===void 0&&(n=new t.En,S[e]=n),n.getGripSpace()},this.getHand=function(e){let n=S[e];return n===void 0&&(n=new t.En,S[e]=n),n.getHandSpace()};function M(e){let t=C.indexOf(e.inputSource);if(t===-1)return;let n=S[t];n!==void 0&&(n.update(e.inputSource,e.frame,u||s),n.dispatchEvent({type:e.type,data:e.inputSource}))}function N(){a.removeEventListener(`select`,M),a.removeEventListener(`selectstart`,M),a.removeEventListener(`selectend`,M),a.removeEventListener(`squeeze`,M),a.removeEventListener(`squeezestart`,M),a.removeEventListener(`squeezeend`,M),a.removeEventListener(`end`,N),a.removeEventListener(`inputsourceschange`,ee);for(let e=0;e<S.length;e++){let t=C[e];t!==null&&(C[e]=null,S[e].disconnect(t))}A=null,j=null,_.reset();for(let e in v)delete v[e];e.setRenderTarget(b),m=null,p=null,f=null,a=null,x=null,ae.stop(),r.isPresenting=!1,e.setPixelRatio(T),e.setSize(w.width,w.height,!1),r.dispatchEvent({type:`sessionend`})}this.setFramebufferScaleFactor=function(e){o=e,r.isPresenting===!0&&t.In(`WebXRManager: Cannot change framebuffer scale while presenting.`)},this.setReferenceSpaceType=function(e){c=e,r.isPresenting===!0&&t.In(`WebXRManager: Cannot change reference space type while presenting.`)},this.getReferenceSpace=function(){return u||s},this.setReferenceSpace=function(e){u=e},this.getBaseLayer=function(){return p===null?m:p},this.getBinding=function(){return f===null&&g&&(f=new XRWebGLBinding(a,n)),f},this.getFrame=function(){return h},this.getSession=function(){return a},this.setSession=async function(i){if(a=i,a!==null){if(b=e.getRenderTarget(),a.addEventListener(`select`,M),a.addEventListener(`selectstart`,M),a.addEventListener(`selectend`,M),a.addEventListener(`squeeze`,M),a.addEventListener(`squeezestart`,M),a.addEventListener(`squeezeend`,M),a.addEventListener(`end`,N),a.addEventListener(`inputsourceschange`,ee),y.xrCompatible!==!0&&await n.makeXRCompatible(),T=e.getPixelRatio(),e.getSize(w),g&&`createProjectionLayer`in XRWebGLBinding.prototype){let r=null,i=null,s=null;y.depth&&(s=y.stencil?n.DEPTH24_STENCIL8:n.DEPTH_COMPONENT24,r=y.stencil?t.E:t.T,i=y.stencil?t.hn:t._n);let c={colorFormat:n.RGBA8,depthFormat:s,scaleFactor:o};f=this.getBinding(),p=f.createProjectionLayer(c),a.updateRenderState({layers:[p]}),e.setPixelRatio(1),e.setSize(p.textureWidth,p.textureHeight,!1),x=new t.Tn(p.textureWidth,p.textureHeight,{format:t.pt,type:t.pn,depthTexture:new t.D(p.textureWidth,p.textureHeight,i,void 0,void 0,void 0,void 0,void 0,void 0,r),stencilBuffer:y.stencil,colorSpace:e.outputColorSpace,samples:y.antialias?4:0,resolveDepthBuffer:p.ignoreDepthValues===!1,resolveStencilBuffer:p.ignoreDepthValues===!1})}else{let r={antialias:y.antialias,alpha:!0,depth:y.depth,stencil:y.stencil,framebufferScaleFactor:o};m=new XRWebGLLayer(a,n,r),a.updateRenderState({baseLayer:m}),e.setPixelRatio(1),e.setSize(m.framebufferWidth,m.framebufferHeight,!1),x=new t.Tn(m.framebufferWidth,m.framebufferHeight,{format:t.pt,type:t.pn,colorSpace:e.outputColorSpace,stencilBuffer:y.stencil,resolveDepthBuffer:m.ignoreDepthValues===!1,resolveStencilBuffer:m.ignoreDepthValues===!1})}x.isXRRenderTarget=!0,this.setFoveation(l),u=null,s=await a.requestReferenceSpace(c),ae.setContext(a),ae.start(),r.isPresenting=!0,r.dispatchEvent({type:`sessionstart`})}},this.getEnvironmentBlendMode=function(){if(a!==null)return a.environmentBlendMode},this.getDepthTexture=function(){return _.getDepthTexture()};function ee(e){for(let t=0;t<e.removed.length;t++){let n=e.removed[t],r=C.indexOf(n);r>=0&&(C[r]=null,S[r].disconnect(n))}for(let t=0;t<e.added.length;t++){let n=e.added[t],r=C.indexOf(n);if(r===-1){for(let e=0;e<S.length;e++)if(e>=C.length){C.push(n),r=e;break}else if(C[e]===null){C[e]=n,r=e;break}if(r===-1)break}let i=S[r];i&&i.connect(n)}}let P=new t.Sn,F=new t.Sn;function I(e,t,n){P.setFromMatrixPosition(t.matrixWorld),F.setFromMatrixPosition(n.matrixWorld);let r=P.distanceTo(F),i=t.projectionMatrix.elements,a=n.projectionMatrix.elements,o=i[14]/(i[10]-1),s=i[14]/(i[10]+1),c=(i[9]+1)/i[5],l=(i[9]-1)/i[5],u=(i[8]-1)/i[0],d=(a[8]+1)/a[0],f=o*u,p=o*d,m=r/(-u+d),h=m*-u;if(t.matrixWorld.decompose(e.position,e.quaternion,e.scale),e.translateX(h),e.translateZ(m),e.matrixWorld.compose(e.position,e.quaternion,e.scale),e.matrixWorldInverse.copy(e.matrixWorld).invert(),i[10]===-1)e.projectionMatrix.copy(t.projectionMatrix),e.projectionMatrixInverse.copy(t.projectionMatrixInverse);else{let t=o+m,n=s+m,i=f-h,a=p+(r-h),u=c*s/n*t,d=l*s/n*t;e.projectionMatrix.makePerspective(i,a,u,d,t,n),e.projectionMatrixInverse.copy(e.projectionMatrix).invert()}}function te(e,t){t===null?e.matrixWorld.copy(e.matrix):e.matrixWorld.multiplyMatrices(t.matrixWorld,e.matrix),e.matrixWorldInverse.copy(e.matrixWorld).invert()}this.updateCamera=function(e){if(a===null)return;let t=e.near,n=e.far;_.texture!==null&&(_.depthNear>0&&(t=_.depthNear),_.depthFar>0&&(n=_.depthFar)),k.near=D.near=E.near=t,k.far=D.far=E.far=n,(A!==k.near||j!==k.far)&&(a.updateRenderState({depthNear:k.near,depthFar:k.far}),A=k.near,j=k.far),k.layers.mask=e.layers.mask|6,E.layers.mask=k.layers.mask&-5,D.layers.mask=k.layers.mask&-3;let r=e.parent,i=k.cameras;te(k,r);for(let e=0;e<i.length;e++)te(i[e],r);i.length===2?I(k,E,D):k.projectionMatrix.copy(E.projectionMatrix),ne(e,k,r)};function ne(e,n,r){r===null?e.matrix.copy(n.matrixWorld):(e.matrix.copy(r.matrixWorld),e.matrix.invert(),e.matrix.multiply(n.matrixWorld)),e.matrix.decompose(e.position,e.quaternion,e.scale),e.updateMatrixWorld(!0),e.projectionMatrix.copy(n.projectionMatrix),e.projectionMatrixInverse.copy(n.projectionMatrixInverse),e.isPerspectiveCamera&&(e.fov=t.lt*2*Math.atan(1/e.projectionMatrix.elements[5]),e.zoom=1)}this.getCamera=function(){return k},this.getFoveation=function(){if(p!==null||m!==null)return l},this.setFoveation=function(e){l=e,p!==null&&(p.fixedFoveation=e),m!==null&&m.fixedFoveation!==void 0&&(m.fixedFoveation=e)},this.hasDepthSensing=function(){return _.texture!==null},this.getDepthSensingMesh=function(){return _.getMesh(k)},this.getCameraTexture=function(e){return v[e]};let re=null;function ie(n,i){if(d=i.getViewerPose(u||s),h=i,d!==null){let n=d.views;m!==null&&(e.setRenderTargetFramebuffer(x,m.framebuffer),e.setRenderTarget(x));let i=!1;n.length!==k.cameras.length&&(k.cameras.length=0,i=!0);for(let r=0;r<n.length;r++){let a=n[r],o=null;if(m!==null)o=m.getViewport(a);else{let t=f.getViewSubImage(p,a);o=t.viewport,r===0&&(e.setRenderTargetTextures(x,t.colorTexture,t.depthStencilTexture),e.setRenderTarget(x))}let s=O[r];s===void 0&&(s=new t.rt,s.layers.enable(r),s.viewport=new t.Cn,O[r]=s),s.matrix.fromArray(a.transform.matrix),s.matrix.decompose(s.position,s.quaternion,s.scale),s.projectionMatrix.fromArray(a.projectionMatrix),s.projectionMatrixInverse.copy(s.projectionMatrix).invert(),s.viewport.set(o.x,o.y,o.width,o.height),r===0&&(k.matrix.copy(s.matrix),k.matrix.decompose(k.position,k.quaternion,k.scale)),i===!0&&k.cameras.push(s)}let o=a.enabledFeatures;if(o&&o.includes(`depth-sensing`)&&a.depthUsage==`gpu-optimized`&&g){f=r.getBinding();let e=f.getDepthInformation(n[0]);e&&e.isValid&&e.texture&&_.init(e,a.renderState)}if(o&&o.includes(`camera-access`)&&g){e.state.unbindTexture(),f=r.getBinding();for(let e=0;e<n.length;e++){let r=n[e].camera;if(r){let e=v[r];e||(e=new t.A,v[r]=e);let n=f.getCameraImage(r);e.sourceTexture=n}}}}for(let e=0;e<S.length;e++){let t=C[e],n=S[e];t!==null&&n!==void 0&&n.update(t,i,u||s)}re&&re(n,i),i.detectedPlanes&&r.dispatchEvent({type:`planesdetected`,data:i}),h=null}let ae=new i;ae.setAnimationLoop(ie),this.setAnimationLoop=function(e){re=e},this.dispose=function(){}}},_n=new t.q,vn=new t.K;vn.set(-1,0,0,0,1,0,0,0,1);function yn(e,n){function r(e,t){e.matrixAutoUpdate===!0&&e.updateMatrix(),t.value.copy(e.matrix)}function i(n,r){r.color.getRGB(n.fogColor.value,t.Mn(e)),r.isFog?(n.fogNear.value=r.near,n.fogFar.value=r.far):r.isFogExp2&&(n.fogDensity.value=r.density)}function a(e,t,n,r,i){t.isNodeMaterial?t.uniformsNeedUpdate=!1:t.isMeshBasicMaterial?o(e,t):t.isMeshLambertMaterial?(o(e,t),t.envMap&&(e.envMapIntensity.value=t.envMapIntensity)):t.isMeshToonMaterial?(o(e,t),f(e,t)):t.isMeshPhongMaterial?(o(e,t),d(e,t),t.envMap&&(e.envMapIntensity.value=t.envMapIntensity)):t.isMeshStandardMaterial?(o(e,t),p(e,t),t.isMeshPhysicalMaterial&&m(e,t,i)):t.isMeshMatcapMaterial?(o(e,t),h(e,t)):t.isMeshDepthMaterial?o(e,t):t.isMeshDistanceMaterial?(o(e,t),g(e,t)):t.isMeshNormalMaterial?o(e,t):t.isLineBasicMaterial?(s(e,t),t.isLineDashedMaterial&&c(e,t)):t.isPointsMaterial?l(e,t,n,r):t.isSpriteMaterial?u(e,t):t.isShadowMaterial?(e.color.value.copy(t.color),e.opacity.value=t.opacity):t.isShaderMaterial&&(t.uniformsNeedUpdate=!1)}function o(e,t){e.opacity.value=t.opacity,t.color&&e.diffuse.value.copy(t.color),t.emissive&&e.emissive.value.copy(t.emissive).multiplyScalar(t.emissiveIntensity),t.map&&(e.map.value=t.map,r(t.map,e.mapTransform)),t.alphaMap&&(e.alphaMap.value=t.alphaMap,r(t.alphaMap,e.alphaMapTransform)),t.bumpMap&&(e.bumpMap.value=t.bumpMap,r(t.bumpMap,e.bumpMapTransform),e.bumpScale.value=t.bumpScale,t.side===1&&(e.bumpScale.value*=-1)),t.normalMap&&(e.normalMap.value=t.normalMap,r(t.normalMap,e.normalMapTransform),e.normalScale.value.copy(t.normalScale),t.side===1&&e.normalScale.value.negate()),t.displacementMap&&(e.displacementMap.value=t.displacementMap,r(t.displacementMap,e.displacementMapTransform),e.displacementScale.value=t.displacementScale,e.displacementBias.value=t.displacementBias),t.emissiveMap&&(e.emissiveMap.value=t.emissiveMap,r(t.emissiveMap,e.emissiveMapTransform)),t.specularMap&&(e.specularMap.value=t.specularMap,r(t.specularMap,e.specularMapTransform)),t.alphaTest>0&&(e.alphaTest.value=t.alphaTest);let i=n.get(t),a=i.envMap,o=i.envMapRotation;a&&(e.envMap.value=a,e.envMapRotation.value.setFromMatrix4(_n.makeRotationFromEuler(o)).transpose(),a.isCubeTexture&&a.isRenderTargetTexture===!1&&e.envMapRotation.value.premultiply(vn),e.reflectivity.value=t.reflectivity,e.ior.value=t.ior,e.refractionRatio.value=t.refractionRatio),t.lightMap&&(e.lightMap.value=t.lightMap,e.lightMapIntensity.value=t.lightMapIntensity,r(t.lightMap,e.lightMapTransform)),t.aoMap&&(e.aoMap.value=t.aoMap,e.aoMapIntensity.value=t.aoMapIntensity,r(t.aoMap,e.aoMapTransform))}function s(e,t){e.diffuse.value.copy(t.color),e.opacity.value=t.opacity,t.map&&(e.map.value=t.map,r(t.map,e.mapTransform))}function c(e,t){e.dashSize.value=t.dashSize,e.totalSize.value=t.dashSize+t.gapSize,e.scale.value=t.scale}function l(e,t,n,i){e.diffuse.value.copy(t.color),e.opacity.value=t.opacity,e.size.value=t.size*n,e.scale.value=i*.5,t.map&&(e.map.value=t.map,r(t.map,e.uvTransform)),t.alphaMap&&(e.alphaMap.value=t.alphaMap,r(t.alphaMap,e.alphaMapTransform)),t.alphaTest>0&&(e.alphaTest.value=t.alphaTest)}function u(e,t){e.diffuse.value.copy(t.color),e.opacity.value=t.opacity,e.rotation.value=t.rotation,t.map&&(e.map.value=t.map,r(t.map,e.mapTransform)),t.alphaMap&&(e.alphaMap.value=t.alphaMap,r(t.alphaMap,e.alphaMapTransform)),t.alphaTest>0&&(e.alphaTest.value=t.alphaTest)}function d(e,t){e.specular.value.copy(t.specular),e.shininess.value=Math.max(t.shininess,1e-4)}function f(e,t){t.gradientMap&&(e.gradientMap.value=t.gradientMap)}function p(e,t){e.metalness.value=t.metalness,t.metalnessMap&&(e.metalnessMap.value=t.metalnessMap,r(t.metalnessMap,e.metalnessMapTransform)),e.roughness.value=t.roughness,t.roughnessMap&&(e.roughnessMap.value=t.roughnessMap,r(t.roughnessMap,e.roughnessMapTransform)),t.envMap&&(e.envMapIntensity.value=t.envMapIntensity)}function m(e,t,n){e.ior.value=t.ior,t.sheen>0&&(e.sheenColor.value.copy(t.sheenColor).multiplyScalar(t.sheen),e.sheenRoughness.value=t.sheenRoughness,t.sheenColorMap&&(e.sheenColorMap.value=t.sheenColorMap,r(t.sheenColorMap,e.sheenColorMapTransform)),t.sheenRoughnessMap&&(e.sheenRoughnessMap.value=t.sheenRoughnessMap,r(t.sheenRoughnessMap,e.sheenRoughnessMapTransform))),t.clearcoat>0&&(e.clearcoat.value=t.clearcoat,e.clearcoatRoughness.value=t.clearcoatRoughness,t.clearcoatMap&&(e.clearcoatMap.value=t.clearcoatMap,r(t.clearcoatMap,e.clearcoatMapTransform)),t.clearcoatRoughnessMap&&(e.clearcoatRoughnessMap.value=t.clearcoatRoughnessMap,r(t.clearcoatRoughnessMap,e.clearcoatRoughnessMapTransform)),t.clearcoatNormalMap&&(e.clearcoatNormalMap.value=t.clearcoatNormalMap,r(t.clearcoatNormalMap,e.clearcoatNormalMapTransform),e.clearcoatNormalScale.value.copy(t.clearcoatNormalScale),t.side===1&&e.clearcoatNormalScale.value.negate())),t.dispersion>0&&(e.dispersion.value=t.dispersion),t.iridescence>0&&(e.iridescence.value=t.iridescence,e.iridescenceIOR.value=t.iridescenceIOR,e.iridescenceThicknessMinimum.value=t.iridescenceThicknessRange[0],e.iridescenceThicknessMaximum.value=t.iridescenceThicknessRange[1],t.iridescenceMap&&(e.iridescenceMap.value=t.iridescenceMap,r(t.iridescenceMap,e.iridescenceMapTransform)),t.iridescenceThicknessMap&&(e.iridescenceThicknessMap.value=t.iridescenceThicknessMap,r(t.iridescenceThicknessMap,e.iridescenceThicknessMapTransform))),t.transmission>0&&(e.transmission.value=t.transmission,e.transmissionSamplerMap.value=n.texture,e.transmissionSamplerSize.value.set(n.width,n.height),t.transmissionMap&&(e.transmissionMap.value=t.transmissionMap,r(t.transmissionMap,e.transmissionMapTransform)),e.thickness.value=t.thickness,t.thicknessMap&&(e.thicknessMap.value=t.thicknessMap,r(t.thicknessMap,e.thicknessMapTransform)),e.attenuationDistance.value=t.attenuationDistance,e.attenuationColor.value.copy(t.attenuationColor)),t.anisotropy>0&&(e.anisotropyVector.value.set(t.anisotropy*Math.cos(t.anisotropyRotation),t.anisotropy*Math.sin(t.anisotropyRotation)),t.anisotropyMap&&(e.anisotropyMap.value=t.anisotropyMap,r(t.anisotropyMap,e.anisotropyMapTransform))),e.specularIntensity.value=t.specularIntensity,e.specularColor.value.copy(t.specularColor),t.specularColorMap&&(e.specularColorMap.value=t.specularColorMap,r(t.specularColorMap,e.specularColorMapTransform)),t.specularIntensityMap&&(e.specularIntensityMap.value=t.specularIntensityMap,r(t.specularIntensityMap,e.specularIntensityMapTransform))}function h(e,t){t.matcap&&(e.matcap.value=t.matcap)}function g(e,t){let r=n.get(t).light;e.referencePosition.value.setFromMatrixPosition(r.matrixWorld),e.nearDistance.value=r.shadow.camera.near,e.farDistance.value=r.shadow.camera.far}return{refreshFogUniforms:i,refreshMaterialUniforms:a}}function bn(e,n,r,i){let a={},o={},s=[],c=e.getParameter(e.MAX_UNIFORM_BUFFER_BINDINGS);function l(e,t){let n=t.program;i.uniformBlockBinding(e,n)}function u(e,t){let r=a[e.id];r===void 0&&(_(e),r=d(e),a[e.id]=r,e.addEventListener(`dispose`,y));let s=t.program;i.updateUBOMapping(e,s);let c=n.render.frame;o[e.id]!==c&&(p(e),o[e.id]=c)}function d(t){let n=f();t.__bindingPointIndex=n;let r=e.createBuffer(),i=t.__size,a=t.usage;return e.bindBuffer(e.UNIFORM_BUFFER,r),e.bufferData(e.UNIFORM_BUFFER,i,a),e.bindBuffer(e.UNIFORM_BUFFER,null),e.bindBufferBase(e.UNIFORM_BUFFER,n,r),r}function f(){for(let e=0;e<c;e++)if(s.indexOf(e)===-1)return s.push(e),e;return t.An(`WebGLRenderer: Maximum number of simultaneously usable uniforms groups reached.`),0}function p(t){let n=a[t.id],r=t.uniforms,i=t.__cache;e.bindBuffer(e.UNIFORM_BUFFER,n);for(let e=0,t=r.length;e<t;e++){let t=r[e];if(Array.isArray(t))for(let n=0,r=t.length;n<r;n++)m(t[n],e,n,i);else m(t,e,0,i)}e.bindBuffer(e.UNIFORM_BUFFER,null)}function m(t,n,r,i){if(g(t,n,r,i)===!0){let n=t.__offset,r=t.value;if(Array.isArray(r)){let e=0;for(let n=0;n<r.length;n++){let i=r[n],a=v(i);h(i,t.__data,e),typeof i!=`number`&&typeof i!=`boolean`&&!i.isMatrix3&&!ArrayBuffer.isView(i)&&(e+=a.storage/Float32Array.BYTES_PER_ELEMENT)}}else h(r,t.__data,0);e.bufferSubData(e.UNIFORM_BUFFER,n,t.__data)}}function h(e,t,n){typeof e==`number`||typeof e==`boolean`?t[0]=e:e.isMatrix3?(t[0]=e.elements[0],t[1]=e.elements[1],t[2]=e.elements[2],t[3]=0,t[4]=e.elements[3],t[5]=e.elements[4],t[6]=e.elements[5],t[7]=0,t[8]=e.elements[6],t[9]=e.elements[7],t[10]=e.elements[8],t[11]=0):ArrayBuffer.isView(e)?t.set(new e.constructor(e.buffer,e.byteOffset,t.length)):e.toArray(t,n)}function g(e,t,n,r){let i=e.value,a=t+`_`+n;if(r[a]===void 0)return r[a]=typeof i==`number`||typeof i==`boolean`?i:ArrayBuffer.isView(i)?i.slice():i.clone(),!0;{let e=r[a];if(typeof i==`number`||typeof i==`boolean`){if(e!==i)return r[a]=i,!0}else if(ArrayBuffer.isView(i))return!0;else if(e.equals(i)===!1)return e.copy(i),!0}return!1}function _(e){let t=e.uniforms,n=0;for(let e=0,r=t.length;e<r;e++){let r=Array.isArray(t[e])?t[e]:[t[e]];for(let e=0,t=r.length;e<t;e++){let t=r[e],i=Array.isArray(t.value)?t.value:[t.value];for(let e=0,r=i.length;e<r;e++){let r=i[e],a=v(r),o=n%16,s=o%a.boundary,c=o+s;n+=s,c!==0&&16-c<a.storage&&(n+=16-c),t.__data=new Float32Array(a.storage/Float32Array.BYTES_PER_ELEMENT),t.__offset=n,n+=a.storage}}}let r=n%16;return r>0&&(n+=16-r),e.__size=n,e.__cache={},this}function v(e){let n={boundary:0,storage:0};return typeof e==`number`||typeof e==`boolean`?(n.boundary=4,n.storage=4):e.isVector2?(n.boundary=8,n.storage=8):e.isVector3||e.isColor?(n.boundary=16,n.storage=12):e.isVector4?(n.boundary=16,n.storage=16):e.isMatrix3?(n.boundary=48,n.storage=48):e.isMatrix4?(n.boundary=64,n.storage=64):e.isTexture?t.In(`WebGLRenderer: Texture samplers can not be part of an uniforms group.`):ArrayBuffer.isView(e)?(n.boundary=16,n.storage=e.byteLength):t.In(`WebGLRenderer: Unsupported uniform value type.`,e),n}function y(t){let n=t.target;n.removeEventListener(`dispose`,y);let r=s.indexOf(n.__bindingPointIndex);s.splice(r,1),e.deleteBuffer(a[n.id]),delete a[n.id],delete o[n.id]}function b(){for(let t in a)e.deleteBuffer(a[t]);s=[],a={},o={}}return{bind:l,update:u,dispose:b}}var xn=new Uint16Array([12469,15057,12620,14925,13266,14620,13807,14376,14323,13990,14545,13625,14713,13328,14840,12882,14931,12528,14996,12233,15039,11829,15066,11525,15080,11295,15085,10976,15082,10705,15073,10495,13880,14564,13898,14542,13977,14430,14158,14124,14393,13732,14556,13410,14702,12996,14814,12596,14891,12291,14937,11834,14957,11489,14958,11194,14943,10803,14921,10506,14893,10278,14858,9960,14484,14039,14487,14025,14499,13941,14524,13740,14574,13468,14654,13106,14743,12678,14818,12344,14867,11893,14889,11509,14893,11180,14881,10751,14852,10428,14812,10128,14765,9754,14712,9466,14764,13480,14764,13475,14766,13440,14766,13347,14769,13070,14786,12713,14816,12387,14844,11957,14860,11549,14868,11215,14855,10751,14825,10403,14782,10044,14729,9651,14666,9352,14599,9029,14967,12835,14966,12831,14963,12804,14954,12723,14936,12564,14917,12347,14900,11958,14886,11569,14878,11247,14859,10765,14828,10401,14784,10011,14727,9600,14660,9289,14586,8893,14508,8533,15111,12234,15110,12234,15104,12216,15092,12156,15067,12010,15028,11776,14981,11500,14942,11205,14902,10752,14861,10393,14812,9991,14752,9570,14682,9252,14603,8808,14519,8445,14431,8145,15209,11449,15208,11451,15202,11451,15190,11438,15163,11384,15117,11274,15055,10979,14994,10648,14932,10343,14871,9936,14803,9532,14729,9218,14645,8742,14556,8381,14461,8020,14365,7603,15273,10603,15272,10607,15267,10619,15256,10631,15231,10614,15182,10535,15118,10389,15042,10167,14963,9787,14883,9447,14800,9115,14710,8665,14615,8318,14514,7911,14411,7507,14279,7198,15314,9675,15313,9683,15309,9712,15298,9759,15277,9797,15229,9773,15166,9668,15084,9487,14995,9274,14898,8910,14800,8539,14697,8234,14590,7790,14479,7409,14367,7067,14178,6621,15337,8619,15337,8631,15333,8677,15325,8769,15305,8871,15264,8940,15202,8909,15119,8775,15022,8565,14916,8328,14804,8009,14688,7614,14569,7287,14448,6888,14321,6483,14088,6171,15350,7402,15350,7419,15347,7480,15340,7613,15322,7804,15287,7973,15229,8057,15148,8012,15046,7846,14933,7611,14810,7357,14682,7069,14552,6656,14421,6316,14251,5948,14007,5528,15356,5942,15356,5977,15353,6119,15348,6294,15332,6551,15302,6824,15249,7044,15171,7122,15070,7050,14949,6861,14818,6611,14679,6349,14538,6067,14398,5651,14189,5311,13935,4958,15359,4123,15359,4153,15356,4296,15353,4646,15338,5160,15311,5508,15263,5829,15188,6042,15088,6094,14966,6001,14826,5796,14678,5543,14527,5287,14377,4985,14133,4586,13869,4257,15360,1563,15360,1642,15358,2076,15354,2636,15341,3350,15317,4019,15273,4429,15203,4732,15105,4911,14981,4932,14836,4818,14679,4621,14517,4386,14359,4156,14083,3795,13808,3437,15360,122,15360,137,15358,285,15355,636,15344,1274,15322,2177,15281,2765,15215,3223,15120,3451,14995,3569,14846,3567,14681,3466,14511,3305,14344,3121,14037,2800,13753,2467,15360,0,15360,1,15359,21,15355,89,15346,253,15325,479,15287,796,15225,1148,15133,1492,15008,1749,14856,1882,14685,1886,14506,1783,14324,1608,13996,1398,13702,1183]),Sn=null;function Cn(){return Sn===null&&(Sn=new t.w(xn,16,16,t.Wt,t.I),Sn.name=`DFG_LUT`,Sn.minFilter=t.z,Sn.magFilter=t.z,Sn.wrapS=t.h,Sn.wrapT=t.h,Sn.generateMipmaps=!1,Sn.needsUpdate=!0),Sn}var wn=class{constructor(e={}){let{canvas:n=t.On(),context:r=null,depth:o=!0,stencil:s=!1,alpha:c=!1,antialias:l=!1,premultipliedAlpha:u=!0,preserveDrawingBuffer:d=!1,powerPreference:_=`default`,failIfMajorPerformanceCaveat:v=!1,reversedDepthBuffer:y=!1,outputBufferType:b=t.pn}=e;this.isWebGLRenderer=!0;let x;if(r!==null){if(typeof WebGLRenderingContext<`u`&&r instanceof WebGLRenderingContext)throw Error(`THREE.WebGLRenderer: WebGL 1 is not supported since r163.`);x=r.getContextAttributes().alpha}else x=c;let S=b,C=new Set([t.mt,t.Gt,t.Yt]),w=new Set([t.pn,t._n,t.bn,t.hn,t.vn,t.yn]),T=new Uint32Array(4),E=new Int32Array(4),D=new t.Sn,O=null,k=null,A=[],j=[],M=null;this.domElement=n,this.debug={checkShaderErrors:!0,onShaderError:null},this.autoClear=!0,this.autoClearColor=!0,this.autoClearDepth=!0,this.autoClearStencil=!0,this.sortObjects=!0,this.clippingPlanes=[],this.localClippingEnabled=!1,this.toneMapping=0,this.toneMappingExposure=1,this.transmissionResolutionScale=1;let N=this,ee=!1,P=null,F=null,I=null,L=null;this._outputColorSpace=t.nn;let le=0,R=0,z=null,B=-1,V=null,H=new t.Cn,ue=new t.Cn,de=null,fe=new t.g(0),pe=0,U=n.width,W=n.height,G=1,me=null,he=null,ge=new t.Cn(0,0,U,W),_e=new t.Cn(0,0,U,W),ve=!1,ye=new t.N,be=!1,xe=!1,Se=new t.q,Ce=new t.Sn,we=new t.Cn,Te={background:null,fog:null,environment:null,overrideMaterial:null,isScene:!0},Ee=!1;function De(){return z===null?G:1}let K=r;function Oe(e,t){return n.getContext(e,t)}try{let e={alpha:!0,depth:o,stencil:s,antialias:l,premultipliedAlpha:u,preserveDrawingBuffer:d,powerPreference:_,failIfMajorPerformanceCaveat:v};if(`setAttribute`in n&&n.setAttribute(`data-engine`,`three.js r185`),n.addEventListener(`webglcontextlost`,Ye,!1),n.addEventListener(`webglcontextrestored`,Xe,!1),n.addEventListener(`webglcontextcreationerror`,Ze,!1),K===null){let t=`webgl2`;if(K=Oe(t,e),K===null)throw Oe(t)?Error(`THREE.WebGLRenderer: Error creating WebGL context with your selected attributes.`):Error(`THREE.WebGLRenderer: Error creating WebGL context.`)}}catch(e){throw t.An(`WebGLRenderer: `+e.message),e}let q,ke,J,Ae,Y,X,je,Me,Ne,Pe,Fe,Ie,Le,Re,ze,Be,Ve,He,Ue,We,Ge,Ke,qe;function Je(){q=new ne(K),q.init(),Ge=new fn(K,q),ke=new h(K,q,e,Ge),J=new un(K,q),ke.reversedDepthBuffer&&y&&J.buffers.depth.setReversed(!0),F=K.createFramebuffer(),I=K.createFramebuffer(),L=K.createFramebuffer(),Ae=new ae(K),Y=new Ut,X=new dn(K,q,J,Y,ke,Ge,Ae),je=new te(N),Me=new a(K),Ke=new p(K,Me),Ne=new re(K,Me,Ae,Ke),Pe=new se(K,Ne,Me,Ke,Ae),He=new oe(K,ke,X),ze=new g(Y),Fe=new Ht(N,je,q,ke,Ke,ze),Ie=new yn(N,Y),Le=new qt,Re=new en(q),Ve=new f(N,je,J,Pe,x,u),Be=new ln(N,Pe,ke),qe=new bn(K,Ae,ke,J),Ue=new m(K,q,Ae),We=new ie(K,q,Ae),Ae.programs=Fe.programs,N.capabilities=ke,N.extensions=q,N.properties=Y,N.renderLists=Le,N.shadowMap=Be,N.state=J,N.info=Ae}Je(),S!==1009&&(M=new ce(S,n.width,n.height,l,o,s));let Z=new gn(N,K);this.xr=Z,this.getContext=function(){return K},this.getContextAttributes=function(){return K.getContextAttributes()},this.forceContextLoss=function(){let e=q.get(`WEBGL_lose_context`);e&&e.loseContext()},this.forceContextRestore=function(){let e=q.get(`WEBGL_lose_context`);e&&e.restoreContext()},this.getPixelRatio=function(){return G},this.setPixelRatio=function(e){e!==void 0&&(G=e,this.setSize(U,W,!1))},this.getSize=function(e){return e.set(U,W)},this.setSize=function(e,r,i=!0){if(Z.isPresenting){t.In(`WebGLRenderer: Can't change size while VR device is presenting.`);return}U=e,W=r,n.width=Math.floor(e*G),n.height=Math.floor(r*G),i===!0&&(n.style.width=e+`px`,n.style.height=r+`px`),M!==null&&M.setSize(n.width,n.height),this.setViewport(0,0,e,r)},this.getDrawingBufferSize=function(e){return e.set(U*G,W*G).floor()},this.setDrawingBufferSize=function(e,t,r){U=e,W=t,G=r,n.width=Math.floor(e*r),n.height=Math.floor(t*r),this.setViewport(0,0,e,t)},this.setEffects=function(e){if(S===1009){t.An(`WebGLRenderer: setEffects() requires outputBufferType set to HalfFloatType or FloatType.`);return}if(e){for(let n=0;n<e.length;n++)if(e[n].isOutputPass===!0){t.In(`WebGLRenderer: OutputPass is not needed in setEffects(). Tone mapping and color space conversion are applied automatically.`);break}}M.setEffects(e||[])},this.getCurrentViewport=function(e){return e.copy(H)},this.getViewport=function(e){return e.copy(ge)},this.setViewport=function(e,t,n,r){e.isVector4?ge.set(e.x,e.y,e.z,e.w):ge.set(e,t,n,r),J.viewport(H.copy(ge).multiplyScalar(G).round())},this.getScissor=function(e){return e.copy(_e)},this.setScissor=function(e,t,n,r){e.isVector4?_e.set(e.x,e.y,e.z,e.w):_e.set(e,t,n,r),J.scissor(ue.copy(_e).multiplyScalar(G).round())},this.getScissorTest=function(){return ve},this.setScissorTest=function(e){J.setScissorTest(ve=e)},this.setOpaqueSort=function(e){me=e},this.setTransparentSort=function(e){he=e},this.getClearColor=function(e){return e.copy(Ve.getClearColor())},this.setClearColor=function(){Ve.setClearColor(...arguments)},this.getClearAlpha=function(){return Ve.getClearAlpha()},this.setClearAlpha=function(){Ve.setClearAlpha(...arguments)},this.clear=function(e=!0,t=!0,n=!0){let r=0;if(e){let e=!1;if(z!==null){let t=z.texture.format;e=C.has(t)}if(e){let e=z.texture.type,t=w.has(e),n=Ve.getClearColor(),r=Ve.getClearAlpha(),i=n.r,a=n.g,o=n.b;t?(T[0]=i,T[1]=a,T[2]=o,T[3]=r,K.clearBufferuiv(K.COLOR,0,T)):(E[0]=i,E[1]=a,E[2]=o,E[3]=r,K.clearBufferiv(K.COLOR,0,E))}else r|=K.COLOR_BUFFER_BIT}t&&(r|=K.DEPTH_BUFFER_BIT,this.state.buffers.depth.setMask(!0)),n&&(r|=K.STENCIL_BUFFER_BIT,this.state.buffers.stencil.setMask(4294967295)),r!==0&&K.clear(r)},this.clearColor=function(){this.clear(!0,!1,!1)},this.clearDepth=function(){this.clear(!1,!0,!1)},this.clearStencil=function(){this.clear(!1,!1,!0)},this.setNodesHandler=function(e){e.setRenderer(this),P=e},this.dispose=function(){n.removeEventListener(`webglcontextlost`,Ye,!1),n.removeEventListener(`webglcontextrestored`,Xe,!1),n.removeEventListener(`webglcontextcreationerror`,Ze,!1),Ve.dispose(),Le.dispose(),Re.dispose(),Y.dispose(),je.dispose(),Pe.dispose(),Ke.dispose(),qe.dispose(),Fe.dispose(),Z.dispose(),Z.removeEventListener(`sessionstart`,at),Z.removeEventListener(`sessionend`,ot),st.stop()};function Ye(e){e.preventDefault(),t.Nn(`WebGLRenderer: Context Lost.`),ee=!0}function Xe(){t.Nn(`WebGLRenderer: Context Restored.`),ee=!1;let e=Ae.autoReset,n=Be.enabled,r=Be.autoUpdate,i=Be.needsUpdate,a=Be.type;Je(),Ae.autoReset=e,Be.enabled=n,Be.autoUpdate=r,Be.needsUpdate=i,Be.type=a}function Ze(e){t.An(`WebGLRenderer: A WebGL context could not be created. Reason: `,e.statusMessage)}function Qe(e){let t=e.target;t.removeEventListener(`dispose`,Qe),$e(t)}function $e(e){et(e),Y.remove(e)}function et(e){let t=Y.get(e).programs;t!==void 0&&(t.forEach(function(e){Fe.releaseProgram(e)}),e.isShaderMaterial&&Fe.releaseShaderCache(e))}this.renderBufferDirect=function(e,t,n,r,i,a){t===null&&(t=Te);let o=i.isMesh&&i.matrixWorld.determinantAffine()<0,s=_t(e,t,n,r,i);J.setMaterial(r,o);let c=n.index,l=1;if(r.wireframe===!0){if(c=Ne.getWireframeAttribute(n),c===void 0)return;l=2}let u=n.drawRange,d=n.attributes.position,f=u.start*l,p=(u.start+u.count)*l;a!==null&&(f=Math.max(f,a.start*l),p=Math.min(p,(a.start+a.count)*l)),c===null?d!=null&&(f=Math.max(f,0),p=Math.min(p,d.count)):(f=Math.max(f,0),p=Math.min(p,c.count));let m=p-f;if(m<0||m===1/0)return;Ke.setup(i,r,s,n,c);let h,g=Ue;if(c!==null&&(h=Me.get(c),g=We,g.setIndex(h)),i.isMesh)r.wireframe===!0?(J.setLineWidth(r.wireframeLinewidth*De()),g.setMode(K.LINES)):g.setMode(K.TRIANGLES);else if(i.isLine){let e=r.linewidth;e===void 0&&(e=1),J.setLineWidth(e*De()),i.isLineSegments?g.setMode(K.LINES):i.isLineLoop?g.setMode(K.LINE_LOOP):g.setMode(K.LINE_STRIP)}else i.isPoints?g.setMode(K.POINTS):i.isSprite&&g.setMode(K.TRIANGLES);if(i.isBatchedMesh){if(q.get(`WEBGL_multi_draw`))g.renderMultiDraw(i._multiDrawStarts,i._multiDrawCounts,i._multiDrawCount);else{let e=i._multiDrawStarts,t=i._multiDrawCounts,n=i._multiDrawCount,a=c?Me.get(c).bytesPerElement:1,o=Y.get(r).currentProgram.getUniforms();for(let r=0;r<n;r++)o.setValue(K,`_gl_DrawID`,r),g.render(e[r]/a,t[r])}}else if(i.isInstancedMesh)g.renderInstances(f,m,i.count);else if(n.isInstancedBufferGeometry){let e=n._maxInstanceCount===void 0?1/0:n._maxInstanceCount,t=Math.min(n.instanceCount,e);g.renderInstances(f,m,t)}else g.render(f,m)};function nt(e,t,n){e.transparent===!0&&e.side===2&&e.forceSinglePass===!1?(e.side=1,e.needsUpdate=!0,pt(e,t,n),e.side=0,e.needsUpdate=!0,pt(e,t,n),e.side=2):pt(e,t,n)}this.compile=function(e,t,n=null){n===null&&(n=e),k=Re.get(n),k.init(t),j.push(k),n.traverseVisible(function(e){e.isLight&&e.layers.test(t.layers)&&(k.pushLight(e),e.castShadow&&k.pushShadow(e))}),e!==n&&e.traverseVisible(function(e){e.isLight&&e.layers.test(t.layers)&&(k.pushLight(e),e.castShadow&&k.pushShadow(e))}),k.setupLights();let r=new Set;return e.traverse(function(e){if(!(e.isMesh||e.isPoints||e.isLine||e.isSprite))return;let t=e.material;if(t){if(Array.isArray(t))for(let i=0;i<t.length;i++){let a=t[i];nt(a,n,e),r.add(a)}else nt(t,n,e),r.add(t)}}),k=j.pop(),r},this.compileAsync=function(e,t,n=null){let r=this.compile(e,t,n);return new Promise(t=>{function n(){if(r.forEach(function(e){Y.get(e).currentProgram.isReady()&&r.delete(e)}),r.size===0){t(e);return}setTimeout(n,10)}q.get(`KHR_parallel_shader_compile`)===null?setTimeout(n,10):n()})};let rt=null;function it(e){rt&&rt(e)}function at(){st.stop()}function ot(){st.start()}let st=new i;st.setAnimationLoop(it),typeof self<`u`&&st.setContext(self),this.setAnimationLoop=function(e){rt=e,Z.setAnimationLoop(e),e===null?st.stop():st.start()},Z.addEventListener(`sessionstart`,at),Z.addEventListener(`sessionend`,ot),this.render=function(e,n){if(n!==void 0&&n.isCamera!==!0){t.An(`WebGLRenderer.render: camera is not an instance of THREE.Camera.`);return}if(ee===!0)return;P!==null&&P.renderStart(e,n);let r=Z.enabled===!0&&Z.isPresenting===!0,i=M!==null&&(z===null||r)&&M.begin(N,z);if(e.matrixWorldAutoUpdate===!0&&e.updateMatrixWorld(),n.parent===null&&n.matrixWorldAutoUpdate===!0&&n.updateMatrixWorld(),Z.enabled===!0&&Z.isPresenting===!0&&(M===null||M.isCompositing()===!1)&&(Z.cameraAutoUpdate===!0&&Z.updateCamera(n),n=Z.getCamera()),e.isScene===!0&&e.onBeforeRender(N,e,n,z),k=Re.get(e,j.length),k.init(n),k.state.textureUnits=X.getTextureUnits(),j.push(k),Se.multiplyMatrices(n.projectionMatrix,n.matrixWorldInverse),ye.setFromProjectionMatrix(Se,t.wn,n.reversedDepth),xe=this.localClippingEnabled,be=ze.init(this.clippingPlanes,xe),O=Le.get(e,A.length),O.init(),A.push(O),Z.enabled===!0&&Z.isPresenting===!0){let e=N.xr.getDepthSensingMesh();e!==null&&ct(e,n,-1/0,N.sortObjects)}ct(e,n,0,N.sortObjects),O.finish(),N.sortObjects===!0&&O.sort(me,he,n.reversedDepth),Ee=Z.enabled===!1||Z.isPresenting===!1||Z.hasDepthSensing()===!1,Ee&&Ve.addToRenderList(O,e),this.info.render.frame++,this.info.autoReset===!0&&this.info.reset(),be===!0&&ze.beginShadows();let a=k.state.shadowsArray;if(Be.render(a,e,n),be===!0&&ze.endShadows(),(i&&M.hasRenderPass())===!1){let t=O.opaque,r=O.transmissive;if(k.setupLights(),n.isArrayCamera){let i=n.cameras;if(r.length>0)for(let n=0,a=i.length;n<a;n++){let a=i[n];ut(t,r,e,a)}Ee&&Ve.render(e);for(let t=0,n=i.length;t<n;t++){let n=i[t];lt(O,e,n,n.viewport)}}else r.length>0&&ut(t,r,e,n),Ee&&Ve.render(e),lt(O,e,n)}z!==null&&R===0&&(X.updateMultisampleRenderTarget(z),X.updateRenderTargetMipmap(z)),i&&M.end(N),e.isScene===!0&&e.onAfterRender(N,e,n),Ke.resetDefaultState(),B=-1,V=null,j.pop(),j.length>0?(k=j[j.length-1],X.setTextureUnits(k.state.textureUnits),be===!0&&ze.setGlobalState(N.clippingPlanes,k.state.camera)):k=null,A.pop(),O=A.length>0?A[A.length-1]:null,P!==null&&P.renderEnd()};function ct(e,t,n,r){if(e.visible===!1)return;if(e.layers.test(t.layers)){if(e.isGroup)n=e.renderOrder;else if(e.isLOD)e.autoUpdate===!0&&e.update(t);else if(e.isLightProbeGrid)k.pushLightProbeGrid(e);else if(e.isLight)k.pushLight(e),e.castShadow&&k.pushShadow(e);else if(e.isSprite){if(!e.frustumCulled||ye.intersectsSprite(e)){r&&we.setFromMatrixPosition(e.matrixWorld).applyMatrix4(Se);let t=Pe.update(e),i=e.material;i.visible&&O.push(e,t,i,n,we.z,null)}}else if((e.isMesh||e.isLine||e.isPoints)&&(!e.frustumCulled||ye.intersectsObject(e))){let t=Pe.update(e),i=e.material;if(r&&(e.boundingSphere===void 0?(t.boundingSphere===null&&t.computeBoundingSphere(),we.copy(t.boundingSphere.center)):(e.boundingSphere===null&&e.computeBoundingSphere(),we.copy(e.boundingSphere.center)),we.applyMatrix4(e.matrixWorld).applyMatrix4(Se)),Array.isArray(i)){let r=t.groups;for(let a=0,o=r.length;a<o;a++){let o=r[a],s=i[o.materialIndex];s&&s.visible&&O.push(e,t,s,n,we.z,o)}}else i.visible&&O.push(e,t,i,n,we.z,null)}}let i=e.children;for(let e=0,a=i.length;e<a;e++)ct(i[e],t,n,r)}function lt(e,t,n,r){let{opaque:i,transmissive:a,transparent:o}=e;k.setupLightsView(n),be===!0&&ze.setGlobalState(N.clippingPlanes,n),r&&J.viewport(H.copy(r)),i.length>0&&dt(i,t,n),a.length>0&&dt(a,t,n),o.length>0&&dt(o,t,n),J.buffers.depth.setTest(!0),J.buffers.depth.setMask(!0),J.buffers.color.setMask(!0),J.setPolygonOffset(!1)}function ut(e,n,r,i){if((r.isScene===!0?r.overrideMaterial:null)!==null)return;if(k.state.transmissionRenderTarget[i.id]===void 0){let e=q.has(`EXT_color_buffer_half_float`)||q.has(`EXT_color_buffer_float`);k.state.transmissionRenderTarget[i.id]=new t.Tn(1,1,{generateMipmaps:!0,type:e?t.I:t.pn,minFilter:t.B,samples:Math.max(4,ke.samples),stencilBuffer:s,resolveDepthBuffer:!1,resolveStencilBuffer:!1,colorSpace:t._.workingColorSpace})}let a=k.state.transmissionRenderTarget[i.id],o=i.viewport||H;a.setSize(o.z*N.transmissionResolutionScale,o.w*N.transmissionResolutionScale);let c=N.getRenderTarget(),l=N.getActiveCubeFace(),u=N.getActiveMipmapLevel();N.setRenderTarget(a),N.getClearColor(fe),pe=N.getClearAlpha(),pe<1&&N.setClearColor(16777215,.5),N.clear(),Ee&&Ve.render(r);let d=N.toneMapping;N.toneMapping=0;let f=i.viewport;if(i.viewport!==void 0&&(i.viewport=void 0),k.setupLightsView(i),be===!0&&ze.setGlobalState(N.clippingPlanes,i),dt(e,r,i),X.updateMultisampleRenderTarget(a),X.updateRenderTargetMipmap(a),q.has(`WEBGL_multisampled_render_to_texture`)===!1){let e=!1;for(let t=0,a=n.length;t<a;t++){let{object:a,geometry:o,material:s,group:c}=n[t];if(s.side===2&&a.layers.test(i.layers)){let t=s.side;s.side=1,s.needsUpdate=!0,ft(a,r,i,o,s,c),s.side=t,s.needsUpdate=!0,e=!0}}e===!0&&(X.updateMultisampleRenderTarget(a),X.updateRenderTargetMipmap(a))}N.setRenderTarget(c,l,u),N.setClearColor(fe,pe),f!==void 0&&(i.viewport=f),N.toneMapping=d}function dt(e,t,n){let r=t.isScene===!0?t.overrideMaterial:null;for(let i=0,a=e.length;i<a;i++){let a=e[i],{object:o,geometry:s,group:c}=a,l=a.material;l.allowOverride===!0&&r!==null&&(l=r),o.layers.test(n.layers)&&ft(o,t,n,s,l,c)}}function ft(e,t,n,r,i,a){e.onBeforeRender(N,t,n,r,i,a),e.modelViewMatrix.multiplyMatrices(n.matrixWorldInverse,e.matrixWorld),e.normalMatrix.getNormalMatrix(e.modelViewMatrix),i.onBeforeRender(N,t,n,r,e,a),i.transparent===!0&&i.side===2&&i.forceSinglePass===!1?(i.side=1,i.needsUpdate=!0,N.renderBufferDirect(n,t,r,i,e,a),i.side=0,i.needsUpdate=!0,N.renderBufferDirect(n,t,r,i,e,a),i.side=2):N.renderBufferDirect(n,t,r,i,e,a),e.onAfterRender(N,t,n,r,i,a)}function pt(e,t,n){t.isScene!==!0&&(t=Te);let r=Y.get(e),i=k.state.lights,a=k.state.shadowsArray,o=i.state.version,s=Fe.getParameters(e,i.state,a,t,n,k.state.lightProbeGridArray),c=Fe.getProgramCacheKey(s),l=r.programs;r.environment=e.isMeshStandardMaterial||e.isMeshLambertMaterial||e.isMeshPhongMaterial?t.environment:null,r.fog=t.fog;let u=e.isMeshStandardMaterial||e.isMeshLambertMaterial&&!e.envMap||e.isMeshPhongMaterial&&!e.envMap;r.envMap=je.get(e.envMap||r.environment,u),r.envMapRotation=r.environment!==null&&e.envMap===null?t.environmentRotation:e.envMapRotation,l===void 0&&(e.addEventListener(`dispose`,Qe),l=new Map,r.programs=l);let d=l.get(c);if(d!==void 0){if(r.currentProgram===d&&r.lightsStateVersion===o)return ht(e,s),d}else s.uniforms=Fe.getUniforms(e),P!==null&&e.isNodeMaterial&&P.build(e,n,s),e.onBeforeCompile(s,N),d=Fe.acquireProgram(s,c),l.set(c,d),r.uniforms=s.uniforms;let f=r.uniforms;return(!e.isShaderMaterial&&!e.isRawShaderMaterial||e.clipping===!0)&&(f.clippingPlanes=ze.uniform),ht(e,s),r.needsLights=yt(e),r.lightsStateVersion=o,r.needsLights&&(f.ambientLightColor.value=i.state.ambient,f.lightProbe.value=i.state.probe,f.directionalLights.value=i.state.directional,f.directionalLightShadows.value=i.state.directionalShadow,f.spotLights.value=i.state.spot,f.spotLightShadows.value=i.state.spotShadow,f.rectAreaLights.value=i.state.rectArea,f.ltc_1.value=i.state.rectAreaLTC1,f.ltc_2.value=i.state.rectAreaLTC2,f.pointLights.value=i.state.point,f.pointLightShadows.value=i.state.pointShadow,f.hemisphereLights.value=i.state.hemi,f.directionalShadowMatrix.value=i.state.directionalShadowMatrix,f.spotLightMatrix.value=i.state.spotLightMatrix,f.spotLightMap.value=i.state.spotLightMap,f.pointShadowMatrix.value=i.state.pointShadowMatrix),r.lightProbeGrid=k.state.lightProbeGridArray.length>0,r.currentProgram=d,r.uniformsList=null,d}function mt(e){if(e.uniformsList===null){let t=e.currentProgram.getUniforms();e.uniformsList=tt.seqWithValue(t.seq,e.uniforms)}return e.uniformsList}function ht(e,t){let n=Y.get(e);n.outputColorSpace=t.outputColorSpace,n.batching=t.batching,n.batchingColor=t.batchingColor,n.instancing=t.instancing,n.instancingColor=t.instancingColor,n.instancingMorph=t.instancingMorph,n.skinning=t.skinning,n.morphTargets=t.morphTargets,n.morphNormals=t.morphNormals,n.morphColors=t.morphColors,n.morphTargetsCount=t.morphTargetsCount,n.numClippingPlanes=t.numClippingPlanes,n.numIntersection=t.numClipIntersection,n.vertexAlphas=t.vertexAlphas,n.vertexTangents=t.vertexTangents,n.toneMapping=t.toneMapping}function gt(e,t){if(e.length===0)return null;if(e.length===1)return e[0].texture===null?null:e[0];D.setFromMatrixPosition(t.matrixWorld);for(let t=0,n=e.length;t<n;t++){let n=e[t];if(n.texture!==null&&n.boundingBox.containsPoint(D))return n}return null}function _t(e,n,r,i,a){n.isScene!==!0&&(n=Te),X.resetTextureUnits();let o=n.fog,s=i.isMeshStandardMaterial||i.isMeshLambertMaterial||i.isMeshPhongMaterial?n.environment:null,c=z===null?N.outputColorSpace:z.isXRRenderTarget===!0?z.texture.colorSpace:t._.workingColorSpace,l=i.isMeshStandardMaterial||i.isMeshLambertMaterial&&!i.envMap||i.isMeshPhongMaterial&&!i.envMap,u=je.get(i.envMap||s,l),d=i.vertexColors===!0&&!!r.attributes.color&&r.attributes.color.itemSize===4,f=!!r.attributes.tangent&&(!!i.normalMap||i.anisotropy>0),p=!!r.morphAttributes.position,m=!!r.morphAttributes.normal,h=!!r.morphAttributes.color,g=0;i.toneMapped&&(z===null||z.isXRRenderTarget===!0)&&(g=N.toneMapping);let _=r.morphAttributes.position||r.morphAttributes.normal||r.morphAttributes.color,v=_===void 0?0:_.length,y=Y.get(i),b=k.state.lights;if(be===!0&&(xe===!0||e!==V)){let t=e===V&&i.id===B;ze.setState(i,e,t)}let x=!1;i.version===y.__version?y.needsLights&&y.lightsStateVersion!==b.state.version?x=!0:y.outputColorSpace===c?a.isBatchedMesh&&y.batching===!1||!a.isBatchedMesh&&y.batching===!0||a.isBatchedMesh&&y.batchingColor===!0&&a.colorTexture===null||a.isBatchedMesh&&y.batchingColor===!1&&a.colorTexture!==null||a.isInstancedMesh&&y.instancing===!1||!a.isInstancedMesh&&y.instancing===!0||a.isSkinnedMesh&&y.skinning===!1||!a.isSkinnedMesh&&y.skinning===!0||a.isInstancedMesh&&y.instancingColor===!0&&a.instanceColor===null||a.isInstancedMesh&&y.instancingColor===!1&&a.instanceColor!==null||a.isInstancedMesh&&y.instancingMorph===!0&&a.morphTexture===null||a.isInstancedMesh&&y.instancingMorph===!1&&a.morphTexture!==null?x=!0:y.envMap===u?i.fog===!0&&y.fog!==o||y.numClippingPlanes!==void 0&&(y.numClippingPlanes!==ze.numPlanes||y.numIntersection!==ze.numIntersection)?x=!0:y.vertexAlphas===d&&y.vertexTangents===f&&y.morphTargets===p&&y.morphNormals===m&&y.morphColors===h&&y.toneMapping===g&&y.morphTargetsCount===v?!!y.lightProbeGrid!=k.state.lightProbeGridArray.length>0&&(x=!0):x=!0:x=!0:x=!0:(x=!0,y.__version=i.version);let S=y.currentProgram;x===!0&&(S=pt(i,n,a),P&&i.isNodeMaterial&&P.onUpdateProgram(i,S,y));let C=!1,w=!1,T=!1,E=S.getUniforms(),D=y.uniforms;if(J.useProgram(S.program)&&(C=!0,w=!0,T=!0),i.id!==B&&(B=i.id,w=!0),y.needsLights){let e=gt(k.state.lightProbeGridArray,a);y.lightProbeGrid!==e&&(y.lightProbeGrid=e,w=!0)}if(C||V!==e){J.buffers.depth.getReversed()&&e.reversedDepth!==!0&&(e._reversedDepth=!0,e.updateProjectionMatrix()),E.setValue(K,`projectionMatrix`,e.projectionMatrix),E.setValue(K,`viewMatrix`,e.matrixWorldInverse);let t=E.map.cameraPosition;t!==void 0&&t.setValue(K,Ce.setFromMatrixPosition(e.matrixWorld)),ke.logarithmicDepthBuffer&&E.setValue(K,`logDepthBufFC`,2/(Math.log(e.far+1)/Math.LN2)),(i.isMeshPhongMaterial||i.isMeshToonMaterial||i.isMeshLambertMaterial||i.isMeshBasicMaterial||i.isMeshStandardMaterial||i.isShaderMaterial)&&E.setValue(K,`isOrthographic`,e.isOrthographicCamera===!0),V!==e&&(V=e,w=!0,T=!0)}if(y.needsLights&&(b.state.directionalShadowMap.length>0&&E.setValue(K,`directionalShadowMap`,b.state.directionalShadowMap,X),b.state.spotShadowMap.length>0&&E.setValue(K,`spotShadowMap`,b.state.spotShadowMap,X),b.state.pointShadowMap.length>0&&E.setValue(K,`pointShadowMap`,b.state.pointShadowMap,X)),a.isSkinnedMesh){E.setOptional(K,a,`bindMatrix`),E.setOptional(K,a,`bindMatrixInverse`);let e=a.skeleton;e&&(e.boneTexture===null&&e.computeBoneTexture(),E.setValue(K,`boneTexture`,e.boneTexture,X))}a.isBatchedMesh&&(E.setOptional(K,a,`batchingTexture`),E.setValue(K,`batchingTexture`,a._matricesTexture,X),E.setOptional(K,a,`batchingIdTexture`),E.setValue(K,`batchingIdTexture`,a._indirectTexture,X),E.setOptional(K,a,`batchingColorTexture`),a._colorsTexture!==null&&E.setValue(K,`batchingColorTexture`,a._colorsTexture,X));let O=r.morphAttributes;if((O.position!==void 0||O.normal!==void 0||O.color!==void 0)&&He.update(a,r,S),(w||y.receiveShadow!==a.receiveShadow)&&(y.receiveShadow=a.receiveShadow,E.setValue(K,`receiveShadow`,a.receiveShadow)),(i.isMeshStandardMaterial||i.isMeshLambertMaterial||i.isMeshPhongMaterial)&&i.envMap===null&&n.environment!==null&&(D.envMapIntensity.value=n.environmentIntensity),D.dfgLUT!==void 0&&(D.dfgLUT.value=Cn()),w){if(E.setValue(K,`toneMappingExposure`,N.toneMappingExposure),y.needsLights&&vt(D,T),o&&i.fog===!0&&Ie.refreshFogUniforms(D,o),Ie.refreshMaterialUniforms(D,i,G,W,k.state.transmissionRenderTarget[e.id]),y.needsLights&&y.lightProbeGrid){let e=y.lightProbeGrid;D.probesSH.value=e.texture,D.probesMin.value.copy(e.boundingBox.min),D.probesMax.value.copy(e.boundingBox.max),D.probesResolution.value.copy(e.resolution)}tt.upload(K,mt(y),D,X)}if(i.isShaderMaterial&&i.uniformsNeedUpdate===!0&&(tt.upload(K,mt(y),D,X),i.uniformsNeedUpdate=!1),i.isSpriteMaterial&&E.setValue(K,`center`,a.center),E.setValue(K,`modelViewMatrix`,a.modelViewMatrix),E.setValue(K,`normalMatrix`,a.normalMatrix),E.setValue(K,`modelMatrix`,a.matrixWorld),i.uniformsGroups!==void 0){let e=i.uniformsGroups;for(let t=0,n=e.length;t<n;t++){let n=e[t];qe.update(n,S),qe.bind(n,S)}}return S}function vt(e,t){e.ambientLightColor.needsUpdate=t,e.lightProbe.needsUpdate=t,e.directionalLights.needsUpdate=t,e.directionalLightShadows.needsUpdate=t,e.pointLights.needsUpdate=t,e.pointLightShadows.needsUpdate=t,e.spotLights.needsUpdate=t,e.spotLightShadows.needsUpdate=t,e.rectAreaLights.needsUpdate=t,e.hemisphereLights.needsUpdate=t}function yt(e){return e.isMeshLambertMaterial||e.isMeshToonMaterial||e.isMeshPhongMaterial||e.isMeshStandardMaterial||e.isShadowMaterial||e.isShaderMaterial&&e.lights===!0}this.getActiveCubeFace=function(){return le},this.getActiveMipmapLevel=function(){return R},this.getRenderTarget=function(){return z},this.setRenderTargetTextures=function(e,t,n){let r=Y.get(e);r.__autoAllocateDepthBuffer=e.resolveDepthBuffer===!1,r.__autoAllocateDepthBuffer===!1&&(r.__useRenderToTexture=!1),Y.get(e.texture).__webglTexture=t,Y.get(e.depthTexture).__webglTexture=r.__autoAllocateDepthBuffer?void 0:n,r.__hasExternalTextures=!0},this.setRenderTargetFramebuffer=function(e,t){let n=Y.get(e);n.__webglFramebuffer=t,n.__useDefaultFramebuffer=t===void 0},this.setRenderTarget=function(e,t=0,n=0){z=e,le=t,R=n;let r=null,i=!1,a=!1;if(e){let o=Y.get(e);if(o.__useDefaultFramebuffer!==void 0){J.bindFramebuffer(K.FRAMEBUFFER,o.__webglFramebuffer),H.copy(e.viewport),ue.copy(e.scissor),de=e.scissorTest,J.viewport(H),J.scissor(ue),J.setScissorTest(de),B=-1;return}if(o.__webglFramebuffer===void 0)X.setupRenderTarget(e);else if(o.__hasExternalTextures)X.rebindTextures(e,Y.get(e.texture).__webglTexture,Y.get(e.depthTexture).__webglTexture);else if(e.depthBuffer){let t=e.depthTexture;if(o.__boundDepthTexture!==t){if(t!==null&&Y.has(t)&&(e.width!==t.image.width||e.height!==t.image.height))throw Error(`THREE.WebGLRenderer: Attached DepthTexture is initialized to the incorrect size.`);X.setupDepthRenderbuffer(e)}}let s=e.texture;(s.isData3DTexture||s.isDataArrayTexture||s.isCompressedArrayTexture)&&(a=!0);let c=Y.get(e).__webglFramebuffer;e.isWebGLCubeRenderTarget?(r=Array.isArray(c[t])?c[t][n]:c[t],i=!0):r=e.samples>0&&X.useMultisampledRTT(e)===!1?Y.get(e).__webglMultisampledFramebuffer:Array.isArray(c)?c[n]:c,H.copy(e.viewport),ue.copy(e.scissor),de=e.scissorTest}else H.copy(ge).multiplyScalar(G).floor(),ue.copy(_e).multiplyScalar(G).floor(),de=ve;if(n!==0&&(r=F),J.bindFramebuffer(K.FRAMEBUFFER,r)&&J.drawBuffers(e,r),J.viewport(H),J.scissor(ue),J.setScissorTest(de),i){let r=Y.get(e.texture);K.framebufferTexture2D(K.FRAMEBUFFER,K.COLOR_ATTACHMENT0,K.TEXTURE_CUBE_MAP_POSITIVE_X+t,r.__webglTexture,n)}else if(a){let r=t;for(let t=0;t<e.textures.length;t++){let i=Y.get(e.textures[t]);K.framebufferTextureLayer(K.FRAMEBUFFER,K.COLOR_ATTACHMENT0+t,i.__webglTexture,n,r)}}else if(e!==null&&n!==0){let t=Y.get(e.texture);K.framebufferTexture2D(K.FRAMEBUFFER,K.COLOR_ATTACHMENT0,K.TEXTURE_2D,t.__webglTexture,n)}B=-1},this.readRenderTargetPixels=function(e,n,r,i,a,o,s,c=0){if(!(e&&e.isWebGLRenderTarget)){t.An(`WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.`);return}let l=Y.get(e).__webglFramebuffer;if(e.isWebGLCubeRenderTarget&&s!==void 0&&(l=l[s]),l){J.bindFramebuffer(K.FRAMEBUFFER,l);try{let s=e.textures[c],l=s.format,u=s.type;if(e.textures.length>1&&K.readBuffer(K.COLOR_ATTACHMENT0+c),!ke.textureFormatReadable(l)){t.An(`WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format.`);return}if(!ke.textureTypeReadable(u)){t.An(`WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.`);return}n>=0&&n<=e.width-i&&r>=0&&r<=e.height-a&&K.readPixels(n,r,i,a,Ge.convert(l),Ge.convert(u),o)}finally{let e=z===null?null:Y.get(z).__webglFramebuffer;J.bindFramebuffer(K.FRAMEBUFFER,e)}}},this.readRenderTargetPixelsAsync=async function(e,n,r,i,a,o,s,c=0){if(!(e&&e.isWebGLRenderTarget))throw Error(`THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.`);let l=Y.get(e).__webglFramebuffer;if(e.isWebGLCubeRenderTarget&&s!==void 0&&(l=l[s]),l){if(n>=0&&n<=e.width-i&&r>=0&&r<=e.height-a){J.bindFramebuffer(K.FRAMEBUFFER,l);let s=e.textures[c],u=s.format,d=s.type;if(e.textures.length>1&&K.readBuffer(K.COLOR_ATTACHMENT0+c),!ke.textureFormatReadable(u))throw Error(`THREE.WebGLRenderer.readRenderTargetPixelsAsync: renderTarget is not in RGBA or implementation defined format.`);if(!ke.textureTypeReadable(d))throw Error(`THREE.WebGLRenderer.readRenderTargetPixelsAsync: renderTarget is not in UnsignedByteType or implementation defined type.`);let f=K.createBuffer();K.bindBuffer(K.PIXEL_PACK_BUFFER,f),K.bufferData(K.PIXEL_PACK_BUFFER,o.byteLength,K.STREAM_READ),K.readPixels(n,r,i,a,Ge.convert(u),Ge.convert(d),0);let p=z===null?null:Y.get(z).__webglFramebuffer;J.bindFramebuffer(K.FRAMEBUFFER,p);let m=K.fenceSync(K.SYNC_GPU_COMMANDS_COMPLETE,0);return K.flush(),await t.Fn(K,m,4),K.bindBuffer(K.PIXEL_PACK_BUFFER,f),K.getBufferSubData(K.PIXEL_PACK_BUFFER,0,o),K.deleteBuffer(f),K.deleteSync(m),o}throw Error(`THREE.WebGLRenderer.readRenderTargetPixelsAsync: requested read bounds are out of range.`)}},this.copyFramebufferToTexture=function(e,t=null,n=0){let r=2**-n,i=Math.floor(e.image.width*r),a=Math.floor(e.image.height*r),o=t===null?0:t.x,s=t===null?0:t.y;X.setTexture2D(e,0),K.copyTexSubImage2D(K.TEXTURE_2D,n,0,0,o,s,i,a),J.unbindTexture()},this.copyTextureToTexture=function(e,t,n=null,r=null,i=0,a=0){let o,s,c,l,u,d,f,p,m,h=e.isCompressedTexture?e.mipmaps[a]:e.image;if(n!==null)o=n.max.x-n.min.x,s=n.max.y-n.min.y,c=n.isBox3?n.max.z-n.min.z:1,l=n.min.x,u=n.min.y,d=n.isBox3?n.min.z:0;else{let t=2**-i;o=Math.floor(h.width*t),s=Math.floor(h.height*t),c=e.isDataArrayTexture?h.depth:e.isData3DTexture?Math.floor(h.depth*t):1,l=0,u=0,d=0}r===null?(f=0,p=0,m=0):(f=r.x,p=r.y,m=r.z);let g=Ge.convert(t.format),_=Ge.convert(t.type),v;t.isData3DTexture?(X.setTexture3D(t,0),v=K.TEXTURE_3D):t.isDataArrayTexture||t.isCompressedArrayTexture?(X.setTexture2DArray(t,0),v=K.TEXTURE_2D_ARRAY):(X.setTexture2D(t,0),v=K.TEXTURE_2D),J.activeTexture(K.TEXTURE0),J.pixelStorei(K.UNPACK_FLIP_Y_WEBGL,t.flipY),J.pixelStorei(K.UNPACK_PREMULTIPLY_ALPHA_WEBGL,t.premultiplyAlpha),J.pixelStorei(K.UNPACK_ALIGNMENT,t.unpackAlignment);let y=J.getParameter(K.UNPACK_ROW_LENGTH),b=J.getParameter(K.UNPACK_IMAGE_HEIGHT),x=J.getParameter(K.UNPACK_SKIP_PIXELS),S=J.getParameter(K.UNPACK_SKIP_ROWS),C=J.getParameter(K.UNPACK_SKIP_IMAGES);J.pixelStorei(K.UNPACK_ROW_LENGTH,h.width),J.pixelStorei(K.UNPACK_IMAGE_HEIGHT,h.height),J.pixelStorei(K.UNPACK_SKIP_PIXELS,l),J.pixelStorei(K.UNPACK_SKIP_ROWS,u),J.pixelStorei(K.UNPACK_SKIP_IMAGES,d);let w=e.isDataArrayTexture||e.isData3DTexture,T=t.isDataArrayTexture||t.isData3DTexture;if(e.isDepthTexture){let n=Y.get(e),r=Y.get(t),h=Y.get(n.__renderTarget),g=Y.get(r.__renderTarget);J.bindFramebuffer(K.READ_FRAMEBUFFER,h.__webglFramebuffer),J.bindFramebuffer(K.DRAW_FRAMEBUFFER,g.__webglFramebuffer);for(let n=0;n<c;n++)w&&(K.framebufferTextureLayer(K.READ_FRAMEBUFFER,K.COLOR_ATTACHMENT0,Y.get(e).__webglTexture,i,d+n),K.framebufferTextureLayer(K.DRAW_FRAMEBUFFER,K.COLOR_ATTACHMENT0,Y.get(t).__webglTexture,a,m+n)),K.blitFramebuffer(l,u,o,s,f,p,o,s,K.DEPTH_BUFFER_BIT,K.NEAREST);J.bindFramebuffer(K.READ_FRAMEBUFFER,null),J.bindFramebuffer(K.DRAW_FRAMEBUFFER,null)}else if(i!==0||e.isRenderTargetTexture||Y.has(e)){let n=Y.get(e),r=Y.get(t);J.bindFramebuffer(K.READ_FRAMEBUFFER,I),J.bindFramebuffer(K.DRAW_FRAMEBUFFER,L);for(let e=0;e<c;e++)w?K.framebufferTextureLayer(K.READ_FRAMEBUFFER,K.COLOR_ATTACHMENT0,n.__webglTexture,i,d+e):K.framebufferTexture2D(K.READ_FRAMEBUFFER,K.COLOR_ATTACHMENT0,K.TEXTURE_2D,n.__webglTexture,i),T?K.framebufferTextureLayer(K.DRAW_FRAMEBUFFER,K.COLOR_ATTACHMENT0,r.__webglTexture,a,m+e):K.framebufferTexture2D(K.DRAW_FRAMEBUFFER,K.COLOR_ATTACHMENT0,K.TEXTURE_2D,r.__webglTexture,a),i===0?T?K.copyTexSubImage3D(v,a,f,p,m+e,l,u,o,s):K.copyTexSubImage2D(v,a,f,p,l,u,o,s):K.blitFramebuffer(l,u,o,s,f,p,o,s,K.COLOR_BUFFER_BIT,K.NEAREST);J.bindFramebuffer(K.READ_FRAMEBUFFER,null),J.bindFramebuffer(K.DRAW_FRAMEBUFFER,null)}else T?e.isDataTexture||e.isData3DTexture?K.texSubImage3D(v,a,f,p,m,o,s,c,g,_,h.data):t.isCompressedArrayTexture?K.compressedTexSubImage3D(v,a,f,p,m,o,s,c,g,h.data):K.texSubImage3D(v,a,f,p,m,o,s,c,g,_,h):e.isDataTexture?K.texSubImage2D(K.TEXTURE_2D,a,f,p,o,s,g,_,h.data):e.isCompressedTexture?K.compressedTexSubImage2D(K.TEXTURE_2D,a,f,p,h.width,h.height,g,h.data):K.texSubImage2D(K.TEXTURE_2D,a,f,p,o,s,g,_,h);J.pixelStorei(K.UNPACK_ROW_LENGTH,y),J.pixelStorei(K.UNPACK_IMAGE_HEIGHT,b),J.pixelStorei(K.UNPACK_SKIP_PIXELS,x),J.pixelStorei(K.UNPACK_SKIP_ROWS,S),J.pixelStorei(K.UNPACK_SKIP_IMAGES,C),a===0&&t.generateMipmaps&&K.generateMipmap(v),J.unbindTexture()},this.initRenderTarget=function(e){Y.get(e).__webglFramebuffer===void 0&&X.setupRenderTarget(e)},this.initTexture=function(e){e.isCubeTexture?X.setTextureCube(e,0):e.isData3DTexture?X.setTexture3D(e,0):e.isDataArrayTexture||e.isCompressedArrayTexture?X.setTexture2DArray(e,0):X.setTexture2D(e,0),J.unbindTexture()},this.resetState=function(){le=0,R=0,z=null,J.reset(),Ke.reset()},typeof __THREE_DEVTOOLS__<`u`&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent(`observe`,{detail:this}))}get coordinateSystem(){return t.wn}get outputColorSpace(){return this._outputColorSpace}set outputColorSpace(e){this._outputColorSpace=e;let n=this.getContext();n.drawingBufferColorSpace=t._._getDrawingBufferColorSpace(e),n.unpackColorSpace=t._._getUnpackColorSpace()}},Tn={type:`change`},En={type:`start`},Dn={type:`end`},On=new t.qt,kn=new t.it,An=Math.cos(70*t.G.DEG2RAD),Q=new t.Sn,jn=2*Math.PI,$={NONE:-1,ROTATE:0,DOLLY:1,PAN:2,TOUCH_ROTATE:3,TOUCH_PAN:4,TOUCH_DOLLY_PAN:5,TOUCH_DOLLY_ROTATE:6},Mn=1e-6,Nn=class extends t.v{constructor(e,n=null){super(e,n),this.state=$.NONE,this.target=new t.Sn,this.cursor=new t.Sn,this.minDistance=0,this.maxDistance=1/0,this.minZoom=0,this.maxZoom=1/0,this.minTargetRadius=0,this.maxTargetRadius=1/0,this.minPolarAngle=0,this.maxPolarAngle=Math.PI,this.minAzimuthAngle=-1/0,this.maxAzimuthAngle=1/0,this.enableDamping=!1,this.dampingFactor=.05,this.enableZoom=!0,this.zoomSpeed=1,this.enableRotate=!0,this.rotateSpeed=1,this.keyRotateSpeed=1,this.enablePan=!0,this.panSpeed=1,this.screenSpacePanning=!0,this.keyPanSpeed=7,this.zoomToCursor=!1,this.autoRotate=!1,this.autoRotateSpeed=2,this.keys={LEFT:`ArrowLeft`,UP:`ArrowUp`,RIGHT:`ArrowRight`,BOTTOM:`ArrowDown`},this.mouseButtons={LEFT:t.W.ROTATE,MIDDLE:t.W.DOLLY,RIGHT:t.W.PAN},this.touches={ONE:t.cn.ROTATE,TWO:t.cn.DOLLY_PAN},this.target0=this.target.clone(),this.position0=this.object.position.clone(),this.zoom0=this.object.zoom,this._cursorStyle=`auto`,this._domElementKeyEvents=null,this._lastPosition=new t.Sn,this._lastQuaternion=new t.st,this._lastTargetPosition=new t.Sn,this._quat=new t.st().setFromUnitVectors(e.up,new t.Sn(0,1,0)),this._quatInverse=this._quat.clone().invert(),this._spherical=new t.sn,this._sphericalDelta=new t.sn,this._scale=1,this._panOffset=new t.Sn,this._rotateStart=new t.xn,this._rotateEnd=new t.xn,this._rotateDelta=new t.xn,this._panStart=new t.xn,this._panEnd=new t.xn,this._panDelta=new t.xn,this._dollyStart=new t.xn,this._dollyEnd=new t.xn,this._dollyDelta=new t.xn,this._dollyDirection=new t.Sn,this._mouse=new t.xn,this._performCursorZoom=!1,this._pointers=[],this._pointerPositions={},this._controlActive=!1,this._onPointerMove=Fn.bind(this),this._onPointerDown=Pn.bind(this),this._onPointerUp=In.bind(this),this._onContextMenu=Un.bind(this),this._onMouseWheel=zn.bind(this),this._onKeyDown=Bn.bind(this),this._onTouchStart=Vn.bind(this),this._onTouchMove=Hn.bind(this),this._onMouseDown=Ln.bind(this),this._onMouseMove=Rn.bind(this),this._interceptControlDown=Wn.bind(this),this._interceptControlUp=Gn.bind(this),this.domElement!==null&&this.connect(this.domElement),this.update()}set cursorStyle(e){this._cursorStyle=e,e===`grab`?this.domElement.style.cursor=`grab`:this.domElement.style.cursor=`auto`}get cursorStyle(){return this._cursorStyle}connect(e){super.connect(e),this.domElement.addEventListener(`pointerdown`,this._onPointerDown),this.domElement.addEventListener(`pointercancel`,this._onPointerUp),this.domElement.addEventListener(`contextmenu`,this._onContextMenu),this.domElement.addEventListener(`wheel`,this._onMouseWheel,{passive:!1}),this.domElement.getRootNode().addEventListener(`keydown`,this._interceptControlDown,{passive:!0,capture:!0}),this.domElement.style.touchAction=`none`}disconnect(){this.domElement.removeEventListener(`pointerdown`,this._onPointerDown),this.domElement.ownerDocument.removeEventListener(`pointermove`,this._onPointerMove),this.domElement.ownerDocument.removeEventListener(`pointerup`,this._onPointerUp),this.domElement.removeEventListener(`pointercancel`,this._onPointerUp),this.domElement.removeEventListener(`wheel`,this._onMouseWheel),this.domElement.removeEventListener(`contextmenu`,this._onContextMenu),this.stopListenToKeyEvents(),this.domElement.getRootNode().removeEventListener(`keydown`,this._interceptControlDown,{capture:!0}),this.domElement.style.touchAction=``}dispose(){this.disconnect()}getPolarAngle(){return this._spherical.phi}getAzimuthalAngle(){return this._spherical.theta}getDistance(){return this.object.position.distanceTo(this.target)}listenToKeyEvents(e){e.addEventListener(`keydown`,this._onKeyDown),this._domElementKeyEvents=e}stopListenToKeyEvents(){this._domElementKeyEvents!==null&&(this._domElementKeyEvents.removeEventListener(`keydown`,this._onKeyDown),this._domElementKeyEvents=null)}saveState(){this.target0.copy(this.target),this.position0.copy(this.object.position),this.zoom0=this.object.zoom}reset(){this.target.copy(this.target0),this.object.position.copy(this.position0),this.object.zoom=this.zoom0,this.object.updateProjectionMatrix(),this.dispatchEvent(Tn),this.update(),this.state=$.NONE}pan(e,t){this._pan(e,t),this.update()}dollyIn(e){this._dollyIn(e),this.update()}dollyOut(e){this._dollyOut(e),this.update()}rotateLeft(e){this._rotateLeft(e),this.update()}rotateUp(e){this._rotateUp(e),this.update()}update(e=null){let n=this.object.position;Q.copy(n).sub(this.target),Q.applyQuaternion(this._quat),this._spherical.setFromVector3(Q),this.autoRotate&&this.state===$.NONE&&this._rotateLeft(this._getAutoRotationAngle(e)),this.enableDamping?(this._spherical.theta+=this._sphericalDelta.theta*this.dampingFactor,this._spherical.phi+=this._sphericalDelta.phi*this.dampingFactor):(this._spherical.theta+=this._sphericalDelta.theta,this._spherical.phi+=this._sphericalDelta.phi);let r=this.minAzimuthAngle,i=this.maxAzimuthAngle;isFinite(r)&&isFinite(i)&&(r<-Math.PI?r+=jn:r>Math.PI&&(r-=jn),i<-Math.PI?i+=jn:i>Math.PI&&(i-=jn),r<=i?this._spherical.theta=Math.max(r,Math.min(i,this._spherical.theta)):this._spherical.theta=this._spherical.theta>(r+i)/2?Math.max(r,this._spherical.theta):Math.min(i,this._spherical.theta)),this._spherical.phi=Math.max(this.minPolarAngle,Math.min(this.maxPolarAngle,this._spherical.phi)),this._spherical.makeSafe(),this.enableDamping===!0?this.target.addScaledVector(this._panOffset,this.dampingFactor):this.target.add(this._panOffset),this.target.sub(this.cursor),this.target.clampLength(this.minTargetRadius,this.maxTargetRadius),this.target.add(this.cursor);let a=!1;if(this.zoomToCursor&&this._performCursorZoom||this.object.isOrthographicCamera)this._spherical.radius=this._clampDistance(this._spherical.radius);else{let e=this._spherical.radius;this._spherical.radius=this._clampDistance(this._spherical.radius*this._scale),a=e!=this._spherical.radius}if(Q.setFromSpherical(this._spherical),Q.applyQuaternion(this._quatInverse),n.copy(this.target).add(Q),this.object.lookAt(this.target),this.enableDamping===!0?(this._sphericalDelta.theta*=1-this.dampingFactor,this._sphericalDelta.phi*=1-this.dampingFactor,this._panOffset.multiplyScalar(1-this.dampingFactor)):(this._sphericalDelta.set(0,0,0),this._panOffset.set(0,0,0)),this.zoomToCursor&&this._performCursorZoom){let e=null;if(this.object.isPerspectiveCamera){let t=Q.length();e=this._clampDistance(t*this._scale);let n=t-e;this.object.position.addScaledVector(this._dollyDirection,n),this.object.updateMatrixWorld(),a=!!n}else if(this.object.isOrthographicCamera){let n=new t.Sn(this._mouse.x,this._mouse.y,0);n.unproject(this.object);let r=this.object.zoom;this.object.zoom=Math.max(this.minZoom,Math.min(this.maxZoom,this.object.zoom/this._scale)),this.object.updateProjectionMatrix(),a=r!==this.object.zoom;let i=new t.Sn(this._mouse.x,this._mouse.y,0);i.unproject(this.object),this.object.position.sub(i).add(n),this.object.updateMatrixWorld(),e=Q.length()}else console.warn(`WARNING: OrbitControls.js encountered an unknown camera type - zoom to cursor disabled.`),this.zoomToCursor=!1;e!==null&&(this.screenSpacePanning?this.target.set(0,0,-1).transformDirection(this.object.matrix).multiplyScalar(e).add(this.object.position):(On.origin.copy(this.object.position),On.direction.set(0,0,-1).transformDirection(this.object.matrix),Math.abs(this.object.up.dot(On.direction))<An?this.object.lookAt(this.target):(kn.setFromNormalAndCoplanarPoint(this.object.up,this.target),On.intersectPlane(kn,this.target))))}else if(this.object.isOrthographicCamera){let e=this.object.zoom;this.object.zoom=Math.max(this.minZoom,Math.min(this.maxZoom,this.object.zoom/this._scale)),e!==this.object.zoom&&(this.object.updateProjectionMatrix(),a=!0)}return this._scale=1,this._performCursorZoom=!1,a||this._lastPosition.distanceToSquared(this.object.position)>Mn||8*(1-this._lastQuaternion.dot(this.object.quaternion))>Mn||this._lastTargetPosition.distanceToSquared(this.target)>Mn?(this.dispatchEvent(Tn),this._lastPosition.copy(this.object.position),this._lastQuaternion.copy(this.object.quaternion),this._lastTargetPosition.copy(this.target),!0):!1}_getAutoRotationAngle(e){return e===null?jn/60/60*this.autoRotateSpeed:jn/60*this.autoRotateSpeed*e}_getZoomScale(e){let t=Math.abs(e*.01);return .95**(this.zoomSpeed*t)}_rotateLeft(e){this._sphericalDelta.theta-=e}_rotateUp(e){this._sphericalDelta.phi-=e}_panLeft(e,t){Q.setFromMatrixColumn(t,0),Q.multiplyScalar(-e),this._panOffset.add(Q)}_panUp(e,t){this.screenSpacePanning===!0?Q.setFromMatrixColumn(t,1):(Q.setFromMatrixColumn(t,0),Q.crossVectors(this.object.up,Q)),Q.multiplyScalar(e),this._panOffset.add(Q)}_pan(e,t){let n=this.domElement;if(this.object.isPerspectiveCamera){let r=this.object.position;Q.copy(r).sub(this.target);let i=Q.length();i*=Math.tan(this.object.fov/2*Math.PI/180),this._panLeft(2*e*i/n.clientHeight,this.object.matrix),this._panUp(2*t*i/n.clientHeight,this.object.matrix)}else this.object.isOrthographicCamera?(this._panLeft(e*(this.object.right-this.object.left)/this.object.zoom/n.clientWidth,this.object.matrix),this._panUp(t*(this.object.top-this.object.bottom)/this.object.zoom/n.clientHeight,this.object.matrix)):(console.warn(`WARNING: OrbitControls.js encountered an unknown camera type - pan disabled.`),this.enablePan=!1)}_dollyOut(e){this.object.isPerspectiveCamera||this.object.isOrthographicCamera?this._scale/=e:(console.warn(`WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled.`),this.enableZoom=!1)}_dollyIn(e){this.object.isPerspectiveCamera||this.object.isOrthographicCamera?this._scale*=e:(console.warn(`WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled.`),this.enableZoom=!1)}_updateZoomParameters(e,t){if(!this.zoomToCursor)return;this._performCursorZoom=!0;let n=this.domElement.getBoundingClientRect(),r=e-n.left,i=t-n.top,a=n.width,o=n.height;this._mouse.x=r/a*2-1,this._mouse.y=-(i/o)*2+1,this._dollyDirection.set(this._mouse.x,this._mouse.y,1).unproject(this.object).sub(this.object.position).normalize()}_clampDistance(e){return Math.max(this.minDistance,Math.min(this.maxDistance,e))}_handleMouseDownRotate(e){this._rotateStart.set(e.clientX,e.clientY)}_handleMouseDownDolly(e){this._updateZoomParameters(e.clientX,e.clientX),this._dollyStart.set(e.clientX,e.clientY)}_handleMouseDownPan(e){this._panStart.set(e.clientX,e.clientY)}_handleMouseMoveRotate(e){this._rotateEnd.set(e.clientX,e.clientY),this._rotateDelta.subVectors(this._rotateEnd,this._rotateStart).multiplyScalar(this.rotateSpeed);let t=this.domElement;this._rotateLeft(jn*this._rotateDelta.x/t.clientHeight),this._rotateUp(jn*this._rotateDelta.y/t.clientHeight),this._rotateStart.copy(this._rotateEnd),this.update()}_handleMouseMoveDolly(e){this._dollyEnd.set(e.clientX,e.clientY),this._dollyDelta.subVectors(this._dollyEnd,this._dollyStart),this._dollyDelta.y>0?this._dollyOut(this._getZoomScale(this._dollyDelta.y)):this._dollyDelta.y<0&&this._dollyIn(this._getZoomScale(this._dollyDelta.y)),this._dollyStart.copy(this._dollyEnd),this.update()}_handleMouseMovePan(e){this._panEnd.set(e.clientX,e.clientY),this._panDelta.subVectors(this._panEnd,this._panStart).multiplyScalar(this.panSpeed),this._pan(this._panDelta.x,this._panDelta.y),this._panStart.copy(this._panEnd),this.update()}_handleMouseWheel(e){this._updateZoomParameters(e.clientX,e.clientY),e.deltaY<0?this._dollyIn(this._getZoomScale(e.deltaY)):e.deltaY>0&&this._dollyOut(this._getZoomScale(e.deltaY)),this.update()}_handleKeyDown(e){let t=!1;switch(e.code){case this.keys.UP:e.ctrlKey||e.metaKey||e.shiftKey?this.enableRotate&&this._rotateUp(jn*this.keyRotateSpeed/this.domElement.clientHeight):this.enablePan&&this._pan(0,this.keyPanSpeed),t=!0;break;case this.keys.BOTTOM:e.ctrlKey||e.metaKey||e.shiftKey?this.enableRotate&&this._rotateUp(-jn*this.keyRotateSpeed/this.domElement.clientHeight):this.enablePan&&this._pan(0,-this.keyPanSpeed),t=!0;break;case this.keys.LEFT:e.ctrlKey||e.metaKey||e.shiftKey?this.enableRotate&&this._rotateLeft(jn*this.keyRotateSpeed/this.domElement.clientHeight):this.enablePan&&this._pan(this.keyPanSpeed,0),t=!0;break;case this.keys.RIGHT:e.ctrlKey||e.metaKey||e.shiftKey?this.enableRotate&&this._rotateLeft(-jn*this.keyRotateSpeed/this.domElement.clientHeight):this.enablePan&&this._pan(-this.keyPanSpeed,0),t=!0}t&&(e.preventDefault(),this.update())}_handleTouchStartRotate(e){if(this._pointers.length===1)this._rotateStart.set(e.pageX,e.pageY);else{let t=this._getSecondPointerPosition(e),n=.5*(e.pageX+t.x),r=.5*(e.pageY+t.y);this._rotateStart.set(n,r)}}_handleTouchStartPan(e){if(this._pointers.length===1)this._panStart.set(e.pageX,e.pageY);else{let t=this._getSecondPointerPosition(e),n=.5*(e.pageX+t.x),r=.5*(e.pageY+t.y);this._panStart.set(n,r)}}_handleTouchStartDolly(e){let t=this._getSecondPointerPosition(e),n=e.pageX-t.x,r=e.pageY-t.y,i=Math.sqrt(n*n+r*r);this._dollyStart.set(0,i)}_handleTouchStartDollyPan(e){this.enableZoom&&this._handleTouchStartDolly(e),this.enablePan&&this._handleTouchStartPan(e)}_handleTouchStartDollyRotate(e){this.enableZoom&&this._handleTouchStartDolly(e),this.enableRotate&&this._handleTouchStartRotate(e)}_handleTouchMoveRotate(e){if(this._pointers.length==1)this._rotateEnd.set(e.pageX,e.pageY);else{let t=this._getSecondPointerPosition(e),n=.5*(e.pageX+t.x),r=.5*(e.pageY+t.y);this._rotateEnd.set(n,r)}this._rotateDelta.subVectors(this._rotateEnd,this._rotateStart).multiplyScalar(this.rotateSpeed);let t=this.domElement;this._rotateLeft(jn*this._rotateDelta.x/t.clientHeight),this._rotateUp(jn*this._rotateDelta.y/t.clientHeight),this._rotateStart.copy(this._rotateEnd)}_handleTouchMovePan(e){if(this._pointers.length===1)this._panEnd.set(e.pageX,e.pageY);else{let t=this._getSecondPointerPosition(e),n=.5*(e.pageX+t.x),r=.5*(e.pageY+t.y);this._panEnd.set(n,r)}this._panDelta.subVectors(this._panEnd,this._panStart).multiplyScalar(this.panSpeed),this._pan(this._panDelta.x,this._panDelta.y),this._panStart.copy(this._panEnd)}_handleTouchMoveDolly(e){let t=this._getSecondPointerPosition(e),n=e.pageX-t.x,r=e.pageY-t.y,i=Math.sqrt(n*n+r*r);this._dollyEnd.set(0,i),this._dollyDelta.set(0,(this._dollyEnd.y/this._dollyStart.y)**+this.zoomSpeed),this._dollyOut(this._dollyDelta.y),this._dollyStart.copy(this._dollyEnd);let a=(e.pageX+t.x)*.5,o=(e.pageY+t.y)*.5;this._updateZoomParameters(a,o)}_handleTouchMoveDollyPan(e){this.enableZoom&&this._handleTouchMoveDolly(e),this.enablePan&&this._handleTouchMovePan(e)}_handleTouchMoveDollyRotate(e){this.enableZoom&&this._handleTouchMoveDolly(e),this.enableRotate&&this._handleTouchMoveRotate(e)}_addPointer(e){this._pointers.push(e.pointerId)}_removePointer(e){delete this._pointerPositions[e.pointerId];for(let t=0;t<this._pointers.length;t++)if(this._pointers[t]==e.pointerId){this._pointers.splice(t,1);return}}_isTrackingPointer(e){for(let t=0;t<this._pointers.length;t++)if(this._pointers[t]==e.pointerId)return!0;return!1}_trackPointer(e){let n=this._pointerPositions[e.pointerId];n===void 0&&(n=new t.xn,this._pointerPositions[e.pointerId]=n),n.set(e.pageX,e.pageY)}_getSecondPointerPosition(e){let t=e.pointerId===this._pointers[0]?this._pointers[1]:this._pointers[0];return this._pointerPositions[t]}_customWheelEvent(e){let t=e.deltaMode,n={clientX:e.clientX,clientY:e.clientY,deltaY:e.deltaY};switch(t){case 1:n.deltaY*=16;break;case 2:n.deltaY*=100}return e.ctrlKey&&!this._controlActive&&(n.deltaY*=10),n}};function Pn(e){this.enabled!==!1&&(this._pointers.length===0&&(this.domElement.setPointerCapture(e.pointerId),this.domElement.ownerDocument.addEventListener(`pointermove`,this._onPointerMove),this.domElement.ownerDocument.addEventListener(`pointerup`,this._onPointerUp)),!this._isTrackingPointer(e)&&(this._addPointer(e),e.pointerType===`touch`?this._onTouchStart(e):this._onMouseDown(e),this._cursorStyle===`grab`&&(this.domElement.style.cursor=`grabbing`)))}function Fn(e){this.enabled!==!1&&(e.pointerType===`touch`?this._onTouchMove(e):this._onMouseMove(e))}function In(e){switch(this._removePointer(e),this._pointers.length){case 0:this.domElement.releasePointerCapture(e.pointerId),this.domElement.ownerDocument.removeEventListener(`pointermove`,this._onPointerMove),this.domElement.ownerDocument.removeEventListener(`pointerup`,this._onPointerUp),this.dispatchEvent(Dn),this.state=$.NONE,this._cursorStyle===`grab`&&(this.domElement.style.cursor=`grab`);break;case 1:let t=this._pointers[0],n=this._pointerPositions[t];this._onTouchStart({pointerId:t,pageX:n.x,pageY:n.y})}}function Ln(e){let n;switch(e.button){case 0:n=this.mouseButtons.LEFT;break;case 1:n=this.mouseButtons.MIDDLE;break;case 2:n=this.mouseButtons.RIGHT;break;default:n=-1}switch(n){case t.W.DOLLY:if(this.enableZoom===!1)return;this._handleMouseDownDolly(e),this.state=$.DOLLY;break;case t.W.ROTATE:if(e.ctrlKey||e.metaKey||e.shiftKey){if(this.enablePan===!1)return;this._handleMouseDownPan(e),this.state=$.PAN}else{if(this.enableRotate===!1)return;this._handleMouseDownRotate(e),this.state=$.ROTATE}break;case t.W.PAN:if(e.ctrlKey||e.metaKey||e.shiftKey){if(this.enableRotate===!1)return;this._handleMouseDownRotate(e),this.state=$.ROTATE}else{if(this.enablePan===!1)return;this._handleMouseDownPan(e),this.state=$.PAN}break;default:this.state=$.NONE}this.state!==$.NONE&&this.dispatchEvent(En)}function Rn(e){switch(this.state){case $.ROTATE:if(this.enableRotate===!1)return;this._handleMouseMoveRotate(e);break;case $.DOLLY:if(this.enableZoom===!1)return;this._handleMouseMoveDolly(e);break;case $.PAN:if(this.enablePan===!1)return;this._handleMouseMovePan(e)}}function zn(e){this.enabled!==!1&&this.enableZoom!==!1&&this.state===$.NONE&&(e.preventDefault(),this.dispatchEvent(En),this._handleMouseWheel(this._customWheelEvent(e)),this.dispatchEvent(Dn))}function Bn(e){this.enabled!==!1&&this._handleKeyDown(e)}function Vn(e){switch(this._trackPointer(e),this._pointers.length){case 1:switch(this.touches.ONE){case t.cn.ROTATE:if(this.enableRotate===!1)return;this._handleTouchStartRotate(e),this.state=$.TOUCH_ROTATE;break;case t.cn.PAN:if(this.enablePan===!1)return;this._handleTouchStartPan(e),this.state=$.TOUCH_PAN;break;default:this.state=$.NONE}break;case 2:switch(this.touches.TWO){case t.cn.DOLLY_PAN:if(this.enableZoom===!1&&this.enablePan===!1)return;this._handleTouchStartDollyPan(e),this.state=$.TOUCH_DOLLY_PAN;break;case t.cn.DOLLY_ROTATE:if(this.enableZoom===!1&&this.enableRotate===!1)return;this._handleTouchStartDollyRotate(e),this.state=$.TOUCH_DOLLY_ROTATE;break;default:this.state=$.NONE}break;default:this.state=$.NONE}this.state!==$.NONE&&this.dispatchEvent(En)}function Hn(e){switch(this._trackPointer(e),this.state){case $.TOUCH_ROTATE:if(this.enableRotate===!1)return;this._handleTouchMoveRotate(e),this.update();break;case $.TOUCH_PAN:if(this.enablePan===!1)return;this._handleTouchMovePan(e),this.update();break;case $.TOUCH_DOLLY_PAN:if(this.enableZoom===!1&&this.enablePan===!1)return;this._handleTouchMoveDollyPan(e),this.update();break;case $.TOUCH_DOLLY_ROTATE:if(this.enableZoom===!1&&this.enableRotate===!1)return;this._handleTouchMoveDollyRotate(e),this.update();break;default:this.state=$.NONE}}function Un(e){this.enabled!==!1&&e.preventDefault()}function Wn(e){e.key===`Control`&&(this._controlActive=!0,this.domElement.getRootNode().addEventListener(`keyup`,this._interceptControlUp,{passive:!0,capture:!0}))}function Gn(e){e.key===`Control`&&(this._controlActive=!1,this.domElement.getRootNode().removeEventListener(`keyup`,this._interceptControlUp,{passive:!0,capture:!0}))}var Kn=(0,r.createUseT)({de:{untitled:`3D-Visualisierung`,resetCamera:`Kamera zurücksetzen`,wireframe:`Drahtgitter`,grid:`Raster`,parseError:`Syntaxfehler:`,editSource:`ShapeScript-Quelltext bearbeiten`,scriptEditorLabel:`ShapeScript-Quelltext`,applyChanges:`Änderungen übernehmen`,saveError:`Speichern fehlgeschlagen:`,downloadUsdz:`USDZ herunterladen`,exportError:`Export fehlgeschlagen:`,sceneWarnings:`Nicht gerendert:`,printOutput:`Ausgabe:`},en:{untitled:`3D Visualization`,resetCamera:`Reset Camera`,wireframe:`Wireframe`,grid:`Grid`,parseError:`Parse Error:`,editSource:`Edit ShapeScript Source`,scriptEditorLabel:`ShapeScript source`,applyChanges:`Apply Changes`,saveError:`Save Failed:`,downloadUsdz:`Download USDZ`,exportError:`Export Failed:`,sceneWarnings:`Not rendered:`,printOutput:`Output:`},es:{untitled:`Visualización 3D`,resetCamera:`Restablecer cámara`,wireframe:`Malla`,grid:`Cuadrícula`,parseError:`Error de sintaxis:`,editSource:`Editar el código ShapeScript`,scriptEditorLabel:`Código ShapeScript`,applyChanges:`Aplicar cambios`,saveError:`Error al guardar:`,downloadUsdz:`Descargar USDZ`,exportError:`Error al exportar:`,sceneWarnings:`No renderizado:`,printOutput:`Salida:`},fr:{untitled:`Visualisation 3D`,resetCamera:`Réinitialiser la caméra`,wireframe:`Fil de fer`,grid:`Grille`,parseError:`Erreur de syntaxe :`,editSource:`Modifier le code ShapeScript`,scriptEditorLabel:`Code ShapeScript`,applyChanges:`Appliquer les modifications`,saveError:`Échec de l'enregistrement :`,downloadUsdz:`Télécharger USDZ`,exportError:`Échec de l'export :`,sceneWarnings:`Non rendu :`,printOutput:`Sortie :`},ja:{untitled:`3D ビジュアライゼーション`,resetCamera:`カメラをリセット`,wireframe:`ワイヤーフレーム`,grid:`グリッド`,parseError:`構文エラー:`,editSource:`ShapeScript を編集`,scriptEditorLabel:`ShapeScript ソース`,applyChanges:`変更を適用`,saveError:`保存に失敗しました:`,downloadUsdz:`USDZ をダウンロード`,exportError:`エクスポートに失敗しました:`,sceneWarnings:`描画されないもの:`,printOutput:`出力:`},ko:{untitled:`3D 시각화`,resetCamera:`카메라 초기화`,wireframe:`와이어프레임`,grid:`격자`,parseError:`구문 오류:`,editSource:`ShapeScript 소스 편집`,scriptEditorLabel:`ShapeScript 소스`,applyChanges:`변경사항 적용`,saveError:`저장 실패:`,downloadUsdz:`USDZ 다운로드`,exportError:`내보내기 실패:`,sceneWarnings:`렌더링되지 않음:`,printOutput:`출력:`},"pt-BR":{untitled:`Visualização 3D`,resetCamera:`Redefinir câmera`,wireframe:`Aramado`,grid:`Grade`,parseError:`Erro de sintaxe:`,editSource:`Editar o código ShapeScript`,scriptEditorLabel:`Código ShapeScript`,applyChanges:`Aplicar alterações`,saveError:`Falha ao salvar:`,downloadUsdz:`Baixar USDZ`,exportError:`Falha na exportação:`,sceneWarnings:`Não renderizado:`,printOutput:`Saída:`},zh:{untitled:`3D 可视化`,resetCamera:`重置相机`,wireframe:`线框`,grid:`网格`,parseError:`语法错误:`,editSource:`编辑 ShapeScript 源码`,scriptEditorLabel:`ShapeScript 源码`,applyChanges:`应用更改`,saveError:`保存失败:`,downloadUsdz:`下载 USDZ`,exportError:`导出失败:`,sceneWarnings:`未渲染:`,printOutput:`输出:`}}),qn={class:`present3d-container`,"data-testid":`shapescript-view`},Jn={class:`header`},Yn={class:`controls`},Xn={class:`material-icons`},Zn={class:`material-icons`},Qn=[`disabled`],$n={key:0,class:`error`,"data-testid":`shapescript-parse-error`},er={key:1,class:`error`,"data-testid":`shapescript-save-error`},tr={key:2,class:`error`,"data-testid":`shapescript-export-error`},nr={key:3,class:`notice`,"data-testid":`shapescript-warnings`},rr={key:4,class:`notice output`,"data-testid":`shapescript-output`},ir={class:`script-source`},ar=[`aria-label`],or=[`disabled`],sr=1710618,cr=6e4,lr=(0,n.defineComponent)({__name:`View`,props:{selectedResult:{}},emits:[`updateResult`],setup(i,{emit:a}){function o(e){if(typeof e!=`object`||!e)return null;let{x:t,y:n,z:r}=e,i=e=>typeof e==`number`&&Number.isFinite(e);return i(t)&&i(n)&&i(r)?{x:t,y:n,z:r}:null}let s=i,c=a,l=Kn(),{dispatch:u}=(0,r.useRuntime)(),d=(0,n.ref)(s.selectedResult.data?.script??``),f=(0,n.ref)(null),p=(0,n.ref)(null),m=(0,n.ref)([]),h=(0,n.ref)([]),g=(0,n.ref)(null),_=(0,n.ref)(null),v=(0,n.ref)(!1),y=0,b=(0,n.ref)(!1),x=(0,n.ref)(!0),S=(0,n.computed)(()=>d.value!==s.selectedResult.data?.script),C=(0,n.computed)(()=>!v.value&&!p.value&&!S.value&&!!s.selectedResult.data?.script),w,T,E,D,O,k,A=[],j=null,M=null;(0,n.onMounted)(()=>{ee(),te(),ne(),(0,n.nextTick)(()=>{ie()}),N()});async function N(){let e=s.selectedResult.data?.filePath;if(!e)return;let n=++y;try{let{script:r}=await u({kind:`loadShape`,path:e},t.Vn);if(n!==y||r===s.selectedResult.data?.script)return;d.value=r,c(`updateResult`,{...s.selectedResult,data:{script:r,filePath:e}})}catch{}}(0,n.onUnmounted)(()=>{z()}),(0,n.watch)(()=>s.selectedResult.data?.script,()=>{te()}),(0,n.watch)(b,()=>{te()}),(0,n.watch)(x,e=>{k&&(k.visible=e)});function ee(){if(!f.value)return;w=new t.in,w.background=new t.g(sr);let e=f.value.clientWidth,n=f.value.clientHeight;T=new t.rt(50,e/n,.1,1e3),T.position.set(5,5,10),T.lookAt(0,0,0),E=new wn({antialias:!0}),E.setSize(e,n),E.setPixelRatio(window.devicePixelRatio),f.value.appendChild(E.domElement),D=new Nn(T,E.domElement),D.enableDamping=!0,D.dampingFactor=.05,D.addEventListener(`change`,oe);let r=new t.l(16777215,.6);w.add(r);let i=new t.O(16777215,.8);i.position.set(10,10,10),w.add(i),k=new t.F(20,20,4473924,2236962),k.visible=x.value,w.add(k),window.addEventListener(`resize`,P),M=new ResizeObserver(()=>{P()}),M.observe(f.value)}function P(){if(!f.value)return;let e=f.value.clientWidth,t=f.value.clientHeight;T.aspect=e/t,T.updateProjectionMatrix(),E.setSize(e,t)}function F(){A.forEach(e=>t.o(w,e)),A=[]}function I(e){let n=t.r(t.s(e),{wireframe:b.value});w.add(n),A.push(n);let r=t.i(n);m.value=r.warnings,h.value=r.logs,w.background=r.background?new t.g(r.background[0],r.background[1],r.background[2]):new t.g(sr)}function te(){try{F(),m.value=[],h.value=[],w.background=new t.g(sr);let e=s.selectedResult.data?.script;e&&I(e),p.value=null}catch(e){p.value=e instanceof Error?e.message:`Unknown error`,console.error(`ShapeScript parse error:`,e)}}function ne(){O=requestAnimationFrame(ne),D.update(),E.render(w,T)}function re(){T.position.set(5,5,10),T.lookAt(0,0,0),D.reset()}function ie(){if(!T||!D||!s.selectedResult?.viewState?.cameraState)return;let e=s.selectedResult.viewState.cameraState,t=o(e.position);t&&T.position.set(t.x,t.y,t.z);let n=o(e.target);n&&D.target.set(n.x,n.y,n.z),T.updateProjectionMatrix(),D.update()}function ae(){return{position:{x:T.position.x,y:T.position.y,z:T.position.z},target:{x:D.target.x,y:D.target.y,z:D.target.z}}}function oe(){j!==null&&clearTimeout(j),j=window.setTimeout(()=>{se()},500)}function se(){let e={...s.selectedResult,viewState:{...s.selectedResult.viewState,cameraState:ae()}};c(`updateResult`,e)}function L(t,n){let r=URL.createObjectURL(new Blob([t],{type:e.r})),i=document.createElement(`a`);i.href=r,i.download=n,i.click(),window.setTimeout(()=>URL.revokeObjectURL(r),cr)}async function ce(){let t=s.selectedResult.data?.script;if(!(!t||!C.value)){v.value=!0,_.value=null;try{L(await e.a(t),`${e.h(s.selectedResult.title)}${e.n}`)}catch(e){_.value=e instanceof Error?e.message:String(e)}finally{v.value=!1}}}function le(){b.value=!b.value}function R(){x.value=!x.value}function z(){j!==null&&clearTimeout(j),A.forEach(e=>t.o(w,e)),A=[],O&&cancelAnimationFrame(O),E&&E.dispose(),D&&(D.removeEventListener(`change`,oe),D.dispose()),M&&M.disconnect(),window.removeEventListener(`resize`,P)}function B(){y++}async function V(){let e=d.value;try{t.a(t.r(t.s(e)))}catch(e){p.value=e instanceof Error?e.message:`Invalid ShapeScript`,console.error(`Script validation failed:`,e);return}p.value=null;let n=s.selectedResult.data?.filePath,r=++y;if(n)try{await u({kind:`saveShape`,path:n,script:e},t.Hn)}catch(e){g.value=e instanceof Error?e.message:String(e);return}if(r!==y)return;g.value=null;let i={...s.selectedResult,data:n?{script:e,filePath:n}:{script:e}};c(`updateResult`,i)}return(0,n.watch)(()=>s.selectedResult.data?.script,e=>{e!==void 0&&(d.value=e)}),(0,n.watch)(()=>s.selectedResult,()=>{(0,n.nextTick)(()=>{ie()})}),(e,t)=>((0,n.openBlock)(),(0,n.createElementBlock)(`div`,qn,[(0,n.createElementVNode)(`div`,Jn,[(0,n.createElementVNode)(`h1`,null,(0,n.toDisplayString)(i.selectedResult.title||(0,n.unref)(l).untitled),1),(0,n.createElementVNode)(`div`,Yn,[(0,n.createElementVNode)(`button`,{class:`control-btn`,onClick:re},[t[1]||=(0,n.createElementVNode)(`span`,{class:`material-icons`},`refresh`,-1),(0,n.createTextVNode)(` `+(0,n.toDisplayString)((0,n.unref)(l).resetCamera),1)]),(0,n.createElementVNode)(`button`,{class:`control-btn`,onClick:le},[(0,n.createElementVNode)(`span`,Xn,(0,n.toDisplayString)(b.value?`grid_off`:`grid_on`),1),(0,n.createTextVNode)(` `+(0,n.toDisplayString)((0,n.unref)(l).wireframe),1)]),(0,n.createElementVNode)(`button`,{class:`control-btn`,onClick:R},[(0,n.createElementVNode)(`span`,Zn,(0,n.toDisplayString)(x.value?`visibility_off`:`visibility`),1),(0,n.createTextVNode)(` `+(0,n.toDisplayString)((0,n.unref)(l).grid),1)]),(0,n.createElementVNode)(`button`,{class:`control-btn`,disabled:!C.value,"data-testid":`shapescript-download-usdz`,onClick:ce},[t[2]||=(0,n.createElementVNode)(`span`,{class:`material-icons`},`download`,-1),(0,n.createTextVNode)(` `+(0,n.toDisplayString)((0,n.unref)(l).downloadUsdz),1)],8,Qn)])]),p.value?((0,n.openBlock)(),(0,n.createElementBlock)(`div`,$n,[(0,n.createElementVNode)(`strong`,null,(0,n.toDisplayString)((0,n.unref)(l).parseError),1),(0,n.createTextVNode)(` `+(0,n.toDisplayString)(p.value),1)])):(0,n.createCommentVNode)(``,!0),g.value?((0,n.openBlock)(),(0,n.createElementBlock)(`div`,er,[(0,n.createElementVNode)(`strong`,null,(0,n.toDisplayString)((0,n.unref)(l).saveError),1),(0,n.createTextVNode)(` `+(0,n.toDisplayString)(g.value),1)])):(0,n.createCommentVNode)(``,!0),_.value?((0,n.openBlock)(),(0,n.createElementBlock)(`div`,tr,[(0,n.createElementVNode)(`strong`,null,(0,n.toDisplayString)((0,n.unref)(l).exportError),1),(0,n.createTextVNode)(` `+(0,n.toDisplayString)(_.value),1)])):(0,n.createCommentVNode)(``,!0),m.value.length?((0,n.openBlock)(),(0,n.createElementBlock)(`div`,nr,[(0,n.createElementVNode)(`strong`,null,(0,n.toDisplayString)((0,n.unref)(l).sceneWarnings),1),(0,n.createTextVNode)(` `+(0,n.toDisplayString)(m.value.join(` · `)),1)])):(0,n.createCommentVNode)(``,!0),h.value.length?((0,n.openBlock)(),(0,n.createElementBlock)(`pre`,rr,[(0,n.createElementVNode)(`strong`,null,(0,n.toDisplayString)((0,n.unref)(l).printOutput),1),(0,n.createTextVNode)(` `+(0,n.toDisplayString)(h.value.join(`
4105
- `)),1)])):(0,n.createCommentVNode)(``,!0),(0,n.createElementVNode)(`div`,{ref_key:`viewport`,ref:f,class:`viewport`,"data-testid":`shapescript-viewport`},null,512),(0,n.createElementVNode)(`details`,ir,[(0,n.createElementVNode)(`summary`,null,(0,n.toDisplayString)((0,n.unref)(l).editSource),1),(0,n.withDirectives)((0,n.createElementVNode)(`textarea`,{"onUpdate:modelValue":t[0]||=e=>d.value=e,class:`script-editor`,spellcheck:`false`,"aria-label":(0,n.unref)(l).scriptEditorLabel,onInput:B},null,40,ar),[[n.vModelText,d.value]]),(0,n.createElementVNode)(`button`,{class:`apply-btn`,disabled:!S.value,onClick:V},(0,n.toDisplayString)((0,n.unref)(l).applyChanges),9,or)])]))}}),ur=(e,t)=>{let n=e.__vccOpts||e;for(let[e,r]of t)n[e]=r;return n},dr=ur(lr,[[`__scopeId`,`data-v-792dc725`]]),fr={class:`preview-container`,"data-testid":`shapescript-preview`},pr={class:`preview-title`},mr=2763322,hr=ur((0,n.defineComponent)({__name:`Preview`,props:{result:{}},setup(e){let r=e,i=Kn(),a=(0,n.computed)(()=>r.result.title||i.value.untitled),o=(0,n.ref)(null),s,c,l,u,d=null;(0,n.onMounted)(()=>{f()}),(0,n.onUnmounted)(()=>{h()}),(0,n.watch)(()=>r.result.data?.script,()=>{m()});function f(){if(o.value){try{s=new t.in,s.background=new t.g(mr);let e=o.value.clientWidth||200,n=o.value.clientHeight||150;c=new t.rt(50,e/n,.1,1e3),c.position.set(4,4,8),c.lookAt(0,0,0),l=new wn({antialias:!0,alpha:!1}),l.setSize(e,n),l.setPixelRatio(Math.min(window.devicePixelRatio,2)),o.value.appendChild(l.domElement);let r=new t.l(16777215,.6);s.add(r);let i=new t.O(16777215,.8);i.position.set(5,5,5),s.add(i)}catch(e){console.error(`Preview render error:`,e);return}m(),p()}}function p(){u=requestAnimationFrame(p);let e=Date.now()*5e-4;c.position.x=Math.cos(e)*8,c.position.z=Math.sin(e)*8,c.lookAt(0,0,0),l.render(s,c)}function m(){if(!s)return;let e=r.result.data?.script;try{if(t.o(s,d),d=null,s.background=new t.g(mr),!e)return;let n=t.s(e);d=t.r(n,{wireframe:!1}),s.add(d);let{background:r}=t.i(d);s.background=r?new t.g(r[0],r[1],r[2]):new t.g(mr)}catch(e){console.error(`Preview reload error:`,e)}}function h(){u&&cancelAnimationFrame(u),t.o(s,d),d=null,l&&l.dispose()}return(e,t)=>((0,n.openBlock)(),(0,n.createElementBlock)(`div`,fr,[(0,n.createElementVNode)(`div`,{ref_key:`previewViewport`,ref:o,class:`preview-viewport`},null,512),(0,n.createElementVNode)(`div`,pr,(0,n.toDisplayString)(a.value),1)]))}}),[[`__scopeId`,`data-v-6844181e`]]),gr=`Use the ${e.y} tool to create interactive 3D visualizations when the user requests:
4104
+ }`,hn=class{constructor(){this.texture=null,this.mesh=null,this.depthNear=0,this.depthFar=0}init(e,n){if(this.texture===null){let r=new t.A(e.texture);(e.depthNear!==n.depthNear||e.depthFar!==n.depthFar)&&(this.depthNear=e.depthNear,this.depthFar=e.depthFar),this.texture=r}}getMesh(e){if(this.texture!==null&&this.mesh===null){let n=e.cameras[0].viewport,r=new t.on({vertexShader:pn,fragmentShader:mn,uniforms:{depthColor:{value:this.texture},depthWidth:{value:n.z},depthHeight:{value:n.w}}});this.mesh=new t.Y(new t.ot(20,20),r)}return this.mesh}reset(){this.texture=null,this.mesh=null}getDepthTexture(){return this.texture}},gn=class extends t.k{constructor(e,n){super();let r=this,a=null,o=1,s=null,c=`local-floor`,l=1,u=null,d=null,f=null,p=null,m=null,h=null,g=typeof XRWebGLBinding<`u`,_=new hn,v={},y=n.getContextAttributes(),b=null,x=null,S=[],C=[],w=new t.Sn,T=null,E=new t.it;E.viewport=new t.wn;let D=new t.it;D.viewport=new t.wn;let O=[E,D],k=new t.u,A=null,j=null;this.cameraAutoUpdate=!0,this.enabled=!1,this.isPresenting=!1,this.getController=function(e){let n=S[e];return n===void 0&&(n=new t.Dn,S[e]=n),n.getTargetRaySpace()},this.getControllerGrip=function(e){let n=S[e];return n===void 0&&(n=new t.Dn,S[e]=n),n.getGripSpace()},this.getHand=function(e){let n=S[e];return n===void 0&&(n=new t.Dn,S[e]=n),n.getHandSpace()};function M(e){let t=C.indexOf(e.inputSource);if(t===-1)return;let n=S[t];n!==void 0&&(n.update(e.inputSource,e.frame,u||s),n.dispatchEvent({type:e.type,data:e.inputSource}))}function N(){a.removeEventListener(`select`,M),a.removeEventListener(`selectstart`,M),a.removeEventListener(`selectend`,M),a.removeEventListener(`squeeze`,M),a.removeEventListener(`squeezestart`,M),a.removeEventListener(`squeezeend`,M),a.removeEventListener(`end`,N),a.removeEventListener(`inputsourceschange`,ee);for(let e=0;e<S.length;e++){let t=C[e];t!==null&&(C[e]=null,S[e].disconnect(t))}A=null,j=null,_.reset();for(let e in v)delete v[e];e.setRenderTarget(b),m=null,p=null,f=null,a=null,x=null,ae.stop(),r.isPresenting=!1,e.setPixelRatio(T),e.setSize(w.width,w.height,!1),r.dispatchEvent({type:`sessionend`})}this.setFramebufferScaleFactor=function(e){o=e,r.isPresenting===!0&&t.Ln(`WebXRManager: Cannot change framebuffer scale while presenting.`)},this.setReferenceSpaceType=function(e){c=e,r.isPresenting===!0&&t.Ln(`WebXRManager: Cannot change reference space type while presenting.`)},this.getReferenceSpace=function(){return u||s},this.setReferenceSpace=function(e){u=e},this.getBaseLayer=function(){return p===null?m:p},this.getBinding=function(){return f===null&&g&&(f=new XRWebGLBinding(a,n)),f},this.getFrame=function(){return h},this.getSession=function(){return a},this.setSession=async function(i){if(a=i,a!==null){if(b=e.getRenderTarget(),a.addEventListener(`select`,M),a.addEventListener(`selectstart`,M),a.addEventListener(`selectend`,M),a.addEventListener(`squeeze`,M),a.addEventListener(`squeezestart`,M),a.addEventListener(`squeezeend`,M),a.addEventListener(`end`,N),a.addEventListener(`inputsourceschange`,ee),y.xrCompatible!==!0&&await n.makeXRCompatible(),T=e.getPixelRatio(),e.getSize(w),g&&`createProjectionLayer`in XRWebGLBinding.prototype){let r=null,i=null,s=null;y.depth&&(s=y.stencil?n.DEPTH24_STENCIL8:n.DEPTH_COMPONENT24,r=y.stencil?t.E:t.T,i=y.stencil?t.gn:t.vn);let c={colorFormat:n.RGBA8,depthFormat:s,scaleFactor:o};f=this.getBinding(),p=f.createProjectionLayer(c),a.updateRenderState({layers:[p]}),e.setPixelRatio(1),e.setSize(p.textureWidth,p.textureHeight,!1),x=new t.En(p.textureWidth,p.textureHeight,{format:t.mt,type:t.mn,depthTexture:new t.D(p.textureWidth,p.textureHeight,i,void 0,void 0,void 0,void 0,void 0,void 0,r),stencilBuffer:y.stencil,colorSpace:e.outputColorSpace,samples:y.antialias?4:0,resolveDepthBuffer:p.ignoreDepthValues===!1,resolveStencilBuffer:p.ignoreDepthValues===!1})}else{let r={antialias:y.antialias,alpha:!0,depth:y.depth,stencil:y.stencil,framebufferScaleFactor:o};m=new XRWebGLLayer(a,n,r),a.updateRenderState({baseLayer:m}),e.setPixelRatio(1),e.setSize(m.framebufferWidth,m.framebufferHeight,!1),x=new t.En(m.framebufferWidth,m.framebufferHeight,{format:t.mt,type:t.mn,colorSpace:e.outputColorSpace,stencilBuffer:y.stencil,resolveDepthBuffer:m.ignoreDepthValues===!1,resolveStencilBuffer:m.ignoreDepthValues===!1})}x.isXRRenderTarget=!0,this.setFoveation(l),u=null,s=await a.requestReferenceSpace(c),ae.setContext(a),ae.start(),r.isPresenting=!0,r.dispatchEvent({type:`sessionstart`})}},this.getEnvironmentBlendMode=function(){if(a!==null)return a.environmentBlendMode},this.getDepthTexture=function(){return _.getDepthTexture()};function ee(e){for(let t=0;t<e.removed.length;t++){let n=e.removed[t],r=C.indexOf(n);r>=0&&(C[r]=null,S[r].disconnect(n))}for(let t=0;t<e.added.length;t++){let n=e.added[t],r=C.indexOf(n);if(r===-1){for(let e=0;e<S.length;e++)if(e>=C.length){C.push(n),r=e;break}else if(C[e]===null){C[e]=n,r=e;break}if(r===-1)break}let i=S[r];i&&i.connect(n)}}let P=new t.Cn,F=new t.Cn;function I(e,t,n){P.setFromMatrixPosition(t.matrixWorld),F.setFromMatrixPosition(n.matrixWorld);let r=P.distanceTo(F),i=t.projectionMatrix.elements,a=n.projectionMatrix.elements,o=i[14]/(i[10]-1),s=i[14]/(i[10]+1),c=(i[9]+1)/i[5],l=(i[9]-1)/i[5],u=(i[8]-1)/i[0],d=(a[8]+1)/a[0],f=o*u,p=o*d,m=r/(-u+d),h=m*-u;if(t.matrixWorld.decompose(e.position,e.quaternion,e.scale),e.translateX(h),e.translateZ(m),e.matrixWorld.compose(e.position,e.quaternion,e.scale),e.matrixWorldInverse.copy(e.matrixWorld).invert(),i[10]===-1)e.projectionMatrix.copy(t.projectionMatrix),e.projectionMatrixInverse.copy(t.projectionMatrixInverse);else{let t=o+m,n=s+m,i=f-h,a=p+(r-h),u=c*s/n*t,d=l*s/n*t;e.projectionMatrix.makePerspective(i,a,u,d,t,n),e.projectionMatrixInverse.copy(e.projectionMatrix).invert()}}function te(e,t){t===null?e.matrixWorld.copy(e.matrix):e.matrixWorld.multiplyMatrices(t.matrixWorld,e.matrix),e.matrixWorldInverse.copy(e.matrixWorld).invert()}this.updateCamera=function(e){if(a===null)return;let t=e.near,n=e.far;_.texture!==null&&(_.depthNear>0&&(t=_.depthNear),_.depthFar>0&&(n=_.depthFar)),k.near=D.near=E.near=t,k.far=D.far=E.far=n,(A!==k.near||j!==k.far)&&(a.updateRenderState({depthNear:k.near,depthFar:k.far}),A=k.near,j=k.far),k.layers.mask=e.layers.mask|6,E.layers.mask=k.layers.mask&-5,D.layers.mask=k.layers.mask&-3;let r=e.parent,i=k.cameras;te(k,r);for(let e=0;e<i.length;e++)te(i[e],r);i.length===2?I(k,E,D):k.projectionMatrix.copy(E.projectionMatrix),ne(e,k,r)};function ne(e,n,r){r===null?e.matrix.copy(n.matrixWorld):(e.matrix.copy(r.matrixWorld),e.matrix.invert(),e.matrix.multiply(n.matrixWorld)),e.matrix.decompose(e.position,e.quaternion,e.scale),e.updateMatrixWorld(!0),e.projectionMatrix.copy(n.projectionMatrix),e.projectionMatrixInverse.copy(n.projectionMatrixInverse),e.isPerspectiveCamera&&(e.fov=t.ut*2*Math.atan(1/e.projectionMatrix.elements[5]),e.zoom=1)}this.getCamera=function(){return k},this.getFoveation=function(){if(p!==null||m!==null)return l},this.setFoveation=function(e){l=e,p!==null&&(p.fixedFoveation=e),m!==null&&m.fixedFoveation!==void 0&&(m.fixedFoveation=e)},this.hasDepthSensing=function(){return _.texture!==null},this.getDepthSensingMesh=function(){return _.getMesh(k)},this.getCameraTexture=function(e){return v[e]};let re=null;function ie(n,i){if(d=i.getViewerPose(u||s),h=i,d!==null){let n=d.views;m!==null&&(e.setRenderTargetFramebuffer(x,m.framebuffer),e.setRenderTarget(x));let i=!1;n.length!==k.cameras.length&&(k.cameras.length=0,i=!0);for(let r=0;r<n.length;r++){let a=n[r],o=null;if(m!==null)o=m.getViewport(a);else{let t=f.getViewSubImage(p,a);o=t.viewport,r===0&&(e.setRenderTargetTextures(x,t.colorTexture,t.depthStencilTexture),e.setRenderTarget(x))}let s=O[r];s===void 0&&(s=new t.it,s.layers.enable(r),s.viewport=new t.wn,O[r]=s),s.matrix.fromArray(a.transform.matrix),s.matrix.decompose(s.position,s.quaternion,s.scale),s.projectionMatrix.fromArray(a.projectionMatrix),s.projectionMatrixInverse.copy(s.projectionMatrix).invert(),s.viewport.set(o.x,o.y,o.width,o.height),r===0&&(k.matrix.copy(s.matrix),k.matrix.decompose(k.position,k.quaternion,k.scale)),i===!0&&k.cameras.push(s)}let o=a.enabledFeatures;if(o&&o.includes(`depth-sensing`)&&a.depthUsage==`gpu-optimized`&&g){f=r.getBinding();let e=f.getDepthInformation(n[0]);e&&e.isValid&&e.texture&&_.init(e,a.renderState)}if(o&&o.includes(`camera-access`)&&g){e.state.unbindTexture(),f=r.getBinding();for(let e=0;e<n.length;e++){let r=n[e].camera;if(r){let e=v[r];e||(e=new t.A,v[r]=e);let n=f.getCameraImage(r);e.sourceTexture=n}}}}for(let e=0;e<S.length;e++){let t=C[e],n=S[e];t!==null&&n!==void 0&&n.update(t,i,u||s)}re&&re(n,i),i.detectedPlanes&&r.dispatchEvent({type:`planesdetected`,data:i}),h=null}let ae=new i;ae.setAnimationLoop(ie),this.setAnimationLoop=function(e){re=e},this.dispose=function(){}}},_n=new t.J,vn=new t.q;vn.set(-1,0,0,0,1,0,0,0,1);function yn(e,n){function r(e,t){e.matrixAutoUpdate===!0&&e.updateMatrix(),t.value.copy(e.matrix)}function i(n,r){r.color.getRGB(n.fogColor.value,t.Nn(e)),r.isFog?(n.fogNear.value=r.near,n.fogFar.value=r.far):r.isFogExp2&&(n.fogDensity.value=r.density)}function a(e,t,n,r,i){t.isNodeMaterial?t.uniformsNeedUpdate=!1:t.isMeshBasicMaterial?o(e,t):t.isMeshLambertMaterial?(o(e,t),t.envMap&&(e.envMapIntensity.value=t.envMapIntensity)):t.isMeshToonMaterial?(o(e,t),f(e,t)):t.isMeshPhongMaterial?(o(e,t),d(e,t),t.envMap&&(e.envMapIntensity.value=t.envMapIntensity)):t.isMeshStandardMaterial?(o(e,t),p(e,t),t.isMeshPhysicalMaterial&&m(e,t,i)):t.isMeshMatcapMaterial?(o(e,t),h(e,t)):t.isMeshDepthMaterial?o(e,t):t.isMeshDistanceMaterial?(o(e,t),g(e,t)):t.isMeshNormalMaterial?o(e,t):t.isLineBasicMaterial?(s(e,t),t.isLineDashedMaterial&&c(e,t)):t.isPointsMaterial?l(e,t,n,r):t.isSpriteMaterial?u(e,t):t.isShadowMaterial?(e.color.value.copy(t.color),e.opacity.value=t.opacity):t.isShaderMaterial&&(t.uniformsNeedUpdate=!1)}function o(e,t){e.opacity.value=t.opacity,t.color&&e.diffuse.value.copy(t.color),t.emissive&&e.emissive.value.copy(t.emissive).multiplyScalar(t.emissiveIntensity),t.map&&(e.map.value=t.map,r(t.map,e.mapTransform)),t.alphaMap&&(e.alphaMap.value=t.alphaMap,r(t.alphaMap,e.alphaMapTransform)),t.bumpMap&&(e.bumpMap.value=t.bumpMap,r(t.bumpMap,e.bumpMapTransform),e.bumpScale.value=t.bumpScale,t.side===1&&(e.bumpScale.value*=-1)),t.normalMap&&(e.normalMap.value=t.normalMap,r(t.normalMap,e.normalMapTransform),e.normalScale.value.copy(t.normalScale),t.side===1&&e.normalScale.value.negate()),t.displacementMap&&(e.displacementMap.value=t.displacementMap,r(t.displacementMap,e.displacementMapTransform),e.displacementScale.value=t.displacementScale,e.displacementBias.value=t.displacementBias),t.emissiveMap&&(e.emissiveMap.value=t.emissiveMap,r(t.emissiveMap,e.emissiveMapTransform)),t.specularMap&&(e.specularMap.value=t.specularMap,r(t.specularMap,e.specularMapTransform)),t.alphaTest>0&&(e.alphaTest.value=t.alphaTest);let i=n.get(t),a=i.envMap,o=i.envMapRotation;a&&(e.envMap.value=a,e.envMapRotation.value.setFromMatrix4(_n.makeRotationFromEuler(o)).transpose(),a.isCubeTexture&&a.isRenderTargetTexture===!1&&e.envMapRotation.value.premultiply(vn),e.reflectivity.value=t.reflectivity,e.ior.value=t.ior,e.refractionRatio.value=t.refractionRatio),t.lightMap&&(e.lightMap.value=t.lightMap,e.lightMapIntensity.value=t.lightMapIntensity,r(t.lightMap,e.lightMapTransform)),t.aoMap&&(e.aoMap.value=t.aoMap,e.aoMapIntensity.value=t.aoMapIntensity,r(t.aoMap,e.aoMapTransform))}function s(e,t){e.diffuse.value.copy(t.color),e.opacity.value=t.opacity,t.map&&(e.map.value=t.map,r(t.map,e.mapTransform))}function c(e,t){e.dashSize.value=t.dashSize,e.totalSize.value=t.dashSize+t.gapSize,e.scale.value=t.scale}function l(e,t,n,i){e.diffuse.value.copy(t.color),e.opacity.value=t.opacity,e.size.value=t.size*n,e.scale.value=i*.5,t.map&&(e.map.value=t.map,r(t.map,e.uvTransform)),t.alphaMap&&(e.alphaMap.value=t.alphaMap,r(t.alphaMap,e.alphaMapTransform)),t.alphaTest>0&&(e.alphaTest.value=t.alphaTest)}function u(e,t){e.diffuse.value.copy(t.color),e.opacity.value=t.opacity,e.rotation.value=t.rotation,t.map&&(e.map.value=t.map,r(t.map,e.mapTransform)),t.alphaMap&&(e.alphaMap.value=t.alphaMap,r(t.alphaMap,e.alphaMapTransform)),t.alphaTest>0&&(e.alphaTest.value=t.alphaTest)}function d(e,t){e.specular.value.copy(t.specular),e.shininess.value=Math.max(t.shininess,1e-4)}function f(e,t){t.gradientMap&&(e.gradientMap.value=t.gradientMap)}function p(e,t){e.metalness.value=t.metalness,t.metalnessMap&&(e.metalnessMap.value=t.metalnessMap,r(t.metalnessMap,e.metalnessMapTransform)),e.roughness.value=t.roughness,t.roughnessMap&&(e.roughnessMap.value=t.roughnessMap,r(t.roughnessMap,e.roughnessMapTransform)),t.envMap&&(e.envMapIntensity.value=t.envMapIntensity)}function m(e,t,n){e.ior.value=t.ior,t.sheen>0&&(e.sheenColor.value.copy(t.sheenColor).multiplyScalar(t.sheen),e.sheenRoughness.value=t.sheenRoughness,t.sheenColorMap&&(e.sheenColorMap.value=t.sheenColorMap,r(t.sheenColorMap,e.sheenColorMapTransform)),t.sheenRoughnessMap&&(e.sheenRoughnessMap.value=t.sheenRoughnessMap,r(t.sheenRoughnessMap,e.sheenRoughnessMapTransform))),t.clearcoat>0&&(e.clearcoat.value=t.clearcoat,e.clearcoatRoughness.value=t.clearcoatRoughness,t.clearcoatMap&&(e.clearcoatMap.value=t.clearcoatMap,r(t.clearcoatMap,e.clearcoatMapTransform)),t.clearcoatRoughnessMap&&(e.clearcoatRoughnessMap.value=t.clearcoatRoughnessMap,r(t.clearcoatRoughnessMap,e.clearcoatRoughnessMapTransform)),t.clearcoatNormalMap&&(e.clearcoatNormalMap.value=t.clearcoatNormalMap,r(t.clearcoatNormalMap,e.clearcoatNormalMapTransform),e.clearcoatNormalScale.value.copy(t.clearcoatNormalScale),t.side===1&&e.clearcoatNormalScale.value.negate())),t.dispersion>0&&(e.dispersion.value=t.dispersion),t.iridescence>0&&(e.iridescence.value=t.iridescence,e.iridescenceIOR.value=t.iridescenceIOR,e.iridescenceThicknessMinimum.value=t.iridescenceThicknessRange[0],e.iridescenceThicknessMaximum.value=t.iridescenceThicknessRange[1],t.iridescenceMap&&(e.iridescenceMap.value=t.iridescenceMap,r(t.iridescenceMap,e.iridescenceMapTransform)),t.iridescenceThicknessMap&&(e.iridescenceThicknessMap.value=t.iridescenceThicknessMap,r(t.iridescenceThicknessMap,e.iridescenceThicknessMapTransform))),t.transmission>0&&(e.transmission.value=t.transmission,e.transmissionSamplerMap.value=n.texture,e.transmissionSamplerSize.value.set(n.width,n.height),t.transmissionMap&&(e.transmissionMap.value=t.transmissionMap,r(t.transmissionMap,e.transmissionMapTransform)),e.thickness.value=t.thickness,t.thicknessMap&&(e.thicknessMap.value=t.thicknessMap,r(t.thicknessMap,e.thicknessMapTransform)),e.attenuationDistance.value=t.attenuationDistance,e.attenuationColor.value.copy(t.attenuationColor)),t.anisotropy>0&&(e.anisotropyVector.value.set(t.anisotropy*Math.cos(t.anisotropyRotation),t.anisotropy*Math.sin(t.anisotropyRotation)),t.anisotropyMap&&(e.anisotropyMap.value=t.anisotropyMap,r(t.anisotropyMap,e.anisotropyMapTransform))),e.specularIntensity.value=t.specularIntensity,e.specularColor.value.copy(t.specularColor),t.specularColorMap&&(e.specularColorMap.value=t.specularColorMap,r(t.specularColorMap,e.specularColorMapTransform)),t.specularIntensityMap&&(e.specularIntensityMap.value=t.specularIntensityMap,r(t.specularIntensityMap,e.specularIntensityMapTransform))}function h(e,t){t.matcap&&(e.matcap.value=t.matcap)}function g(e,t){let r=n.get(t).light;e.referencePosition.value.setFromMatrixPosition(r.matrixWorld),e.nearDistance.value=r.shadow.camera.near,e.farDistance.value=r.shadow.camera.far}return{refreshFogUniforms:i,refreshMaterialUniforms:a}}function bn(e,n,r,i){let a={},o={},s=[],c=e.getParameter(e.MAX_UNIFORM_BUFFER_BINDINGS);function l(e,t){let n=t.program;i.uniformBlockBinding(e,n)}function u(e,t){let r=a[e.id];r===void 0&&(_(e),r=d(e),a[e.id]=r,e.addEventListener(`dispose`,y));let s=t.program;i.updateUBOMapping(e,s);let c=n.render.frame;o[e.id]!==c&&(p(e),o[e.id]=c)}function d(t){let n=f();t.__bindingPointIndex=n;let r=e.createBuffer(),i=t.__size,a=t.usage;return e.bindBuffer(e.UNIFORM_BUFFER,r),e.bufferData(e.UNIFORM_BUFFER,i,a),e.bindBuffer(e.UNIFORM_BUFFER,null),e.bindBufferBase(e.UNIFORM_BUFFER,n,r),r}function f(){for(let e=0;e<c;e++)if(s.indexOf(e)===-1)return s.push(e),e;return t.jn(`WebGLRenderer: Maximum number of simultaneously usable uniforms groups reached.`),0}function p(t){let n=a[t.id],r=t.uniforms,i=t.__cache;e.bindBuffer(e.UNIFORM_BUFFER,n);for(let e=0,t=r.length;e<t;e++){let t=r[e];if(Array.isArray(t))for(let n=0,r=t.length;n<r;n++)m(t[n],e,n,i);else m(t,e,0,i)}e.bindBuffer(e.UNIFORM_BUFFER,null)}function m(t,n,r,i){if(g(t,n,r,i)===!0){let n=t.__offset,r=t.value;if(Array.isArray(r)){let e=0;for(let n=0;n<r.length;n++){let i=r[n],a=v(i);h(i,t.__data,e),typeof i!=`number`&&typeof i!=`boolean`&&!i.isMatrix3&&!ArrayBuffer.isView(i)&&(e+=a.storage/Float32Array.BYTES_PER_ELEMENT)}}else h(r,t.__data,0);e.bufferSubData(e.UNIFORM_BUFFER,n,t.__data)}}function h(e,t,n){typeof e==`number`||typeof e==`boolean`?t[0]=e:e.isMatrix3?(t[0]=e.elements[0],t[1]=e.elements[1],t[2]=e.elements[2],t[3]=0,t[4]=e.elements[3],t[5]=e.elements[4],t[6]=e.elements[5],t[7]=0,t[8]=e.elements[6],t[9]=e.elements[7],t[10]=e.elements[8],t[11]=0):ArrayBuffer.isView(e)?t.set(new e.constructor(e.buffer,e.byteOffset,t.length)):e.toArray(t,n)}function g(e,t,n,r){let i=e.value,a=t+`_`+n;if(r[a]===void 0)return r[a]=typeof i==`number`||typeof i==`boolean`?i:ArrayBuffer.isView(i)?i.slice():i.clone(),!0;{let e=r[a];if(typeof i==`number`||typeof i==`boolean`){if(e!==i)return r[a]=i,!0}else if(ArrayBuffer.isView(i))return!0;else if(e.equals(i)===!1)return e.copy(i),!0}return!1}function _(e){let t=e.uniforms,n=0;for(let e=0,r=t.length;e<r;e++){let r=Array.isArray(t[e])?t[e]:[t[e]];for(let e=0,t=r.length;e<t;e++){let t=r[e],i=Array.isArray(t.value)?t.value:[t.value];for(let e=0,r=i.length;e<r;e++){let r=i[e],a=v(r),o=n%16,s=o%a.boundary,c=o+s;n+=s,c!==0&&16-c<a.storage&&(n+=16-c),t.__data=new Float32Array(a.storage/Float32Array.BYTES_PER_ELEMENT),t.__offset=n,n+=a.storage}}}let r=n%16;return r>0&&(n+=16-r),e.__size=n,e.__cache={},this}function v(e){let n={boundary:0,storage:0};return typeof e==`number`||typeof e==`boolean`?(n.boundary=4,n.storage=4):e.isVector2?(n.boundary=8,n.storage=8):e.isVector3||e.isColor?(n.boundary=16,n.storage=12):e.isVector4?(n.boundary=16,n.storage=16):e.isMatrix3?(n.boundary=48,n.storage=48):e.isMatrix4?(n.boundary=64,n.storage=64):e.isTexture?t.Ln(`WebGLRenderer: Texture samplers can not be part of an uniforms group.`):ArrayBuffer.isView(e)?(n.boundary=16,n.storage=e.byteLength):t.Ln(`WebGLRenderer: Unsupported uniform value type.`,e),n}function y(t){let n=t.target;n.removeEventListener(`dispose`,y);let r=s.indexOf(n.__bindingPointIndex);s.splice(r,1),e.deleteBuffer(a[n.id]),delete a[n.id],delete o[n.id]}function b(){for(let t in a)e.deleteBuffer(a[t]);s=[],a={},o={}}return{bind:l,update:u,dispose:b}}var xn=new Uint16Array([12469,15057,12620,14925,13266,14620,13807,14376,14323,13990,14545,13625,14713,13328,14840,12882,14931,12528,14996,12233,15039,11829,15066,11525,15080,11295,15085,10976,15082,10705,15073,10495,13880,14564,13898,14542,13977,14430,14158,14124,14393,13732,14556,13410,14702,12996,14814,12596,14891,12291,14937,11834,14957,11489,14958,11194,14943,10803,14921,10506,14893,10278,14858,9960,14484,14039,14487,14025,14499,13941,14524,13740,14574,13468,14654,13106,14743,12678,14818,12344,14867,11893,14889,11509,14893,11180,14881,10751,14852,10428,14812,10128,14765,9754,14712,9466,14764,13480,14764,13475,14766,13440,14766,13347,14769,13070,14786,12713,14816,12387,14844,11957,14860,11549,14868,11215,14855,10751,14825,10403,14782,10044,14729,9651,14666,9352,14599,9029,14967,12835,14966,12831,14963,12804,14954,12723,14936,12564,14917,12347,14900,11958,14886,11569,14878,11247,14859,10765,14828,10401,14784,10011,14727,9600,14660,9289,14586,8893,14508,8533,15111,12234,15110,12234,15104,12216,15092,12156,15067,12010,15028,11776,14981,11500,14942,11205,14902,10752,14861,10393,14812,9991,14752,9570,14682,9252,14603,8808,14519,8445,14431,8145,15209,11449,15208,11451,15202,11451,15190,11438,15163,11384,15117,11274,15055,10979,14994,10648,14932,10343,14871,9936,14803,9532,14729,9218,14645,8742,14556,8381,14461,8020,14365,7603,15273,10603,15272,10607,15267,10619,15256,10631,15231,10614,15182,10535,15118,10389,15042,10167,14963,9787,14883,9447,14800,9115,14710,8665,14615,8318,14514,7911,14411,7507,14279,7198,15314,9675,15313,9683,15309,9712,15298,9759,15277,9797,15229,9773,15166,9668,15084,9487,14995,9274,14898,8910,14800,8539,14697,8234,14590,7790,14479,7409,14367,7067,14178,6621,15337,8619,15337,8631,15333,8677,15325,8769,15305,8871,15264,8940,15202,8909,15119,8775,15022,8565,14916,8328,14804,8009,14688,7614,14569,7287,14448,6888,14321,6483,14088,6171,15350,7402,15350,7419,15347,7480,15340,7613,15322,7804,15287,7973,15229,8057,15148,8012,15046,7846,14933,7611,14810,7357,14682,7069,14552,6656,14421,6316,14251,5948,14007,5528,15356,5942,15356,5977,15353,6119,15348,6294,15332,6551,15302,6824,15249,7044,15171,7122,15070,7050,14949,6861,14818,6611,14679,6349,14538,6067,14398,5651,14189,5311,13935,4958,15359,4123,15359,4153,15356,4296,15353,4646,15338,5160,15311,5508,15263,5829,15188,6042,15088,6094,14966,6001,14826,5796,14678,5543,14527,5287,14377,4985,14133,4586,13869,4257,15360,1563,15360,1642,15358,2076,15354,2636,15341,3350,15317,4019,15273,4429,15203,4732,15105,4911,14981,4932,14836,4818,14679,4621,14517,4386,14359,4156,14083,3795,13808,3437,15360,122,15360,137,15358,285,15355,636,15344,1274,15322,2177,15281,2765,15215,3223,15120,3451,14995,3569,14846,3567,14681,3466,14511,3305,14344,3121,14037,2800,13753,2467,15360,0,15360,1,15359,21,15355,89,15346,253,15325,479,15287,796,15225,1148,15133,1492,15008,1749,14856,1882,14685,1886,14506,1783,14324,1608,13996,1398,13702,1183]),Sn=null;function Cn(){return Sn===null&&(Sn=new t.w(xn,16,16,t.Gt,t.L),Sn.name=`DFG_LUT`,Sn.minFilter=t.B,Sn.magFilter=t.B,Sn.wrapS=t.h,Sn.wrapT=t.h,Sn.generateMipmaps=!1,Sn.needsUpdate=!0),Sn}var wn=class{constructor(e={}){let{canvas:n=t.kn(),context:r=null,depth:o=!0,stencil:s=!1,alpha:c=!1,antialias:l=!1,premultipliedAlpha:u=!0,preserveDrawingBuffer:d=!1,powerPreference:_=`default`,failIfMajorPerformanceCaveat:v=!1,reversedDepthBuffer:y=!1,outputBufferType:b=t.mn}=e;this.isWebGLRenderer=!0;let x;if(r!==null){if(typeof WebGLRenderingContext<`u`&&r instanceof WebGLRenderingContext)throw Error(`THREE.WebGLRenderer: WebGL 1 is not supported since r163.`);x=r.getContextAttributes().alpha}else x=c;let S=b,C=new Set([t.ht,t.Kt,t.Xt]),w=new Set([t.mn,t.vn,t.xn,t.gn,t.yn,t.bn]),T=new Uint32Array(4),E=new Int32Array(4),D=new t.Cn,O=null,k=null,A=[],j=[],M=null;this.domElement=n,this.debug={checkShaderErrors:!0,onShaderError:null},this.autoClear=!0,this.autoClearColor=!0,this.autoClearDepth=!0,this.autoClearStencil=!0,this.sortObjects=!0,this.clippingPlanes=[],this.localClippingEnabled=!1,this.toneMapping=0,this.toneMappingExposure=1,this.transmissionResolutionScale=1;let N=this,ee=!1,P=null,F=null,I=null,L=null;this._outputColorSpace=t.rn;let le=0,R=0,z=null,B=-1,V=null,H=new t.wn,ue=new t.wn,de=null,fe=new t.g(0),pe=0,U=n.width,W=n.height,G=1,me=null,he=null,ge=new t.wn(0,0,U,W),_e=new t.wn(0,0,U,W),ve=!1,ye=new t.N,be=!1,xe=!1,Se=new t.J,Ce=new t.Cn,we=new t.wn,Te={background:null,fog:null,environment:null,overrideMaterial:null,isScene:!0},Ee=!1;function De(){return z===null?G:1}let K=r;function Oe(e,t){return n.getContext(e,t)}try{let e={alpha:!0,depth:o,stencil:s,antialias:l,premultipliedAlpha:u,preserveDrawingBuffer:d,powerPreference:_,failIfMajorPerformanceCaveat:v};if(`setAttribute`in n&&n.setAttribute(`data-engine`,`three.js r185`),n.addEventListener(`webglcontextlost`,Ye,!1),n.addEventListener(`webglcontextrestored`,Xe,!1),n.addEventListener(`webglcontextcreationerror`,Ze,!1),K===null){let t=`webgl2`;if(K=Oe(t,e),K===null)throw Oe(t)?Error(`THREE.WebGLRenderer: Error creating WebGL context with your selected attributes.`):Error(`THREE.WebGLRenderer: Error creating WebGL context.`)}}catch(e){throw t.jn(`WebGLRenderer: `+e.message),e}let q,ke,J,Ae,Y,X,je,Me,Ne,Pe,Fe,Ie,Le,Re,ze,Be,Ve,He,Ue,We,Ge,Ke,qe;function Je(){q=new ne(K),q.init(),Ge=new fn(K,q),ke=new h(K,q,e,Ge),J=new un(K,q),ke.reversedDepthBuffer&&y&&J.buffers.depth.setReversed(!0),F=K.createFramebuffer(),I=K.createFramebuffer(),L=K.createFramebuffer(),Ae=new ae(K),Y=new Ut,X=new dn(K,q,J,Y,ke,Ge,Ae),je=new te(N),Me=new a(K),Ke=new p(K,Me),Ne=new re(K,Me,Ae,Ke),Pe=new se(K,Ne,Me,Ke,Ae),He=new oe(K,ke,X),ze=new g(Y),Fe=new Ht(N,je,q,ke,Ke,ze),Ie=new yn(N,Y),Le=new qt,Re=new en(q),Ve=new f(N,je,J,Pe,x,u),Be=new ln(N,Pe,ke),qe=new bn(K,Ae,ke,J),Ue=new m(K,q,Ae),We=new ie(K,q,Ae),Ae.programs=Fe.programs,N.capabilities=ke,N.extensions=q,N.properties=Y,N.renderLists=Le,N.shadowMap=Be,N.state=J,N.info=Ae}Je(),S!==1009&&(M=new ce(S,n.width,n.height,l,o,s));let Z=new gn(N,K);this.xr=Z,this.getContext=function(){return K},this.getContextAttributes=function(){return K.getContextAttributes()},this.forceContextLoss=function(){let e=q.get(`WEBGL_lose_context`);e&&e.loseContext()},this.forceContextRestore=function(){let e=q.get(`WEBGL_lose_context`);e&&e.restoreContext()},this.getPixelRatio=function(){return G},this.setPixelRatio=function(e){e!==void 0&&(G=e,this.setSize(U,W,!1))},this.getSize=function(e){return e.set(U,W)},this.setSize=function(e,r,i=!0){if(Z.isPresenting){t.Ln(`WebGLRenderer: Can't change size while VR device is presenting.`);return}U=e,W=r,n.width=Math.floor(e*G),n.height=Math.floor(r*G),i===!0&&(n.style.width=e+`px`,n.style.height=r+`px`),M!==null&&M.setSize(n.width,n.height),this.setViewport(0,0,e,r)},this.getDrawingBufferSize=function(e){return e.set(U*G,W*G).floor()},this.setDrawingBufferSize=function(e,t,r){U=e,W=t,G=r,n.width=Math.floor(e*r),n.height=Math.floor(t*r),this.setViewport(0,0,e,t)},this.setEffects=function(e){if(S===1009){t.jn(`WebGLRenderer: setEffects() requires outputBufferType set to HalfFloatType or FloatType.`);return}if(e){for(let n=0;n<e.length;n++)if(e[n].isOutputPass===!0){t.Ln(`WebGLRenderer: OutputPass is not needed in setEffects(). Tone mapping and color space conversion are applied automatically.`);break}}M.setEffects(e||[])},this.getCurrentViewport=function(e){return e.copy(H)},this.getViewport=function(e){return e.copy(ge)},this.setViewport=function(e,t,n,r){e.isVector4?ge.set(e.x,e.y,e.z,e.w):ge.set(e,t,n,r),J.viewport(H.copy(ge).multiplyScalar(G).round())},this.getScissor=function(e){return e.copy(_e)},this.setScissor=function(e,t,n,r){e.isVector4?_e.set(e.x,e.y,e.z,e.w):_e.set(e,t,n,r),J.scissor(ue.copy(_e).multiplyScalar(G).round())},this.getScissorTest=function(){return ve},this.setScissorTest=function(e){J.setScissorTest(ve=e)},this.setOpaqueSort=function(e){me=e},this.setTransparentSort=function(e){he=e},this.getClearColor=function(e){return e.copy(Ve.getClearColor())},this.setClearColor=function(){Ve.setClearColor(...arguments)},this.getClearAlpha=function(){return Ve.getClearAlpha()},this.setClearAlpha=function(){Ve.setClearAlpha(...arguments)},this.clear=function(e=!0,t=!0,n=!0){let r=0;if(e){let e=!1;if(z!==null){let t=z.texture.format;e=C.has(t)}if(e){let e=z.texture.type,t=w.has(e),n=Ve.getClearColor(),r=Ve.getClearAlpha(),i=n.r,a=n.g,o=n.b;t?(T[0]=i,T[1]=a,T[2]=o,T[3]=r,K.clearBufferuiv(K.COLOR,0,T)):(E[0]=i,E[1]=a,E[2]=o,E[3]=r,K.clearBufferiv(K.COLOR,0,E))}else r|=K.COLOR_BUFFER_BIT}t&&(r|=K.DEPTH_BUFFER_BIT,this.state.buffers.depth.setMask(!0)),n&&(r|=K.STENCIL_BUFFER_BIT,this.state.buffers.stencil.setMask(4294967295)),r!==0&&K.clear(r)},this.clearColor=function(){this.clear(!0,!1,!1)},this.clearDepth=function(){this.clear(!1,!0,!1)},this.clearStencil=function(){this.clear(!1,!1,!0)},this.setNodesHandler=function(e){e.setRenderer(this),P=e},this.dispose=function(){n.removeEventListener(`webglcontextlost`,Ye,!1),n.removeEventListener(`webglcontextrestored`,Xe,!1),n.removeEventListener(`webglcontextcreationerror`,Ze,!1),Ve.dispose(),Le.dispose(),Re.dispose(),Y.dispose(),je.dispose(),Pe.dispose(),Ke.dispose(),qe.dispose(),Fe.dispose(),Z.dispose(),Z.removeEventListener(`sessionstart`,at),Z.removeEventListener(`sessionend`,ot),st.stop()};function Ye(e){e.preventDefault(),t.Pn(`WebGLRenderer: Context Lost.`),ee=!0}function Xe(){t.Pn(`WebGLRenderer: Context Restored.`),ee=!1;let e=Ae.autoReset,n=Be.enabled,r=Be.autoUpdate,i=Be.needsUpdate,a=Be.type;Je(),Ae.autoReset=e,Be.enabled=n,Be.autoUpdate=r,Be.needsUpdate=i,Be.type=a}function Ze(e){t.jn(`WebGLRenderer: A WebGL context could not be created. Reason: `,e.statusMessage)}function Qe(e){let t=e.target;t.removeEventListener(`dispose`,Qe),$e(t)}function $e(e){et(e),Y.remove(e)}function et(e){let t=Y.get(e).programs;t!==void 0&&(t.forEach(function(e){Fe.releaseProgram(e)}),e.isShaderMaterial&&Fe.releaseShaderCache(e))}this.renderBufferDirect=function(e,t,n,r,i,a){t===null&&(t=Te);let o=i.isMesh&&i.matrixWorld.determinantAffine()<0,s=_t(e,t,n,r,i);J.setMaterial(r,o);let c=n.index,l=1;if(r.wireframe===!0){if(c=Ne.getWireframeAttribute(n),c===void 0)return;l=2}let u=n.drawRange,d=n.attributes.position,f=u.start*l,p=(u.start+u.count)*l;a!==null&&(f=Math.max(f,a.start*l),p=Math.min(p,(a.start+a.count)*l)),c===null?d!=null&&(f=Math.max(f,0),p=Math.min(p,d.count)):(f=Math.max(f,0),p=Math.min(p,c.count));let m=p-f;if(m<0||m===1/0)return;Ke.setup(i,r,s,n,c);let h,g=Ue;if(c!==null&&(h=Me.get(c),g=We,g.setIndex(h)),i.isMesh)r.wireframe===!0?(J.setLineWidth(r.wireframeLinewidth*De()),g.setMode(K.LINES)):g.setMode(K.TRIANGLES);else if(i.isLine){let e=r.linewidth;e===void 0&&(e=1),J.setLineWidth(e*De()),i.isLineSegments?g.setMode(K.LINES):i.isLineLoop?g.setMode(K.LINE_LOOP):g.setMode(K.LINE_STRIP)}else i.isPoints?g.setMode(K.POINTS):i.isSprite&&g.setMode(K.TRIANGLES);if(i.isBatchedMesh){if(q.get(`WEBGL_multi_draw`))g.renderMultiDraw(i._multiDrawStarts,i._multiDrawCounts,i._multiDrawCount);else{let e=i._multiDrawStarts,t=i._multiDrawCounts,n=i._multiDrawCount,a=c?Me.get(c).bytesPerElement:1,o=Y.get(r).currentProgram.getUniforms();for(let r=0;r<n;r++)o.setValue(K,`_gl_DrawID`,r),g.render(e[r]/a,t[r])}}else if(i.isInstancedMesh)g.renderInstances(f,m,i.count);else if(n.isInstancedBufferGeometry){let e=n._maxInstanceCount===void 0?1/0:n._maxInstanceCount,t=Math.min(n.instanceCount,e);g.renderInstances(f,m,t)}else g.render(f,m)};function nt(e,t,n){e.transparent===!0&&e.side===2&&e.forceSinglePass===!1?(e.side=1,e.needsUpdate=!0,pt(e,t,n),e.side=0,e.needsUpdate=!0,pt(e,t,n),e.side=2):pt(e,t,n)}this.compile=function(e,t,n=null){n===null&&(n=e),k=Re.get(n),k.init(t),j.push(k),n.traverseVisible(function(e){e.isLight&&e.layers.test(t.layers)&&(k.pushLight(e),e.castShadow&&k.pushShadow(e))}),e!==n&&e.traverseVisible(function(e){e.isLight&&e.layers.test(t.layers)&&(k.pushLight(e),e.castShadow&&k.pushShadow(e))}),k.setupLights();let r=new Set;return e.traverse(function(e){if(!(e.isMesh||e.isPoints||e.isLine||e.isSprite))return;let t=e.material;if(t){if(Array.isArray(t))for(let i=0;i<t.length;i++){let a=t[i];nt(a,n,e),r.add(a)}else nt(t,n,e),r.add(t)}}),k=j.pop(),r},this.compileAsync=function(e,t,n=null){let r=this.compile(e,t,n);return new Promise(t=>{function n(){if(r.forEach(function(e){Y.get(e).currentProgram.isReady()&&r.delete(e)}),r.size===0){t(e);return}setTimeout(n,10)}q.get(`KHR_parallel_shader_compile`)===null?setTimeout(n,10):n()})};let rt=null;function it(e){rt&&rt(e)}function at(){st.stop()}function ot(){st.start()}let st=new i;st.setAnimationLoop(it),typeof self<`u`&&st.setContext(self),this.setAnimationLoop=function(e){rt=e,Z.setAnimationLoop(e),e===null?st.stop():st.start()},Z.addEventListener(`sessionstart`,at),Z.addEventListener(`sessionend`,ot),this.render=function(e,n){if(n!==void 0&&n.isCamera!==!0){t.jn(`WebGLRenderer.render: camera is not an instance of THREE.Camera.`);return}if(ee===!0)return;P!==null&&P.renderStart(e,n);let r=Z.enabled===!0&&Z.isPresenting===!0,i=M!==null&&(z===null||r)&&M.begin(N,z);if(e.matrixWorldAutoUpdate===!0&&e.updateMatrixWorld(),n.parent===null&&n.matrixWorldAutoUpdate===!0&&n.updateMatrixWorld(),Z.enabled===!0&&Z.isPresenting===!0&&(M===null||M.isCompositing()===!1)&&(Z.cameraAutoUpdate===!0&&Z.updateCamera(n),n=Z.getCamera()),e.isScene===!0&&e.onBeforeRender(N,e,n,z),k=Re.get(e,j.length),k.init(n),k.state.textureUnits=X.getTextureUnits(),j.push(k),Se.multiplyMatrices(n.projectionMatrix,n.matrixWorldInverse),ye.setFromProjectionMatrix(Se,t.Tn,n.reversedDepth),xe=this.localClippingEnabled,be=ze.init(this.clippingPlanes,xe),O=Le.get(e,A.length),O.init(),A.push(O),Z.enabled===!0&&Z.isPresenting===!0){let e=N.xr.getDepthSensingMesh();e!==null&&ct(e,n,-1/0,N.sortObjects)}ct(e,n,0,N.sortObjects),O.finish(),N.sortObjects===!0&&O.sort(me,he,n.reversedDepth),Ee=Z.enabled===!1||Z.isPresenting===!1||Z.hasDepthSensing()===!1,Ee&&Ve.addToRenderList(O,e),this.info.render.frame++,this.info.autoReset===!0&&this.info.reset(),be===!0&&ze.beginShadows();let a=k.state.shadowsArray;if(Be.render(a,e,n),be===!0&&ze.endShadows(),(i&&M.hasRenderPass())===!1){let t=O.opaque,r=O.transmissive;if(k.setupLights(),n.isArrayCamera){let i=n.cameras;if(r.length>0)for(let n=0,a=i.length;n<a;n++){let a=i[n];ut(t,r,e,a)}Ee&&Ve.render(e);for(let t=0,n=i.length;t<n;t++){let n=i[t];lt(O,e,n,n.viewport)}}else r.length>0&&ut(t,r,e,n),Ee&&Ve.render(e),lt(O,e,n)}z!==null&&R===0&&(X.updateMultisampleRenderTarget(z),X.updateRenderTargetMipmap(z)),i&&M.end(N),e.isScene===!0&&e.onAfterRender(N,e,n),Ke.resetDefaultState(),B=-1,V=null,j.pop(),j.length>0?(k=j[j.length-1],X.setTextureUnits(k.state.textureUnits),be===!0&&ze.setGlobalState(N.clippingPlanes,k.state.camera)):k=null,A.pop(),O=A.length>0?A[A.length-1]:null,P!==null&&P.renderEnd()};function ct(e,t,n,r){if(e.visible===!1)return;if(e.layers.test(t.layers)){if(e.isGroup)n=e.renderOrder;else if(e.isLOD)e.autoUpdate===!0&&e.update(t);else if(e.isLightProbeGrid)k.pushLightProbeGrid(e);else if(e.isLight)k.pushLight(e),e.castShadow&&k.pushShadow(e);else if(e.isSprite){if(!e.frustumCulled||ye.intersectsSprite(e)){r&&we.setFromMatrixPosition(e.matrixWorld).applyMatrix4(Se);let t=Pe.update(e),i=e.material;i.visible&&O.push(e,t,i,n,we.z,null)}}else if((e.isMesh||e.isLine||e.isPoints)&&(!e.frustumCulled||ye.intersectsObject(e))){let t=Pe.update(e),i=e.material;if(r&&(e.boundingSphere===void 0?(t.boundingSphere===null&&t.computeBoundingSphere(),we.copy(t.boundingSphere.center)):(e.boundingSphere===null&&e.computeBoundingSphere(),we.copy(e.boundingSphere.center)),we.applyMatrix4(e.matrixWorld).applyMatrix4(Se)),Array.isArray(i)){let r=t.groups;for(let a=0,o=r.length;a<o;a++){let o=r[a],s=i[o.materialIndex];s&&s.visible&&O.push(e,t,s,n,we.z,o)}}else i.visible&&O.push(e,t,i,n,we.z,null)}}let i=e.children;for(let e=0,a=i.length;e<a;e++)ct(i[e],t,n,r)}function lt(e,t,n,r){let{opaque:i,transmissive:a,transparent:o}=e;k.setupLightsView(n),be===!0&&ze.setGlobalState(N.clippingPlanes,n),r&&J.viewport(H.copy(r)),i.length>0&&dt(i,t,n),a.length>0&&dt(a,t,n),o.length>0&&dt(o,t,n),J.buffers.depth.setTest(!0),J.buffers.depth.setMask(!0),J.buffers.color.setMask(!0),J.setPolygonOffset(!1)}function ut(e,n,r,i){if((r.isScene===!0?r.overrideMaterial:null)!==null)return;if(k.state.transmissionRenderTarget[i.id]===void 0){let e=q.has(`EXT_color_buffer_half_float`)||q.has(`EXT_color_buffer_float`);k.state.transmissionRenderTarget[i.id]=new t.En(1,1,{generateMipmaps:!0,type:e?t.L:t.mn,minFilter:t.V,samples:Math.max(4,ke.samples),stencilBuffer:s,resolveDepthBuffer:!1,resolveStencilBuffer:!1,colorSpace:t._.workingColorSpace})}let a=k.state.transmissionRenderTarget[i.id],o=i.viewport||H;a.setSize(o.z*N.transmissionResolutionScale,o.w*N.transmissionResolutionScale);let c=N.getRenderTarget(),l=N.getActiveCubeFace(),u=N.getActiveMipmapLevel();N.setRenderTarget(a),N.getClearColor(fe),pe=N.getClearAlpha(),pe<1&&N.setClearColor(16777215,.5),N.clear(),Ee&&Ve.render(r);let d=N.toneMapping;N.toneMapping=0;let f=i.viewport;if(i.viewport!==void 0&&(i.viewport=void 0),k.setupLightsView(i),be===!0&&ze.setGlobalState(N.clippingPlanes,i),dt(e,r,i),X.updateMultisampleRenderTarget(a),X.updateRenderTargetMipmap(a),q.has(`WEBGL_multisampled_render_to_texture`)===!1){let e=!1;for(let t=0,a=n.length;t<a;t++){let{object:a,geometry:o,material:s,group:c}=n[t];if(s.side===2&&a.layers.test(i.layers)){let t=s.side;s.side=1,s.needsUpdate=!0,ft(a,r,i,o,s,c),s.side=t,s.needsUpdate=!0,e=!0}}e===!0&&(X.updateMultisampleRenderTarget(a),X.updateRenderTargetMipmap(a))}N.setRenderTarget(c,l,u),N.setClearColor(fe,pe),f!==void 0&&(i.viewport=f),N.toneMapping=d}function dt(e,t,n){let r=t.isScene===!0?t.overrideMaterial:null;for(let i=0,a=e.length;i<a;i++){let a=e[i],{object:o,geometry:s,group:c}=a,l=a.material;l.allowOverride===!0&&r!==null&&(l=r),o.layers.test(n.layers)&&ft(o,t,n,s,l,c)}}function ft(e,t,n,r,i,a){e.onBeforeRender(N,t,n,r,i,a),e.modelViewMatrix.multiplyMatrices(n.matrixWorldInverse,e.matrixWorld),e.normalMatrix.getNormalMatrix(e.modelViewMatrix),i.onBeforeRender(N,t,n,r,e,a),i.transparent===!0&&i.side===2&&i.forceSinglePass===!1?(i.side=1,i.needsUpdate=!0,N.renderBufferDirect(n,t,r,i,e,a),i.side=0,i.needsUpdate=!0,N.renderBufferDirect(n,t,r,i,e,a),i.side=2):N.renderBufferDirect(n,t,r,i,e,a),e.onAfterRender(N,t,n,r,i,a)}function pt(e,t,n){t.isScene!==!0&&(t=Te);let r=Y.get(e),i=k.state.lights,a=k.state.shadowsArray,o=i.state.version,s=Fe.getParameters(e,i.state,a,t,n,k.state.lightProbeGridArray),c=Fe.getProgramCacheKey(s),l=r.programs;r.environment=e.isMeshStandardMaterial||e.isMeshLambertMaterial||e.isMeshPhongMaterial?t.environment:null,r.fog=t.fog;let u=e.isMeshStandardMaterial||e.isMeshLambertMaterial&&!e.envMap||e.isMeshPhongMaterial&&!e.envMap;r.envMap=je.get(e.envMap||r.environment,u),r.envMapRotation=r.environment!==null&&e.envMap===null?t.environmentRotation:e.envMapRotation,l===void 0&&(e.addEventListener(`dispose`,Qe),l=new Map,r.programs=l);let d=l.get(c);if(d!==void 0){if(r.currentProgram===d&&r.lightsStateVersion===o)return ht(e,s),d}else s.uniforms=Fe.getUniforms(e),P!==null&&e.isNodeMaterial&&P.build(e,n,s),e.onBeforeCompile(s,N),d=Fe.acquireProgram(s,c),l.set(c,d),r.uniforms=s.uniforms;let f=r.uniforms;return(!e.isShaderMaterial&&!e.isRawShaderMaterial||e.clipping===!0)&&(f.clippingPlanes=ze.uniform),ht(e,s),r.needsLights=yt(e),r.lightsStateVersion=o,r.needsLights&&(f.ambientLightColor.value=i.state.ambient,f.lightProbe.value=i.state.probe,f.directionalLights.value=i.state.directional,f.directionalLightShadows.value=i.state.directionalShadow,f.spotLights.value=i.state.spot,f.spotLightShadows.value=i.state.spotShadow,f.rectAreaLights.value=i.state.rectArea,f.ltc_1.value=i.state.rectAreaLTC1,f.ltc_2.value=i.state.rectAreaLTC2,f.pointLights.value=i.state.point,f.pointLightShadows.value=i.state.pointShadow,f.hemisphereLights.value=i.state.hemi,f.directionalShadowMatrix.value=i.state.directionalShadowMatrix,f.spotLightMatrix.value=i.state.spotLightMatrix,f.spotLightMap.value=i.state.spotLightMap,f.pointShadowMatrix.value=i.state.pointShadowMatrix),r.lightProbeGrid=k.state.lightProbeGridArray.length>0,r.currentProgram=d,r.uniformsList=null,d}function mt(e){if(e.uniformsList===null){let t=e.currentProgram.getUniforms();e.uniformsList=tt.seqWithValue(t.seq,e.uniforms)}return e.uniformsList}function ht(e,t){let n=Y.get(e);n.outputColorSpace=t.outputColorSpace,n.batching=t.batching,n.batchingColor=t.batchingColor,n.instancing=t.instancing,n.instancingColor=t.instancingColor,n.instancingMorph=t.instancingMorph,n.skinning=t.skinning,n.morphTargets=t.morphTargets,n.morphNormals=t.morphNormals,n.morphColors=t.morphColors,n.morphTargetsCount=t.morphTargetsCount,n.numClippingPlanes=t.numClippingPlanes,n.numIntersection=t.numClipIntersection,n.vertexAlphas=t.vertexAlphas,n.vertexTangents=t.vertexTangents,n.toneMapping=t.toneMapping}function gt(e,t){if(e.length===0)return null;if(e.length===1)return e[0].texture===null?null:e[0];D.setFromMatrixPosition(t.matrixWorld);for(let t=0,n=e.length;t<n;t++){let n=e[t];if(n.texture!==null&&n.boundingBox.containsPoint(D))return n}return null}function _t(e,n,r,i,a){n.isScene!==!0&&(n=Te),X.resetTextureUnits();let o=n.fog,s=i.isMeshStandardMaterial||i.isMeshLambertMaterial||i.isMeshPhongMaterial?n.environment:null,c=z===null?N.outputColorSpace:z.isXRRenderTarget===!0?z.texture.colorSpace:t._.workingColorSpace,l=i.isMeshStandardMaterial||i.isMeshLambertMaterial&&!i.envMap||i.isMeshPhongMaterial&&!i.envMap,u=je.get(i.envMap||s,l),d=i.vertexColors===!0&&!!r.attributes.color&&r.attributes.color.itemSize===4,f=!!r.attributes.tangent&&(!!i.normalMap||i.anisotropy>0),p=!!r.morphAttributes.position,m=!!r.morphAttributes.normal,h=!!r.morphAttributes.color,g=0;i.toneMapped&&(z===null||z.isXRRenderTarget===!0)&&(g=N.toneMapping);let _=r.morphAttributes.position||r.morphAttributes.normal||r.morphAttributes.color,v=_===void 0?0:_.length,y=Y.get(i),b=k.state.lights;if(be===!0&&(xe===!0||e!==V)){let t=e===V&&i.id===B;ze.setState(i,e,t)}let x=!1;i.version===y.__version?y.needsLights&&y.lightsStateVersion!==b.state.version?x=!0:y.outputColorSpace===c?a.isBatchedMesh&&y.batching===!1||!a.isBatchedMesh&&y.batching===!0||a.isBatchedMesh&&y.batchingColor===!0&&a.colorTexture===null||a.isBatchedMesh&&y.batchingColor===!1&&a.colorTexture!==null||a.isInstancedMesh&&y.instancing===!1||!a.isInstancedMesh&&y.instancing===!0||a.isSkinnedMesh&&y.skinning===!1||!a.isSkinnedMesh&&y.skinning===!0||a.isInstancedMesh&&y.instancingColor===!0&&a.instanceColor===null||a.isInstancedMesh&&y.instancingColor===!1&&a.instanceColor!==null||a.isInstancedMesh&&y.instancingMorph===!0&&a.morphTexture===null||a.isInstancedMesh&&y.instancingMorph===!1&&a.morphTexture!==null?x=!0:y.envMap===u?i.fog===!0&&y.fog!==o||y.numClippingPlanes!==void 0&&(y.numClippingPlanes!==ze.numPlanes||y.numIntersection!==ze.numIntersection)?x=!0:y.vertexAlphas===d&&y.vertexTangents===f&&y.morphTargets===p&&y.morphNormals===m&&y.morphColors===h&&y.toneMapping===g&&y.morphTargetsCount===v?!!y.lightProbeGrid!=k.state.lightProbeGridArray.length>0&&(x=!0):x=!0:x=!0:x=!0:(x=!0,y.__version=i.version);let S=y.currentProgram;x===!0&&(S=pt(i,n,a),P&&i.isNodeMaterial&&P.onUpdateProgram(i,S,y));let C=!1,w=!1,T=!1,E=S.getUniforms(),D=y.uniforms;if(J.useProgram(S.program)&&(C=!0,w=!0,T=!0),i.id!==B&&(B=i.id,w=!0),y.needsLights){let e=gt(k.state.lightProbeGridArray,a);y.lightProbeGrid!==e&&(y.lightProbeGrid=e,w=!0)}if(C||V!==e){J.buffers.depth.getReversed()&&e.reversedDepth!==!0&&(e._reversedDepth=!0,e.updateProjectionMatrix()),E.setValue(K,`projectionMatrix`,e.projectionMatrix),E.setValue(K,`viewMatrix`,e.matrixWorldInverse);let t=E.map.cameraPosition;t!==void 0&&t.setValue(K,Ce.setFromMatrixPosition(e.matrixWorld)),ke.logarithmicDepthBuffer&&E.setValue(K,`logDepthBufFC`,2/(Math.log(e.far+1)/Math.LN2)),(i.isMeshPhongMaterial||i.isMeshToonMaterial||i.isMeshLambertMaterial||i.isMeshBasicMaterial||i.isMeshStandardMaterial||i.isShaderMaterial)&&E.setValue(K,`isOrthographic`,e.isOrthographicCamera===!0),V!==e&&(V=e,w=!0,T=!0)}if(y.needsLights&&(b.state.directionalShadowMap.length>0&&E.setValue(K,`directionalShadowMap`,b.state.directionalShadowMap,X),b.state.spotShadowMap.length>0&&E.setValue(K,`spotShadowMap`,b.state.spotShadowMap,X),b.state.pointShadowMap.length>0&&E.setValue(K,`pointShadowMap`,b.state.pointShadowMap,X)),a.isSkinnedMesh){E.setOptional(K,a,`bindMatrix`),E.setOptional(K,a,`bindMatrixInverse`);let e=a.skeleton;e&&(e.boneTexture===null&&e.computeBoneTexture(),E.setValue(K,`boneTexture`,e.boneTexture,X))}a.isBatchedMesh&&(E.setOptional(K,a,`batchingTexture`),E.setValue(K,`batchingTexture`,a._matricesTexture,X),E.setOptional(K,a,`batchingIdTexture`),E.setValue(K,`batchingIdTexture`,a._indirectTexture,X),E.setOptional(K,a,`batchingColorTexture`),a._colorsTexture!==null&&E.setValue(K,`batchingColorTexture`,a._colorsTexture,X));let O=r.morphAttributes;if((O.position!==void 0||O.normal!==void 0||O.color!==void 0)&&He.update(a,r,S),(w||y.receiveShadow!==a.receiveShadow)&&(y.receiveShadow=a.receiveShadow,E.setValue(K,`receiveShadow`,a.receiveShadow)),(i.isMeshStandardMaterial||i.isMeshLambertMaterial||i.isMeshPhongMaterial)&&i.envMap===null&&n.environment!==null&&(D.envMapIntensity.value=n.environmentIntensity),D.dfgLUT!==void 0&&(D.dfgLUT.value=Cn()),w){if(E.setValue(K,`toneMappingExposure`,N.toneMappingExposure),y.needsLights&&vt(D,T),o&&i.fog===!0&&Ie.refreshFogUniforms(D,o),Ie.refreshMaterialUniforms(D,i,G,W,k.state.transmissionRenderTarget[e.id]),y.needsLights&&y.lightProbeGrid){let e=y.lightProbeGrid;D.probesSH.value=e.texture,D.probesMin.value.copy(e.boundingBox.min),D.probesMax.value.copy(e.boundingBox.max),D.probesResolution.value.copy(e.resolution)}tt.upload(K,mt(y),D,X)}if(i.isShaderMaterial&&i.uniformsNeedUpdate===!0&&(tt.upload(K,mt(y),D,X),i.uniformsNeedUpdate=!1),i.isSpriteMaterial&&E.setValue(K,`center`,a.center),E.setValue(K,`modelViewMatrix`,a.modelViewMatrix),E.setValue(K,`normalMatrix`,a.normalMatrix),E.setValue(K,`modelMatrix`,a.matrixWorld),i.uniformsGroups!==void 0){let e=i.uniformsGroups;for(let t=0,n=e.length;t<n;t++){let n=e[t];qe.update(n,S),qe.bind(n,S)}}return S}function vt(e,t){e.ambientLightColor.needsUpdate=t,e.lightProbe.needsUpdate=t,e.directionalLights.needsUpdate=t,e.directionalLightShadows.needsUpdate=t,e.pointLights.needsUpdate=t,e.pointLightShadows.needsUpdate=t,e.spotLights.needsUpdate=t,e.spotLightShadows.needsUpdate=t,e.rectAreaLights.needsUpdate=t,e.hemisphereLights.needsUpdate=t}function yt(e){return e.isMeshLambertMaterial||e.isMeshToonMaterial||e.isMeshPhongMaterial||e.isMeshStandardMaterial||e.isShadowMaterial||e.isShaderMaterial&&e.lights===!0}this.getActiveCubeFace=function(){return le},this.getActiveMipmapLevel=function(){return R},this.getRenderTarget=function(){return z},this.setRenderTargetTextures=function(e,t,n){let r=Y.get(e);r.__autoAllocateDepthBuffer=e.resolveDepthBuffer===!1,r.__autoAllocateDepthBuffer===!1&&(r.__useRenderToTexture=!1),Y.get(e.texture).__webglTexture=t,Y.get(e.depthTexture).__webglTexture=r.__autoAllocateDepthBuffer?void 0:n,r.__hasExternalTextures=!0},this.setRenderTargetFramebuffer=function(e,t){let n=Y.get(e);n.__webglFramebuffer=t,n.__useDefaultFramebuffer=t===void 0},this.setRenderTarget=function(e,t=0,n=0){z=e,le=t,R=n;let r=null,i=!1,a=!1;if(e){let o=Y.get(e);if(o.__useDefaultFramebuffer!==void 0){J.bindFramebuffer(K.FRAMEBUFFER,o.__webglFramebuffer),H.copy(e.viewport),ue.copy(e.scissor),de=e.scissorTest,J.viewport(H),J.scissor(ue),J.setScissorTest(de),B=-1;return}if(o.__webglFramebuffer===void 0)X.setupRenderTarget(e);else if(o.__hasExternalTextures)X.rebindTextures(e,Y.get(e.texture).__webglTexture,Y.get(e.depthTexture).__webglTexture);else if(e.depthBuffer){let t=e.depthTexture;if(o.__boundDepthTexture!==t){if(t!==null&&Y.has(t)&&(e.width!==t.image.width||e.height!==t.image.height))throw Error(`THREE.WebGLRenderer: Attached DepthTexture is initialized to the incorrect size.`);X.setupDepthRenderbuffer(e)}}let s=e.texture;(s.isData3DTexture||s.isDataArrayTexture||s.isCompressedArrayTexture)&&(a=!0);let c=Y.get(e).__webglFramebuffer;e.isWebGLCubeRenderTarget?(r=Array.isArray(c[t])?c[t][n]:c[t],i=!0):r=e.samples>0&&X.useMultisampledRTT(e)===!1?Y.get(e).__webglMultisampledFramebuffer:Array.isArray(c)?c[n]:c,H.copy(e.viewport),ue.copy(e.scissor),de=e.scissorTest}else H.copy(ge).multiplyScalar(G).floor(),ue.copy(_e).multiplyScalar(G).floor(),de=ve;if(n!==0&&(r=F),J.bindFramebuffer(K.FRAMEBUFFER,r)&&J.drawBuffers(e,r),J.viewport(H),J.scissor(ue),J.setScissorTest(de),i){let r=Y.get(e.texture);K.framebufferTexture2D(K.FRAMEBUFFER,K.COLOR_ATTACHMENT0,K.TEXTURE_CUBE_MAP_POSITIVE_X+t,r.__webglTexture,n)}else if(a){let r=t;for(let t=0;t<e.textures.length;t++){let i=Y.get(e.textures[t]);K.framebufferTextureLayer(K.FRAMEBUFFER,K.COLOR_ATTACHMENT0+t,i.__webglTexture,n,r)}}else if(e!==null&&n!==0){let t=Y.get(e.texture);K.framebufferTexture2D(K.FRAMEBUFFER,K.COLOR_ATTACHMENT0,K.TEXTURE_2D,t.__webglTexture,n)}B=-1},this.readRenderTargetPixels=function(e,n,r,i,a,o,s,c=0){if(!(e&&e.isWebGLRenderTarget)){t.jn(`WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.`);return}let l=Y.get(e).__webglFramebuffer;if(e.isWebGLCubeRenderTarget&&s!==void 0&&(l=l[s]),l){J.bindFramebuffer(K.FRAMEBUFFER,l);try{let s=e.textures[c],l=s.format,u=s.type;if(e.textures.length>1&&K.readBuffer(K.COLOR_ATTACHMENT0+c),!ke.textureFormatReadable(l)){t.jn(`WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format.`);return}if(!ke.textureTypeReadable(u)){t.jn(`WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.`);return}n>=0&&n<=e.width-i&&r>=0&&r<=e.height-a&&K.readPixels(n,r,i,a,Ge.convert(l),Ge.convert(u),o)}finally{let e=z===null?null:Y.get(z).__webglFramebuffer;J.bindFramebuffer(K.FRAMEBUFFER,e)}}},this.readRenderTargetPixelsAsync=async function(e,n,r,i,a,o,s,c=0){if(!(e&&e.isWebGLRenderTarget))throw Error(`THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.`);let l=Y.get(e).__webglFramebuffer;if(e.isWebGLCubeRenderTarget&&s!==void 0&&(l=l[s]),l){if(n>=0&&n<=e.width-i&&r>=0&&r<=e.height-a){J.bindFramebuffer(K.FRAMEBUFFER,l);let s=e.textures[c],u=s.format,d=s.type;if(e.textures.length>1&&K.readBuffer(K.COLOR_ATTACHMENT0+c),!ke.textureFormatReadable(u))throw Error(`THREE.WebGLRenderer.readRenderTargetPixelsAsync: renderTarget is not in RGBA or implementation defined format.`);if(!ke.textureTypeReadable(d))throw Error(`THREE.WebGLRenderer.readRenderTargetPixelsAsync: renderTarget is not in UnsignedByteType or implementation defined type.`);let f=K.createBuffer();K.bindBuffer(K.PIXEL_PACK_BUFFER,f),K.bufferData(K.PIXEL_PACK_BUFFER,o.byteLength,K.STREAM_READ),K.readPixels(n,r,i,a,Ge.convert(u),Ge.convert(d),0);let p=z===null?null:Y.get(z).__webglFramebuffer;J.bindFramebuffer(K.FRAMEBUFFER,p);let m=K.fenceSync(K.SYNC_GPU_COMMANDS_COMPLETE,0);return K.flush(),await t.In(K,m,4),K.bindBuffer(K.PIXEL_PACK_BUFFER,f),K.getBufferSubData(K.PIXEL_PACK_BUFFER,0,o),K.deleteBuffer(f),K.deleteSync(m),o}throw Error(`THREE.WebGLRenderer.readRenderTargetPixelsAsync: requested read bounds are out of range.`)}},this.copyFramebufferToTexture=function(e,t=null,n=0){let r=2**-n,i=Math.floor(e.image.width*r),a=Math.floor(e.image.height*r),o=t===null?0:t.x,s=t===null?0:t.y;X.setTexture2D(e,0),K.copyTexSubImage2D(K.TEXTURE_2D,n,0,0,o,s,i,a),J.unbindTexture()},this.copyTextureToTexture=function(e,t,n=null,r=null,i=0,a=0){let o,s,c,l,u,d,f,p,m,h=e.isCompressedTexture?e.mipmaps[a]:e.image;if(n!==null)o=n.max.x-n.min.x,s=n.max.y-n.min.y,c=n.isBox3?n.max.z-n.min.z:1,l=n.min.x,u=n.min.y,d=n.isBox3?n.min.z:0;else{let t=2**-i;o=Math.floor(h.width*t),s=Math.floor(h.height*t),c=e.isDataArrayTexture?h.depth:e.isData3DTexture?Math.floor(h.depth*t):1,l=0,u=0,d=0}r===null?(f=0,p=0,m=0):(f=r.x,p=r.y,m=r.z);let g=Ge.convert(t.format),_=Ge.convert(t.type),v;t.isData3DTexture?(X.setTexture3D(t,0),v=K.TEXTURE_3D):t.isDataArrayTexture||t.isCompressedArrayTexture?(X.setTexture2DArray(t,0),v=K.TEXTURE_2D_ARRAY):(X.setTexture2D(t,0),v=K.TEXTURE_2D),J.activeTexture(K.TEXTURE0),J.pixelStorei(K.UNPACK_FLIP_Y_WEBGL,t.flipY),J.pixelStorei(K.UNPACK_PREMULTIPLY_ALPHA_WEBGL,t.premultiplyAlpha),J.pixelStorei(K.UNPACK_ALIGNMENT,t.unpackAlignment);let y=J.getParameter(K.UNPACK_ROW_LENGTH),b=J.getParameter(K.UNPACK_IMAGE_HEIGHT),x=J.getParameter(K.UNPACK_SKIP_PIXELS),S=J.getParameter(K.UNPACK_SKIP_ROWS),C=J.getParameter(K.UNPACK_SKIP_IMAGES);J.pixelStorei(K.UNPACK_ROW_LENGTH,h.width),J.pixelStorei(K.UNPACK_IMAGE_HEIGHT,h.height),J.pixelStorei(K.UNPACK_SKIP_PIXELS,l),J.pixelStorei(K.UNPACK_SKIP_ROWS,u),J.pixelStorei(K.UNPACK_SKIP_IMAGES,d);let w=e.isDataArrayTexture||e.isData3DTexture,T=t.isDataArrayTexture||t.isData3DTexture;if(e.isDepthTexture){let n=Y.get(e),r=Y.get(t),h=Y.get(n.__renderTarget),g=Y.get(r.__renderTarget);J.bindFramebuffer(K.READ_FRAMEBUFFER,h.__webglFramebuffer),J.bindFramebuffer(K.DRAW_FRAMEBUFFER,g.__webglFramebuffer);for(let n=0;n<c;n++)w&&(K.framebufferTextureLayer(K.READ_FRAMEBUFFER,K.COLOR_ATTACHMENT0,Y.get(e).__webglTexture,i,d+n),K.framebufferTextureLayer(K.DRAW_FRAMEBUFFER,K.COLOR_ATTACHMENT0,Y.get(t).__webglTexture,a,m+n)),K.blitFramebuffer(l,u,o,s,f,p,o,s,K.DEPTH_BUFFER_BIT,K.NEAREST);J.bindFramebuffer(K.READ_FRAMEBUFFER,null),J.bindFramebuffer(K.DRAW_FRAMEBUFFER,null)}else if(i!==0||e.isRenderTargetTexture||Y.has(e)){let n=Y.get(e),r=Y.get(t);J.bindFramebuffer(K.READ_FRAMEBUFFER,I),J.bindFramebuffer(K.DRAW_FRAMEBUFFER,L);for(let e=0;e<c;e++)w?K.framebufferTextureLayer(K.READ_FRAMEBUFFER,K.COLOR_ATTACHMENT0,n.__webglTexture,i,d+e):K.framebufferTexture2D(K.READ_FRAMEBUFFER,K.COLOR_ATTACHMENT0,K.TEXTURE_2D,n.__webglTexture,i),T?K.framebufferTextureLayer(K.DRAW_FRAMEBUFFER,K.COLOR_ATTACHMENT0,r.__webglTexture,a,m+e):K.framebufferTexture2D(K.DRAW_FRAMEBUFFER,K.COLOR_ATTACHMENT0,K.TEXTURE_2D,r.__webglTexture,a),i===0?T?K.copyTexSubImage3D(v,a,f,p,m+e,l,u,o,s):K.copyTexSubImage2D(v,a,f,p,l,u,o,s):K.blitFramebuffer(l,u,o,s,f,p,o,s,K.COLOR_BUFFER_BIT,K.NEAREST);J.bindFramebuffer(K.READ_FRAMEBUFFER,null),J.bindFramebuffer(K.DRAW_FRAMEBUFFER,null)}else T?e.isDataTexture||e.isData3DTexture?K.texSubImage3D(v,a,f,p,m,o,s,c,g,_,h.data):t.isCompressedArrayTexture?K.compressedTexSubImage3D(v,a,f,p,m,o,s,c,g,h.data):K.texSubImage3D(v,a,f,p,m,o,s,c,g,_,h):e.isDataTexture?K.texSubImage2D(K.TEXTURE_2D,a,f,p,o,s,g,_,h.data):e.isCompressedTexture?K.compressedTexSubImage2D(K.TEXTURE_2D,a,f,p,h.width,h.height,g,h.data):K.texSubImage2D(K.TEXTURE_2D,a,f,p,o,s,g,_,h);J.pixelStorei(K.UNPACK_ROW_LENGTH,y),J.pixelStorei(K.UNPACK_IMAGE_HEIGHT,b),J.pixelStorei(K.UNPACK_SKIP_PIXELS,x),J.pixelStorei(K.UNPACK_SKIP_ROWS,S),J.pixelStorei(K.UNPACK_SKIP_IMAGES,C),a===0&&t.generateMipmaps&&K.generateMipmap(v),J.unbindTexture()},this.initRenderTarget=function(e){Y.get(e).__webglFramebuffer===void 0&&X.setupRenderTarget(e)},this.initTexture=function(e){e.isCubeTexture?X.setTextureCube(e,0):e.isData3DTexture?X.setTexture3D(e,0):e.isDataArrayTexture||e.isCompressedArrayTexture?X.setTexture2DArray(e,0):X.setTexture2D(e,0),J.unbindTexture()},this.resetState=function(){le=0,R=0,z=null,J.reset(),Ke.reset()},typeof __THREE_DEVTOOLS__<`u`&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent(`observe`,{detail:this}))}get coordinateSystem(){return t.Tn}get outputColorSpace(){return this._outputColorSpace}set outputColorSpace(e){this._outputColorSpace=e;let n=this.getContext();n.drawingBufferColorSpace=t._._getDrawingBufferColorSpace(e),n.unpackColorSpace=t._._getUnpackColorSpace()}},Tn={type:`change`},En={type:`start`},Dn={type:`end`},On=new t.Jt,kn=new t.at,An=Math.cos(70*t.K.DEG2RAD),Q=new t.Cn,jn=2*Math.PI,$={NONE:-1,ROTATE:0,DOLLY:1,PAN:2,TOUCH_ROTATE:3,TOUCH_PAN:4,TOUCH_DOLLY_PAN:5,TOUCH_DOLLY_ROTATE:6},Mn=1e-6,Nn=class extends t.v{constructor(e,n=null){super(e,n),this.state=$.NONE,this.target=new t.Cn,this.cursor=new t.Cn,this.minDistance=0,this.maxDistance=1/0,this.minZoom=0,this.maxZoom=1/0,this.minTargetRadius=0,this.maxTargetRadius=1/0,this.minPolarAngle=0,this.maxPolarAngle=Math.PI,this.minAzimuthAngle=-1/0,this.maxAzimuthAngle=1/0,this.enableDamping=!1,this.dampingFactor=.05,this.enableZoom=!0,this.zoomSpeed=1,this.enableRotate=!0,this.rotateSpeed=1,this.keyRotateSpeed=1,this.enablePan=!0,this.panSpeed=1,this.screenSpacePanning=!0,this.keyPanSpeed=7,this.zoomToCursor=!1,this.autoRotate=!1,this.autoRotateSpeed=2,this.keys={LEFT:`ArrowLeft`,UP:`ArrowUp`,RIGHT:`ArrowRight`,BOTTOM:`ArrowDown`},this.mouseButtons={LEFT:t.G.ROTATE,MIDDLE:t.G.DOLLY,RIGHT:t.G.PAN},this.touches={ONE:t.ln.ROTATE,TWO:t.ln.DOLLY_PAN},this.target0=this.target.clone(),this.position0=this.object.position.clone(),this.zoom0=this.object.zoom,this._cursorStyle=`auto`,this._domElementKeyEvents=null,this._lastPosition=new t.Cn,this._lastQuaternion=new t.ct,this._lastTargetPosition=new t.Cn,this._quat=new t.ct().setFromUnitVectors(e.up,new t.Cn(0,1,0)),this._quatInverse=this._quat.clone().invert(),this._spherical=new t.cn,this._sphericalDelta=new t.cn,this._scale=1,this._panOffset=new t.Cn,this._rotateStart=new t.Sn,this._rotateEnd=new t.Sn,this._rotateDelta=new t.Sn,this._panStart=new t.Sn,this._panEnd=new t.Sn,this._panDelta=new t.Sn,this._dollyStart=new t.Sn,this._dollyEnd=new t.Sn,this._dollyDelta=new t.Sn,this._dollyDirection=new t.Cn,this._mouse=new t.Sn,this._performCursorZoom=!1,this._pointers=[],this._pointerPositions={},this._controlActive=!1,this._onPointerMove=Fn.bind(this),this._onPointerDown=Pn.bind(this),this._onPointerUp=In.bind(this),this._onContextMenu=Un.bind(this),this._onMouseWheel=zn.bind(this),this._onKeyDown=Bn.bind(this),this._onTouchStart=Vn.bind(this),this._onTouchMove=Hn.bind(this),this._onMouseDown=Ln.bind(this),this._onMouseMove=Rn.bind(this),this._interceptControlDown=Wn.bind(this),this._interceptControlUp=Gn.bind(this),this.domElement!==null&&this.connect(this.domElement),this.update()}set cursorStyle(e){this._cursorStyle=e,e===`grab`?this.domElement.style.cursor=`grab`:this.domElement.style.cursor=`auto`}get cursorStyle(){return this._cursorStyle}connect(e){super.connect(e),this.domElement.addEventListener(`pointerdown`,this._onPointerDown),this.domElement.addEventListener(`pointercancel`,this._onPointerUp),this.domElement.addEventListener(`contextmenu`,this._onContextMenu),this.domElement.addEventListener(`wheel`,this._onMouseWheel,{passive:!1}),this.domElement.getRootNode().addEventListener(`keydown`,this._interceptControlDown,{passive:!0,capture:!0}),this.domElement.style.touchAction=`none`}disconnect(){this.domElement.removeEventListener(`pointerdown`,this._onPointerDown),this.domElement.ownerDocument.removeEventListener(`pointermove`,this._onPointerMove),this.domElement.ownerDocument.removeEventListener(`pointerup`,this._onPointerUp),this.domElement.removeEventListener(`pointercancel`,this._onPointerUp),this.domElement.removeEventListener(`wheel`,this._onMouseWheel),this.domElement.removeEventListener(`contextmenu`,this._onContextMenu),this.stopListenToKeyEvents(),this.domElement.getRootNode().removeEventListener(`keydown`,this._interceptControlDown,{capture:!0}),this.domElement.style.touchAction=``}dispose(){this.disconnect()}getPolarAngle(){return this._spherical.phi}getAzimuthalAngle(){return this._spherical.theta}getDistance(){return this.object.position.distanceTo(this.target)}listenToKeyEvents(e){e.addEventListener(`keydown`,this._onKeyDown),this._domElementKeyEvents=e}stopListenToKeyEvents(){this._domElementKeyEvents!==null&&(this._domElementKeyEvents.removeEventListener(`keydown`,this._onKeyDown),this._domElementKeyEvents=null)}saveState(){this.target0.copy(this.target),this.position0.copy(this.object.position),this.zoom0=this.object.zoom}reset(){this.target.copy(this.target0),this.object.position.copy(this.position0),this.object.zoom=this.zoom0,this.object.updateProjectionMatrix(),this.dispatchEvent(Tn),this.update(),this.state=$.NONE}pan(e,t){this._pan(e,t),this.update()}dollyIn(e){this._dollyIn(e),this.update()}dollyOut(e){this._dollyOut(e),this.update()}rotateLeft(e){this._rotateLeft(e),this.update()}rotateUp(e){this._rotateUp(e),this.update()}update(e=null){let n=this.object.position;Q.copy(n).sub(this.target),Q.applyQuaternion(this._quat),this._spherical.setFromVector3(Q),this.autoRotate&&this.state===$.NONE&&this._rotateLeft(this._getAutoRotationAngle(e)),this.enableDamping?(this._spherical.theta+=this._sphericalDelta.theta*this.dampingFactor,this._spherical.phi+=this._sphericalDelta.phi*this.dampingFactor):(this._spherical.theta+=this._sphericalDelta.theta,this._spherical.phi+=this._sphericalDelta.phi);let r=this.minAzimuthAngle,i=this.maxAzimuthAngle;isFinite(r)&&isFinite(i)&&(r<-Math.PI?r+=jn:r>Math.PI&&(r-=jn),i<-Math.PI?i+=jn:i>Math.PI&&(i-=jn),r<=i?this._spherical.theta=Math.max(r,Math.min(i,this._spherical.theta)):this._spherical.theta=this._spherical.theta>(r+i)/2?Math.max(r,this._spherical.theta):Math.min(i,this._spherical.theta)),this._spherical.phi=Math.max(this.minPolarAngle,Math.min(this.maxPolarAngle,this._spherical.phi)),this._spherical.makeSafe(),this.enableDamping===!0?this.target.addScaledVector(this._panOffset,this.dampingFactor):this.target.add(this._panOffset),this.target.sub(this.cursor),this.target.clampLength(this.minTargetRadius,this.maxTargetRadius),this.target.add(this.cursor);let a=!1;if(this.zoomToCursor&&this._performCursorZoom||this.object.isOrthographicCamera)this._spherical.radius=this._clampDistance(this._spherical.radius);else{let e=this._spherical.radius;this._spherical.radius=this._clampDistance(this._spherical.radius*this._scale),a=e!=this._spherical.radius}if(Q.setFromSpherical(this._spherical),Q.applyQuaternion(this._quatInverse),n.copy(this.target).add(Q),this.object.lookAt(this.target),this.enableDamping===!0?(this._sphericalDelta.theta*=1-this.dampingFactor,this._sphericalDelta.phi*=1-this.dampingFactor,this._panOffset.multiplyScalar(1-this.dampingFactor)):(this._sphericalDelta.set(0,0,0),this._panOffset.set(0,0,0)),this.zoomToCursor&&this._performCursorZoom){let e=null;if(this.object.isPerspectiveCamera){let t=Q.length();e=this._clampDistance(t*this._scale);let n=t-e;this.object.position.addScaledVector(this._dollyDirection,n),this.object.updateMatrixWorld(),a=!!n}else if(this.object.isOrthographicCamera){let n=new t.Cn(this._mouse.x,this._mouse.y,0);n.unproject(this.object);let r=this.object.zoom;this.object.zoom=Math.max(this.minZoom,Math.min(this.maxZoom,this.object.zoom/this._scale)),this.object.updateProjectionMatrix(),a=r!==this.object.zoom;let i=new t.Cn(this._mouse.x,this._mouse.y,0);i.unproject(this.object),this.object.position.sub(i).add(n),this.object.updateMatrixWorld(),e=Q.length()}else console.warn(`WARNING: OrbitControls.js encountered an unknown camera type - zoom to cursor disabled.`),this.zoomToCursor=!1;e!==null&&(this.screenSpacePanning?this.target.set(0,0,-1).transformDirection(this.object.matrix).multiplyScalar(e).add(this.object.position):(On.origin.copy(this.object.position),On.direction.set(0,0,-1).transformDirection(this.object.matrix),Math.abs(this.object.up.dot(On.direction))<An?this.object.lookAt(this.target):(kn.setFromNormalAndCoplanarPoint(this.object.up,this.target),On.intersectPlane(kn,this.target))))}else if(this.object.isOrthographicCamera){let e=this.object.zoom;this.object.zoom=Math.max(this.minZoom,Math.min(this.maxZoom,this.object.zoom/this._scale)),e!==this.object.zoom&&(this.object.updateProjectionMatrix(),a=!0)}return this._scale=1,this._performCursorZoom=!1,a||this._lastPosition.distanceToSquared(this.object.position)>Mn||8*(1-this._lastQuaternion.dot(this.object.quaternion))>Mn||this._lastTargetPosition.distanceToSquared(this.target)>Mn?(this.dispatchEvent(Tn),this._lastPosition.copy(this.object.position),this._lastQuaternion.copy(this.object.quaternion),this._lastTargetPosition.copy(this.target),!0):!1}_getAutoRotationAngle(e){return e===null?jn/60/60*this.autoRotateSpeed:jn/60*this.autoRotateSpeed*e}_getZoomScale(e){let t=Math.abs(e*.01);return .95**(this.zoomSpeed*t)}_rotateLeft(e){this._sphericalDelta.theta-=e}_rotateUp(e){this._sphericalDelta.phi-=e}_panLeft(e,t){Q.setFromMatrixColumn(t,0),Q.multiplyScalar(-e),this._panOffset.add(Q)}_panUp(e,t){this.screenSpacePanning===!0?Q.setFromMatrixColumn(t,1):(Q.setFromMatrixColumn(t,0),Q.crossVectors(this.object.up,Q)),Q.multiplyScalar(e),this._panOffset.add(Q)}_pan(e,t){let n=this.domElement;if(this.object.isPerspectiveCamera){let r=this.object.position;Q.copy(r).sub(this.target);let i=Q.length();i*=Math.tan(this.object.fov/2*Math.PI/180),this._panLeft(2*e*i/n.clientHeight,this.object.matrix),this._panUp(2*t*i/n.clientHeight,this.object.matrix)}else this.object.isOrthographicCamera?(this._panLeft(e*(this.object.right-this.object.left)/this.object.zoom/n.clientWidth,this.object.matrix),this._panUp(t*(this.object.top-this.object.bottom)/this.object.zoom/n.clientHeight,this.object.matrix)):(console.warn(`WARNING: OrbitControls.js encountered an unknown camera type - pan disabled.`),this.enablePan=!1)}_dollyOut(e){this.object.isPerspectiveCamera||this.object.isOrthographicCamera?this._scale/=e:(console.warn(`WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled.`),this.enableZoom=!1)}_dollyIn(e){this.object.isPerspectiveCamera||this.object.isOrthographicCamera?this._scale*=e:(console.warn(`WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled.`),this.enableZoom=!1)}_updateZoomParameters(e,t){if(!this.zoomToCursor)return;this._performCursorZoom=!0;let n=this.domElement.getBoundingClientRect(),r=e-n.left,i=t-n.top,a=n.width,o=n.height;this._mouse.x=r/a*2-1,this._mouse.y=-(i/o)*2+1,this._dollyDirection.set(this._mouse.x,this._mouse.y,1).unproject(this.object).sub(this.object.position).normalize()}_clampDistance(e){return Math.max(this.minDistance,Math.min(this.maxDistance,e))}_handleMouseDownRotate(e){this._rotateStart.set(e.clientX,e.clientY)}_handleMouseDownDolly(e){this._updateZoomParameters(e.clientX,e.clientX),this._dollyStart.set(e.clientX,e.clientY)}_handleMouseDownPan(e){this._panStart.set(e.clientX,e.clientY)}_handleMouseMoveRotate(e){this._rotateEnd.set(e.clientX,e.clientY),this._rotateDelta.subVectors(this._rotateEnd,this._rotateStart).multiplyScalar(this.rotateSpeed);let t=this.domElement;this._rotateLeft(jn*this._rotateDelta.x/t.clientHeight),this._rotateUp(jn*this._rotateDelta.y/t.clientHeight),this._rotateStart.copy(this._rotateEnd),this.update()}_handleMouseMoveDolly(e){this._dollyEnd.set(e.clientX,e.clientY),this._dollyDelta.subVectors(this._dollyEnd,this._dollyStart),this._dollyDelta.y>0?this._dollyOut(this._getZoomScale(this._dollyDelta.y)):this._dollyDelta.y<0&&this._dollyIn(this._getZoomScale(this._dollyDelta.y)),this._dollyStart.copy(this._dollyEnd),this.update()}_handleMouseMovePan(e){this._panEnd.set(e.clientX,e.clientY),this._panDelta.subVectors(this._panEnd,this._panStart).multiplyScalar(this.panSpeed),this._pan(this._panDelta.x,this._panDelta.y),this._panStart.copy(this._panEnd),this.update()}_handleMouseWheel(e){this._updateZoomParameters(e.clientX,e.clientY),e.deltaY<0?this._dollyIn(this._getZoomScale(e.deltaY)):e.deltaY>0&&this._dollyOut(this._getZoomScale(e.deltaY)),this.update()}_handleKeyDown(e){let t=!1;switch(e.code){case this.keys.UP:e.ctrlKey||e.metaKey||e.shiftKey?this.enableRotate&&this._rotateUp(jn*this.keyRotateSpeed/this.domElement.clientHeight):this.enablePan&&this._pan(0,this.keyPanSpeed),t=!0;break;case this.keys.BOTTOM:e.ctrlKey||e.metaKey||e.shiftKey?this.enableRotate&&this._rotateUp(-jn*this.keyRotateSpeed/this.domElement.clientHeight):this.enablePan&&this._pan(0,-this.keyPanSpeed),t=!0;break;case this.keys.LEFT:e.ctrlKey||e.metaKey||e.shiftKey?this.enableRotate&&this._rotateLeft(jn*this.keyRotateSpeed/this.domElement.clientHeight):this.enablePan&&this._pan(this.keyPanSpeed,0),t=!0;break;case this.keys.RIGHT:e.ctrlKey||e.metaKey||e.shiftKey?this.enableRotate&&this._rotateLeft(-jn*this.keyRotateSpeed/this.domElement.clientHeight):this.enablePan&&this._pan(-this.keyPanSpeed,0),t=!0}t&&(e.preventDefault(),this.update())}_handleTouchStartRotate(e){if(this._pointers.length===1)this._rotateStart.set(e.pageX,e.pageY);else{let t=this._getSecondPointerPosition(e),n=.5*(e.pageX+t.x),r=.5*(e.pageY+t.y);this._rotateStart.set(n,r)}}_handleTouchStartPan(e){if(this._pointers.length===1)this._panStart.set(e.pageX,e.pageY);else{let t=this._getSecondPointerPosition(e),n=.5*(e.pageX+t.x),r=.5*(e.pageY+t.y);this._panStart.set(n,r)}}_handleTouchStartDolly(e){let t=this._getSecondPointerPosition(e),n=e.pageX-t.x,r=e.pageY-t.y,i=Math.sqrt(n*n+r*r);this._dollyStart.set(0,i)}_handleTouchStartDollyPan(e){this.enableZoom&&this._handleTouchStartDolly(e),this.enablePan&&this._handleTouchStartPan(e)}_handleTouchStartDollyRotate(e){this.enableZoom&&this._handleTouchStartDolly(e),this.enableRotate&&this._handleTouchStartRotate(e)}_handleTouchMoveRotate(e){if(this._pointers.length==1)this._rotateEnd.set(e.pageX,e.pageY);else{let t=this._getSecondPointerPosition(e),n=.5*(e.pageX+t.x),r=.5*(e.pageY+t.y);this._rotateEnd.set(n,r)}this._rotateDelta.subVectors(this._rotateEnd,this._rotateStart).multiplyScalar(this.rotateSpeed);let t=this.domElement;this._rotateLeft(jn*this._rotateDelta.x/t.clientHeight),this._rotateUp(jn*this._rotateDelta.y/t.clientHeight),this._rotateStart.copy(this._rotateEnd)}_handleTouchMovePan(e){if(this._pointers.length===1)this._panEnd.set(e.pageX,e.pageY);else{let t=this._getSecondPointerPosition(e),n=.5*(e.pageX+t.x),r=.5*(e.pageY+t.y);this._panEnd.set(n,r)}this._panDelta.subVectors(this._panEnd,this._panStart).multiplyScalar(this.panSpeed),this._pan(this._panDelta.x,this._panDelta.y),this._panStart.copy(this._panEnd)}_handleTouchMoveDolly(e){let t=this._getSecondPointerPosition(e),n=e.pageX-t.x,r=e.pageY-t.y,i=Math.sqrt(n*n+r*r);this._dollyEnd.set(0,i),this._dollyDelta.set(0,(this._dollyEnd.y/this._dollyStart.y)**+this.zoomSpeed),this._dollyOut(this._dollyDelta.y),this._dollyStart.copy(this._dollyEnd);let a=(e.pageX+t.x)*.5,o=(e.pageY+t.y)*.5;this._updateZoomParameters(a,o)}_handleTouchMoveDollyPan(e){this.enableZoom&&this._handleTouchMoveDolly(e),this.enablePan&&this._handleTouchMovePan(e)}_handleTouchMoveDollyRotate(e){this.enableZoom&&this._handleTouchMoveDolly(e),this.enableRotate&&this._handleTouchMoveRotate(e)}_addPointer(e){this._pointers.push(e.pointerId)}_removePointer(e){delete this._pointerPositions[e.pointerId];for(let t=0;t<this._pointers.length;t++)if(this._pointers[t]==e.pointerId){this._pointers.splice(t,1);return}}_isTrackingPointer(e){for(let t=0;t<this._pointers.length;t++)if(this._pointers[t]==e.pointerId)return!0;return!1}_trackPointer(e){let n=this._pointerPositions[e.pointerId];n===void 0&&(n=new t.Sn,this._pointerPositions[e.pointerId]=n),n.set(e.pageX,e.pageY)}_getSecondPointerPosition(e){let t=e.pointerId===this._pointers[0]?this._pointers[1]:this._pointers[0];return this._pointerPositions[t]}_customWheelEvent(e){let t=e.deltaMode,n={clientX:e.clientX,clientY:e.clientY,deltaY:e.deltaY};switch(t){case 1:n.deltaY*=16;break;case 2:n.deltaY*=100}return e.ctrlKey&&!this._controlActive&&(n.deltaY*=10),n}};function Pn(e){this.enabled!==!1&&(this._pointers.length===0&&(this.domElement.setPointerCapture(e.pointerId),this.domElement.ownerDocument.addEventListener(`pointermove`,this._onPointerMove),this.domElement.ownerDocument.addEventListener(`pointerup`,this._onPointerUp)),!this._isTrackingPointer(e)&&(this._addPointer(e),e.pointerType===`touch`?this._onTouchStart(e):this._onMouseDown(e),this._cursorStyle===`grab`&&(this.domElement.style.cursor=`grabbing`)))}function Fn(e){this.enabled!==!1&&(e.pointerType===`touch`?this._onTouchMove(e):this._onMouseMove(e))}function In(e){switch(this._removePointer(e),this._pointers.length){case 0:this.domElement.releasePointerCapture(e.pointerId),this.domElement.ownerDocument.removeEventListener(`pointermove`,this._onPointerMove),this.domElement.ownerDocument.removeEventListener(`pointerup`,this._onPointerUp),this.dispatchEvent(Dn),this.state=$.NONE,this._cursorStyle===`grab`&&(this.domElement.style.cursor=`grab`);break;case 1:let t=this._pointers[0],n=this._pointerPositions[t];this._onTouchStart({pointerId:t,pageX:n.x,pageY:n.y})}}function Ln(e){let n;switch(e.button){case 0:n=this.mouseButtons.LEFT;break;case 1:n=this.mouseButtons.MIDDLE;break;case 2:n=this.mouseButtons.RIGHT;break;default:n=-1}switch(n){case t.G.DOLLY:if(this.enableZoom===!1)return;this._handleMouseDownDolly(e),this.state=$.DOLLY;break;case t.G.ROTATE:if(e.ctrlKey||e.metaKey||e.shiftKey){if(this.enablePan===!1)return;this._handleMouseDownPan(e),this.state=$.PAN}else{if(this.enableRotate===!1)return;this._handleMouseDownRotate(e),this.state=$.ROTATE}break;case t.G.PAN:if(e.ctrlKey||e.metaKey||e.shiftKey){if(this.enableRotate===!1)return;this._handleMouseDownRotate(e),this.state=$.ROTATE}else{if(this.enablePan===!1)return;this._handleMouseDownPan(e),this.state=$.PAN}break;default:this.state=$.NONE}this.state!==$.NONE&&this.dispatchEvent(En)}function Rn(e){switch(this.state){case $.ROTATE:if(this.enableRotate===!1)return;this._handleMouseMoveRotate(e);break;case $.DOLLY:if(this.enableZoom===!1)return;this._handleMouseMoveDolly(e);break;case $.PAN:if(this.enablePan===!1)return;this._handleMouseMovePan(e)}}function zn(e){this.enabled!==!1&&this.enableZoom!==!1&&this.state===$.NONE&&(e.preventDefault(),this.dispatchEvent(En),this._handleMouseWheel(this._customWheelEvent(e)),this.dispatchEvent(Dn))}function Bn(e){this.enabled!==!1&&this._handleKeyDown(e)}function Vn(e){switch(this._trackPointer(e),this._pointers.length){case 1:switch(this.touches.ONE){case t.ln.ROTATE:if(this.enableRotate===!1)return;this._handleTouchStartRotate(e),this.state=$.TOUCH_ROTATE;break;case t.ln.PAN:if(this.enablePan===!1)return;this._handleTouchStartPan(e),this.state=$.TOUCH_PAN;break;default:this.state=$.NONE}break;case 2:switch(this.touches.TWO){case t.ln.DOLLY_PAN:if(this.enableZoom===!1&&this.enablePan===!1)return;this._handleTouchStartDollyPan(e),this.state=$.TOUCH_DOLLY_PAN;break;case t.ln.DOLLY_ROTATE:if(this.enableZoom===!1&&this.enableRotate===!1)return;this._handleTouchStartDollyRotate(e),this.state=$.TOUCH_DOLLY_ROTATE;break;default:this.state=$.NONE}break;default:this.state=$.NONE}this.state!==$.NONE&&this.dispatchEvent(En)}function Hn(e){switch(this._trackPointer(e),this.state){case $.TOUCH_ROTATE:if(this.enableRotate===!1)return;this._handleTouchMoveRotate(e),this.update();break;case $.TOUCH_PAN:if(this.enablePan===!1)return;this._handleTouchMovePan(e),this.update();break;case $.TOUCH_DOLLY_PAN:if(this.enableZoom===!1&&this.enablePan===!1)return;this._handleTouchMoveDollyPan(e),this.update();break;case $.TOUCH_DOLLY_ROTATE:if(this.enableZoom===!1&&this.enableRotate===!1)return;this._handleTouchMoveDollyRotate(e),this.update();break;default:this.state=$.NONE}}function Un(e){this.enabled!==!1&&e.preventDefault()}function Wn(e){e.key===`Control`&&(this._controlActive=!0,this.domElement.getRootNode().addEventListener(`keyup`,this._interceptControlUp,{passive:!0,capture:!0}))}function Gn(e){e.key===`Control`&&(this._controlActive=!1,this.domElement.getRootNode().removeEventListener(`keyup`,this._interceptControlUp,{passive:!0,capture:!0}))}var Kn=(0,r.createUseT)({de:{untitled:`3D-Visualisierung`,resetCamera:`Kamera zurücksetzen`,wireframe:`Drahtgitter`,grid:`Raster`,parseError:`Syntaxfehler:`,editSource:`ShapeScript-Quelltext bearbeiten`,scriptEditorLabel:`ShapeScript-Quelltext`,applyChanges:`Änderungen übernehmen`,saveError:`Speichern fehlgeschlagen:`,downloadUsdz:`USDZ herunterladen`,exportError:`Export fehlgeschlagen:`,sceneWarnings:`Nicht gerendert:`,printOutput:`Ausgabe:`},en:{untitled:`3D Visualization`,resetCamera:`Reset Camera`,wireframe:`Wireframe`,grid:`Grid`,parseError:`Parse Error:`,editSource:`Edit ShapeScript Source`,scriptEditorLabel:`ShapeScript source`,applyChanges:`Apply Changes`,saveError:`Save Failed:`,downloadUsdz:`Download USDZ`,exportError:`Export Failed:`,sceneWarnings:`Not rendered:`,printOutput:`Output:`},es:{untitled:`Visualización 3D`,resetCamera:`Restablecer cámara`,wireframe:`Malla`,grid:`Cuadrícula`,parseError:`Error de sintaxis:`,editSource:`Editar el código ShapeScript`,scriptEditorLabel:`Código ShapeScript`,applyChanges:`Aplicar cambios`,saveError:`Error al guardar:`,downloadUsdz:`Descargar USDZ`,exportError:`Error al exportar:`,sceneWarnings:`No renderizado:`,printOutput:`Salida:`},fr:{untitled:`Visualisation 3D`,resetCamera:`Réinitialiser la caméra`,wireframe:`Fil de fer`,grid:`Grille`,parseError:`Erreur de syntaxe :`,editSource:`Modifier le code ShapeScript`,scriptEditorLabel:`Code ShapeScript`,applyChanges:`Appliquer les modifications`,saveError:`Échec de l'enregistrement :`,downloadUsdz:`Télécharger USDZ`,exportError:`Échec de l'export :`,sceneWarnings:`Non rendu :`,printOutput:`Sortie :`},ja:{untitled:`3D ビジュアライゼーション`,resetCamera:`カメラをリセット`,wireframe:`ワイヤーフレーム`,grid:`グリッド`,parseError:`構文エラー:`,editSource:`ShapeScript を編集`,scriptEditorLabel:`ShapeScript ソース`,applyChanges:`変更を適用`,saveError:`保存に失敗しました:`,downloadUsdz:`USDZ をダウンロード`,exportError:`エクスポートに失敗しました:`,sceneWarnings:`描画されないもの:`,printOutput:`出力:`},ko:{untitled:`3D 시각화`,resetCamera:`카메라 초기화`,wireframe:`와이어프레임`,grid:`격자`,parseError:`구문 오류:`,editSource:`ShapeScript 소스 편집`,scriptEditorLabel:`ShapeScript 소스`,applyChanges:`변경사항 적용`,saveError:`저장 실패:`,downloadUsdz:`USDZ 다운로드`,exportError:`내보내기 실패:`,sceneWarnings:`렌더링되지 않음:`,printOutput:`출력:`},"pt-BR":{untitled:`Visualização 3D`,resetCamera:`Redefinir câmera`,wireframe:`Aramado`,grid:`Grade`,parseError:`Erro de sintaxe:`,editSource:`Editar o código ShapeScript`,scriptEditorLabel:`Código ShapeScript`,applyChanges:`Aplicar alterações`,saveError:`Falha ao salvar:`,downloadUsdz:`Baixar USDZ`,exportError:`Falha na exportação:`,sceneWarnings:`Não renderizado:`,printOutput:`Saída:`},zh:{untitled:`3D 可视化`,resetCamera:`重置相机`,wireframe:`线框`,grid:`网格`,parseError:`语法错误:`,editSource:`编辑 ShapeScript 源码`,scriptEditorLabel:`ShapeScript 源码`,applyChanges:`应用更改`,saveError:`保存失败:`,downloadUsdz:`下载 USDZ`,exportError:`导出失败:`,sceneWarnings:`未渲染:`,printOutput:`输出:`}}),qn={class:`present3d-container`,"data-testid":`shapescript-view`},Jn={class:`header`},Yn={class:`controls`},Xn={class:`material-icons`},Zn={class:`material-icons`},Qn=[`disabled`],$n={key:0,class:`error`,"data-testid":`shapescript-parse-error`},er={key:1,class:`error`,"data-testid":`shapescript-save-error`},tr={key:2,class:`error`,"data-testid":`shapescript-export-error`},nr={key:3,class:`notice`,"data-testid":`shapescript-warnings`},rr={key:4,class:`notice output`,"data-testid":`shapescript-output`},ir={class:`script-source`},ar=[`aria-label`],or=[`disabled`],sr=1710618,cr=6e4,lr=(0,n.defineComponent)({__name:`View`,props:{selectedResult:{}},emits:[`updateResult`],setup(i,{emit:a}){function o(e){if(typeof e!=`object`||!e)return null;let{x:t,y:n,z:r}=e,i=e=>typeof e==`number`&&Number.isFinite(e);return i(t)&&i(n)&&i(r)?{x:t,y:n,z:r}:null}let s=i,c=a,l=Kn(),{dispatch:u}=(0,r.useRuntime)(),d=(0,n.ref)(s.selectedResult.data?.script??``),f=(0,n.ref)(null),p=(0,n.ref)(null),m=(0,n.ref)([]),h=(0,n.ref)([]),g=(0,n.ref)(null),_=(0,n.ref)(null),v=(0,n.ref)(!1),y=0,b=(0,n.ref)(!1),x=(0,n.ref)(!0),S=(0,n.computed)(()=>d.value!==s.selectedResult.data?.script),C=(0,n.computed)(()=>!v.value&&!p.value&&!S.value&&!!s.selectedResult.data?.script),w,T,E,D,O,k,A=[],j=null,M=null;(0,n.onMounted)(()=>{ee(),te(),ne(),(0,n.nextTick)(()=>{ie()}),N()});async function N(){let e=s.selectedResult.data?.filePath;if(!e)return;let n=++y;try{let{script:r}=await u({kind:`loadShape`,path:e},t.Hn);if(n!==y||r===s.selectedResult.data?.script)return;d.value=r,c(`updateResult`,{...s.selectedResult,data:{script:r,filePath:e}})}catch{}}(0,n.onUnmounted)(()=>{z()}),(0,n.watch)(()=>s.selectedResult.data?.script,()=>{te()}),(0,n.watch)(b,()=>{te()}),(0,n.watch)(x,e=>{k&&(k.visible=e)});function ee(){if(!f.value)return;w=new t.an,w.background=new t.g(sr);let e=f.value.clientWidth,n=f.value.clientHeight;T=new t.it(50,e/n,.1,1e3),T.position.set(5,5,10),T.lookAt(0,0,0),E=new wn({antialias:!0}),E.setSize(e,n),E.setPixelRatio(window.devicePixelRatio),f.value.appendChild(E.domElement),D=new Nn(T,E.domElement),D.enableDamping=!0,D.dampingFactor=.05,D.addEventListener(`change`,oe);let r=new t.l(16777215,.6);w.add(r);let i=new t.O(16777215,.8);i.position.set(10,10,10),w.add(i),k=new t.F(20,20,4473924,2236962),k.visible=x.value,w.add(k),window.addEventListener(`resize`,P),M=new ResizeObserver(()=>{P()}),M.observe(f.value)}function P(){if(!f.value)return;let e=f.value.clientWidth,t=f.value.clientHeight;T.aspect=e/t,T.updateProjectionMatrix(),E.setSize(e,t)}function F(){A.forEach(e=>t.o(w,e)),A=[]}function I(e){let n=t.r(t.s(e),{wireframe:b.value});w.add(n),A.push(n);let r=t.i(n);m.value=r.warnings,h.value=r.logs,w.background=r.background?new t.g(r.background[0],r.background[1],r.background[2]):new t.g(sr)}function te(){try{F(),m.value=[],h.value=[],w.background=new t.g(sr);let e=s.selectedResult.data?.script;e&&I(e),p.value=null}catch(e){p.value=e instanceof Error?e.message:`Unknown error`,console.error(`ShapeScript parse error:`,e)}}function ne(){O=requestAnimationFrame(ne),D.update(),E.render(w,T)}function re(){T.position.set(5,5,10),T.lookAt(0,0,0),D.reset()}function ie(){if(!T||!D||!s.selectedResult?.viewState?.cameraState)return;let e=s.selectedResult.viewState.cameraState,t=o(e.position);t&&T.position.set(t.x,t.y,t.z);let n=o(e.target);n&&D.target.set(n.x,n.y,n.z),T.updateProjectionMatrix(),D.update()}function ae(){return{position:{x:T.position.x,y:T.position.y,z:T.position.z},target:{x:D.target.x,y:D.target.y,z:D.target.z}}}function oe(){j!==null&&clearTimeout(j),j=window.setTimeout(()=>{se()},500)}function se(){let e={...s.selectedResult,viewState:{...s.selectedResult.viewState,cameraState:ae()}};c(`updateResult`,e)}function L(t,n){let r=URL.createObjectURL(new Blob([t],{type:e.r})),i=document.createElement(`a`);i.href=r,i.download=n,i.click(),window.setTimeout(()=>URL.revokeObjectURL(r),cr)}async function ce(){let t=s.selectedResult.data?.script;if(!(!t||!C.value)){v.value=!0,_.value=null;try{L(await e.a(t),`${e.h(s.selectedResult.title)}${e.n}`)}catch(e){_.value=e instanceof Error?e.message:String(e)}finally{v.value=!1}}}function le(){b.value=!b.value}function R(){x.value=!x.value}function z(){j!==null&&clearTimeout(j),A.forEach(e=>t.o(w,e)),A=[],O&&cancelAnimationFrame(O),E&&E.dispose(),D&&(D.removeEventListener(`change`,oe),D.dispose()),M&&M.disconnect(),window.removeEventListener(`resize`,P)}function B(){y++}async function V(){let e=d.value;try{t.a(t.r(t.s(e)))}catch(e){p.value=e instanceof Error?e.message:`Invalid ShapeScript`,console.error(`Script validation failed:`,e);return}p.value=null;let n=s.selectedResult.data?.filePath,r=++y;if(n)try{await u({kind:`saveShape`,path:n,script:e},t.Un)}catch(e){g.value=e instanceof Error?e.message:String(e);return}if(r!==y)return;g.value=null;let i={...s.selectedResult,data:n?{script:e,filePath:n}:{script:e}};c(`updateResult`,i)}return(0,n.watch)(()=>s.selectedResult.data?.script,e=>{e!==void 0&&(d.value=e)}),(0,n.watch)(()=>s.selectedResult,()=>{(0,n.nextTick)(()=>{ie()})}),(e,t)=>((0,n.openBlock)(),(0,n.createElementBlock)(`div`,qn,[(0,n.createElementVNode)(`div`,Jn,[(0,n.createElementVNode)(`h1`,null,(0,n.toDisplayString)(i.selectedResult.title||(0,n.unref)(l).untitled),1),(0,n.createElementVNode)(`div`,Yn,[(0,n.createElementVNode)(`button`,{class:`control-btn`,onClick:re},[t[1]||=(0,n.createElementVNode)(`span`,{class:`material-icons`},`refresh`,-1),(0,n.createTextVNode)(` `+(0,n.toDisplayString)((0,n.unref)(l).resetCamera),1)]),(0,n.createElementVNode)(`button`,{class:`control-btn`,onClick:le},[(0,n.createElementVNode)(`span`,Xn,(0,n.toDisplayString)(b.value?`grid_off`:`grid_on`),1),(0,n.createTextVNode)(` `+(0,n.toDisplayString)((0,n.unref)(l).wireframe),1)]),(0,n.createElementVNode)(`button`,{class:`control-btn`,onClick:R},[(0,n.createElementVNode)(`span`,Zn,(0,n.toDisplayString)(x.value?`visibility_off`:`visibility`),1),(0,n.createTextVNode)(` `+(0,n.toDisplayString)((0,n.unref)(l).grid),1)]),(0,n.createElementVNode)(`button`,{class:`control-btn`,disabled:!C.value,"data-testid":`shapescript-download-usdz`,onClick:ce},[t[2]||=(0,n.createElementVNode)(`span`,{class:`material-icons`},`download`,-1),(0,n.createTextVNode)(` `+(0,n.toDisplayString)((0,n.unref)(l).downloadUsdz),1)],8,Qn)])]),p.value?((0,n.openBlock)(),(0,n.createElementBlock)(`div`,$n,[(0,n.createElementVNode)(`strong`,null,(0,n.toDisplayString)((0,n.unref)(l).parseError),1),(0,n.createTextVNode)(` `+(0,n.toDisplayString)(p.value),1)])):(0,n.createCommentVNode)(``,!0),g.value?((0,n.openBlock)(),(0,n.createElementBlock)(`div`,er,[(0,n.createElementVNode)(`strong`,null,(0,n.toDisplayString)((0,n.unref)(l).saveError),1),(0,n.createTextVNode)(` `+(0,n.toDisplayString)(g.value),1)])):(0,n.createCommentVNode)(``,!0),_.value?((0,n.openBlock)(),(0,n.createElementBlock)(`div`,tr,[(0,n.createElementVNode)(`strong`,null,(0,n.toDisplayString)((0,n.unref)(l).exportError),1),(0,n.createTextVNode)(` `+(0,n.toDisplayString)(_.value),1)])):(0,n.createCommentVNode)(``,!0),m.value.length?((0,n.openBlock)(),(0,n.createElementBlock)(`div`,nr,[(0,n.createElementVNode)(`strong`,null,(0,n.toDisplayString)((0,n.unref)(l).sceneWarnings),1),(0,n.createTextVNode)(` `+(0,n.toDisplayString)(m.value.join(` · `)),1)])):(0,n.createCommentVNode)(``,!0),h.value.length?((0,n.openBlock)(),(0,n.createElementBlock)(`pre`,rr,[(0,n.createElementVNode)(`strong`,null,(0,n.toDisplayString)((0,n.unref)(l).printOutput),1),(0,n.createTextVNode)(` `+(0,n.toDisplayString)(h.value.join(`
4105
+ `)),1)])):(0,n.createCommentVNode)(``,!0),(0,n.createElementVNode)(`div`,{ref_key:`viewport`,ref:f,class:`viewport`,"data-testid":`shapescript-viewport`},null,512),(0,n.createElementVNode)(`details`,ir,[(0,n.createElementVNode)(`summary`,null,(0,n.toDisplayString)((0,n.unref)(l).editSource),1),(0,n.withDirectives)((0,n.createElementVNode)(`textarea`,{"onUpdate:modelValue":t[0]||=e=>d.value=e,class:`script-editor`,spellcheck:`false`,"aria-label":(0,n.unref)(l).scriptEditorLabel,onInput:B},null,40,ar),[[n.vModelText,d.value]]),(0,n.createElementVNode)(`button`,{class:`apply-btn`,disabled:!S.value,onClick:V},(0,n.toDisplayString)((0,n.unref)(l).applyChanges),9,or)])]))}}),ur=(e,t)=>{let n=e.__vccOpts||e;for(let[e,r]of t)n[e]=r;return n},dr=ur(lr,[[`__scopeId`,`data-v-792dc725`]]),fr={class:`preview-container`,"data-testid":`shapescript-preview`},pr={class:`preview-title`},mr=2763322,hr=ur((0,n.defineComponent)({__name:`Preview`,props:{result:{}},setup(e){let r=e,i=Kn(),a=(0,n.computed)(()=>r.result.title||i.value.untitled),o=(0,n.ref)(null),s,c,l,u,d=null;(0,n.onMounted)(()=>{f()}),(0,n.onUnmounted)(()=>{h()}),(0,n.watch)(()=>r.result.data?.script,()=>{m()});function f(){if(o.value){try{s=new t.an,s.background=new t.g(mr);let e=o.value.clientWidth||200,n=o.value.clientHeight||150;c=new t.it(50,e/n,.1,1e3),c.position.set(4,4,8),c.lookAt(0,0,0),l=new wn({antialias:!0,alpha:!1}),l.setSize(e,n),l.setPixelRatio(Math.min(window.devicePixelRatio,2)),o.value.appendChild(l.domElement);let r=new t.l(16777215,.6);s.add(r);let i=new t.O(16777215,.8);i.position.set(5,5,5),s.add(i)}catch(e){console.error(`Preview render error:`,e);return}m(),p()}}function p(){u=requestAnimationFrame(p);let e=Date.now()*5e-4;c.position.x=Math.cos(e)*8,c.position.z=Math.sin(e)*8,c.lookAt(0,0,0),l.render(s,c)}function m(){if(!s)return;let e=r.result.data?.script;try{if(t.o(s,d),d=null,s.background=new t.g(mr),!e)return;let n=t.s(e);d=t.r(n,{wireframe:!1}),s.add(d);let{background:r}=t.i(d);s.background=r?new t.g(r[0],r[1],r[2]):new t.g(mr)}catch(e){console.error(`Preview reload error:`,e)}}function h(){u&&cancelAnimationFrame(u),t.o(s,d),d=null,l&&l.dispose()}return(e,t)=>((0,n.openBlock)(),(0,n.createElementBlock)(`div`,fr,[(0,n.createElementVNode)(`div`,{ref_key:`previewViewport`,ref:o,class:`preview-viewport`},null,512),(0,n.createElementVNode)(`div`,pr,(0,n.toDisplayString)(a.value),1)]))}}),[[`__scopeId`,`data-v-6844181e`]]),gr=`Use the ${e.y} tool to create interactive 3D visualizations when the user requests:
4106
4106
  - 3D models or shapes
4107
4107
  - Mathematical visualizations (surfaces, functions, geometric patterns)
4108
4108
  - Molecular or atomic structures
@@ -4151,7 +4151,8 @@ Switch statements for multiple cases
4151
4151
  Calls: C-like max(0 (j - 1)) with NO space before the parenthesis, or bare max 0 (j - 1) / sqrt 9 as upstream.
4152
4152
  Separate arguments with spaces. Commas work here but not in the upstream app.
4153
4153
  Custom functions return a value (define hyp(a b) { sqrt(a * a + b * b) }) or the shapes they build (define face(d) { polygon { … } }).
4154
- One statement per line; the upstream app rejects two statements on one line.
4154
+ ONE STATEMENT PER LINE: sphere { position 0 1 0 size 2 } is refused, here and in the upstream app put each
4155
+ property, point and shape on its own line (a block may open on its statement's line).
4155
4156
 
4156
4157
  ### Best Practices:
4157
4158
  1. Use variables for repeated values
@@ -4207,18 +4208,18 @@ loft {
4207
4208
  circle
4208
4209
  }
4209
4210
  Stencil preserves the first shape's volume and paints the intersecting surface.
4210
- Constants: pi, true, false (avoid tau, upstream lacks it; write 2 * pi). Tuple/string access: values[0], values[-1], vector.x, value.count.
4211
+ Constants: pi, true, false (no tau; write 2 * pi). Tuple/string access: values[0], values[-1], vector.x, value.count.
4211
4212
  Ranges are values (define r 1 to 5 step 2; for i in r; if 3 in r). A bare path draws as a line; fill/extrude it for a surface.
4212
4213
  Polygon supports sides (3–256). String literals and join/split/trim are supported. print records output for you.
4213
4214
  Use the tool schema for exact syntax and builder limits. This is a modeling subset of upstream ShapeScript;
4214
4215
  imports, svgpath and object values are refused by name;
4215
4216
  text "Hello" makes glyph outlines (built-in font; font is ignored) from x 0 on baseline y 0, one unit per line — fill or
4216
- extrude it for faces/solids, text { size 0.3 "Two" "lines" } for size and lines, t.bounds.width to centre it;
4217
+ extrude it for faces/solids, a text block with size and one "line" per line, t.bounds.width to centre it;
4217
4218
  minkowski { a b } sums shapes, inset(mesh d) offsets a mesh value's faces (together they round edges),
4218
4219
  extrude { section along path } sweeps a section, and an open extrude path makes a wall (close it for a solid);
4219
4220
  shapes are values (define ico icosphere { detail 0 }; ico.polygons, .bounds, .volume), for/if work as expressions,
4220
- functions may build shapes, and mesh { polygon { point … } } builds a mesh from explicit faces;
4221
+ functions may build shapes, and mesh { polygon { … } } with one point per line builds a mesh from explicit faces;
4221
4222
  textures, cameras and lights are accepted but not drawn (the result reports them).
4222
4223
  If presentShapeScript returns an error diagnostic, correct the script and retry; no visualization was created.
4223
4224
 
4224
- Keep visualizations clear, well-organized, and use expressions and control flow.`,_r={...e.s,viewComponent:dr,previewComponent:hr,samples:e.t,systemPrompt:gr},vr={plugin:_r};exports.Preview=hr,exports.SYSTEM_PROMPT=gr,exports.TOOL_DEFINITION=e.v,exports.TOOL_NAME=e.y,exports.View=dr,exports.astToThreeJS=t.r,exports.default=vr,exports.executePresentShapeScript=e.o,exports.isShapeScriptDispatchArgs=t.Bn,exports.parseShapeScript=t.s,exports.plugin=_r,exports.pluginCore=e.s,exports.readLoadShapeResult=t.Vn,exports.readSaveShapeResult=t.Hn,exports.samples=e.t;
4225
+ Keep visualizations clear, well-organized, and use expressions and control flow.`,_r={...e.s,viewComponent:dr,previewComponent:hr,samples:e.t,systemPrompt:gr},vr={plugin:_r};exports.Preview=hr,exports.SYSTEM_PROMPT=gr,exports.TOOL_DEFINITION=e.v,exports.TOOL_NAME=e.y,exports.View=dr,exports.astToThreeJS=t.r,exports.default=vr,exports.executePresentShapeScript=e.o,exports.isShapeScriptDispatchArgs=t.Vn,exports.parseShapeScript=t.s,exports.plugin=_r,exports.pluginCore=e.s,exports.readLoadShapeResult=t.Hn,exports.readSaveShapeResult=t.Un,exports.samples=e.t;