@mulmoclaude/shapescript-plugin 1.0.0 → 1.1.0
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/README.md +110 -1
- package/dist/core/contract.d.ts +42 -0
- package/dist/core/contract.d.ts.map +1 -0
- package/dist/core/definition.d.ts +4 -0
- package/dist/core/definition.d.ts.map +1 -1
- package/dist/core/dispatch.d.ts +38 -0
- package/dist/core/dispatch.d.ts.map +1 -0
- package/dist/core/index.d.ts +7 -1
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/paths.d.ts +40 -0
- package/dist/core/paths.d.ts.map +1 -0
- package/dist/core/plugin.d.ts +21 -4
- package/dist/core/plugin.d.ts.map +1 -1
- package/dist/core/types.d.ts +27 -1
- package/dist/core/types.d.ts.map +1 -1
- package/dist/core.cjs +1 -1
- package/dist/core.js +2 -2
- package/dist/index.cjs +1 -1
- package/dist/index.js +2 -2
- package/dist/lang/de.d.ts.map +1 -1
- package/dist/lang/en.d.ts.map +1 -1
- package/dist/lang/es.d.ts.map +1 -1
- package/dist/lang/fr.d.ts.map +1 -1
- package/dist/lang/ja.d.ts.map +1 -1
- package/dist/lang/ko.d.ts.map +1 -1
- package/dist/lang/messages.d.ts +1 -0
- package/dist/lang/messages.d.ts.map +1 -1
- package/dist/lang/ptBR.d.ts.map +1 -1
- package/dist/lang/zh.d.ts.map +1 -1
- package/dist/samples-0PjcB6cu.cjs +195 -0
- package/dist/{toThreeJS-DjFysw4f.js → samples-N1JR7LKe.js} +2812 -2050
- package/dist/shapescript/builders.d.ts +7 -0
- package/dist/shapescript/builders.d.ts.map +1 -0
- package/dist/shapescript/evaluator.d.ts +12 -1
- package/dist/shapescript/evaluator.d.ts.map +1 -1
- package/dist/shapescript/parser.d.ts +30 -2
- package/dist/shapescript/parser.d.ts.map +1 -1
- package/dist/shapescript/toThreeJS.d.ts +51 -6
- package/dist/shapescript/toThreeJS.d.ts.map +1 -1
- package/dist/shapescript/types.d.ts +7 -2
- package/dist/shapescript/types.d.ts.map +1 -1
- package/dist/style.css +1 -1
- package/dist/vue/View.vue.d.ts.map +1 -1
- package/dist/vue/index.d.ts +4 -2
- package/dist/vue/index.d.ts.map +1 -1
- package/dist/vue.cjs +25 -17
- package/dist/vue.js +2170 -2108
- package/package.json +3 -1
- package/dist/toThreeJS-CtWReTrz.cjs +0 -169
package/dist/vue.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}});const e=require("./
|
|
1
|
+
Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}});const e=require("./samples-0PjcB6cu.cjs");let t=require("vue"),n=require("gui-chat-protocol/vue");function r(){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 i(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 a={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
|
-
}`},o={common:{diffuse:{value:new e.d(16777215)},opacity:{value:1},map:{value:null},mapTransform:{value:new e.V},alphaMap:{value:null},alphaMapTransform:{value:new e.V},alphaTest:{value:0}},specularmap:{specularMap:{value:null},specularMapTransform:{value:new e.V}},envmap:{envMap:{value:null},envMapRotation:{value:new e.V},reflectivity:{value:1},ior:{value:1.5},refractionRatio:{value:.98},dfgLUT:{value:null}},aomap:{aoMap:{value:null},aoMapIntensity:{value:1},aoMapTransform:{value:new e.V}},lightmap:{lightMap:{value:null},lightMapIntensity:{value:1},lightMapTransform:{value:new e.V}},bumpmap:{bumpMap:{value:null},bumpMapTransform:{value:new e.V},bumpScale:{value:1}},normalmap:{normalMap:{value:null},normalMapTransform:{value:new e.V},normalScale:{value:new e.hn(1,1)}},displacementmap:{displacementMap:{value:null},displacementMapTransform:{value:new e.V},displacementScale:{value:1},displacementBias:{value:0}},emissivemap:{emissiveMap:{value:null},emissiveMapTransform:{value:new e.V}},metalnessmap:{metalnessMap:{value:null},metalnessMapTransform:{value:new e.V}},roughnessmap:{roughnessMap:{value:null},roughnessMapTransform:{value:new e.V}},gradientmap:{gradientMap:{value:null}},fog:{fogDensity:{value:25e-5},fogNear:{value:1},fogFar:{value:2e3},fogColor:{value:new e.d(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 e.gn},probesMax:{value:new e.gn},probesResolution:{value:new e.gn}},points:{diffuse:{value:new e.d(16777215)},opacity:{value:1},size:{value:1},scale:{value:1},map:{value:null},alphaMap:{value:null},alphaMapTransform:{value:new e.V},alphaTest:{value:0},uvTransform:{value:new e.V}},sprite:{diffuse:{value:new e.d(16777215)},opacity:{value:1},center:{value:new e.hn(.5,.5)},rotation:{value:0},map:{value:null},mapTransform:{value:new e.V},alphaMap:{value:null},alphaMapTransform:{value:new e.V},alphaTest:{value:0}}},s={basic:{uniforms:e.On([o.common,o.specularmap,o.envmap,o.aomap,o.lightmap,o.fog]),vertexShader:a.meshbasic_vert,fragmentShader:a.meshbasic_frag},lambert:{uniforms:e.On([o.common,o.specularmap,o.envmap,o.aomap,o.lightmap,o.emissivemap,o.bumpmap,o.normalmap,o.displacementmap,o.fog,o.lights,{emissive:{value:new e.d(0)},envMapIntensity:{value:1}}]),vertexShader:a.meshlambert_vert,fragmentShader:a.meshlambert_frag},phong:{uniforms:e.On([o.common,o.specularmap,o.envmap,o.aomap,o.lightmap,o.emissivemap,o.bumpmap,o.normalmap,o.displacementmap,o.fog,o.lights,{emissive:{value:new e.d(0)},specular:{value:new e.d(1118481)},shininess:{value:30},envMapIntensity:{value:1}}]),vertexShader:a.meshphong_vert,fragmentShader:a.meshphong_frag},standard:{uniforms:e.On([o.common,o.envmap,o.aomap,o.lightmap,o.emissivemap,o.bumpmap,o.normalmap,o.displacementmap,o.roughnessmap,o.metalnessmap,o.fog,o.lights,{emissive:{value:new e.d(0)},roughness:{value:1},metalness:{value:0},envMapIntensity:{value:1}}]),vertexShader:a.meshphysical_vert,fragmentShader:a.meshphysical_frag},toon:{uniforms:e.On([o.common,o.aomap,o.lightmap,o.emissivemap,o.bumpmap,o.normalmap,o.displacementmap,o.gradientmap,o.fog,o.lights,{emissive:{value:new e.d(0)}}]),vertexShader:a.meshtoon_vert,fragmentShader:a.meshtoon_frag},matcap:{uniforms:e.On([o.common,o.bumpmap,o.normalmap,o.displacementmap,o.fog,{matcap:{value:null}}]),vertexShader:a.meshmatcap_vert,fragmentShader:a.meshmatcap_frag},points:{uniforms:e.On([o.points,o.fog]),vertexShader:a.points_vert,fragmentShader:a.points_frag},dashed:{uniforms:e.On([o.common,o.fog,{scale:{value:1},dashSize:{value:1},totalSize:{value:2}}]),vertexShader:a.linedashed_vert,fragmentShader:a.linedashed_frag},depth:{uniforms:e.On([o.common,o.displacementmap]),vertexShader:a.depth_vert,fragmentShader:a.depth_frag},normal:{uniforms:e.On([o.common,o.bumpmap,o.normalmap,o.displacementmap,{opacity:{value:1}}]),vertexShader:a.meshnormal_vert,fragmentShader:a.meshnormal_frag},sprite:{uniforms:e.On([o.sprite,o.fog]),vertexShader:a.sprite_vert,fragmentShader:a.sprite_frag},background:{uniforms:{uvTransform:{value:new e.V},t2D:{value:null},backgroundIntensity:{value:1}},vertexShader:a.background_vert,fragmentShader:a.background_frag},backgroundCube:{uniforms:{envMap:{value:null},backgroundBlurriness:{value:0},backgroundIntensity:{value:1},backgroundRotation:{value:new e.V}},vertexShader:a.backgroundCube_vert,fragmentShader:a.backgroundCube_frag},cube:{uniforms:{tCube:{value:null},tFlip:{value:-1},opacity:{value:1}},vertexShader:a.cube_vert,fragmentShader:a.cube_frag},equirect:{uniforms:{tEquirect:{value:null}},vertexShader:a.equirect_vert,fragmentShader:a.equirect_frag},distance:{uniforms:e.On([o.common,o.displacementmap,{referencePosition:{value:new e.gn},nearDistance:{value:1},farDistance:{value:1e3}}]),vertexShader:a.distance_vert,fragmentShader:a.distance_frag},shadow:{uniforms:e.On([o.lights,o.fog,{color:{value:new e.d(0)},opacity:{value:1}}]),vertexShader:a.shadow_vert,fragmentShader:a.shadow_frag}};s.physical={uniforms:e.On([s.standard.uniforms,{clearcoat:{value:0},clearcoatMap:{value:null},clearcoatMapTransform:{value:new e.V},clearcoatNormalMap:{value:null},clearcoatNormalMapTransform:{value:new e.V},clearcoatNormalScale:{value:new e.hn(1,1)},clearcoatRoughness:{value:0},clearcoatRoughnessMap:{value:null},clearcoatRoughnessMapTransform:{value:new e.V},dispersion:{value:0},iridescence:{value:0},iridescenceMap:{value:null},iridescenceMapTransform:{value:new e.V},iridescenceIOR:{value:1.3},iridescenceThicknessMinimum:{value:100},iridescenceThicknessMaximum:{value:400},iridescenceThicknessMap:{value:null},iridescenceThicknessMapTransform:{value:new e.V},sheen:{value:0},sheenColor:{value:new e.d(0)},sheenColorMap:{value:null},sheenColorMapTransform:{value:new e.V},sheenRoughness:{value:1},sheenRoughnessMap:{value:null},sheenRoughnessMapTransform:{value:new e.V},transmission:{value:0},transmissionMap:{value:null},transmissionMapTransform:{value:new e.V},transmissionSamplerSize:{value:new e.hn},transmissionSamplerMap:{value:null},thickness:{value:0},thicknessMap:{value:null},thicknessMapTransform:{value:new e.V},attenuationDistance:{value:0},attenuationColor:{value:new e.d(0)},specularColor:{value:new e.d(1,1,1)},specularColorMap:{value:null},specularColorMapTransform:{value:new e.V},specularIntensity:{value:1},specularIntensityMap:{value:null},specularIntensityMapTransform:{value:new e.V},anisotropyVector:{value:new e.hn},anisotropyMap:{value:null},anisotropyMapTransform:{value:new e.V}}]),vertexShader:a.meshphysical_vert,fragmentShader:a.meshphysical_frag};var c={r:0,b:0,g:0},l=new e.H,u=new e.V;u.set(-1,0,0,0,1,0,0,0,1);function d(t,n,r,i,a,o){let d=new e.d(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(e){let n=!1,i=v(e);i===null?x(d,f):i&&i.isColor&&(x(i,1),n=!0);let a=t.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),(t.autoClear||n)&&(r.buffers.depth.setTest(!0),r.buffers.depth.setMask(!0),r.buffers.color.setMask(!0),t.clear(t.autoClearColor,t.autoClearDepth,t.autoClearStencil))}function b(n,r){let a=v(r);a&&(a.isCubeTexture||a.mapping===306)?(m===void 0&&(m=new e.U(new e.o(1,1,1),new e.$t({name:`BackgroundCubeMaterial`,uniforms:e.xn(s.backgroundCube.uniforms),vertexShader:s.backgroundCube.vertexShader,fragmentShader:s.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(l.makeRotationFromEuler(r.backgroundRotation)).transpose(),a.isCubeTexture&&a.isRenderTargetTexture===!1&&m.material.uniforms.backgroundRotation.value.premultiply(u),m.material.toneMapped=e.f.getTransfer(a.colorSpace)!==e.Zt,(h!==a||g!==a.version||_!==t.toneMapping)&&(m.material.needsUpdate=!0,h=a,g=a.version,_=t.toneMapping),m.layers.enableAll(),n.unshift(m,m.geometry,m.material,0,0,null)):a&&a.isTexture&&(p===void 0&&(p=new e.U(new e.et(2,2),new e.$t({name:`BackgroundMaterial`,uniforms:e.xn(s.background.uniforms),vertexShader:s.background.vertexShader,fragmentShader:s.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=e.f.getTransfer(a.colorSpace)!==e.Zt,a.matrixAutoUpdate===!0&&a.updateMatrix(),p.material.uniforms.uvTransform.value.copy(a.matrix),(h!==a||g!==a.version||_!==t.toneMapping)&&(p.material.needsUpdate=!0,h=a,g=a.version,_=t.toneMapping),p.layers.enableAll(),n.unshift(p,p.geometry,p.material,0,0,null))}function x(n,i){n.getRGB(c,e.En(t)),r.buffers.color.setClear(c.r,c.g,c.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 d},setClearColor:function(e,t=1){d.set(e),f=t,x(d,f)},getClearAlpha:function(){return f},setClearAlpha:function(e){f=e,x(d,f)},render:y,addToRenderList:b,dispose:S}}function f(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 p(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 m(t,n,r,i){let a;function o(){if(a!==void 0)return a;if(n.has(`EXT_texture_filter_anisotropic`)===!0){let e=n.get(`EXT_texture_filter_anisotropic`);a=t.getParameter(e.MAX_TEXTURE_MAX_ANISOTROPY_EXT)}else a=0;return a}function s(e){return e===1023||i.convert(e)===t.getParameter(t.IMPLEMENTATION_COLOR_READ_FORMAT)}function c(e){let r=e===1016&&(n.has(`EXT_color_buffer_half_float`)||n.has(`EXT_color_buffer_float`));return!(e!==1009&&i.convert(e)!==t.getParameter(t.IMPLEMENTATION_COLOR_READ_TYPE)&&e!==1015&&!r)}function l(e){if(e===`highp`){if(t.getShaderPrecisionFormat(t.VERTEX_SHADER,t.HIGH_FLOAT).precision>0&&t.getShaderPrecisionFormat(t.FRAGMENT_SHADER,t.HIGH_FLOAT).precision>0)return`highp`;e=`mediump`}return e===`mediump`&&t.getShaderPrecisionFormat(t.VERTEX_SHADER,t.MEDIUM_FLOAT).precision>0&&t.getShaderPrecisionFormat(t.FRAGMENT_SHADER,t.MEDIUM_FLOAT).precision>0?`mediump`:`lowp`}let u=r.precision===void 0?`highp`:r.precision,d=l(u);d!==u&&(e.An(`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&&e.An(`WebGLRenderer: Unable to use reversed depth buffer due to missing EXT_clip_control extension. Fallback to default depth buffer.`);let m=t.getParameter(t.MAX_TEXTURE_IMAGE_UNITS),h=t.getParameter(t.MAX_VERTEX_TEXTURE_IMAGE_UNITS),g=t.getParameter(t.MAX_TEXTURE_SIZE),_=t.getParameter(t.MAX_CUBE_MAP_TEXTURE_SIZE),v=t.getParameter(t.MAX_VERTEX_ATTRIBS),y=t.getParameter(t.MAX_VERTEX_UNIFORM_VECTORS),b=t.getParameter(t.MAX_VARYING_VECTORS),x=t.getParameter(t.MAX_FRAGMENT_UNIFORM_VECTORS),S=t.getParameter(t.MAX_SAMPLES),C=t.getParameter(t.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 h(t){let n=this,r=null,i=0,a=!1,o=!1,s=new e.$,c=new e.V,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(e,n,s){let c=e.clippingPlanes,f=e.clipIntersection,p=e.clipShadows,m=t.get(e);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 g=4,_=[.125,.215,.35,.446,.526,.582],v=20,y=256,b=new e.Z,x=new e.d,S=null,C=0,w=0,T=!1,E=new e.gn,D=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=E}=i;S=this._renderer.getRenderTarget(),C=this._renderer.getActiveCubeFace(),w=this._renderer.getActiveMipmapLevel(),T=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=ee(),this._compileMaterial(this._cubemapMaterial))}compileEquirectangularShader(){this._equirectMaterial===null&&(this._equirectMaterial=N(),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(S,C,w),this._renderer.xr.enabled=T,e.scissorTest=!1,A(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),S=this._renderer.getRenderTarget(),C=this._renderer.getActiveCubeFace(),w=this._renderer.getActiveMipmapLevel(),T=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 t=3*Math.max(this._cubeSize,112),n=4*this._cubeSize,r={magFilter:e.P,minFilter:e.P,generateMipmaps:!1,type:e.j,format:e.st,colorSpace:e.L,depthBuffer:!1},i=k(t,n,r);if(this._pingPongRenderTarget===null||this._pingPongRenderTarget.width!==t||this._pingPongRenderTarget.height!==n){this._pingPongRenderTarget!==null&&this._dispose(),this._pingPongRenderTarget=k(t,n,r);let{_lodMax:e}=this;({lodMeshes:this._lodMeshes,sizeLods:this._sizeLods,sigmas:this._sigmas}=O(e)),this._blurMaterial=M(e,t,n),this._ggxMaterial=j(e,t,n)}return i}_compileMaterial(t){let n=new e.U(new e.c,t);this._renderer.compile(n,b)}_sceneToCubeUV(t,n,r,i,a){let o=new e.Q(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(x),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 e.U(new e.o,new e.W({name:`PMREM.Background`,side:1,depthWrite:!1,depthTest:!1})));let f=this._backgroundBox,p=f.material,m=!1,h=t.background;h?h.isColor&&(p.color.copy(h),t.background=null,m=!0):(p.color.copy(x),m=!0);for(let e=0;e<6;e++){let n=e%3;n===0?(o.up.set(0,s[e],0),o.position.set(a.x,a.y,a.z),o.lookAt(a.x+c[e],a.y,a.z)):n===1?(o.up.set(0,0,s[e]),o.position.set(a.x,a.y,a.z),o.lookAt(a.x,a.y+c[e],a.z)):(o.up.set(0,s[e],0),o.position.set(a.x,a.y,a.z),o.lookAt(a.x,a.y,a.z+c[e]));let r=this._cubeSize;A(i,n*r,e>2?r:0,r,r),l.setRenderTarget(i),m&&l.render(f,o),l.render(t,o)}l.toneMapping=d,l.autoClear=u,t.background=h}_textureToCubeUV(e,t){let n=this._renderer,r=e.mapping===301||e.mapping===302;r?(this._cubemapMaterial===null&&(this._cubemapMaterial=ee()),this._cubemapMaterial.uniforms.flipEnvMap.value=e.isRenderTargetTexture===!1?-1:1):this._equirectMaterial===null&&(this._equirectMaterial=N());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;A(t,0,0,3*s,2*s),n.setRenderTarget(t),n.render(a,b)}_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-g?n-d+g:0),m=4*(this._cubeSize-f);s.envMap.value=e.texture,s.roughness.value=u,s.mipInt.value=d-t,A(i,p,m,3*f,2*f),r.setRenderTarget(i),r.render(o,b),s.envMap.value=i.texture,s.roughness.value=0,s.mipInt.value=d-n,A(e,p,m,3*f,2*f),r.setRenderTarget(e),r.render(o,b)}_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(t,n,r,i,a,o,s){let c=this._renderer,l=this._blurMaterial;o!==`latitudinal`&&o!==`longitudinal`&&e.wn(`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):v;h>v&&e.An(`sigmaRadians, ${a}, is too large and will clip, as it requested ${h} samples when the maximum is set to ${v}`);let _=[],y=0;for(let e=0;e<v;++e){let t=e/m,n=Math.exp(-t*t/2);_.push(n),e===0?y+=n:e<h&&(y+=2*n)}for(let e=0;e<_.length;e++)_[e]=_[e]/y;d.envMap.value=t.texture,d.samples.value=h,d.weights.value=_,d.latitudinal.value=o===`latitudinal`,s&&(d.poleAxis.value=s);let{_lodMax:x}=this;d.dTheta.value=p,d.mipInt.value=x-r;let S=this._sizeLods[i];A(n,3*S*(i>x-g?i-x+g:0),4*(this._cubeSize-S),3*S,2*S),c.setRenderTarget(n),c.render(u,b)}};function O(t){let n=[],r=[],i=[],a=t,o=t-g+1+_.length;for(let s=0;s<o;s++){let o=2**a;n.push(o);let c=1/o;s>t-g?c=_[s-t+g-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 v=new e.c;v.setAttribute(`position`,new e.s(p,3)),v.setAttribute(`uv`,new e.s(m,2)),v.setAttribute(`faceIndex`,new e.s(h,1)),i.push(new e.U(v,null)),a>g&&a--}return{lodMeshes:i,sizeLods:n,sigmas:r}}function k(t,n,r){let i=new e.yn(t,n,r);return i.texture.mapping=306,i.texture.name=`PMREM.cubeUv`,i.scissorTest=!0,i}function A(e,t,n,r,i){e.viewport.set(t,n,r,i),e.scissor.set(t,n,r,i)}function j(t,n,r){return new e.$t({name:`PMREMGGXConvolution`,defines:{GGX_SAMPLES:y,CUBEUV_TEXEL_WIDTH:1/n,CUBEUV_TEXEL_HEIGHT:1/r,CUBEUV_MAX_MIP:`${t}.0`},uniforms:{envMap:{value:null},roughness:{value:0},mipInt:{value:0}},vertexShader:P(),fragmentShader:`
|
|
3667
|
+
}`},o={common:{diffuse:{value:new e.g(16777215)},opacity:{value:1},map:{value:null},mapTransform:{value:new e.K},alphaMap:{value:null},alphaMapTransform:{value:new e.K},alphaTest:{value:0}},specularmap:{specularMap:{value:null},specularMapTransform:{value:new e.K}},envmap:{envMap:{value:null},envMapRotation:{value:new e.K},reflectivity:{value:1},ior:{value:1.5},refractionRatio:{value:.98},dfgLUT:{value:null}},aomap:{aoMap:{value:null},aoMapIntensity:{value:1},aoMapTransform:{value:new e.K}},lightmap:{lightMap:{value:null},lightMapIntensity:{value:1},lightMapTransform:{value:new e.K}},bumpmap:{bumpMap:{value:null},bumpMapTransform:{value:new e.K},bumpScale:{value:1}},normalmap:{normalMap:{value:null},normalMapTransform:{value:new e.K},normalScale:{value:new e.bn(1,1)}},displacementmap:{displacementMap:{value:null},displacementMapTransform:{value:new e.K},displacementScale:{value:1},displacementBias:{value:0}},emissivemap:{emissiveMap:{value:null},emissiveMapTransform:{value:new e.K}},metalnessmap:{metalnessMap:{value:null},metalnessMapTransform:{value:new e.K}},roughnessmap:{roughnessMap:{value:null},roughnessMapTransform:{value:new e.K}},gradientmap:{gradientMap:{value:null}},fog:{fogDensity:{value:25e-5},fogNear:{value:1},fogFar:{value:2e3},fogColor:{value:new e.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 e.xn},probesMax:{value:new e.xn},probesResolution:{value:new e.xn}},points:{diffuse:{value:new e.g(16777215)},opacity:{value:1},size:{value:1},scale:{value:1},map:{value:null},alphaMap:{value:null},alphaMapTransform:{value:new e.K},alphaTest:{value:0},uvTransform:{value:new e.K}},sprite:{diffuse:{value:new e.g(16777215)},opacity:{value:1},center:{value:new e.bn(.5,.5)},rotation:{value:0},map:{value:null},mapTransform:{value:new e.K},alphaMap:{value:null},alphaMapTransform:{value:new e.K},alphaTest:{value:0}}},s={basic:{uniforms:e.Nn([o.common,o.specularmap,o.envmap,o.aomap,o.lightmap,o.fog]),vertexShader:a.meshbasic_vert,fragmentShader:a.meshbasic_frag},lambert:{uniforms:e.Nn([o.common,o.specularmap,o.envmap,o.aomap,o.lightmap,o.emissivemap,o.bumpmap,o.normalmap,o.displacementmap,o.fog,o.lights,{emissive:{value:new e.g(0)},envMapIntensity:{value:1}}]),vertexShader:a.meshlambert_vert,fragmentShader:a.meshlambert_frag},phong:{uniforms:e.Nn([o.common,o.specularmap,o.envmap,o.aomap,o.lightmap,o.emissivemap,o.bumpmap,o.normalmap,o.displacementmap,o.fog,o.lights,{emissive:{value:new e.g(0)},specular:{value:new e.g(1118481)},shininess:{value:30},envMapIntensity:{value:1}}]),vertexShader:a.meshphong_vert,fragmentShader:a.meshphong_frag},standard:{uniforms:e.Nn([o.common,o.envmap,o.aomap,o.lightmap,o.emissivemap,o.bumpmap,o.normalmap,o.displacementmap,o.roughnessmap,o.metalnessmap,o.fog,o.lights,{emissive:{value:new e.g(0)},roughness:{value:1},metalness:{value:0},envMapIntensity:{value:1}}]),vertexShader:a.meshphysical_vert,fragmentShader:a.meshphysical_frag},toon:{uniforms:e.Nn([o.common,o.aomap,o.lightmap,o.emissivemap,o.bumpmap,o.normalmap,o.displacementmap,o.gradientmap,o.fog,o.lights,{emissive:{value:new e.g(0)}}]),vertexShader:a.meshtoon_vert,fragmentShader:a.meshtoon_frag},matcap:{uniforms:e.Nn([o.common,o.bumpmap,o.normalmap,o.displacementmap,o.fog,{matcap:{value:null}}]),vertexShader:a.meshmatcap_vert,fragmentShader:a.meshmatcap_frag},points:{uniforms:e.Nn([o.points,o.fog]),vertexShader:a.points_vert,fragmentShader:a.points_frag},dashed:{uniforms:e.Nn([o.common,o.fog,{scale:{value:1},dashSize:{value:1},totalSize:{value:2}}]),vertexShader:a.linedashed_vert,fragmentShader:a.linedashed_frag},depth:{uniforms:e.Nn([o.common,o.displacementmap]),vertexShader:a.depth_vert,fragmentShader:a.depth_frag},normal:{uniforms:e.Nn([o.common,o.bumpmap,o.normalmap,o.displacementmap,{opacity:{value:1}}]),vertexShader:a.meshnormal_vert,fragmentShader:a.meshnormal_frag},sprite:{uniforms:e.Nn([o.sprite,o.fog]),vertexShader:a.sprite_vert,fragmentShader:a.sprite_frag},background:{uniforms:{uvTransform:{value:new e.K},t2D:{value:null},backgroundIntensity:{value:1}},vertexShader:a.background_vert,fragmentShader:a.background_frag},backgroundCube:{uniforms:{envMap:{value:null},backgroundBlurriness:{value:0},backgroundIntensity:{value:1},backgroundRotation:{value:new e.K}},vertexShader:a.backgroundCube_vert,fragmentShader:a.backgroundCube_frag},cube:{uniforms:{tCube:{value:null},tFlip:{value:-1},opacity:{value:1}},vertexShader:a.cube_vert,fragmentShader:a.cube_frag},equirect:{uniforms:{tEquirect:{value:null}},vertexShader:a.equirect_vert,fragmentShader:a.equirect_frag},distance:{uniforms:e.Nn([o.common,o.displacementmap,{referencePosition:{value:new e.xn},nearDistance:{value:1},farDistance:{value:1e3}}]),vertexShader:a.distance_vert,fragmentShader:a.distance_frag},shadow:{uniforms:e.Nn([o.lights,o.fog,{color:{value:new e.g(0)},opacity:{value:1}}]),vertexShader:a.shadow_vert,fragmentShader:a.shadow_frag}};s.physical={uniforms:e.Nn([s.standard.uniforms,{clearcoat:{value:0},clearcoatMap:{value:null},clearcoatMapTransform:{value:new e.K},clearcoatNormalMap:{value:null},clearcoatNormalMapTransform:{value:new e.K},clearcoatNormalScale:{value:new e.bn(1,1)},clearcoatRoughness:{value:0},clearcoatRoughnessMap:{value:null},clearcoatRoughnessMapTransform:{value:new e.K},dispersion:{value:0},iridescence:{value:0},iridescenceMap:{value:null},iridescenceMapTransform:{value:new e.K},iridescenceIOR:{value:1.3},iridescenceThicknessMinimum:{value:100},iridescenceThicknessMaximum:{value:400},iridescenceThicknessMap:{value:null},iridescenceThicknessMapTransform:{value:new e.K},sheen:{value:0},sheenColor:{value:new e.g(0)},sheenColorMap:{value:null},sheenColorMapTransform:{value:new e.K},sheenRoughness:{value:1},sheenRoughnessMap:{value:null},sheenRoughnessMapTransform:{value:new e.K},transmission:{value:0},transmissionMap:{value:null},transmissionMapTransform:{value:new e.K},transmissionSamplerSize:{value:new e.bn},transmissionSamplerMap:{value:null},thickness:{value:0},thicknessMap:{value:null},thicknessMapTransform:{value:new e.K},attenuationDistance:{value:0},attenuationColor:{value:new e.g(0)},specularColor:{value:new e.g(1,1,1)},specularColorMap:{value:null},specularColorMapTransform:{value:new e.K},specularIntensity:{value:1},specularIntensityMap:{value:null},specularIntensityMapTransform:{value:new e.K},anisotropyVector:{value:new e.bn},anisotropyMap:{value:null},anisotropyMapTransform:{value:new e.K}}]),vertexShader:a.meshphysical_vert,fragmentShader:a.meshphysical_frag};var c={r:0,b:0,g:0},l=new e.q,u=new e.K;u.set(-1,0,0,0,1,0,0,0,1);function d(t,n,r,i,a,o){let d=new e.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(e){let n=!1,i=v(e);i===null?x(d,f):i&&i.isColor&&(x(i,1),n=!0);let a=t.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),(t.autoClear||n)&&(r.buffers.depth.setTest(!0),r.buffers.depth.setMask(!0),r.buffers.color.setMask(!0),t.clear(t.autoClearColor,t.autoClearDepth,t.autoClearStencil))}function b(n,r){let a=v(r);a&&(a.isCubeTexture||a.mapping===306)?(m===void 0&&(m=new e.J(new e.d(1,1,1),new e.in({name:`BackgroundCubeMaterial`,uniforms:e.En(s.backgroundCube.uniforms),vertexShader:s.backgroundCube.vertexShader,fragmentShader:s.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(l.makeRotationFromEuler(r.backgroundRotation)).transpose(),a.isCubeTexture&&a.isRenderTargetTexture===!1&&m.material.uniforms.backgroundRotation.value.premultiply(u),m.material.toneMapped=e._.getTransfer(a.colorSpace)!==e.nn,(h!==a||g!==a.version||_!==t.toneMapping)&&(m.material.needsUpdate=!0,h=a,g=a.version,_=t.toneMapping),m.layers.enableAll(),n.unshift(m,m.geometry,m.material,0,0,null)):a&&a.isTexture&&(p===void 0&&(p=new e.J(new e.at(2,2),new e.in({name:`BackgroundMaterial`,uniforms:e.En(s.background.uniforms),vertexShader:s.background.vertexShader,fragmentShader:s.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=e._.getTransfer(a.colorSpace)!==e.nn,a.matrixAutoUpdate===!0&&a.updateMatrix(),p.material.uniforms.uvTransform.value.copy(a.matrix),(h!==a||g!==a.version||_!==t.toneMapping)&&(p.material.needsUpdate=!0,h=a,g=a.version,_=t.toneMapping),p.layers.enableAll(),n.unshift(p,p.geometry,p.material,0,0,null))}function x(n,i){n.getRGB(c,e.jn(t)),r.buffers.color.setClear(c.r,c.g,c.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 d},setClearColor:function(e,t=1){d.set(e),f=t,x(d,f)},getClearAlpha:function(){return f},setClearAlpha:function(e){f=e,x(d,f)},render:y,addToRenderList:b,dispose:S}}function f(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 p(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 m(t,n,r,i){let a;function o(){if(a!==void 0)return a;if(n.has(`EXT_texture_filter_anisotropic`)===!0){let e=n.get(`EXT_texture_filter_anisotropic`);a=t.getParameter(e.MAX_TEXTURE_MAX_ANISOTROPY_EXT)}else a=0;return a}function s(e){return e===1023||i.convert(e)===t.getParameter(t.IMPLEMENTATION_COLOR_READ_FORMAT)}function c(e){let r=e===1016&&(n.has(`EXT_color_buffer_half_float`)||n.has(`EXT_color_buffer_float`));return!(e!==1009&&i.convert(e)!==t.getParameter(t.IMPLEMENTATION_COLOR_READ_TYPE)&&e!==1015&&!r)}function l(e){if(e===`highp`){if(t.getShaderPrecisionFormat(t.VERTEX_SHADER,t.HIGH_FLOAT).precision>0&&t.getShaderPrecisionFormat(t.FRAGMENT_SHADER,t.HIGH_FLOAT).precision>0)return`highp`;e=`mediump`}return e===`mediump`&&t.getShaderPrecisionFormat(t.VERTEX_SHADER,t.MEDIUM_FLOAT).precision>0&&t.getShaderPrecisionFormat(t.FRAGMENT_SHADER,t.MEDIUM_FLOAT).precision>0?`mediump`:`lowp`}let u=r.precision===void 0?`highp`:r.precision,d=l(u);d!==u&&(e.Fn(`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&&e.Fn(`WebGLRenderer: Unable to use reversed depth buffer due to missing EXT_clip_control extension. Fallback to default depth buffer.`);let m=t.getParameter(t.MAX_TEXTURE_IMAGE_UNITS),h=t.getParameter(t.MAX_VERTEX_TEXTURE_IMAGE_UNITS),g=t.getParameter(t.MAX_TEXTURE_SIZE),_=t.getParameter(t.MAX_CUBE_MAP_TEXTURE_SIZE),v=t.getParameter(t.MAX_VERTEX_ATTRIBS),y=t.getParameter(t.MAX_VERTEX_UNIFORM_VECTORS),b=t.getParameter(t.MAX_VARYING_VECTORS),x=t.getParameter(t.MAX_FRAGMENT_UNIFORM_VECTORS),S=t.getParameter(t.MAX_SAMPLES),C=t.getParameter(t.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 h(t){let n=this,r=null,i=0,a=!1,o=!1,s=new e.it,c=new e.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(e,n,s){let c=e.clippingPlanes,f=e.clipIntersection,p=e.clipShadows,m=t.get(e);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 g=4,_=[.125,.215,.35,.446,.526,.582],v=20,y=256,b=new e.nt,x=new e.g,S=null,C=0,w=0,T=!1,E=new e.xn,D=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=E}=i;S=this._renderer.getRenderTarget(),C=this._renderer.getActiveCubeFace(),w=this._renderer.getActiveMipmapLevel(),T=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=ee(),this._compileMaterial(this._cubemapMaterial))}compileEquirectangularShader(){this._equirectMaterial===null&&(this._equirectMaterial=N(),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(S,C,w),this._renderer.xr.enabled=T,e.scissorTest=!1,A(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),S=this._renderer.getRenderTarget(),C=this._renderer.getActiveCubeFace(),w=this._renderer.getActiveMipmapLevel(),T=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 t=3*Math.max(this._cubeSize,112),n=4*this._cubeSize,r={magFilter:e.z,minFilter:e.z,generateMipmaps:!1,type:e.I,format:e.ft,colorSpace:e.H,depthBuffer:!1},i=k(t,n,r);if(this._pingPongRenderTarget===null||this._pingPongRenderTarget.width!==t||this._pingPongRenderTarget.height!==n){this._pingPongRenderTarget!==null&&this._dispose(),this._pingPongRenderTarget=k(t,n,r);let{_lodMax:e}=this;({lodMeshes:this._lodMeshes,sizeLods:this._sizeLods,sigmas:this._sigmas}=O(e)),this._blurMaterial=M(e,t,n),this._ggxMaterial=j(e,t,n)}return i}_compileMaterial(t){let n=new e.J(new e.p,t);this._renderer.compile(n,b)}_sceneToCubeUV(t,n,r,i,a){let o=new e.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(x),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 e.J(new e.d,new e.Y({name:`PMREM.Background`,side:1,depthWrite:!1,depthTest:!1})));let f=this._backgroundBox,p=f.material,m=!1,h=t.background;h?h.isColor&&(p.color.copy(h),t.background=null,m=!0):(p.color.copy(x),m=!0);for(let e=0;e<6;e++){let n=e%3;n===0?(o.up.set(0,s[e],0),o.position.set(a.x,a.y,a.z),o.lookAt(a.x+c[e],a.y,a.z)):n===1?(o.up.set(0,0,s[e]),o.position.set(a.x,a.y,a.z),o.lookAt(a.x,a.y+c[e],a.z)):(o.up.set(0,s[e],0),o.position.set(a.x,a.y,a.z),o.lookAt(a.x,a.y,a.z+c[e]));let r=this._cubeSize;A(i,n*r,e>2?r:0,r,r),l.setRenderTarget(i),m&&l.render(f,o),l.render(t,o)}l.toneMapping=d,l.autoClear=u,t.background=h}_textureToCubeUV(e,t){let n=this._renderer,r=e.mapping===301||e.mapping===302;r?(this._cubemapMaterial===null&&(this._cubemapMaterial=ee()),this._cubemapMaterial.uniforms.flipEnvMap.value=e.isRenderTargetTexture===!1?-1:1):this._equirectMaterial===null&&(this._equirectMaterial=N());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;A(t,0,0,3*s,2*s),n.setRenderTarget(t),n.render(a,b)}_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-g?n-d+g:0),m=4*(this._cubeSize-f);s.envMap.value=e.texture,s.roughness.value=u,s.mipInt.value=d-t,A(i,p,m,3*f,2*f),r.setRenderTarget(i),r.render(o,b),s.envMap.value=i.texture,s.roughness.value=0,s.mipInt.value=d-n,A(e,p,m,3*f,2*f),r.setRenderTarget(e),r.render(o,b)}_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(t,n,r,i,a,o,s){let c=this._renderer,l=this._blurMaterial;o!==`latitudinal`&&o!==`longitudinal`&&e.kn(`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):v;h>v&&e.Fn(`sigmaRadians, ${a}, is too large and will clip, as it requested ${h} samples when the maximum is set to ${v}`);let _=[],y=0;for(let e=0;e<v;++e){let t=e/m,n=Math.exp(-t*t/2);_.push(n),e===0?y+=n:e<h&&(y+=2*n)}for(let e=0;e<_.length;e++)_[e]=_[e]/y;d.envMap.value=t.texture,d.samples.value=h,d.weights.value=_,d.latitudinal.value=o===`latitudinal`,s&&(d.poleAxis.value=s);let{_lodMax:x}=this;d.dTheta.value=p,d.mipInt.value=x-r;let S=this._sizeLods[i];A(n,3*S*(i>x-g?i-x+g:0),4*(this._cubeSize-S),3*S,2*S),c.setRenderTarget(n),c.render(u,b)}};function O(t){let n=[],r=[],i=[],a=t,o=t-g+1+_.length;for(let s=0;s<o;s++){let o=2**a;n.push(o);let c=1/o;s>t-g?c=_[s-t+g-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 v=new e.p;v.setAttribute(`position`,new e.f(p,3)),v.setAttribute(`uv`,new e.f(m,2)),v.setAttribute(`faceIndex`,new e.f(h,1)),i.push(new e.J(v,null)),a>g&&a--}return{lodMeshes:i,sizeLods:n,sigmas:r}}function k(t,n,r){let i=new e.wn(t,n,r);return i.texture.mapping=306,i.texture.name=`PMREM.cubeUv`,i.scissorTest=!0,i}function A(e,t,n,r,i){e.viewport.set(t,n,r,i),e.scissor.set(t,n,r,i)}function j(t,n,r){return new e.in({name:`PMREMGGXConvolution`,defines:{GGX_SAMPLES:y,CUBEUV_TEXEL_WIDTH:1/n,CUBEUV_TEXEL_HEIGHT:1/r,CUBEUV_MAX_MIP:`${t}.0`},uniforms:{envMap:{value:null},roughness:{value:0},mipInt:{value:0}},vertexShader:P(),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 M(t,n,r){let i=new Float32Array(v),a=new e.
|
|
3771
|
+
`,blending:0,depthTest:!1,depthWrite:!1})}function M(t,n,r){let i=new Float32Array(v),a=new e.xn(0,1,0);return new e.in({name:`SphericalGaussianBlur`,defines:{n:v,CUBEUV_TEXEL_WIDTH:1/n,CUBEUV_TEXEL_HEIGHT:1/r,CUBEUV_MAX_MIP:`${t}.0`},uniforms:{envMap:{value:null},samples:{value:1},weights:{value:i},latitudinal:{value:!1},dTheta:{value:0},mipInt:{value:0},poleAxis:{value:a}},vertexShader:P(),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 N(){return new e
|
|
3831
|
+
`,blending:0,depthTest:!1,depthWrite:!1})}function N(){return new e.in({name:`EquirectangularToCubeUV`,uniforms:{envMap:{value:null}},vertexShader:P(),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 ee(){return new e
|
|
3850
|
+
`,blending:0,depthTest:!1,depthWrite:!1})}function ee(){return new e.in({name:`CubemapToCubeUV`,uniforms:{envMap:{value:null},flipEnvMap:{value:-1}},vertexShader:P(),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 te=class extends e.
|
|
3921
|
+
`}var te=class extends e.wn{constructor(t=1,n={}){super(t,t,n),this.isWebGLCubeRenderTarget=!0;let r={width:t,height:t,depth:1},i=[r,r,r,r,r,r];this.texture=new e.x(i),this._setTextureOptions(n),this.texture.isRenderTargetTexture=!0}fromEquirectangularTexture(t,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 e.
|
|
3956
|
+
`},i=new e.d(5,5,5),a=new e.in({name:`CubemapFromEquirect`,uniforms:e.En(r.uniforms),vertexShader:r.vertexShader,fragmentShader:r.fragmentShader,side:1,blending:0});a.uniforms.tEquirect.value=n;let o=new e.J(i,a),s=n.minFilter;return n.minFilter===1008&&(n.minFilter=e.z),new e.y(1,10,this).update(t,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 F(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 te(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 D(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 D(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(t){let n={};function r(e){if(n[e]!==void 0)return n[e];let r=t.getExtension(e);return n[e]=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(t){let n=r(t);return n===null&&e.In(`WebGLRenderer: `+t+` extension not supported.`),n}}}function re(t,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(e){let r=e.attributes;for(let e in r)n.update(r[e],t.ARRAY_BUFFER)}function u(t){let r=[],i=t.index,a=t.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?e.un:e.ln)(r,1);c.version=s;let l=o.get(t);l&&n.remove(l),o.set(t,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(t){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 t.TRIANGLES:r.triangles+=n/3*a;break;case t.LINES:r.lines+=n/2*a;break;case t.LINE_STRIP:r.lines+=a*(n-1);break;case t.LINE_LOOP:r.lines+=a*n;break;case t.POINTS:r.points+=a*n;break;default:e.kn(`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 I(t,n,r){let i=new WeakMap,a=new e.Sn;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 t=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;t===!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 e.C(_,h,g,d);v.type=e.M,v.needsUpdate=!0;let y=m*4;for(let e=0;e<d;e++){let n=c[e],i=l[e],s=u[e],d=h*g*4*e;for(let e=0;e<n.count;e++){let c=e*y;t===!0&&(a.fromBufferAttribute(n,e),_[d+c+0]=a.x,_[d+c+1]=a.y,_[d+c+2]=a.z,_[d+c+3]=0),r===!0&&(a.fromBufferAttribute(i,e),_[d+c+4]=a.x,_[d+c+5]=a.y,_[d+c+6]=a.z,_[d+c+7]=0),o===!0&&(a.fromBufferAttribute(s,e),_[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 e.bn(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(t,`morphTexture`,o.morphTexture,r);else{let e=0;for(let t=0;t<l.length;t++)e+=l[t];let n=s.morphTargetsRelative?1:1-e;c.getUniforms().setValue(t,`morphTargetBaseInfluence`,n),c.getUniforms().setValue(t,`morphTargetInfluences`,l)}c.getUniforms().setValue(t,`morphTargetsTexture`,f.texture,r),c.getUniforms().setValue(t,`morphTargetsTextureSize`,f.size)}return{update:o}}function oe(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 se={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(t,n,r,i,a,o){let s=new e.wn(n,r,{type:t,depthBuffer:a,stencilBuffer:o,samples:i?4:0,depthTexture:a?new e.D(n,r):void 0}),c=new e.wn(n,r,{type:e.I,depthBuffer:!1,stencilBuffer:!1}),l=new e.p;l.setAttribute(`position`,new e.j([-1,3,0,-1,-1,0,3,-1,0],3)),l.setAttribute(`uv`,new e.j([0,2,0,0,2,0],2));let u=new e.Gt({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 e.
|
|
4002
|
+
}`,depthTest:!1,depthWrite:!1}),d=new e.J(l,u),f=new e.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(t,n){t.toneMapping=g,h=!0;let r=s,i=c;for(let e=0;e<v.length;e++){let a=v[e];if(a.enabled!==!1&&(a.render(t,i,r,n),a.needsSwap!==!1)){let e=r;r=i,i=e}}if(p!==t.outputColorSpace||m!==t.toneMapping){p=t.outputColorSpace,m=t.toneMapping,u.defines={},e._.getTransfer(p)===`srgb`&&(u.defines.SRGB_TRANSFER=``);let n=se[m];n&&(u.defines[n]=``),u.needsUpdate=!0}u.uniforms.tDiffuse.value=r.texture,t.setRenderTarget(_),t.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 L=new e.cn,le=new e.D(1,1),R=new e.C,z=new e.S,ue=new e.x,B=[],V=[],de=new Float32Array(16),fe=new Float32Array(9),pe=new Float32Array(4);function me(e,t,n){let r=e[0];if(r<=0||r>0)return e;let i=t*n,a=B[i];if(a===void 0&&(a=new Float32Array(i),B[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 H(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 U(e,t){for(let n=0,r=t.length;n<r;n++)e[n]=t[n]}function W(e,t){let n=V[t];n===void 0&&(n=new Int32Array(t),V[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(H(n,t))return;e.uniform2fv(this.addr,t),U(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(H(n,t))return;e.uniform3fv(this.addr,t),U(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(H(n,t))return;e.uniform4fv(this.addr,t),U(n,t)}}function ye(e,t){let n=this.cache,r=t.elements;if(r===void 0){if(H(n,t))return;e.uniformMatrix2fv(this.addr,!1,t),U(n,t)}else{if(H(n,r))return;pe.set(r),e.uniformMatrix2fv(this.addr,!1,pe),U(n,r)}}function be(e,t){let n=this.cache,r=t.elements;if(r===void 0){if(H(n,t))return;e.uniformMatrix3fv(this.addr,!1,t),U(n,t)}else{if(H(n,r))return;fe.set(r),e.uniformMatrix3fv(this.addr,!1,fe),U(n,r)}}function xe(e,t){let n=this.cache,r=t.elements;if(r===void 0){if(H(n,t))return;e.uniformMatrix4fv(this.addr,!1,t),U(n,t)}else{if(H(n,r))return;de.set(r),e.uniformMatrix4fv(this.addr,!1,de),U(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(H(n,t))return;e.uniform2iv(this.addr,t),U(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(H(n,t))return;e.uniform3iv(this.addr,t),U(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(H(n,t))return;e.uniform4iv(this.addr,t),U(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(H(n,t))return;e.uniform2uiv(this.addr,t),U(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)&&(e.uniform3ui(this.addr,t.x,t.y,t.z),n[0]=t.x,n[1]=t.y,n[2]=t.z);else{if(H(n,t))return;e.uniform3uiv(this.addr,t),U(n,t)}}function G(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(H(n,t))return;e.uniform4uiv(this.addr,t),U(n,t)}}function ke(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?(le.compareFunction=n.isReversedDepthBuffer()?518:515,a=le):a=L,n.setTexture2D(t||a,i)}function K(e,t,n){let r=this.cache,i=n.allocateTextureUnit();r[0]!==i&&(e.uniform1i(this.addr,i),r[0]=i),n.setTexture3D(t||z,i)}function q(e,t,n){let r=this.cache,i=n.allocateTextureUnit();r[0]!==i&&(e.uniform1i(this.addr,i),r[0]=i),n.setTextureCube(t||ue,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.setTexture2DArray(t||R,i)}function Ae(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 Oe;case 36296:return G;case 35678:case 36198:case 36298:case 36306:case 35682:return ke;case 35679:case 36299:case 36307:return K;case 35680:case 36300:case 36308:case 36293:return q;case 36289:case 36303:case 36311:case 36292:return J}}function Y(e,t){e.uniform1fv(this.addr,t)}function X(e,t){let n=me(t,this.size,2);e.uniform2fv(this.addr,n)}function je(e,t){let n=me(t,this.size,3);e.uniform3fv(this.addr,n)}function Me(e,t){let n=me(t,this.size,4);e.uniform4fv(this.addr,n)}function Ne(e,t){let n=me(t,this.size,4);e.uniformMatrix2fv(this.addr,!1,n)}function Pe(e,t){let n=me(t,this.size,9);e.uniformMatrix3fv(this.addr,!1,n)}function Fe(e,t){let n=me(t,this.size,16);e.uniformMatrix4fv(this.addr,!1,n)}function Ie(e,t){e.uniform1iv(this.addr,t)}function Le(e,t){e.uniform2iv(this.addr,t)}function Re(e,t){e.uniform3iv(this.addr,t)}function ze(e,t){e.uniform4iv(this.addr,t)}function Be(e,t){e.uniform1uiv(this.addr,t)}function Ve(e,t){e.uniform2uiv(this.addr,t)}function He(e,t){e.uniform3uiv(this.addr,t)}function Ue(e,t){e.uniform4uiv(this.addr,t)}function We(e,t,n){let r=this.cache,i=t.length,a=W(n,i);H(r,a)||(e.uniform1iv(this.addr,a),U(r,a));let o;o=this.type===e.SAMPLER_2D_SHADOW?le:L;for(let e=0;e!==i;++e)n.setTexture2D(t[e]||o,a[e])}function Ge(e,t,n){let r=this.cache,i=t.length,a=W(n,i);H(r,a)||(e.uniform1iv(this.addr,a),U(r,a));for(let e=0;e!==i;++e)n.setTexture3D(t[e]||z,a[e])}function Ke(e,t,n){let r=this.cache,i=t.length,a=W(n,i);H(r,a)||(e.uniform1iv(this.addr,a),U(r,a));for(let e=0;e!==i;++e)n.setTextureCube(t[e]||ue,a[e])}function qe(e,t,n){let r=this.cache,i=t.length,a=W(n,i);H(r,a)||(e.uniform1iv(this.addr,a),U(r,a));for(let e=0;e!==i;++e)n.setTexture2DArray(t[e]||R,a[e])}function Je(e){switch(e){case 5126:return Y;case 35664:return X;case 35665:return je;case 35666:return Me;case 35674:return Ne;case 35675:return Pe;case 35676:return Fe;case 5124:case 35670:return Ie;case 35667:case 35671:return Le;case 35668:case 35672:return Re;case 35669:case 35673:return ze;case 5125:return Be;case 36294:return Ve;case 36295:return He;case 36296:return Ue;case 35678:case 36198:case 36298:case 36306:case 35682:return We;case 35679:case 36299:case 36307:return Ge;case 35680:case 36300:case 36308:case 36293:return Ke;case 36289:case 36303:case 36311:case 36292:return qe}}var Z=class{constructor(e,t,n){this.id=e,this.addr=n,this.cache=[],this.type=t.type,this.setValue=Ae(t.type)}},Ye=class{constructor(e,t,n){this.id=e,this.addr=n,this.cache=[],this.type=t.type,this.size=t.size,this.setValue=Je(t.type)}},Xe=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)}}},Ze=/(\w+)(\])?(\[|\.)?/g;function Qe(e,t){e.seq.push(t),e.map[t.id]=t}function $e(e,t,n){let r=e.name,i=r.length;for(Ze.lastIndex=0;;){let a=Ze.exec(r),o=Ze.lastIndex,s=a[1],c=a[2]===`]`,l=a[3];if(c&&(s|=0),l===void 0||l===`[`&&o+2===i){Qe(n,l===void 0?new Z(s,e,t):new Ye(s,e,t));break}{let e=n.map[s];e===void 0&&(e=new Xe(s),Qe(n,e)),n=e}}}var et=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);$e(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 tt(e,t,n){let r=e.createShader(t);return e.shaderSource(r,n),e.compileShader(r),r}var nt=37297,rt=0;function it(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 at=new e.
|
|
4004
|
+
`)}var at=new e.K;function ot(t){e._._getMatrix(at,e._.workingColorSpace,t);let n=`mat3( ${at.elements.map(e=>e.toFixed(4))} )`;switch(e._.getTransfer(t)){case e.U:return[n,`LinearTransferOETF`];case e.nn:return[n,`sRGBTransferOETF`];default:return e.Fn(`WebGLProgram: Unsupported color space: `,t),[n,`LinearTransferOETF`]}}function st(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
|
`+it(e.getShaderSource(t),r)}return i}function ct(e,t){let n=ot(t);return[`vec4 ${e}( vec4 value ) {`,` return ${n[1]}( vec4( value.rgb * ${n[0]}, value.a ) );`,`}`].join(`
|
|
4009
|
-
`)}var lt={1:`Linear`,2:`Reinhard`,3:`Cineon`,4:`ACESFilmic`,6:`AgX`,7:`Neutral`,5:`Custom`};function ut(t,n){let r=lt[n];return r===void 0?(e.
|
|
4009
|
+
`)}var lt={1:`Linear`,2:`Reinhard`,3:`Cineon`,4:`ACESFilmic`,6:`AgX`,7:`Neutral`,5:`Custom`};function ut(t,n){let r=lt[n];return r===void 0?(e.Fn(`WebGLProgram: Unsupported toneMapping:`,n),`vec3 `+t+`( vec3 color ) { return LinearToneMapping( color ); }`):`vec3 `+t+`( vec3 color ) { return `+r+`ToneMapping( color ); }`}var dt=new e.xn;function ft(){return e._.getLuminanceCoefficients(dt),[`float luminance( const in vec3 rgb ) {`,` const vec3 weights = vec3( ${dt.x.toFixed(4)}, ${dt.y.toFixed(4)}, ${dt.z.toFixed(4)} );`,` return dot( weights, rgb );`,`}`].join(`
|
|
4010
4010
|
`)}function pt(e){return[e.extensionClipCullDistance?`#extension GL_ANGLE_clip_cull_distance : require`:``,e.extensionMultiDraw?`#extension GL_ANGLE_multi_draw : require`:``].filter(gt).join(`
|
|
4011
4011
|
`)}function mt(e){let t=[];for(let n in e){let r=e[n];r!==!1&&t.push(`#define `+n+` `+r)}return t.join(`
|
|
4012
|
-
`)}function ht(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 gt(e){return e!==``}function _t(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 vt(e,t){return e.replace(/NUM_CLIPPING_PLANES/g,t.numClippingPlanes).replace(/UNION_CLIPPING_PLANES/g,t.numClippingPlanes-t.numClipIntersection)}var yt=/^[ \t]*#include +<([\w\d./]+)>/gm;function bt(e){return e.replace(yt,St)}var xt=new Map;function St(t,n){let r=a[n];if(r===void 0){let t=xt.get(n);if(t!==void 0)r=a[t],e.
|
|
4012
|
+
`)}function ht(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 gt(e){return e!==``}function _t(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 vt(e,t){return e.replace(/NUM_CLIPPING_PLANES/g,t.numClippingPlanes).replace(/UNION_CLIPPING_PLANES/g,t.numClippingPlanes-t.numClipIntersection)}var yt=/^[ \t]*#include +<([\w\d./]+)>/gm;function bt(e){return e.replace(yt,St)}var xt=new Map;function St(t,n){let r=a[n];if(r===void 0){let t=xt.get(n);if(t!==void 0)r=a[t],e.Fn(`WebGLRenderer: Shader chunk "%s" has been deprecated. Use "%s" instead.`,n,t);else throw Error(`THREE.WebGLProgram: Can not resolve #include <`+n+`>`)}return bt(r)}var Ct=/#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 wt(e){return e.replace(Ct,Tt)}function Tt(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 Et(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=tt(o,o.VERTEX_SHADER,x),w=tt(o,o.FRAGMENT_SHADER,S);o.attachShader(_,C),o.attachShader(_,w),r.index0AttributeName===void 0?r.hasPositionAttribute===!0&&o.bindAttribLocation(_,0,`position`):o.bindAttribLocation(_,0,r.index0AttributeName),o.linkProgram(_);function T(n){if(t.debug.checkShaderErrors){let r=o.getProgramInfoLog(_)||``,i=o.getShaderInfoLog(C)||``,a=o.getShaderInfoLog(w)||``,s=r.trim(),c=i.trim(),l=a.trim(),u=!0,d=!0;if(o.getProgramParameter(_,o.LINK_STATUS)===!1){if(u=!1,typeof t.debug.onShaderError==`function`)t.debug.onShaderError(o,_,C,w);else{let t=st(o,C,`vertex`),r=st(o,w,`fragment`);e.
|
|
4046
|
+
`+y);let x=b+v+c,S=b+y+l,C=tt(o,o.VERTEX_SHADER,x),w=tt(o,o.FRAGMENT_SHADER,S);o.attachShader(_,C),o.attachShader(_,w),r.index0AttributeName===void 0?r.hasPositionAttribute===!0&&o.bindAttribLocation(_,0,`position`):o.bindAttribLocation(_,0,r.index0AttributeName),o.linkProgram(_);function T(n){if(t.debug.checkShaderErrors){let r=o.getProgramInfoLog(_)||``,i=o.getShaderInfoLog(C)||``,a=o.getShaderInfoLog(w)||``,s=r.trim(),c=i.trim(),l=a.trim(),u=!0,d=!0;if(o.getProgramParameter(_,o.LINK_STATUS)===!1){if(u=!1,typeof t.debug.onShaderError==`function`)t.debug.onShaderError(o,_,C,w);else{let t=st(o,C,`vertex`),r=st(o,w,`fragment`);e.kn(`WebGLProgram: Shader Error `+o.getError()+` - VALIDATE_STATUS `+o.getProgramParameter(_,o.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
|
`+t+`
|
|
4053
|
-
`+r)}}else s===``?(c===``||l===``)&&(d=!1):e.An(`WebGLProgram: Program Info Log:`,s);d&&(n.diagnostics={runnable:u,programLog:s,vertexShader:{log:c,prefix:v},fragmentShader:{log:l,prefix:y}})}o.deleteShader(C),o.deleteShader(w),E=new et(o,_),D=ht(o,_)}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=o.getProgramParameter(_,nt)),O},this.destroy=function(){i.releaseStatesOfProgram(this),o.deleteProgram(_),this.program=void 0},this.type=r.shaderType,this.name=r.shaderName,this.id=rt++,this.cacheKey=n,this.usedTimes=1,this.program=_,this.vertexShader=C,this.fragmentShader=w,this}var Lt=0,Rt=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 zt(e),t.set(e,n)),n}},zt=class{constructor(e){this.id=Lt++,this.code=e,this.usedTimes=0}};function Bt(e){return e===1030||e===37490||e===36285}function Vt(t,n,r,i,a,o){let c=new e.N,l=new Rt,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,c,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&&e.An(`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=s[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=t.getRenderTarget(),ee=t.state.buffers.depth.getReversed(),P=_.isInstancedMesh===!0,te=_.isBatchedMesh===!0,ne=!!a.map,re=!!a.matcap,ie=!!C,ae=!!a.aoMap,oe=!!a.lightMap,F=!!a.bumpMap&&a.wireframe===!1,se=!!a.normalMap,ce=!!a.displacementMap,I=!!a.emissiveMap,L=!!a.metalnessMap,le=!!a.roughnessMap,R=a.anisotropy>0,z=a.clearcoat>0,ue=a.dispersion>0,B=a.iridescence>0,V=a.sheen>0,de=a.transmission>0,fe=R&&!!a.anisotropyMap,pe=z&&!!a.clearcoatMap,me=z&&!!a.clearcoatNormalMap,H=z&&!!a.clearcoatRoughnessMap,U=B&&!!a.iridescenceMap,W=B&&!!a.iridescenceThicknessMap,he=V&&!!a.sheenColorMap,ge=V&&!!a.sheenRoughnessMap,_e=!!a.specularMap,ve=!!a.specularColorMap,ye=!!a.specularIntensityMap,be=de&&!!a.transmissionMap,xe=de&&!!a.thicknessMap,Se=!!a.gradientMap,Ce=!!a.alphaMap,we=a.alphaTest>0,Te=!!a.alphaHash,Ee=!!a.extensions,De=0;a.toneMapped&&(N===null||N.isXRRenderTarget===!0)&&(De=t.toneMapping);let Oe={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:te,batchingColor:te&&_._colorsTexture!==null,instancing:P,instancingColor:P&&_.instanceColor!==null,instancingMorph:P&&_.morphTexture!==null,outputColorSpace:N===null?t.outputColorSpace:N.isXRRenderTarget===!0?N.texture.colorSpace:e.f.workingColorSpace,alphaToCoverage:!!a.alphaToCoverage,map:ne,matcap:re,envMap:ie,envMapMode:ie&&C.mapping,envMapCubeUVHeight:w,aoMap:ae,lightMap:oe,bumpMap:F,normalMap:se,displacementMap:ce,emissiveMap:I,normalMapObjectSpace:se&&a.normalMapType===1,normalMapTangentSpace:se&&a.normalMapType===0,packedNormalMap:se&&a.normalMapType===0&&Bt(a.normalMap.format),metalnessMap:L,roughnessMap:le,anisotropy:R,anisotropyMap:fe,clearcoat:z,clearcoatMap:pe,clearcoatNormalMap:me,clearcoatRoughnessMap:H,dispersion:ue,iridescence:B,iridescenceMap:U,iridescenceThicknessMap:W,sheen:V,sheenColorMap:he,sheenRoughnessMap:ge,specularMap:_e,specularColorMap:ve,specularIntensityMap:ye,transmission:de,transmissionMap:be,thicknessMap:xe,gradientMap:Se,opaque:a.transparent===!1&&a.blending===1&&a.alphaToCoverage===!1,alphaMap:Ce,alphaTest:we,alphaHash:Te,combine:a.combine,mapUv:ne&&g(a.map.channel),aoMapUv:ae&&g(a.aoMap.channel),lightMapUv:oe&&g(a.lightMap.channel),bumpMapUv:F&&g(a.bumpMap.channel),normalMapUv:se&&g(a.normalMap.channel),displacementMapUv:ce&&g(a.displacementMap.channel),emissiveMapUv:I&&g(a.emissiveMap.channel),metalnessMapUv:L&&g(a.metalnessMap.channel),roughnessMapUv:le&&g(a.roughnessMap.channel),anisotropyMapUv:fe&&g(a.anisotropyMap.channel),clearcoatMapUv:pe&&g(a.clearcoatMap.channel),clearcoatNormalMapUv:me&&g(a.clearcoatNormalMap.channel),clearcoatRoughnessMapUv:H&&g(a.clearcoatRoughnessMap.channel),iridescenceMapUv:U&&g(a.iridescenceMap.channel),iridescenceThicknessMapUv:W&&g(a.iridescenceThicknessMap.channel),sheenColorMapUv:he&&g(a.sheenColorMap.channel),sheenRoughnessMapUv:ge&&g(a.sheenRoughnessMap.channel),specularMapUv:_e&&g(a.specularMap.channel),specularColorMapUv:ve&&g(a.specularColorMap.channel),specularIntensityMapUv:ye&&g(a.specularIntensityMap.channel),transmissionMapUv:be&&g(a.transmissionMap.channel),thicknessMapUv:xe&&g(a.thicknessMap.channel),alphaMapUv:Ce&&g(a.alphaMap.channel),vertexTangents:!!b.attributes.tangent&&(se||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&&(ne||Ce),fog:!!y,useFog:a.fog===!0,fogExp2:!!y&&y.isFogExp2,flatShading:a.wireframe===!1&&(a.flatShading===!0||b.attributes.normal===void 0&&se===!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:c.directional.length,numPointLights:c.point.length,numSpotLights:c.spot.length,numSpotLightMaps:c.spotLightMap.length,numRectAreaLights:c.rectArea.length,numHemiLights:c.hemi.length,numDirLightShadows:c.directionalShadowMap.length,numPointLightShadows:c.pointShadowMap.length,numSpotLightShadows:c.spotShadowMap.length,numSpotLightShadowsWithMaps:c.numSpotLightShadowsWithMaps,numLightProbes:c.numLightProbes,numLightProbeGrids:v.length,numClippingPlanes:o.numPlanes,numClipIntersection:o.numIntersection,dithering:a.dithering,shadowMapEnabled:t.shadowMap.enabled&&d.length>0,shadowMapType:t.shadowMap.type,toneMapping:De,decodeVideoTexture:ne&&a.map.isVideoTexture===!0&&e.f.getTransfer(a.map.colorSpace)===`srgb`,decodeVideoTextureEmissive:I&&a.emissiveMap.isVideoTexture===!0&&e.f.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:Ee&&a.extensions.clipCullDistance===!0&&r.has(`WEBGL_clip_cull_distance`),extensionMultiDraw:(Ee&&a.extensions.multiDraw===!0||te)&&r.has(`WEBGL_multi_draw`),rendererExtensionParallelShaderCompile:r.has(`KHR_parallel_shader_compile`),customProgramCacheKey:a.customProgramCacheKey()};return Oe.vertexUv1s=u.has(1),Oe.vertexUv2s=u.has(2),Oe.vertexUv3s=u.has(3),u.clear(),Oe}function v(e){let n=[];if(e.shaderID?n.push(e.shaderID):(n.push(e.customVertexShaderID),n.push(e.customFragmentShaderID)),e.defines!==void 0)for(let t in e.defines)n.push(t),n.push(e.defines[t]);return e.isRawShaderMaterial===!1&&(y(n,e),b(n,e),n.push(t.outputColorSpace)),n.push(e.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){c.disableAll(),t.instancing&&c.enable(0),t.instancingColor&&c.enable(1),t.instancingMorph&&c.enable(2),t.matcap&&c.enable(3),t.envMap&&c.enable(4),t.normalMapObjectSpace&&c.enable(5),t.normalMapTangentSpace&&c.enable(6),t.clearcoat&&c.enable(7),t.iridescence&&c.enable(8),t.alphaTest&&c.enable(9),t.vertexColors&&c.enable(10),t.vertexAlphas&&c.enable(11),t.vertexUv1s&&c.enable(12),t.vertexUv2s&&c.enable(13),t.vertexUv3s&&c.enable(14),t.vertexTangents&&c.enable(15),t.anisotropy&&c.enable(16),t.alphaHash&&c.enable(17),t.batching&&c.enable(18),t.dispersion&&c.enable(19),t.batchingColor&&c.enable(20),t.gradientMap&&c.enable(21),t.packedNormalMap&&c.enable(22),t.vertexNormals&&c.enable(23),e.push(c.mask),c.disableAll(),t.fog&&c.enable(0),t.useFog&&c.enable(1),t.flatShading&&c.enable(2),t.logarithmicDepthBuffer&&c.enable(3),t.reversedDepthBuffer&&c.enable(4),t.skinning&&c.enable(5),t.morphTargets&&c.enable(6),t.morphNormals&&c.enable(7),t.morphColors&&c.enable(8),t.premultipliedAlpha&&c.enable(9),t.shadowMapEnabled&&c.enable(10),t.doubleSided&&c.enable(11),t.flipSided&&c.enable(12),t.useDepthPacking&&c.enable(13),t.dithering&&c.enable(14),t.transmission&&c.enable(15),t.sheen&&c.enable(16),t.opaque&&c.enable(17),t.pointsUvs&&c.enable(18),t.decodeVideoTexture&&c.enable(19),t.decodeVideoTextureEmissive&&c.enable(20),t.alphaToCoverage&&c.enable(21),t.numLightProbeGrids>0&&c.enable(22),t.hasPositionAttribute&&c.enable(23),e.push(c.mask)}function x(t){let n=h[t.type],r;if(n){let t=s[n];r=e.on.clone(t.uniforms)}else r=t.uniforms;return r}function S(e,n){let r=f.get(n);return r===void 0?(r=new It(t,n,e,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 Ht(){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 Ut(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 Wt(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 Gt(){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||Ut),r.length>1&&r.sort(t||Wt),i.length>1&&i.sort(t||Wt),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 Kt(){let e=new WeakMap;function t(t,n){let r=e.get(t),i;return r===void 0?(i=new Gt,e.set(t,[i])):n>=r.length?(i=new Gt,r.push(i)):i=r[n],i}function n(){e=new WeakMap}return{get:t,dispose:n}}function qt(){let t={};return{get:function(n){if(t[n.id]!==void 0)return t[n.id];let r;switch(n.type){case`DirectionalLight`:r={direction:new e.gn,color:new e.d};break;case`SpotLight`:r={position:new e.gn,direction:new e.gn,color:new e.d,distance:0,coneCos:0,penumbraCos:0,decay:0};break;case`PointLight`:r={position:new e.gn,color:new e.d,distance:0,decay:0};break;case`HemisphereLight`:r={direction:new e.gn,skyColor:new e.d,groundColor:new e.d};break;case`RectAreaLight`:r={color:new e.d,position:new e.gn,halfWidth:new e.gn,halfHeight:new e.gn}}return t[n.id]=r,r}}}function Jt(){let t={};return{get:function(n){if(t[n.id]!==void 0)return t[n.id];let r;switch(n.type){case`DirectionalLight`:r={shadowIntensity:1,shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new e.hn};break;case`SpotLight`:r={shadowIntensity:1,shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new e.hn};break;case`PointLight`:r={shadowIntensity:1,shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new e.hn,shadowCameraNear:1,shadowCameraFar:1e3}}return t[n.id]=r,r}}}var Yt=0;function Xt(e,t){return(t.castShadow?2:0)-(e.castShadow?2:0)+ +!!t.map-!!e.map}function Zt(t){let n=new qt,r=Jt(),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 t=0;t<9;t++)i.probe.push(new e.gn);let a=new e.gn,s=new e.H,c=new e.H;function l(e){let a=0,s=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;e.sort(Xt);for(let t=0,o=e.length;t<o;t++){let o=e[t],b=o.color,x=o.intensity,S=o.distance,C=null;if(o.shadow&&o.shadow.map&&(C=o.shadow.map.texture.format===1030?o.shadow.map.texture:o.shadow.map.depthTexture||o.shadow.map.texture),o.isAmbientLight)a+=b.r*x,s+=b.g*x,c+=b.b*x;else if(o.isLightProbe){for(let e=0;e<9;e++)i.probe[e].addScaledVector(o.sh.coefficients[e],x);y++}else if(o.isDirectionalLight){let e=n.get(o);if(e.color.copy(o.color).multiplyScalar(o.intensity),o.castShadow){let e=o.shadow,t=r.get(o);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]=o.shadow.matrix,m++}i.directional[l]=e,l++}else if(o.isSpotLight){let e=n.get(o);e.position.setFromMatrixPosition(o.matrixWorld),e.color.copy(b).multiplyScalar(x),e.distance=S,e.coneCos=Math.cos(o.angle),e.penumbraCos=Math.cos(o.angle*(1-o.penumbra)),e.decay=o.decay,i.spot[d]=e;let t=o.shadow;if(o.map&&(i.spotLightMap[_]=o.map,_++,t.updateMatrices(o),o.castShadow&&v++),i.spotLightMatrix[d]=t.matrix,o.castShadow){let e=r.get(o);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(o.isRectAreaLight){let e=n.get(o);e.color.copy(b).multiplyScalar(x),e.halfWidth.set(o.width*.5,0,0),e.halfHeight.set(0,o.height*.5,0),i.rectArea[f]=e,f++}else if(o.isPointLight){let e=n.get(o);if(e.color.copy(o.color).multiplyScalar(o.intensity),e.distance=o.distance,e.decay=o.decay,o.castShadow){let e=o.shadow,t=r.get(o);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]=o.shadow.matrix,h++}i.point[u]=e,u++}else if(o.isHemisphereLight){let e=n.get(o);e.skyColor.copy(o.color).multiplyScalar(x),e.groundColor.copy(o.groundColor).multiplyScalar(x),i.hemi[p]=e,p++}}f>0&&(t.has(`OES_texture_float_linear`)===!0?(i.rectAreaLTC1=o.LTC_FLOAT_1,i.rectAreaLTC2=o.LTC_FLOAT_2):(i.rectAreaLTC1=o.LTC_HALF_1,i.rectAreaLTC2=o.LTC_HALF_2)),i.ambient[0]=a,i.ambient[1]=s,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=Yt++)}function u(e,t){let n=0,r=0,o=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[o];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),o++}else if(f.isRectAreaLight){let e=i.rectArea[l];e.position.setFromMatrixPosition(f.matrixWorld),e.position.applyMatrix4(d),c.identity(),s.copy(f.matrixWorld),s.premultiply(d),c.extractRotation(s),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 Qt(e){let t=new Zt(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 $t(e){let t=new WeakMap;function n(n,r=0){let i=t.get(n),a;return i===void 0?(a=new Qt(e),t.set(n,[a])):r>=i.length?(a=new Qt(e),i.push(a)):a=i[r],a}function r(){t=new WeakMap}return{get:n,dispose:r}}var en=`void main() {
|
|
4053
|
+
`+r)}}else s===``?(c===``||l===``)&&(d=!1):e.Fn(`WebGLProgram: Program Info Log:`,s);d&&(n.diagnostics={runnable:u,programLog:s,vertexShader:{log:c,prefix:v},fragmentShader:{log:l,prefix:y}})}o.deleteShader(C),o.deleteShader(w),E=new et(o,_),D=ht(o,_)}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=o.getProgramParameter(_,nt)),O},this.destroy=function(){i.releaseStatesOfProgram(this),o.deleteProgram(_),this.program=void 0},this.type=r.shaderType,this.name=r.shaderName,this.id=rt++,this.cacheKey=n,this.usedTimes=1,this.program=_,this.vertexShader=C,this.fragmentShader=w,this}var Lt=0,Rt=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 zt(e),t.set(e,n)),n}},zt=class{constructor(e){this.id=Lt++,this.code=e,this.usedTimes=0}};function Bt(e){return e===1030||e===37490||e===36285}function Vt(t,n,r,i,a,o){let c=new e.R,l=new Rt,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,c,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&&e.Fn(`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=s[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=t.getRenderTarget(),ee=t.state.buffers.depth.getReversed(),P=_.isInstancedMesh===!0,te=_.isBatchedMesh===!0,F=!!a.map,ne=!!a.matcap,re=!!C,ie=!!a.aoMap,ae=!!a.lightMap,I=!!a.bumpMap&&a.wireframe===!1,oe=!!a.normalMap,se=!!a.displacementMap,ce=!!a.emissiveMap,L=!!a.metalnessMap,le=!!a.roughnessMap,R=a.anisotropy>0,z=a.clearcoat>0,ue=a.dispersion>0,B=a.iridescence>0,V=a.sheen>0,de=a.transmission>0,fe=R&&!!a.anisotropyMap,pe=z&&!!a.clearcoatMap,me=z&&!!a.clearcoatNormalMap,H=z&&!!a.clearcoatRoughnessMap,U=B&&!!a.iridescenceMap,W=B&&!!a.iridescenceThicknessMap,he=V&&!!a.sheenColorMap,ge=V&&!!a.sheenRoughnessMap,_e=!!a.specularMap,ve=!!a.specularColorMap,ye=!!a.specularIntensityMap,be=de&&!!a.transmissionMap,xe=de&&!!a.thicknessMap,Se=!!a.gradientMap,Ce=!!a.alphaMap,we=a.alphaTest>0,Te=!!a.alphaHash,Ee=!!a.extensions,De=0;a.toneMapped&&(N===null||N.isXRRenderTarget===!0)&&(De=t.toneMapping);let Oe={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:te,batchingColor:te&&_._colorsTexture!==null,instancing:P,instancingColor:P&&_.instanceColor!==null,instancingMorph:P&&_.morphTexture!==null,outputColorSpace:N===null?t.outputColorSpace:N.isXRRenderTarget===!0?N.texture.colorSpace:e._.workingColorSpace,alphaToCoverage:!!a.alphaToCoverage,map:F,matcap:ne,envMap:re,envMapMode:re&&C.mapping,envMapCubeUVHeight:w,aoMap:ie,lightMap:ae,bumpMap:I,normalMap:oe,displacementMap:se,emissiveMap:ce,normalMapObjectSpace:oe&&a.normalMapType===1,normalMapTangentSpace:oe&&a.normalMapType===0,packedNormalMap:oe&&a.normalMapType===0&&Bt(a.normalMap.format),metalnessMap:L,roughnessMap:le,anisotropy:R,anisotropyMap:fe,clearcoat:z,clearcoatMap:pe,clearcoatNormalMap:me,clearcoatRoughnessMap:H,dispersion:ue,iridescence:B,iridescenceMap:U,iridescenceThicknessMap:W,sheen:V,sheenColorMap:he,sheenRoughnessMap:ge,specularMap:_e,specularColorMap:ve,specularIntensityMap:ye,transmission:de,transmissionMap:be,thicknessMap:xe,gradientMap:Se,opaque:a.transparent===!1&&a.blending===1&&a.alphaToCoverage===!1,alphaMap:Ce,alphaTest:we,alphaHash:Te,combine:a.combine,mapUv:F&&g(a.map.channel),aoMapUv:ie&&g(a.aoMap.channel),lightMapUv:ae&&g(a.lightMap.channel),bumpMapUv:I&&g(a.bumpMap.channel),normalMapUv:oe&&g(a.normalMap.channel),displacementMapUv:se&&g(a.displacementMap.channel),emissiveMapUv:ce&&g(a.emissiveMap.channel),metalnessMapUv:L&&g(a.metalnessMap.channel),roughnessMapUv:le&&g(a.roughnessMap.channel),anisotropyMapUv:fe&&g(a.anisotropyMap.channel),clearcoatMapUv:pe&&g(a.clearcoatMap.channel),clearcoatNormalMapUv:me&&g(a.clearcoatNormalMap.channel),clearcoatRoughnessMapUv:H&&g(a.clearcoatRoughnessMap.channel),iridescenceMapUv:U&&g(a.iridescenceMap.channel),iridescenceThicknessMapUv:W&&g(a.iridescenceThicknessMap.channel),sheenColorMapUv:he&&g(a.sheenColorMap.channel),sheenRoughnessMapUv:ge&&g(a.sheenRoughnessMap.channel),specularMapUv:_e&&g(a.specularMap.channel),specularColorMapUv:ve&&g(a.specularColorMap.channel),specularIntensityMapUv:ye&&g(a.specularIntensityMap.channel),transmissionMapUv:be&&g(a.transmissionMap.channel),thicknessMapUv:xe&&g(a.thicknessMap.channel),alphaMapUv:Ce&&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&&(F||Ce),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:c.directional.length,numPointLights:c.point.length,numSpotLights:c.spot.length,numSpotLightMaps:c.spotLightMap.length,numRectAreaLights:c.rectArea.length,numHemiLights:c.hemi.length,numDirLightShadows:c.directionalShadowMap.length,numPointLightShadows:c.pointShadowMap.length,numSpotLightShadows:c.spotShadowMap.length,numSpotLightShadowsWithMaps:c.numSpotLightShadowsWithMaps,numLightProbes:c.numLightProbes,numLightProbeGrids:v.length,numClippingPlanes:o.numPlanes,numClipIntersection:o.numIntersection,dithering:a.dithering,shadowMapEnabled:t.shadowMap.enabled&&d.length>0,shadowMapType:t.shadowMap.type,toneMapping:De,decodeVideoTexture:F&&a.map.isVideoTexture===!0&&e._.getTransfer(a.map.colorSpace)===`srgb`,decodeVideoTextureEmissive:ce&&a.emissiveMap.isVideoTexture===!0&&e._.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:Ee&&a.extensions.clipCullDistance===!0&&r.has(`WEBGL_clip_cull_distance`),extensionMultiDraw:(Ee&&a.extensions.multiDraw===!0||te)&&r.has(`WEBGL_multi_draw`),rendererExtensionParallelShaderCompile:r.has(`KHR_parallel_shader_compile`),customProgramCacheKey:a.customProgramCacheKey()};return Oe.vertexUv1s=u.has(1),Oe.vertexUv2s=u.has(2),Oe.vertexUv3s=u.has(3),u.clear(),Oe}function v(e){let n=[];if(e.shaderID?n.push(e.shaderID):(n.push(e.customVertexShaderID),n.push(e.customFragmentShaderID)),e.defines!==void 0)for(let t in e.defines)n.push(t),n.push(e.defines[t]);return e.isRawShaderMaterial===!1&&(y(n,e),b(n,e),n.push(t.outputColorSpace)),n.push(e.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){c.disableAll(),t.instancing&&c.enable(0),t.instancingColor&&c.enable(1),t.instancingMorph&&c.enable(2),t.matcap&&c.enable(3),t.envMap&&c.enable(4),t.normalMapObjectSpace&&c.enable(5),t.normalMapTangentSpace&&c.enable(6),t.clearcoat&&c.enable(7),t.iridescence&&c.enable(8),t.alphaTest&&c.enable(9),t.vertexColors&&c.enable(10),t.vertexAlphas&&c.enable(11),t.vertexUv1s&&c.enable(12),t.vertexUv2s&&c.enable(13),t.vertexUv3s&&c.enable(14),t.vertexTangents&&c.enable(15),t.anisotropy&&c.enable(16),t.alphaHash&&c.enable(17),t.batching&&c.enable(18),t.dispersion&&c.enable(19),t.batchingColor&&c.enable(20),t.gradientMap&&c.enable(21),t.packedNormalMap&&c.enable(22),t.vertexNormals&&c.enable(23),e.push(c.mask),c.disableAll(),t.fog&&c.enable(0),t.useFog&&c.enable(1),t.flatShading&&c.enable(2),t.logarithmicDepthBuffer&&c.enable(3),t.reversedDepthBuffer&&c.enable(4),t.skinning&&c.enable(5),t.morphTargets&&c.enable(6),t.morphNormals&&c.enable(7),t.morphColors&&c.enable(8),t.premultipliedAlpha&&c.enable(9),t.shadowMapEnabled&&c.enable(10),t.doubleSided&&c.enable(11),t.flipSided&&c.enable(12),t.useDepthPacking&&c.enable(13),t.dithering&&c.enable(14),t.transmission&&c.enable(15),t.sheen&&c.enable(16),t.opaque&&c.enable(17),t.pointsUvs&&c.enable(18),t.decodeVideoTexture&&c.enable(19),t.decodeVideoTextureEmissive&&c.enable(20),t.alphaToCoverage&&c.enable(21),t.numLightProbeGrids>0&&c.enable(22),t.hasPositionAttribute&&c.enable(23),e.push(c.mask)}function x(t){let n=h[t.type],r;if(n){let t=s[n];r=e.dn.clone(t.uniforms)}else r=t.uniforms;return r}function S(e,n){let r=f.get(n);return r===void 0?(r=new It(t,n,e,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 Ht(){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 Ut(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 Wt(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 Gt(){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||Ut),r.length>1&&r.sort(t||Wt),i.length>1&&i.sort(t||Wt),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 Kt(){let e=new WeakMap;function t(t,n){let r=e.get(t),i;return r===void 0?(i=new Gt,e.set(t,[i])):n>=r.length?(i=new Gt,r.push(i)):i=r[n],i}function n(){e=new WeakMap}return{get:t,dispose:n}}function qt(){let t={};return{get:function(n){if(t[n.id]!==void 0)return t[n.id];let r;switch(n.type){case`DirectionalLight`:r={direction:new e.xn,color:new e.g};break;case`SpotLight`:r={position:new e.xn,direction:new e.xn,color:new e.g,distance:0,coneCos:0,penumbraCos:0,decay:0};break;case`PointLight`:r={position:new e.xn,color:new e.g,distance:0,decay:0};break;case`HemisphereLight`:r={direction:new e.xn,skyColor:new e.g,groundColor:new e.g};break;case`RectAreaLight`:r={color:new e.g,position:new e.xn,halfWidth:new e.xn,halfHeight:new e.xn}}return t[n.id]=r,r}}}function Jt(){let t={};return{get:function(n){if(t[n.id]!==void 0)return t[n.id];let r;switch(n.type){case`DirectionalLight`:r={shadowIntensity:1,shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new e.bn};break;case`SpotLight`:r={shadowIntensity:1,shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new e.bn};break;case`PointLight`:r={shadowIntensity:1,shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new e.bn,shadowCameraNear:1,shadowCameraFar:1e3}}return t[n.id]=r,r}}}var Yt=0;function Xt(e,t){return(t.castShadow?2:0)-(e.castShadow?2:0)+ +!!t.map-!!e.map}function Zt(t){let n=new qt,r=Jt(),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 t=0;t<9;t++)i.probe.push(new e.xn);let a=new e.xn,s=new e.q,c=new e.q;function l(e){let a=0,s=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;e.sort(Xt);for(let t=0,o=e.length;t<o;t++){let o=e[t],b=o.color,x=o.intensity,S=o.distance,C=null;if(o.shadow&&o.shadow.map&&(C=o.shadow.map.texture.format===1030?o.shadow.map.texture:o.shadow.map.depthTexture||o.shadow.map.texture),o.isAmbientLight)a+=b.r*x,s+=b.g*x,c+=b.b*x;else if(o.isLightProbe){for(let e=0;e<9;e++)i.probe[e].addScaledVector(o.sh.coefficients[e],x);y++}else if(o.isDirectionalLight){let e=n.get(o);if(e.color.copy(o.color).multiplyScalar(o.intensity),o.castShadow){let e=o.shadow,t=r.get(o);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]=o.shadow.matrix,m++}i.directional[l]=e,l++}else if(o.isSpotLight){let e=n.get(o);e.position.setFromMatrixPosition(o.matrixWorld),e.color.copy(b).multiplyScalar(x),e.distance=S,e.coneCos=Math.cos(o.angle),e.penumbraCos=Math.cos(o.angle*(1-o.penumbra)),e.decay=o.decay,i.spot[d]=e;let t=o.shadow;if(o.map&&(i.spotLightMap[_]=o.map,_++,t.updateMatrices(o),o.castShadow&&v++),i.spotLightMatrix[d]=t.matrix,o.castShadow){let e=r.get(o);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(o.isRectAreaLight){let e=n.get(o);e.color.copy(b).multiplyScalar(x),e.halfWidth.set(o.width*.5,0,0),e.halfHeight.set(0,o.height*.5,0),i.rectArea[f]=e,f++}else if(o.isPointLight){let e=n.get(o);if(e.color.copy(o.color).multiplyScalar(o.intensity),e.distance=o.distance,e.decay=o.decay,o.castShadow){let e=o.shadow,t=r.get(o);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]=o.shadow.matrix,h++}i.point[u]=e,u++}else if(o.isHemisphereLight){let e=n.get(o);e.skyColor.copy(o.color).multiplyScalar(x),e.groundColor.copy(o.groundColor).multiplyScalar(x),i.hemi[p]=e,p++}}f>0&&(t.has(`OES_texture_float_linear`)===!0?(i.rectAreaLTC1=o.LTC_FLOAT_1,i.rectAreaLTC2=o.LTC_FLOAT_2):(i.rectAreaLTC1=o.LTC_HALF_1,i.rectAreaLTC2=o.LTC_HALF_2)),i.ambient[0]=a,i.ambient[1]=s,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=Yt++)}function u(e,t){let n=0,r=0,o=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[o];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),o++}else if(f.isRectAreaLight){let e=i.rectArea[l];e.position.setFromMatrixPosition(f.matrixWorld),e.position.applyMatrix4(d),c.identity(),s.copy(f.matrixWorld),s.premultiply(d),c.extractRotation(s),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 Qt(e){let t=new Zt(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 $t(e){let t=new WeakMap;function n(n,r=0){let i=t.get(n),a;return i===void 0?(a=new Qt(e),t.set(n,[a])):r>=i.length?(a=new Qt(e),i.push(a)):a=i[r],a}function r(){t=new WeakMap}return{get:n,dispose:r}}var en=`void main() {
|
|
4054
4054
|
gl_Position = vec4( position, 1.0 );
|
|
4055
4055
|
}`,tn=`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
|
-
}`,nn=[new e.gn(1,0,0),new e.gn(-1,0,0),new e.gn(0,1,0),new e.gn(0,-1,0),new e.gn(0,0,1),new e.gn(0,0,-1)],rn=[new e.gn(0,-1,0),new e.gn(0,-1,0),new e.gn(0,0,1),new e.gn(0,0,-1),new e.gn(0,-1,0),new e.gn(0,-1,0)],an=new e.H,on=new e.gn,sn=new e.gn;function cn(t,n,r){let i=new e.O,a=new e.hn,o=new e.hn,s=new e._n,c=new e.G,l=new e.K,u={},d=r.maxTextureSize,f={0:1,1:0,2:2},p=new e.$t({defines:{VSM_SAMPLES:8},uniforms:{shadow_pass:{value:null},resolution:{value:new e.hn},radius:{value:4}},vertexShader:en,fragmentShader:tn}),m=p.clone();m.defines.HORIZONTAL_PASS=1;let h=new e.c;h.setAttribute(`position`,new e.s(new Float32Array([-1,-1,.5,3,-1,.5,-1,3,.5]),3));let g=new e.U(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&&(e.An(`WebGLShadowMap: PCFSoftShadowMap has been deprecated. Using PCFShadowMap instead.`),this.type=1);let l=t.getRenderTarget(),u=t.getActiveCubeFace(),f=t.getActiveMipmapLevel(),p=t.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){e.An(`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=t.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){e.An(`WebGLShadowMap: VSM shadow maps are not supported for PointLights. Use PCF or BasicShadowMap instead.`);continue}f.map=new e.yn(a.x,a.y,{format:e.Rt,type:e.j,minFilter:e.P,magFilter:e.P,generateMipmaps:!1}),f.map.texture.name=u.name+`.shadowMap`,f.map.depthTexture=new e.S(a.x,a.y,e.D),f.map.depthTexture.name=u.name+`.shadowMapDepth`,f.map.depthTexture.format=e.b,f.map.depthTexture.compareFunction=null,f.map.depthTexture.minFilter=e.J,f.map.depthTexture.magFilter=e.J}else u.isPointLight?(f.map=new te(a.x),f.map.depthTexture=new e.h(a.x,e.dn)):(f.map=new e.yn(a.x,a.y),f.map.depthTexture=new e.S(a.x,a.y,e.dn)),f.map.depthTexture.name=u.name+`.shadowMap`,f.map.depthTexture.format=e.b,this.type===1?(f.map.depthTexture.compareFunction=g?518:515,f.map.depthTexture.minFilter=e.P,f.map.depthTexture.magFilter=e.P):(f.map.depthTexture.compareFunction=null,f.map.depthTexture.minFilter=e.J,f.map.depthTexture.magFilter=e.J);f.camera.updateProjectionMatrix()}let _=f.map.isWebGLCubeRenderTarget?6:1;for(let e=0;e<_;e++){if(f.map.isWebGLCubeRenderTarget)t.setRenderTarget(f.map,e),t.clear();else{e===0&&(t.setRenderTarget(f.map),t.clear());let n=f.getViewport(e);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 t=f.camera,n=f.matrix,r=u.distance||t.far;r!==t.far&&(t.far=r,t.updateProjectionMatrix()),on.setFromMatrixPosition(u.matrixWorld),t.position.copy(on),sn.copy(t.position),sn.add(nn[e]),t.up.copy(rn[e]),t.lookAt(sn),t.updateMatrixWorld(),n.makeTranslation(-on.x,-on.y,-on.z),an.multiplyMatrices(t.projectionMatrix,t.matrixWorldInverse),f._frustum.setFromProjectionMatrix(an,t.coordinateSystem,t.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,t.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 e.yn(a.x,a.y,{format:e.Rt,type:e.j})),p.uniforms.shadow_pass.value=r.map.depthTexture,p.uniforms.resolution.value=r.mapSize,p.uniforms.radius.value=r.radius,t.setRenderTarget(r.mapPass),t.clear(),t.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,t.setRenderTarget(r.map),t.clear(),t.renderBufferDirect(i,null,o,m,g,null)}function b(e,n,r,i){let a=null,o=r.isPointLight===!0?e.customDistanceMaterial:e.customDepthMaterial;if(o!==void 0)a=o;else if(a=r.isPointLight===!0?l:c,t.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 e=t.properties.get(a);e.light=r}return a}function x(e,r,a,o,s){if(e.visible===!1)return;if(e.layers.test(r.layers)&&(e.isMesh||e.isLine||e.isPoints)&&(e.castShadow||e.receiveShadow&&s===3)&&(!e.frustumCulled||i.intersectsObject(e))){e.modelViewMatrix.multiplyMatrices(a.matrixWorldInverse,e.matrixWorld);let i=n.update(e),c=e.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(e,d,o,s);e.onBeforeShadow(t,e,r,a,i,n,u),t.renderBufferDirect(a,null,i,n,e,u),e.onAfterShadow(t,e,r,a,i,n,u)}}}else if(c.visible){let n=b(e,c,o,s);e.onBeforeShadow(t,e,r,a,i,n,null),t.renderBufferDirect(a,null,i,n,e,null),e.onAfterShadow(t,e,r,a,i,n,null)}}let c=e.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 ln(t,n){function r(){let n=!1,r=new e._n,i=null,a=new e._n(0,0,0,0);return{setMask:function(e){i!==e&&!n&&(t.colorMask(e,e,e,e),i=e)},setLocked:function(e){n=e},setClear:function(e,n,i,o,s){s===!0&&(e*=o,n*=o,i*=o),r.set(e,n,i,o),a.equals(r)===!1&&(t.clearColor(e,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(e){e?I(t.DEPTH_TEST):L(t.DEPTH_TEST)},setMask:function(e){a!==e&&!r&&(t.depthMask(e),a=e)},setFunc:function(n){if(i&&(n=e.Gt[n]),o!==n){switch(n){case 0:t.depthFunc(t.NEVER);break;case 1:t.depthFunc(t.ALWAYS);break;case 2:t.depthFunc(t.LESS);break;case 3:t.depthFunc(t.LEQUAL);break;case 4:t.depthFunc(t.EQUAL);break;case 5:t.depthFunc(t.GEQUAL);break;case 6:t.depthFunc(t.GREATER);break;case 7:t.depthFunc(t.NOTEQUAL);break;default:t.depthFunc(t.LEQUAL)}o=n}},setLocked:function(e){r=e},setClear:function(e){s!==e&&(s=e,i&&(e=1-e),t.clearDepth(e))},reset:function(){r=!1,a=null,o=null,s=null,i=!1}}}function a(){let e=!1,n=null,r=null,i=null,a=null,o=null,s=null,c=null,l=null;return{setTest:function(n){e||(n?I(t.STENCIL_TEST):L(t.STENCIL_TEST))},setMask:function(r){n!==r&&!e&&(t.stencilMask(r),n=r)},setFunc:function(e,n,o){(r!==e||i!==n||a!==o)&&(t.stencilFunc(e,n,o),r=e,i=n,a=o)},setOp:function(e,n,r){(o!==e||s!==n||c!==r)&&(t.stencilOp(e,n,r),o=e,s=n,c=r)},setLocked:function(t){e=t},setClear:function(e){l!==e&&(t.clearStencil(e),l=e)},reset:function(){e=!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 e.d(0,0,0),E=0,D=!1,O=null,k=null,A=null,j=null,M=null,N=t.getParameter(t.MAX_COMBINED_TEXTURE_IMAGE_UNITS),ee=!1,P=0,te=t.getParameter(t.VERSION);te.indexOf(`WebGL`)===-1?te.indexOf(`OpenGL ES`)!==-1&&(P=parseFloat(/^OpenGL ES (\d)/.exec(te)[1]),ee=P>=2):(P=parseFloat(/^WebGL (\d)/.exec(te)[1]),ee=P>=1);let ne=null,re={},ie=t.getParameter(t.SCISSOR_BOX),ae=t.getParameter(t.VIEWPORT),oe=new e._n().fromArray(ie),F=new e._n().fromArray(ae);function se(e,n,r,i){let a=new Uint8Array(4),o=t.createTexture();t.bindTexture(e,o),t.texParameteri(e,t.TEXTURE_MIN_FILTER,t.NEAREST),t.texParameteri(e,t.TEXTURE_MAG_FILTER,t.NEAREST);for(let o=0;o<r;o++)e===t.TEXTURE_3D||e===t.TEXTURE_2D_ARRAY?t.texImage3D(n,0,t.RGBA,1,1,i,0,t.RGBA,t.UNSIGNED_BYTE,a):t.texImage2D(n+o,0,t.RGBA,1,1,0,t.RGBA,t.UNSIGNED_BYTE,a);return o}let ce={};ce[t.TEXTURE_2D]=se(t.TEXTURE_2D,t.TEXTURE_2D,1),ce[t.TEXTURE_CUBE_MAP]=se(t.TEXTURE_CUBE_MAP,t.TEXTURE_CUBE_MAP_POSITIVE_X,6),ce[t.TEXTURE_2D_ARRAY]=se(t.TEXTURE_2D_ARRAY,t.TEXTURE_2D_ARRAY,1,1),ce[t.TEXTURE_3D]=se(t.TEXTURE_3D,t.TEXTURE_3D,1,1),o.setClear(0,0,0,1),s.setClear(1),c.setClear(0),I(t.DEPTH_TEST),s.setFunc(3),fe(!1),pe(1),I(t.CULL_FACE),V(0);function I(e){d[e]!==!0&&(t.enable(e),d[e]=!0)}function L(e){d[e]!==!1&&(t.disable(e),d[e]=!1)}function le(e,n){return p[e]!==n&&(t.bindFramebuffer(e,n),p[e]=n,e===t.DRAW_FRAMEBUFFER&&(p[t.FRAMEBUFFER]=n),e===t.FRAMEBUFFER&&(p[t.DRAW_FRAMEBUFFER]=n),!0)}function R(e,n){let r=h,i=!1;if(e){r=m.get(n),r===void 0&&(r=[],m.set(n,r));let a=e.textures;if(r.length!==a.length||r[0]!==t.COLOR_ATTACHMENT0){for(let e=0,n=a.length;e<n;e++)r[e]=t.COLOR_ATTACHMENT0+e;r.length=a.length,i=!0}}else r[0]!==t.BACK&&(r[0]=t.BACK,i=!0);i&&t.drawBuffers(r)}function z(e){return g!==e&&(t.useProgram(e),g=e,!0)}let ue={100:t.FUNC_ADD,101:t.FUNC_SUBTRACT,102:t.FUNC_REVERSE_SUBTRACT};ue[103]=t.MIN,ue[104]=t.MAX;let B={200:t.ZERO,201:t.ONE,202:t.SRC_COLOR,204:t.SRC_ALPHA,210:t.SRC_ALPHA_SATURATE,208:t.DST_COLOR,206:t.DST_ALPHA,203:t.ONE_MINUS_SRC_COLOR,205:t.ONE_MINUS_SRC_ALPHA,209:t.ONE_MINUS_DST_COLOR,207:t.ONE_MINUS_DST_ALPHA,211:t.CONSTANT_COLOR,212:t.ONE_MINUS_CONSTANT_COLOR,213:t.CONSTANT_ALPHA,214:t.ONE_MINUS_CONSTANT_ALPHA};function V(n,r,i,a,o,s,c,l,u,d){if(n===0){_===!0&&(L(t.BLEND),_=!1);return}if(_===!1&&(I(t.BLEND),_=!0),n!==5){if(n!==v||d!==D){if((y!==100||S!==100)&&(t.blendEquation(t.FUNC_ADD),y=100,S=100),d)switch(n){case 1:t.blendFuncSeparate(t.ONE,t.ONE_MINUS_SRC_ALPHA,t.ONE,t.ONE_MINUS_SRC_ALPHA);break;case 2:t.blendFunc(t.ONE,t.ONE);break;case 3:t.blendFuncSeparate(t.ZERO,t.ONE_MINUS_SRC_COLOR,t.ZERO,t.ONE);break;case 4:t.blendFuncSeparate(t.DST_COLOR,t.ONE_MINUS_SRC_ALPHA,t.ZERO,t.ONE);break;default:e.wn(`WebGLState: Invalid blending: `,n)}else switch(n){case 1:t.blendFuncSeparate(t.SRC_ALPHA,t.ONE_MINUS_SRC_ALPHA,t.ONE,t.ONE_MINUS_SRC_ALPHA);break;case 2:t.blendFuncSeparate(t.SRC_ALPHA,t.ONE,t.ONE,t.ONE);break;case 3:e.wn(`WebGLState: SubtractiveBlending requires material.premultipliedAlpha = true`);break;case 4:e.wn(`WebGLState: MultiplyBlending requires material.premultipliedAlpha = true`);break;default:e.wn(`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)&&(t.blendEquationSeparate(ue[r],ue[o]),y=r,S=o),(i!==b||a!==x||s!==C||c!==w)&&(t.blendFuncSeparate(B[i],B[a],B[s],B[c]),b=i,x=a,C=s,w=c),(l.equals(T)===!1||u!==E)&&(t.blendColor(l.r,l.g,l.b,u),T.copy(l),E=u),v=n,D=!1}function de(e,n){e.side===2?L(t.CULL_FACE):I(t.CULL_FACE);let r=e.side===1;n&&(r=!r),fe(r),e.blending===1&&e.transparent===!1?V(0):V(e.blending,e.blendEquation,e.blendSrc,e.blendDst,e.blendEquationAlpha,e.blendSrcAlpha,e.blendDstAlpha,e.blendColor,e.blendAlpha,e.premultipliedAlpha),s.setFunc(e.depthFunc),s.setTest(e.depthTest),s.setMask(e.depthWrite),o.setMask(e.colorWrite);let i=e.stencilWrite;c.setTest(i),i&&(c.setMask(e.stencilWriteMask),c.setFunc(e.stencilFunc,e.stencilRef,e.stencilFuncMask),c.setOp(e.stencilFail,e.stencilZFail,e.stencilZPass)),H(e.polygonOffset,e.polygonOffsetFactor,e.polygonOffsetUnits),e.alphaToCoverage===!0?I(t.SAMPLE_ALPHA_TO_COVERAGE):L(t.SAMPLE_ALPHA_TO_COVERAGE)}function fe(e){O!==e&&(e?t.frontFace(t.CW):t.frontFace(t.CCW),O=e)}function pe(e){e===0?L(t.CULL_FACE):(I(t.CULL_FACE),e!==k&&(e===1?t.cullFace(t.BACK):e===2?t.cullFace(t.FRONT):t.cullFace(t.FRONT_AND_BACK))),k=e}function me(e){e!==A&&(ee&&t.lineWidth(e),A=e)}function H(e,n,r){e?(I(t.POLYGON_OFFSET_FILL),(j!==n||M!==r)&&(j=n,M=r,s.getReversed()&&(n=-n),t.polygonOffset(n,r))):L(t.POLYGON_OFFSET_FILL)}function U(e){e?I(t.SCISSOR_TEST):L(t.SCISSOR_TEST)}function W(e){e===void 0&&(e=t.TEXTURE0+N-1),ne!==e&&(t.activeTexture(e),ne=e)}function he(e,n,r){r===void 0&&(r=ne===null?t.TEXTURE0+N-1:ne);let i=re[r];i===void 0&&(i={type:void 0,texture:void 0},re[r]=i),(i.type!==e||i.texture!==n)&&(ne!==r&&(t.activeTexture(r),ne=r),t.bindTexture(e,n||ce[e]),i.type=e,i.texture=n)}function ge(){let e=re[ne];e!==void 0&&e.type!==void 0&&(t.bindTexture(e.type,null),e.type=void 0,e.texture=void 0)}function _e(){try{t.compressedTexImage2D(...arguments)}catch(t){e.wn(`WebGLState:`,t)}}function ve(){try{t.compressedTexImage3D(...arguments)}catch(t){e.wn(`WebGLState:`,t)}}function ye(){try{t.texSubImage2D(...arguments)}catch(t){e.wn(`WebGLState:`,t)}}function be(){try{t.texSubImage3D(...arguments)}catch(t){e.wn(`WebGLState:`,t)}}function xe(){try{t.compressedTexSubImage2D(...arguments)}catch(t){e.wn(`WebGLState:`,t)}}function Se(){try{t.compressedTexSubImage3D(...arguments)}catch(t){e.wn(`WebGLState:`,t)}}function Ce(){try{t.texStorage2D(...arguments)}catch(t){e.wn(`WebGLState:`,t)}}function we(){try{t.texStorage3D(...arguments)}catch(t){e.wn(`WebGLState:`,t)}}function Te(){try{t.texImage2D(...arguments)}catch(t){e.wn(`WebGLState:`,t)}}function Ee(){try{t.texImage3D(...arguments)}catch(t){e.wn(`WebGLState:`,t)}}function De(e){return f[e]===void 0?t.getParameter(e):f[e]}function Oe(e,n){f[e]!==n&&(t.pixelStorei(e,n),f[e]=n)}function G(e){oe.equals(e)===!1&&(t.scissor(e.x,e.y,e.z,e.w),oe.copy(e))}function ke(e){F.equals(e)===!1&&(t.viewport(e.x,e.y,e.z,e.w),F.copy(e))}function K(e,n){let r=u.get(n);r===void 0&&(r=new WeakMap,u.set(n,r));let i=r.get(e);i===void 0&&(i=t.getUniformBlockIndex(n,e.name),r.set(e,i))}function q(e,n){let r=u.get(n).get(e);l.get(n)!==r&&(t.uniformBlockBinding(n,r,e.__bindingPointIndex),l.set(n,r))}function J(){t.disable(t.BLEND),t.disable(t.CULL_FACE),t.disable(t.DEPTH_TEST),t.disable(t.POLYGON_OFFSET_FILL),t.disable(t.SCISSOR_TEST),t.disable(t.STENCIL_TEST),t.disable(t.SAMPLE_ALPHA_TO_COVERAGE),t.blendEquation(t.FUNC_ADD),t.blendFunc(t.ONE,t.ZERO),t.blendFuncSeparate(t.ONE,t.ZERO,t.ONE,t.ZERO),t.blendColor(0,0,0,0),t.colorMask(!0,!0,!0,!0),t.clearColor(0,0,0,0),t.depthMask(!0),t.depthFunc(t.LESS),s.setReversed(!1),t.clearDepth(1),t.stencilMask(4294967295),t.stencilFunc(t.ALWAYS,0,4294967295),t.stencilOp(t.KEEP,t.KEEP,t.KEEP),t.clearStencil(0),t.cullFace(t.BACK),t.frontFace(t.CCW),t.polygonOffset(0,0),t.activeTexture(t.TEXTURE0),t.bindFramebuffer(t.FRAMEBUFFER,null),t.bindFramebuffer(t.DRAW_FRAMEBUFFER,null),t.bindFramebuffer(t.READ_FRAMEBUFFER,null),t.useProgram(null),t.lineWidth(1),t.scissor(0,0,t.canvas.width,t.canvas.height),t.viewport(0,0,t.canvas.width,t.canvas.height),t.pixelStorei(t.PACK_ALIGNMENT,4),t.pixelStorei(t.UNPACK_ALIGNMENT,4),t.pixelStorei(t.UNPACK_FLIP_Y_WEBGL,!1),t.pixelStorei(t.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!1),t.pixelStorei(t.UNPACK_COLORSPACE_CONVERSION_WEBGL,t.BROWSER_DEFAULT_WEBGL),t.pixelStorei(t.PACK_ROW_LENGTH,0),t.pixelStorei(t.PACK_SKIP_PIXELS,0),t.pixelStorei(t.PACK_SKIP_ROWS,0),t.pixelStorei(t.UNPACK_ROW_LENGTH,0),t.pixelStorei(t.UNPACK_IMAGE_HEIGHT,0),t.pixelStorei(t.UNPACK_SKIP_PIXELS,0),t.pixelStorei(t.UNPACK_SKIP_ROWS,0),t.pixelStorei(t.UNPACK_SKIP_IMAGES,0),d={},f={},ne=null,re={},p={},m=new WeakMap,h=[],g=null,_=!1,v=null,y=null,b=null,x=null,S=null,C=null,w=null,T=new e.d(0,0,0),E=0,D=!1,O=null,k=null,A=null,j=null,M=null,oe.set(0,0,t.canvas.width,t.canvas.height),F.set(0,0,t.canvas.width,t.canvas.height),o.reset(),s.reset(),c.reset()}return{buffers:{color:o,depth:s,stencil:c},enable:I,disable:L,bindFramebuffer:le,drawBuffers:R,useProgram:z,setBlending:V,setMaterial:de,setFlipSided:fe,setCullFace:pe,setLineWidth:me,setPolygonOffset:H,setScissorTest:U,activeTexture:W,bindTexture:he,unbindTexture:ge,compressedTexImage2D:_e,compressedTexImage3D:ve,texImage2D:Te,texImage3D:Ee,pixelStorei:Oe,getParameter:De,updateUBOMapping:K,uniformBlockBinding:q,texStorage2D:Ce,texStorage3D:we,texSubImage2D:ye,texSubImage3D:be,compressedTexSubImage2D:xe,compressedTexSubImage3D:Se,scissor:G,viewport:ke,reset:J}}function un(t,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 e.hn,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(t,n){return h?new OffscreenCanvas(t,n):e.Cn(`canvas`)}function _(t,n,r){let i=1,a=_e(t);if((a.width>r||a.height>r)&&(i=r/Math.max(a.width,a.height)),i<1){if(typeof HTMLImageElement<`u`&&t instanceof HTMLImageElement||typeof HTMLCanvasElement<`u`&&t instanceof HTMLCanvasElement||typeof ImageBitmap<`u`&&t instanceof ImageBitmap||typeof VideoFrame<`u`&&t 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(t,0,0,r,o),e.An(`WebGLRenderer: Texture has been resized from (`+a.width+`x`+a.height+`) to (`+r+`x`+o+`).`),s}return`data`in t&&e.An(`WebGLRenderer: Image in DataTexture is too big (`+a.width+`x`+a.height+`).`),t}return t}function v(e){return e.generateMipmaps}function y(e){t.generateMipmap(e)}function b(e){return e.isWebGLCubeRenderTarget?t.TEXTURE_CUBE_MAP:e.isWebGL3DRenderTarget?t.TEXTURE_3D:e.isWebGLArrayRenderTarget||e.isCompressedArrayTexture?t.TEXTURE_2D_ARRAY:t.TEXTURE_2D}function x(r,i,a,o,s,c=!1){if(r!==null){if(t[r]!==void 0)return t[r];e.An(`WebGLRenderer: Attempt to use non-existing WebGL internal format '`+r+`'`)}let l;o&&(l=n.get(`EXT_texture_norm16`),l||e.An(`WebGLRenderer: Unable to use normalized textures without EXT_texture_norm16 extension`));let u=i;if(i===t.RED&&(a===t.FLOAT&&(u=t.R32F),a===t.HALF_FLOAT&&(u=t.R16F),a===t.UNSIGNED_BYTE&&(u=t.R8),a===t.UNSIGNED_SHORT&&l&&(u=l.R16_EXT),a===t.SHORT&&l&&(u=l.R16_SNORM_EXT)),i===t.RED_INTEGER&&(a===t.UNSIGNED_BYTE&&(u=t.R8UI),a===t.UNSIGNED_SHORT&&(u=t.R16UI),a===t.UNSIGNED_INT&&(u=t.R32UI),a===t.BYTE&&(u=t.R8I),a===t.SHORT&&(u=t.R16I),a===t.INT&&(u=t.R32I)),i===t.RG&&(a===t.FLOAT&&(u=t.RG32F),a===t.HALF_FLOAT&&(u=t.RG16F),a===t.UNSIGNED_BYTE&&(u=t.RG8),a===t.UNSIGNED_SHORT&&l&&(u=l.RG16_EXT),a===t.SHORT&&l&&(u=l.RG16_SNORM_EXT)),i===t.RG_INTEGER&&(a===t.UNSIGNED_BYTE&&(u=t.RG8UI),a===t.UNSIGNED_SHORT&&(u=t.RG16UI),a===t.UNSIGNED_INT&&(u=t.RG32UI),a===t.BYTE&&(u=t.RG8I),a===t.SHORT&&(u=t.RG16I),a===t.INT&&(u=t.RG32I)),i===t.RGB_INTEGER&&(a===t.UNSIGNED_BYTE&&(u=t.RGB8UI),a===t.UNSIGNED_SHORT&&(u=t.RGB16UI),a===t.UNSIGNED_INT&&(u=t.RGB32UI),a===t.BYTE&&(u=t.RGB8I),a===t.SHORT&&(u=t.RGB16I),a===t.INT&&(u=t.RGB32I)),i===t.RGBA_INTEGER&&(a===t.UNSIGNED_BYTE&&(u=t.RGBA8UI),a===t.UNSIGNED_SHORT&&(u=t.RGBA16UI),a===t.UNSIGNED_INT&&(u=t.RGBA32UI),a===t.BYTE&&(u=t.RGBA8I),a===t.SHORT&&(u=t.RGBA16I),a===t.INT&&(u=t.RGBA32I)),i===t.RGB&&(a===t.UNSIGNED_SHORT&&l&&(u=l.RGB16_EXT),a===t.SHORT&&l&&(u=l.RGB16_SNORM_EXT),a===t.UNSIGNED_INT_5_9_9_9_REV&&(u=t.RGB9_E5),a===t.UNSIGNED_INT_10F_11F_11F_REV&&(u=t.R11F_G11F_B10F)),i===t.RGBA){let n=c?e.R:e.f.getTransfer(s);a===t.FLOAT&&(u=t.RGBA32F),a===t.HALF_FLOAT&&(u=t.RGBA16F),a===t.UNSIGNED_BYTE&&(u=n===`srgb`?t.SRGB8_ALPHA8:t.RGBA8),a===t.UNSIGNED_SHORT&&l&&(u=l.RGBA16_EXT),a===t.SHORT&&l&&(u=l.RGBA16_SNORM_EXT),a===t.UNSIGNED_SHORT_4_4_4_4&&(u=t.RGBA4),a===t.UNSIGNED_SHORT_5_5_5_1&&(u=t.RGB5_A1)}return(u===t.R16F||u===t.R32F||u===t.RG16F||u===t.RG32F||u===t.RGBA16F||u===t.RGBA32F)&&n.get(`EXT_color_buffer_float`),u}function S(n,r){let i;return n?r===null||r===1014||r===1020?i=t.DEPTH24_STENCIL8:r===1015?i=t.DEPTH32F_STENCIL8:r===1012&&(i=t.DEPTH24_STENCIL8,e.An(`DepthTexture: 16 bit depth attachment is not supported with stencil. Using 24-bit attachment.`)):r===null||r===1014||r===1020?i=t.DEPTH_COMPONENT24:r===1015?i=t.DEPTH_COMPONENT32F:r===1012&&(i=t.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(e){let n=i.get(e);t.deleteTexture(n.__webglTexture);let r=e.source,a=m.get(r);delete a[n.__cacheKey],s.memory.textures--}function O(e){let n=i.get(e);if(e.depthTexture&&(e.depthTexture.dispose(),i.remove(e.depthTexture)),e.isWebGLCubeRenderTarget)for(let e=0;e<6;e++){if(Array.isArray(n.__webglFramebuffer[e]))for(let r=0;r<n.__webglFramebuffer[e].length;r++)t.deleteFramebuffer(n.__webglFramebuffer[e][r]);else t.deleteFramebuffer(n.__webglFramebuffer[e]);n.__webglDepthbuffer&&t.deleteRenderbuffer(n.__webglDepthbuffer[e])}else{if(Array.isArray(n.__webglFramebuffer))for(let e=0;e<n.__webglFramebuffer.length;e++)t.deleteFramebuffer(n.__webglFramebuffer[e]);else t.deleteFramebuffer(n.__webglFramebuffer);if(n.__webglDepthbuffer&&t.deleteRenderbuffer(n.__webglDepthbuffer),n.__webglMultisampledFramebuffer&&t.deleteFramebuffer(n.__webglMultisampledFramebuffer),n.__webglColorRenderbuffer)for(let e=0;e<n.__webglColorRenderbuffer.length;e++)n.__webglColorRenderbuffer[e]&&t.deleteRenderbuffer(n.__webglColorRenderbuffer[e]);n.__webglDepthRenderbuffer&&t.deleteRenderbuffer(n.__webglDepthRenderbuffer)}let r=e.textures;for(let e=0,n=r.length;e<n;e++){let n=i.get(r[e]);n.__webglTexture&&(t.deleteTexture(n.__webglTexture),s.memory.textures--),i.remove(r[e])}i.remove(e)}let k=0;function A(){k=0}function j(){return k}function M(e){k=e}function N(){let t=k;return t>=a.maxTextures&&e.An(`WebGLTextures: Trying to use `+t+` texture units while this GPU supports only `+a.maxTextures),k+=1,t}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&&he(n),n.isRenderTargetTexture===!1&&n.isExternalTexture!==!0&&n.version>0&&o.__version!==n.version){let t=n.image;if(t===null)e.An(`WebGLRenderer: Texture marked for update but no image data found.`);else if(t.complete===!1)e.An(`WebGLRenderer: Texture marked for update but image is incomplete`);else{L(o,n,a);return}}else n.isExternalTexture&&(o.__webglTexture=n.sourceTexture?n.sourceTexture:null);r.bindTexture(t.TEXTURE_2D,o.__webglTexture,t.TEXTURE0+a)}function te(e,n){let a=i.get(e);if(e.isRenderTargetTexture===!1&&e.version>0&&a.__version!==e.version){L(a,e,n);return}e.isExternalTexture&&(a.__webglTexture=e.sourceTexture?e.sourceTexture:null),r.bindTexture(t.TEXTURE_2D_ARRAY,a.__webglTexture,t.TEXTURE0+n)}function ne(e,n){let a=i.get(e);if(e.isRenderTargetTexture===!1&&e.version>0&&a.__version!==e.version){L(a,e,n);return}r.bindTexture(t.TEXTURE_3D,a.__webglTexture,t.TEXTURE0+n)}function re(e,n){let a=i.get(e);if(e.isCubeDepthTexture!==!0&&e.version>0&&a.__version!==e.version){le(a,e,n);return}r.bindTexture(t.TEXTURE_CUBE_MAP,a.__webglTexture,t.TEXTURE0+n)}let ie={[e.Wt]:t.REPEAT,[e.u]:t.CLAMP_TO_EDGE,[e.q]:t.MIRRORED_REPEAT},ae={[e.J]:t.NEAREST,[e.X]:t.NEAREST_MIPMAP_NEAREST,[e.Y]:t.NEAREST_MIPMAP_LINEAR,[e.P]:t.LINEAR,[e.I]:t.LINEAR_MIPMAP_NEAREST,[e.F]:t.LINEAR_MIPMAP_LINEAR},oe={512:t.NEVER,519:t.ALWAYS,513:t.LESS,515:t.LEQUAL,514:t.EQUAL,518:t.GEQUAL,516:t.GREATER,517:t.NOTEQUAL};function F(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)&&e.An(`WebGLRenderer: Unable to use linear filtering with floating point textures. OES_texture_float_linear not supported on this device.`),t.texParameteri(r,t.TEXTURE_WRAP_S,ie[o.wrapS]),t.texParameteri(r,t.TEXTURE_WRAP_T,ie[o.wrapT]),(r===t.TEXTURE_3D||r===t.TEXTURE_2D_ARRAY)&&t.texParameteri(r,t.TEXTURE_WRAP_R,ie[o.wrapR]),t.texParameteri(r,t.TEXTURE_MAG_FILTER,ae[o.magFilter]),t.texParameteri(r,t.TEXTURE_MIN_FILTER,ae[o.minFilter]),o.compareFunction&&(t.texParameteri(r,t.TEXTURE_COMPARE_MODE,t.COMPARE_REF_TO_TEXTURE),t.texParameteri(r,t.TEXTURE_COMPARE_FUNC,oe[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 e=n.get(`EXT_texture_filter_anisotropic`);t.texParameterf(r,e.TEXTURE_MAX_ANISOTROPY_EXT,Math.min(o.anisotropy,a.getMaxAnisotropy())),i.get(o).__currentAnisotropy=o.anisotropy}}}function se(e,n){let r=!1;e.__webglInit===void 0&&(e.__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!==e.__cacheKey){a[o]===void 0&&(a[o]={texture:t.createTexture(),usedTimes:0},s.memory.textures++,r=!0),a[o].usedTimes++;let i=a[e.__cacheKey];i!==void 0&&(a[e.__cacheKey].usedTimes--,i.usedTimes===0&&D(n)),e.__cacheKey=o,e.__webglTexture=a[o].texture}return r}function ce(e,t,n){return Math.floor(Math.floor(e/n)/t)}function I(e,n,i,a){let o=e.updateRanges;if(o.length===0)r.texSubImage2D(t.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=ce(r.start,n.width,4),c=ce(t.start,n.width,4);r.start<=i+1&&a===c&&ce(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(t.UNPACK_ROW_LENGTH),l=r.getParameter(t.UNPACK_SKIP_PIXELS),u=r.getParameter(t.UNPACK_SKIP_ROWS);r.pixelStorei(t.UNPACK_ROW_LENGTH,n.width);for(let e=0,s=o.length;e<s;e++){let s=o[e],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(t.UNPACK_SKIP_PIXELS,u),r.pixelStorei(t.UNPACK_SKIP_ROWS,d),r.texSubImage2D(t.TEXTURE_2D,0,u,d,f,1,i,a,n.data)}e.clearUpdateRanges(),r.pixelStorei(t.UNPACK_ROW_LENGTH,c),r.pixelStorei(t.UNPACK_SKIP_PIXELS,l),r.pixelStorei(t.UNPACK_SKIP_ROWS,u)}}function L(n,s,c){let l=t.TEXTURE_2D;(s.isDataArrayTexture||s.isCompressedArrayTexture)&&(l=t.TEXTURE_2D_ARRAY),s.isData3DTexture&&(l=t.TEXTURE_3D);let u=se(n,s),d=s.source;r.bindTexture(l,n.__webglTexture,t.TEXTURE0+c);let p=i.get(d);if(d.version!==p.__version||u===!0){if(r.activeTexture(t.TEXTURE0+c),!(typeof ImageBitmap<`u`&&s.image instanceof ImageBitmap)){let n=e.f.getPrimaries(e.f.workingColorSpace),i=s.colorSpace===``?null:e.f.getPrimaries(s.colorSpace),a=s.colorSpace===``||n===i?t.NONE:t.BROWSER_DEFAULT_WEBGL;r.pixelStorei(t.UNPACK_FLIP_Y_WEBGL,s.flipY),r.pixelStorei(t.UNPACK_PREMULTIPLY_ALPHA_WEBGL,s.premultiplyAlpha),r.pixelStorei(t.UNPACK_COLORSPACE_CONVERSION_WEBGL,a)}r.pixelStorei(t.UNPACK_ALIGNMENT,s.unpackAlignment);let n=_(s.image,!1,a.maxTextureSize);n=ge(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);F(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===e.x,s.type),T&&(w?r.texStorage2D(t.TEXTURE_2D,1,h,n.width,n.height):r.texImage2D(t.TEXTURE_2D,0,h,n.width,n.height,0,i,m,null));else if(s.isDataTexture){if(b.length>0){w&&T&&r.texStorage2D(t.TEXTURE_2D,D,h,b[0].width,b[0].height);for(let e=0,n=b.length;e<n;e++)g=b[e],w?E&&r.texSubImage2D(t.TEXTURE_2D,e,0,0,g.width,g.height,i,m,g.data):r.texImage2D(t.TEXTURE_2D,e,h,g.width,g.height,0,i,m,g.data);s.generateMipmaps=!1}else w?(T&&r.texStorage2D(t.TEXTURE_2D,D,h,n.width,n.height),E&&I(s,n,i,m)):r.texImage2D(t.TEXTURE_2D,0,h,n.width,n.height,0,i,m,n.data)}else if(s.isCompressedTexture){if(s.isCompressedArrayTexture){w&&T&&r.texStorage3D(t.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=e.Tn(g.width,g.height,s.format,s.type);for(let e of s.layerUpdates){let o=g.data.subarray(e*n/g.data.BYTES_PER_ELEMENT,(e+1)*n/g.data.BYTES_PER_ELEMENT);r.compressedTexSubImage3D(t.TEXTURE_2D_ARRAY,a,0,0,e,g.width,g.height,1,i,o)}s.clearLayerUpdates()}else r.compressedTexSubImage3D(t.TEXTURE_2D_ARRAY,a,0,0,0,g.width,g.height,n.depth,i,g.data)}}else r.compressedTexImage3D(t.TEXTURE_2D_ARRAY,a,h,g.width,g.height,n.depth,0,g.data,0,0)}else e.An(`WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()`)}else w?E&&r.texSubImage3D(t.TEXTURE_2D_ARRAY,a,0,0,0,g.width,g.height,n.depth,i,m,g.data):r.texImage3D(t.TEXTURE_2D_ARRAY,a,h,g.width,g.height,n.depth,0,i,m,g.data)}else{w&&T&&r.texStorage2D(t.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(t.TEXTURE_2D,n,0,0,g.width,g.height,i,m,g.data):r.texImage2D(t.TEXTURE_2D,n,h,g.width,g.height,0,i,m,g.data):i===null?e.An(`WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()`):w?E&&r.compressedTexSubImage2D(t.TEXTURE_2D,n,0,0,g.width,g.height,i,g.data):r.compressedTexImage2D(t.TEXTURE_2D,n,h,g.width,g.height,0,g.data)}}else if(s.isDataArrayTexture){if(w){if(T&&r.texStorage3D(t.TEXTURE_2D_ARRAY,D,h,n.width,n.height,n.depth),E){if(s.layerUpdates.size>0){let a=e.Tn(n.width,n.height,s.format,s.type);for(let e of s.layerUpdates){let o=n.data.subarray(e*a/n.data.BYTES_PER_ELEMENT,(e+1)*a/n.data.BYTES_PER_ELEMENT);r.texSubImage3D(t.TEXTURE_2D_ARRAY,0,0,0,e,n.width,n.height,1,i,m,o)}s.clearLayerUpdates()}else r.texSubImage3D(t.TEXTURE_2D_ARRAY,0,0,0,0,n.width,n.height,n.depth,i,m,n.data)}}else r.texImage3D(t.TEXTURE_2D_ARRAY,0,h,n.width,n.height,n.depth,0,i,m,n.data)}else if(s.isData3DTexture)w?(T&&r.texStorage3D(t.TEXTURE_3D,D,h,n.width,n.height,n.depth),E&&r.texSubImage3D(t.TEXTURE_3D,0,0,0,0,n.width,n.height,n.depth,i,m,n.data)):r.texImage3D(t.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(t.TEXTURE_2D,D,h,n.width,n.height);else{let e=n.width,a=n.height;for(let n=0;n<D;n++)r.texImage2D(t.TEXTURE_2D,n,h,e,a,0,i,m,null),e>>=1,a>>=1}}}else if(s.isHTMLTexture){if(`texElementImage2D`in t){let e=t.canvas;if(e.hasAttribute(`layoutsubtree`)||e.setAttribute(`layoutsubtree`,`true`),n.parentNode!==e){e.appendChild(n),f.add(s),e.onpaint=e=>{let t=e.changedElements;for(let e of f)t.includes(e.image)&&(e.needsUpdate=!0)},e.requestPaint();return}if(t.texElementImage2D.length===3)t.texElementImage2D(t.TEXTURE_2D,t.RGBA8,n);else{let e=t.RGBA,r=t.RGBA,i=t.UNSIGNED_BYTE;t.texElementImage2D(t.TEXTURE_2D,0,e,r,i,n)}t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_S,t.CLAMP_TO_EDGE),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_T,t.CLAMP_TO_EDGE)}}else if(b.length>0){if(w&&T){let e=_e(b[0]);r.texStorage2D(t.TEXTURE_2D,D,h,e.width,e.height)}for(let e=0,n=b.length;e<n;e++)g=b[e],w?E&&r.texSubImage2D(t.TEXTURE_2D,e,0,0,i,m,g):r.texImage2D(t.TEXTURE_2D,e,h,i,m,g);s.generateMipmaps=!1}else if(w){if(T){let e=_e(n);r.texStorage2D(t.TEXTURE_2D,D,h,e.width,e.height)}E&&r.texSubImage2D(t.TEXTURE_2D,0,0,0,i,m,n)}else r.texImage2D(t.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=se(n,s),u=s.source;r.bindTexture(t.TEXTURE_CUBE_MAP,n.__webglTexture,t.TEXTURE0+c);let d=i.get(u);if(u.version!==d.__version||l===!0){r.activeTexture(t.TEXTURE0+c);let n=e.f.getPrimaries(e.f.workingColorSpace),i=s.colorSpace===``?null:e.f.getPrimaries(s.colorSpace),f=s.colorSpace===``||n===i?t.NONE:t.BROWSER_DEFAULT_WEBGL;r.pixelStorei(t.UNPACK_FLIP_Y_WEBGL,s.flipY),r.pixelStorei(t.UNPACK_PREMULTIPLY_ALPHA_WEBGL,s.premultiplyAlpha),r.pixelStorei(t.UNPACK_ALIGNMENT,s.unpackAlignment),r.pixelStorei(t.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]=ge(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);F(t.TEXTURE_CUBE_MAP,s);let k;if(p){T&&E&&r.texStorage2D(t.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(t.TEXTURE_CUBE_MAP_POSITIVE_X+n,i,0,0,a.width,a.height,b,S,a.data):r.texImage2D(t.TEXTURE_CUBE_MAP_POSITIVE_X+n,i,w,a.width,a.height,0,b,S,a.data):b===null?e.An(`WebGLRenderer: Attempt to load unsupported compressed texture format in .setTextureCube()`):T?D&&r.compressedTexSubImage2D(t.TEXTURE_CUBE_MAP_POSITIVE_X+n,i,0,0,a.width,a.height,b,a.data):r.compressedTexImage2D(t.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 e=_e(h[0]);r.texStorage2D(t.TEXTURE_CUBE_MAP,O,w,e.width,e.height)}for(let e=0;e<6;e++)if(m){T?D&&r.texSubImage2D(t.TEXTURE_CUBE_MAP_POSITIVE_X+e,0,0,0,h[e].width,h[e].height,b,S,h[e].data):r.texImage2D(t.TEXTURE_CUBE_MAP_POSITIVE_X+e,0,w,h[e].width,h[e].height,0,b,S,h[e].data);for(let n=0;n<k.length;n++){let i=k[n].image[e].image;T?D&&r.texSubImage2D(t.TEXTURE_CUBE_MAP_POSITIVE_X+e,n+1,0,0,i.width,i.height,b,S,i.data):r.texImage2D(t.TEXTURE_CUBE_MAP_POSITIVE_X+e,n+1,w,i.width,i.height,0,b,S,i.data)}}else{T?D&&r.texSubImage2D(t.TEXTURE_CUBE_MAP_POSITIVE_X+e,0,0,0,b,S,h[e]):r.texImage2D(t.TEXTURE_CUBE_MAP_POSITIVE_X+e,0,w,b,S,h[e]);for(let n=0;n<k.length;n++){let i=k[n];T?D&&r.texSubImage2D(t.TEXTURE_CUBE_MAP_POSITIVE_X+e,n+1,0,0,b,S,i.image[e]):r.texImage2D(t.TEXTURE_CUBE_MAP_POSITIVE_X+e,n+1,w,b,S,i.image[e])}}}v(s)&&y(t.TEXTURE_CUBE_MAP),d.__version=u.version,s.onUpdate&&s.onUpdate(s)}n.__version=s.version}function R(e,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 e=Math.max(1,n.width>>u),i=Math.max(1,n.height>>u);l===t.TEXTURE_3D||l===t.TEXTURE_2D_ARRAY?r.texImage3D(l,u,p,e,i,n.depth,0,d,f,null):r.texImage2D(l,u,p,e,i,0,d,f,null)}r.bindFramebuffer(t.FRAMEBUFFER,e),W(n)?c.framebufferTexture2DMultisampleEXT(t.FRAMEBUFFER,s,l,h.__webglTexture,0,U(n)):(l===t.TEXTURE_2D||l>=t.TEXTURE_CUBE_MAP_POSITIVE_X&&l<=t.TEXTURE_CUBE_MAP_NEGATIVE_Z)&&t.framebufferTexture2D(t.FRAMEBUFFER,s,l,h.__webglTexture,u),r.bindFramebuffer(t.FRAMEBUFFER,null)}function z(e,n,r){if(t.bindRenderbuffer(t.RENDERBUFFER,e),n.depthBuffer){let i=n.depthTexture,a=i&&i.isDepthTexture?i.type:null,o=S(n.stencilBuffer,a),s=n.stencilBuffer?t.DEPTH_STENCIL_ATTACHMENT:t.DEPTH_ATTACHMENT;W(n)?c.renderbufferStorageMultisampleEXT(t.RENDERBUFFER,U(n),o,n.width,n.height):r?t.renderbufferStorageMultisample(t.RENDERBUFFER,U(n),o,n.width,n.height):t.renderbufferStorage(t.RENDERBUFFER,o,n.width,n.height),t.framebufferRenderbuffer(t.FRAMEBUFFER,s,t.RENDERBUFFER,e)}else{let e=n.textures;for(let i=0;i<e.length;i++){let a=e[i],s=o.convert(a.format,a.colorSpace),l=o.convert(a.type),u=x(a.internalFormat,s,l,a.normalized,a.colorSpace);W(n)?c.renderbufferStorageMultisampleEXT(t.RENDERBUFFER,U(n),u,n.width,n.height):r?t.renderbufferStorageMultisample(t.RENDERBUFFER,U(n),u,n.width,n.height):t.renderbufferStorage(t.RENDERBUFFER,u,n.width,n.height)}}t.bindRenderbuffer(t.RENDERBUFFER,null)}function ue(e,n,a){let s=n.isWebGLCubeRenderTarget===!0;if(r.bindFramebuffer(t.FRAMEBUFFER,e),!(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=t.createTexture(),r.bindTexture(t.TEXTURE_CUBE_MAP,l.__webglTexture),F(t.TEXTURE_CUBE_MAP,n.depthTexture);let e=o.convert(n.depthTexture.format),i=o.convert(n.depthTexture.type),a;n.depthTexture.format===1026?a=t.DEPTH_COMPONENT24:n.depthTexture.format===1027&&(a=t.DEPTH24_STENCIL8);for(let r=0;r<6;r++)t.texImage2D(t.TEXTURE_CUBE_MAP_POSITIVE_X+r,0,a,n.width,n.height,0,e,i,null)}}else P(n.depthTexture,0);let u=l.__webglTexture,d=U(n),f=s?t.TEXTURE_CUBE_MAP_POSITIVE_X+a:t.TEXTURE_2D,p=n.depthTexture.format===1027?t.DEPTH_STENCIL_ATTACHMENT:t.DEPTH_ATTACHMENT;if(n.depthTexture.format===1026)W(n)?c.framebufferTexture2DMultisampleEXT(t.FRAMEBUFFER,p,f,u,0,d):t.framebufferTexture2D(t.FRAMEBUFFER,p,f,u,0);else if(n.depthTexture.format===1027)W(n)?c.framebufferTexture2DMultisampleEXT(t.FRAMEBUFFER,p,f,u,0,d):t.framebufferTexture2D(t.FRAMEBUFFER,p,f,u,0);else throw Error(`THREE.WebGLTextures: Unknown depthTexture format.`)}function B(e){let n=i.get(e),a=e.isWebGLCubeRenderTarget===!0;if(n.__boundDepthTexture!==e.depthTexture){let t=e.depthTexture;if(n.__depthDisposeCallback&&n.__depthDisposeCallback(),t){let e=()=>{delete n.__boundDepthTexture,delete n.__depthDisposeCallback,t.removeEventListener(`dispose`,e)};t.addEventListener(`dispose`,e),n.__depthDisposeCallback=e}n.__boundDepthTexture=t}if(e.depthTexture&&!n.__autoAllocateDepthBuffer){if(a)for(let t=0;t<6;t++)ue(n.__webglFramebuffer[t],e,t);else{let t=e.texture.mipmaps;t&&t.length>0?ue(n.__webglFramebuffer[0],e,0):ue(n.__webglFramebuffer,e,0)}}else if(a){n.__webglDepthbuffer=[];for(let i=0;i<6;i++)if(r.bindFramebuffer(t.FRAMEBUFFER,n.__webglFramebuffer[i]),n.__webglDepthbuffer[i]===void 0)n.__webglDepthbuffer[i]=t.createRenderbuffer(),z(n.__webglDepthbuffer[i],e,!1);else{let r=e.stencilBuffer?t.DEPTH_STENCIL_ATTACHMENT:t.DEPTH_ATTACHMENT,a=n.__webglDepthbuffer[i];t.bindRenderbuffer(t.RENDERBUFFER,a),t.framebufferRenderbuffer(t.FRAMEBUFFER,r,t.RENDERBUFFER,a)}}else{let i=e.texture.mipmaps;if(i&&i.length>0?r.bindFramebuffer(t.FRAMEBUFFER,n.__webglFramebuffer[0]):r.bindFramebuffer(t.FRAMEBUFFER,n.__webglFramebuffer),n.__webglDepthbuffer===void 0)n.__webglDepthbuffer=t.createRenderbuffer(),z(n.__webglDepthbuffer,e,!1);else{let r=e.stencilBuffer?t.DEPTH_STENCIL_ATTACHMENT:t.DEPTH_ATTACHMENT,i=n.__webglDepthbuffer;t.bindRenderbuffer(t.RENDERBUFFER,i),t.framebufferRenderbuffer(t.FRAMEBUFFER,r,t.RENDERBUFFER,i)}}r.bindFramebuffer(t.FRAMEBUFFER,null)}function V(e,n,r){let a=i.get(e);n!==void 0&&R(a.__webglFramebuffer,e,e.texture,t.COLOR_ATTACHMENT0,t.TEXTURE_2D,0),r!==void 0&&B(e)}function de(e){let n=e.texture,a=i.get(e),c=i.get(n);e.addEventListener(`dispose`,T);let l=e.textures,u=e.isWebGLCubeRenderTarget===!0,d=l.length>1;if(d||(c.__webglTexture===void 0&&(c.__webglTexture=t.createTexture()),c.__version=n.version,s.memory.textures++),u){a.__webglFramebuffer=[];for(let e=0;e<6;e++)if(n.mipmaps&&n.mipmaps.length>0){a.__webglFramebuffer[e]=[];for(let r=0;r<n.mipmaps.length;r++)a.__webglFramebuffer[e][r]=t.createFramebuffer()}else a.__webglFramebuffer[e]=t.createFramebuffer()}else{if(n.mipmaps&&n.mipmaps.length>0){a.__webglFramebuffer=[];for(let e=0;e<n.mipmaps.length;e++)a.__webglFramebuffer[e]=t.createFramebuffer()}else a.__webglFramebuffer=t.createFramebuffer();if(d)for(let e=0,n=l.length;e<n;e++){let n=i.get(l[e]);n.__webglTexture===void 0&&(n.__webglTexture=t.createTexture(),s.memory.textures++)}if(e.samples>0&&W(e)===!1){a.__webglMultisampledFramebuffer=t.createFramebuffer(),a.__webglColorRenderbuffer=[],r.bindFramebuffer(t.FRAMEBUFFER,a.__webglMultisampledFramebuffer);for(let n=0;n<l.length;n++){let r=l[n];a.__webglColorRenderbuffer[n]=t.createRenderbuffer(),t.bindRenderbuffer(t.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,e.isXRRenderTarget===!0),u=U(e);t.renderbufferStorageMultisample(t.RENDERBUFFER,u,c,e.width,e.height),t.framebufferRenderbuffer(t.FRAMEBUFFER,t.COLOR_ATTACHMENT0+n,t.RENDERBUFFER,a.__webglColorRenderbuffer[n])}t.bindRenderbuffer(t.RENDERBUFFER,null),e.depthBuffer&&(a.__webglDepthRenderbuffer=t.createRenderbuffer(),z(a.__webglDepthRenderbuffer,e,!0)),r.bindFramebuffer(t.FRAMEBUFFER,null)}}if(u){r.bindTexture(t.TEXTURE_CUBE_MAP,c.__webglTexture),F(t.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],e,n,t.COLOR_ATTACHMENT0,t.TEXTURE_CUBE_MAP_POSITIVE_X+r,i);else R(a.__webglFramebuffer[r],e,n,t.COLOR_ATTACHMENT0,t.TEXTURE_CUBE_MAP_POSITIVE_X+r,0);v(n)&&y(t.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=t.TEXTURE_2D;(e.isWebGL3DRenderTarget||e.isWebGLArrayRenderTarget)&&(c=e.isWebGL3DRenderTarget?t.TEXTURE_3D:t.TEXTURE_2D_ARRAY),r.bindTexture(c,s.__webglTexture),F(c,o),R(a.__webglFramebuffer,e,o,t.COLOR_ATTACHMENT0+n,c,0),v(o)&&y(c)}r.unbindTexture()}else{let i=t.TEXTURE_2D;if((e.isWebGL3DRenderTarget||e.isWebGLArrayRenderTarget)&&(i=e.isWebGL3DRenderTarget?t.TEXTURE_3D:t.TEXTURE_2D_ARRAY),r.bindTexture(i,c.__webglTexture),F(i,n),n.mipmaps&&n.mipmaps.length>0)for(let r=0;r<n.mipmaps.length;r++)R(a.__webglFramebuffer[r],e,n,t.COLOR_ATTACHMENT0,i,r);else R(a.__webglFramebuffer,e,n,t.COLOR_ATTACHMENT0,i,0);v(n)&&y(i),r.unbindTexture()}e.depthBuffer&&B(e)}function fe(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 pe=[],me=[];function H(e){if(e.samples>0){if(W(e)===!1){let n=e.textures,a=e.width,o=e.height,s=t.COLOR_BUFFER_BIT,c=e.stencilBuffer?t.DEPTH_STENCIL_ATTACHMENT:t.DEPTH_ATTACHMENT,u=i.get(e),d=n.length>1;if(d)for(let e=0;e<n.length;e++)r.bindFramebuffer(t.FRAMEBUFFER,u.__webglMultisampledFramebuffer),t.framebufferRenderbuffer(t.FRAMEBUFFER,t.COLOR_ATTACHMENT0+e,t.RENDERBUFFER,null),r.bindFramebuffer(t.FRAMEBUFFER,u.__webglFramebuffer),t.framebufferTexture2D(t.DRAW_FRAMEBUFFER,t.COLOR_ATTACHMENT0+e,t.TEXTURE_2D,null,0);r.bindFramebuffer(t.READ_FRAMEBUFFER,u.__webglMultisampledFramebuffer);let f=e.texture.mipmaps;f&&f.length>0?r.bindFramebuffer(t.DRAW_FRAMEBUFFER,u.__webglFramebuffer[0]):r.bindFramebuffer(t.DRAW_FRAMEBUFFER,u.__webglFramebuffer);for(let r=0;r<n.length;r++){if(e.resolveDepthBuffer&&(e.depthBuffer&&(s|=t.DEPTH_BUFFER_BIT),e.stencilBuffer&&e.resolveStencilBuffer&&(s|=t.STENCIL_BUFFER_BIT)),d){t.framebufferRenderbuffer(t.READ_FRAMEBUFFER,t.COLOR_ATTACHMENT0,t.RENDERBUFFER,u.__webglColorRenderbuffer[r]);let e=i.get(n[r]).__webglTexture;t.framebufferTexture2D(t.DRAW_FRAMEBUFFER,t.COLOR_ATTACHMENT0,t.TEXTURE_2D,e,0)}t.blitFramebuffer(0,0,a,o,0,0,a,o,s,t.NEAREST),l===!0&&(pe.length=0,me.length=0,pe.push(t.COLOR_ATTACHMENT0+r),e.depthBuffer&&e.resolveDepthBuffer===!1&&(pe.push(c),me.push(c),t.invalidateFramebuffer(t.DRAW_FRAMEBUFFER,me)),t.invalidateFramebuffer(t.READ_FRAMEBUFFER,pe))}if(r.bindFramebuffer(t.READ_FRAMEBUFFER,null),r.bindFramebuffer(t.DRAW_FRAMEBUFFER,null),d)for(let e=0;e<n.length;e++){r.bindFramebuffer(t.FRAMEBUFFER,u.__webglMultisampledFramebuffer),t.framebufferRenderbuffer(t.FRAMEBUFFER,t.COLOR_ATTACHMENT0+e,t.RENDERBUFFER,u.__webglColorRenderbuffer[e]);let a=i.get(n[e]).__webglTexture;r.bindFramebuffer(t.FRAMEBUFFER,u.__webglFramebuffer),t.framebufferTexture2D(t.DRAW_FRAMEBUFFER,t.COLOR_ATTACHMENT0+e,t.TEXTURE_2D,a,0)}r.bindFramebuffer(t.DRAW_FRAMEBUFFER,u.__webglMultisampledFramebuffer)}else if(e.depthBuffer&&e.resolveDepthBuffer===!1&&l){let n=e.stencilBuffer?t.DEPTH_STENCIL_ATTACHMENT:t.DEPTH_ATTACHMENT;t.invalidateFramebuffer(t.DRAW_FRAMEBUFFER,[n])}}}function U(e){return Math.min(a.maxSamples,e.samples)}function W(e){let t=i.get(e);return e.samples>0&&n.has(`WEBGL_multisampled_render_to_texture`)===!0&&t.__useRenderToTexture!==!1}function he(e){let t=s.render.frame;d.get(e)!==t&&(d.set(e,t),e.update())}function ge(t,n){let r=t.colorSpace,i=t.format,a=t.type;return t.isCompressedTexture===!0||t.isVideoTexture===!0||r!==`srgb-linear`&&r!==``&&(e.f.getTransfer(r)===`srgb`?(i!==1023||a!==1009)&&e.An(`WebGLTextures: sRGB encoded textures have to use RGBAFormat and UnsignedByteType.`):e.wn(`WebGLTextures: Unsupported texture color space:`,r)),n}function _e(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=te,this.setTexture3D=ne,this.setTextureCube=re,this.rebindTextures=V,this.setupRenderTarget=de,this.updateRenderTargetMipmap=fe,this.updateMultisampleRenderTarget=H,this.setupDepthRenderbuffer=B,this.setupFrameBufferTexture=R,this.useMultisampledRTT=W,this.isReversedDepthBuffer=function(){return r.buffers.depth.getReversed()}}function dn(t,n){function r(r,i=``){let a,o=e.f.getTransfer(i);if(r===1009)return t.UNSIGNED_BYTE;if(r===1017)return t.UNSIGNED_SHORT_4_4_4_4;if(r===1018)return t.UNSIGNED_SHORT_5_5_5_1;if(r===35902)return t.UNSIGNED_INT_5_9_9_9_REV;if(r===35899)return t.UNSIGNED_INT_10F_11F_11F_REV;if(r===1010)return t.BYTE;if(r===1011)return t.SHORT;if(r===1012)return t.UNSIGNED_SHORT;if(r===1013)return t.INT;if(r===1014)return t.UNSIGNED_INT;if(r===1015)return t.FLOAT;if(r===1016)return t.HALF_FLOAT;if(r===1021)return t.ALPHA;if(r===1022)return t.RGB;if(r===1023)return t.RGBA;if(r===1026)return t.DEPTH_COMPONENT;if(r===1027)return t.DEPTH_STENCIL;if(r===1028)return t.RED;if(r===1029)return t.RED_INTEGER;if(r===1030)return t.RG;if(r===1031)return t.RG_INTEGER;if(r===1033)return t.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?t.UNSIGNED_INT_24_8:t[r]===void 0?null:t[r]}return{convert:r}}var fn=`
|
|
4080
|
+
}`,nn=[new e.xn(1,0,0),new e.xn(-1,0,0),new e.xn(0,1,0),new e.xn(0,-1,0),new e.xn(0,0,1),new e.xn(0,0,-1)],rn=[new e.xn(0,-1,0),new e.xn(0,-1,0),new e.xn(0,0,1),new e.xn(0,0,-1),new e.xn(0,-1,0),new e.xn(0,-1,0)],an=new e.q,on=new e.xn,sn=new e.xn;function cn(t,n,r){let i=new e.N,a=new e.bn,o=new e.bn,s=new e.Sn,c=new e.X,l=new e.Z,u={},d=r.maxTextureSize,f={0:1,1:0,2:2},p=new e.in({defines:{VSM_SAMPLES:8},uniforms:{shadow_pass:{value:null},resolution:{value:new e.bn},radius:{value:4}},vertexShader:en,fragmentShader:tn}),m=p.clone();m.defines.HORIZONTAL_PASS=1;let h=new e.p;h.setAttribute(`position`,new e.f(new Float32Array([-1,-1,.5,3,-1,.5,-1,3,.5]),3));let g=new e.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&&(e.Fn(`WebGLShadowMap: PCFSoftShadowMap has been deprecated. Using PCFShadowMap instead.`),this.type=1);let l=t.getRenderTarget(),u=t.getActiveCubeFace(),f=t.getActiveMipmapLevel(),p=t.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){e.Fn(`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=t.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){e.Fn(`WebGLShadowMap: VSM shadow maps are not supported for PointLights. Use PCF or BasicShadowMap instead.`);continue}f.map=new e.wn(a.x,a.y,{format:e.Ut,type:e.I,minFilter:e.z,magFilter:e.z,generateMipmaps:!1}),f.map.texture.name=u.name+`.shadowMap`,f.map.depthTexture=new e.D(a.x,a.y,e.M),f.map.depthTexture.name=u.name+`.shadowMapDepth`,f.map.depthTexture.format=e.T,f.map.depthTexture.compareFunction=null,f.map.depthTexture.minFilter=e.$,f.map.depthTexture.magFilter=e.$}else u.isPointLight?(f.map=new te(a.x),f.map.depthTexture=new e.b(a.x,e.gn)):(f.map=new e.wn(a.x,a.y),f.map.depthTexture=new e.D(a.x,a.y,e.gn)),f.map.depthTexture.name=u.name+`.shadowMap`,f.map.depthTexture.format=e.T,this.type===1?(f.map.depthTexture.compareFunction=g?518:515,f.map.depthTexture.minFilter=e.z,f.map.depthTexture.magFilter=e.z):(f.map.depthTexture.compareFunction=null,f.map.depthTexture.minFilter=e.$,f.map.depthTexture.magFilter=e.$);f.camera.updateProjectionMatrix()}let _=f.map.isWebGLCubeRenderTarget?6:1;for(let e=0;e<_;e++){if(f.map.isWebGLCubeRenderTarget)t.setRenderTarget(f.map,e),t.clear();else{e===0&&(t.setRenderTarget(f.map),t.clear());let n=f.getViewport(e);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 t=f.camera,n=f.matrix,r=u.distance||t.far;r!==t.far&&(t.far=r,t.updateProjectionMatrix()),on.setFromMatrixPosition(u.matrixWorld),t.position.copy(on),sn.copy(t.position),sn.add(nn[e]),t.up.copy(rn[e]),t.lookAt(sn),t.updateMatrixWorld(),n.makeTranslation(-on.x,-on.y,-on.z),an.multiplyMatrices(t.projectionMatrix,t.matrixWorldInverse),f._frustum.setFromProjectionMatrix(an,t.coordinateSystem,t.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,t.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 e.wn(a.x,a.y,{format:e.Ut,type:e.I})),p.uniforms.shadow_pass.value=r.map.depthTexture,p.uniforms.resolution.value=r.mapSize,p.uniforms.radius.value=r.radius,t.setRenderTarget(r.mapPass),t.clear(),t.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,t.setRenderTarget(r.map),t.clear(),t.renderBufferDirect(i,null,o,m,g,null)}function b(e,n,r,i){let a=null,o=r.isPointLight===!0?e.customDistanceMaterial:e.customDepthMaterial;if(o!==void 0)a=o;else if(a=r.isPointLight===!0?l:c,t.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 e=t.properties.get(a);e.light=r}return a}function x(e,r,a,o,s){if(e.visible===!1)return;if(e.layers.test(r.layers)&&(e.isMesh||e.isLine||e.isPoints)&&(e.castShadow||e.receiveShadow&&s===3)&&(!e.frustumCulled||i.intersectsObject(e))){e.modelViewMatrix.multiplyMatrices(a.matrixWorldInverse,e.matrixWorld);let i=n.update(e),c=e.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(e,d,o,s);e.onBeforeShadow(t,e,r,a,i,n,u),t.renderBufferDirect(a,null,i,n,e,u),e.onAfterShadow(t,e,r,a,i,n,u)}}}else if(c.visible){let n=b(e,c,o,s);e.onBeforeShadow(t,e,r,a,i,n,null),t.renderBufferDirect(a,null,i,n,e,null),e.onAfterShadow(t,e,r,a,i,n,null)}}let c=e.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 ln(t,n){function r(){let n=!1,r=new e.Sn,i=null,a=new e.Sn(0,0,0,0);return{setMask:function(e){i!==e&&!n&&(t.colorMask(e,e,e,e),i=e)},setLocked:function(e){n=e},setClear:function(e,n,i,o,s){s===!0&&(e*=o,n*=o,i*=o),r.set(e,n,i,o),a.equals(r)===!1&&(t.clearColor(e,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(e){e?ce(t.DEPTH_TEST):L(t.DEPTH_TEST)},setMask:function(e){a!==e&&!r&&(t.depthMask(e),a=e)},setFunc:function(n){if(i&&(n=e.Xt[n]),o!==n){switch(n){case 0:t.depthFunc(t.NEVER);break;case 1:t.depthFunc(t.ALWAYS);break;case 2:t.depthFunc(t.LESS);break;case 3:t.depthFunc(t.LEQUAL);break;case 4:t.depthFunc(t.EQUAL);break;case 5:t.depthFunc(t.GEQUAL);break;case 6:t.depthFunc(t.GREATER);break;case 7:t.depthFunc(t.NOTEQUAL);break;default:t.depthFunc(t.LEQUAL)}o=n}},setLocked:function(e){r=e},setClear:function(e){s!==e&&(s=e,i&&(e=1-e),t.clearDepth(e))},reset:function(){r=!1,a=null,o=null,s=null,i=!1}}}function a(){let e=!1,n=null,r=null,i=null,a=null,o=null,s=null,c=null,l=null;return{setTest:function(n){e||(n?ce(t.STENCIL_TEST):L(t.STENCIL_TEST))},setMask:function(r){n!==r&&!e&&(t.stencilMask(r),n=r)},setFunc:function(e,n,o){(r!==e||i!==n||a!==o)&&(t.stencilFunc(e,n,o),r=e,i=n,a=o)},setOp:function(e,n,r){(o!==e||s!==n||c!==r)&&(t.stencilOp(e,n,r),o=e,s=n,c=r)},setLocked:function(t){e=t},setClear:function(e){l!==e&&(t.clearStencil(e),l=e)},reset:function(){e=!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 e.g(0,0,0),E=0,D=!1,O=null,k=null,A=null,j=null,M=null,N=t.getParameter(t.MAX_COMBINED_TEXTURE_IMAGE_UNITS),ee=!1,P=0,te=t.getParameter(t.VERSION);te.indexOf(`WebGL`)===-1?te.indexOf(`OpenGL ES`)!==-1&&(P=parseFloat(/^OpenGL ES (\d)/.exec(te)[1]),ee=P>=2):(P=parseFloat(/^WebGL (\d)/.exec(te)[1]),ee=P>=1);let F=null,ne={},re=t.getParameter(t.SCISSOR_BOX),ie=t.getParameter(t.VIEWPORT),ae=new e.Sn().fromArray(re),I=new e.Sn().fromArray(ie);function oe(e,n,r,i){let a=new Uint8Array(4),o=t.createTexture();t.bindTexture(e,o),t.texParameteri(e,t.TEXTURE_MIN_FILTER,t.NEAREST),t.texParameteri(e,t.TEXTURE_MAG_FILTER,t.NEAREST);for(let o=0;o<r;o++)e===t.TEXTURE_3D||e===t.TEXTURE_2D_ARRAY?t.texImage3D(n,0,t.RGBA,1,1,i,0,t.RGBA,t.UNSIGNED_BYTE,a):t.texImage2D(n+o,0,t.RGBA,1,1,0,t.RGBA,t.UNSIGNED_BYTE,a);return o}let se={};se[t.TEXTURE_2D]=oe(t.TEXTURE_2D,t.TEXTURE_2D,1),se[t.TEXTURE_CUBE_MAP]=oe(t.TEXTURE_CUBE_MAP,t.TEXTURE_CUBE_MAP_POSITIVE_X,6),se[t.TEXTURE_2D_ARRAY]=oe(t.TEXTURE_2D_ARRAY,t.TEXTURE_2D_ARRAY,1,1),se[t.TEXTURE_3D]=oe(t.TEXTURE_3D,t.TEXTURE_3D,1,1),o.setClear(0,0,0,1),s.setClear(1),c.setClear(0),ce(t.DEPTH_TEST),s.setFunc(3),fe(!1),pe(1),ce(t.CULL_FACE),V(0);function ce(e){d[e]!==!0&&(t.enable(e),d[e]=!0)}function L(e){d[e]!==!1&&(t.disable(e),d[e]=!1)}function le(e,n){return p[e]!==n&&(t.bindFramebuffer(e,n),p[e]=n,e===t.DRAW_FRAMEBUFFER&&(p[t.FRAMEBUFFER]=n),e===t.FRAMEBUFFER&&(p[t.DRAW_FRAMEBUFFER]=n),!0)}function R(e,n){let r=h,i=!1;if(e){r=m.get(n),r===void 0&&(r=[],m.set(n,r));let a=e.textures;if(r.length!==a.length||r[0]!==t.COLOR_ATTACHMENT0){for(let e=0,n=a.length;e<n;e++)r[e]=t.COLOR_ATTACHMENT0+e;r.length=a.length,i=!0}}else r[0]!==t.BACK&&(r[0]=t.BACK,i=!0);i&&t.drawBuffers(r)}function z(e){return g!==e&&(t.useProgram(e),g=e,!0)}let ue={100:t.FUNC_ADD,101:t.FUNC_SUBTRACT,102:t.FUNC_REVERSE_SUBTRACT};ue[103]=t.MIN,ue[104]=t.MAX;let B={200:t.ZERO,201:t.ONE,202:t.SRC_COLOR,204:t.SRC_ALPHA,210:t.SRC_ALPHA_SATURATE,208:t.DST_COLOR,206:t.DST_ALPHA,203:t.ONE_MINUS_SRC_COLOR,205:t.ONE_MINUS_SRC_ALPHA,209:t.ONE_MINUS_DST_COLOR,207:t.ONE_MINUS_DST_ALPHA,211:t.CONSTANT_COLOR,212:t.ONE_MINUS_CONSTANT_COLOR,213:t.CONSTANT_ALPHA,214:t.ONE_MINUS_CONSTANT_ALPHA};function V(n,r,i,a,o,s,c,l,u,d){if(n===0){_===!0&&(L(t.BLEND),_=!1);return}if(_===!1&&(ce(t.BLEND),_=!0),n!==5){if(n!==v||d!==D){if((y!==100||S!==100)&&(t.blendEquation(t.FUNC_ADD),y=100,S=100),d)switch(n){case 1:t.blendFuncSeparate(t.ONE,t.ONE_MINUS_SRC_ALPHA,t.ONE,t.ONE_MINUS_SRC_ALPHA);break;case 2:t.blendFunc(t.ONE,t.ONE);break;case 3:t.blendFuncSeparate(t.ZERO,t.ONE_MINUS_SRC_COLOR,t.ZERO,t.ONE);break;case 4:t.blendFuncSeparate(t.DST_COLOR,t.ONE_MINUS_SRC_ALPHA,t.ZERO,t.ONE);break;default:e.kn(`WebGLState: Invalid blending: `,n)}else switch(n){case 1:t.blendFuncSeparate(t.SRC_ALPHA,t.ONE_MINUS_SRC_ALPHA,t.ONE,t.ONE_MINUS_SRC_ALPHA);break;case 2:t.blendFuncSeparate(t.SRC_ALPHA,t.ONE,t.ONE,t.ONE);break;case 3:e.kn(`WebGLState: SubtractiveBlending requires material.premultipliedAlpha = true`);break;case 4:e.kn(`WebGLState: MultiplyBlending requires material.premultipliedAlpha = true`);break;default:e.kn(`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)&&(t.blendEquationSeparate(ue[r],ue[o]),y=r,S=o),(i!==b||a!==x||s!==C||c!==w)&&(t.blendFuncSeparate(B[i],B[a],B[s],B[c]),b=i,x=a,C=s,w=c),(l.equals(T)===!1||u!==E)&&(t.blendColor(l.r,l.g,l.b,u),T.copy(l),E=u),v=n,D=!1}function de(e,n){e.side===2?L(t.CULL_FACE):ce(t.CULL_FACE);let r=e.side===1;n&&(r=!r),fe(r),e.blending===1&&e.transparent===!1?V(0):V(e.blending,e.blendEquation,e.blendSrc,e.blendDst,e.blendEquationAlpha,e.blendSrcAlpha,e.blendDstAlpha,e.blendColor,e.blendAlpha,e.premultipliedAlpha),s.setFunc(e.depthFunc),s.setTest(e.depthTest),s.setMask(e.depthWrite),o.setMask(e.colorWrite);let i=e.stencilWrite;c.setTest(i),i&&(c.setMask(e.stencilWriteMask),c.setFunc(e.stencilFunc,e.stencilRef,e.stencilFuncMask),c.setOp(e.stencilFail,e.stencilZFail,e.stencilZPass)),H(e.polygonOffset,e.polygonOffsetFactor,e.polygonOffsetUnits),e.alphaToCoverage===!0?ce(t.SAMPLE_ALPHA_TO_COVERAGE):L(t.SAMPLE_ALPHA_TO_COVERAGE)}function fe(e){O!==e&&(e?t.frontFace(t.CW):t.frontFace(t.CCW),O=e)}function pe(e){e===0?L(t.CULL_FACE):(ce(t.CULL_FACE),e!==k&&(e===1?t.cullFace(t.BACK):e===2?t.cullFace(t.FRONT):t.cullFace(t.FRONT_AND_BACK))),k=e}function me(e){e!==A&&(ee&&t.lineWidth(e),A=e)}function H(e,n,r){e?(ce(t.POLYGON_OFFSET_FILL),(j!==n||M!==r)&&(j=n,M=r,s.getReversed()&&(n=-n),t.polygonOffset(n,r))):L(t.POLYGON_OFFSET_FILL)}function U(e){e?ce(t.SCISSOR_TEST):L(t.SCISSOR_TEST)}function W(e){e===void 0&&(e=t.TEXTURE0+N-1),F!==e&&(t.activeTexture(e),F=e)}function he(e,n,r){r===void 0&&(r=F===null?t.TEXTURE0+N-1:F);let i=ne[r];i===void 0&&(i={type:void 0,texture:void 0},ne[r]=i),(i.type!==e||i.texture!==n)&&(F!==r&&(t.activeTexture(r),F=r),t.bindTexture(e,n||se[e]),i.type=e,i.texture=n)}function ge(){let e=ne[F];e!==void 0&&e.type!==void 0&&(t.bindTexture(e.type,null),e.type=void 0,e.texture=void 0)}function _e(){try{t.compressedTexImage2D(...arguments)}catch(t){e.kn(`WebGLState:`,t)}}function ve(){try{t.compressedTexImage3D(...arguments)}catch(t){e.kn(`WebGLState:`,t)}}function ye(){try{t.texSubImage2D(...arguments)}catch(t){e.kn(`WebGLState:`,t)}}function be(){try{t.texSubImage3D(...arguments)}catch(t){e.kn(`WebGLState:`,t)}}function xe(){try{t.compressedTexSubImage2D(...arguments)}catch(t){e.kn(`WebGLState:`,t)}}function Se(){try{t.compressedTexSubImage3D(...arguments)}catch(t){e.kn(`WebGLState:`,t)}}function Ce(){try{t.texStorage2D(...arguments)}catch(t){e.kn(`WebGLState:`,t)}}function we(){try{t.texStorage3D(...arguments)}catch(t){e.kn(`WebGLState:`,t)}}function Te(){try{t.texImage2D(...arguments)}catch(t){e.kn(`WebGLState:`,t)}}function Ee(){try{t.texImage3D(...arguments)}catch(t){e.kn(`WebGLState:`,t)}}function De(e){return f[e]===void 0?t.getParameter(e):f[e]}function Oe(e,n){f[e]!==n&&(t.pixelStorei(e,n),f[e]=n)}function G(e){ae.equals(e)===!1&&(t.scissor(e.x,e.y,e.z,e.w),ae.copy(e))}function ke(e){I.equals(e)===!1&&(t.viewport(e.x,e.y,e.z,e.w),I.copy(e))}function K(e,n){let r=u.get(n);r===void 0&&(r=new WeakMap,u.set(n,r));let i=r.get(e);i===void 0&&(i=t.getUniformBlockIndex(n,e.name),r.set(e,i))}function q(e,n){let r=u.get(n).get(e);l.get(n)!==r&&(t.uniformBlockBinding(n,r,e.__bindingPointIndex),l.set(n,r))}function J(){t.disable(t.BLEND),t.disable(t.CULL_FACE),t.disable(t.DEPTH_TEST),t.disable(t.POLYGON_OFFSET_FILL),t.disable(t.SCISSOR_TEST),t.disable(t.STENCIL_TEST),t.disable(t.SAMPLE_ALPHA_TO_COVERAGE),t.blendEquation(t.FUNC_ADD),t.blendFunc(t.ONE,t.ZERO),t.blendFuncSeparate(t.ONE,t.ZERO,t.ONE,t.ZERO),t.blendColor(0,0,0,0),t.colorMask(!0,!0,!0,!0),t.clearColor(0,0,0,0),t.depthMask(!0),t.depthFunc(t.LESS),s.setReversed(!1),t.clearDepth(1),t.stencilMask(4294967295),t.stencilFunc(t.ALWAYS,0,4294967295),t.stencilOp(t.KEEP,t.KEEP,t.KEEP),t.clearStencil(0),t.cullFace(t.BACK),t.frontFace(t.CCW),t.polygonOffset(0,0),t.activeTexture(t.TEXTURE0),t.bindFramebuffer(t.FRAMEBUFFER,null),t.bindFramebuffer(t.DRAW_FRAMEBUFFER,null),t.bindFramebuffer(t.READ_FRAMEBUFFER,null),t.useProgram(null),t.lineWidth(1),t.scissor(0,0,t.canvas.width,t.canvas.height),t.viewport(0,0,t.canvas.width,t.canvas.height),t.pixelStorei(t.PACK_ALIGNMENT,4),t.pixelStorei(t.UNPACK_ALIGNMENT,4),t.pixelStorei(t.UNPACK_FLIP_Y_WEBGL,!1),t.pixelStorei(t.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!1),t.pixelStorei(t.UNPACK_COLORSPACE_CONVERSION_WEBGL,t.BROWSER_DEFAULT_WEBGL),t.pixelStorei(t.PACK_ROW_LENGTH,0),t.pixelStorei(t.PACK_SKIP_PIXELS,0),t.pixelStorei(t.PACK_SKIP_ROWS,0),t.pixelStorei(t.UNPACK_ROW_LENGTH,0),t.pixelStorei(t.UNPACK_IMAGE_HEIGHT,0),t.pixelStorei(t.UNPACK_SKIP_PIXELS,0),t.pixelStorei(t.UNPACK_SKIP_ROWS,0),t.pixelStorei(t.UNPACK_SKIP_IMAGES,0),d={},f={},F=null,ne={},p={},m=new WeakMap,h=[],g=null,_=!1,v=null,y=null,b=null,x=null,S=null,C=null,w=null,T=new e.g(0,0,0),E=0,D=!1,O=null,k=null,A=null,j=null,M=null,ae.set(0,0,t.canvas.width,t.canvas.height),I.set(0,0,t.canvas.width,t.canvas.height),o.reset(),s.reset(),c.reset()}return{buffers:{color:o,depth:s,stencil:c},enable:ce,disable:L,bindFramebuffer:le,drawBuffers:R,useProgram:z,setBlending:V,setMaterial:de,setFlipSided:fe,setCullFace:pe,setLineWidth:me,setPolygonOffset:H,setScissorTest:U,activeTexture:W,bindTexture:he,unbindTexture:ge,compressedTexImage2D:_e,compressedTexImage3D:ve,texImage2D:Te,texImage3D:Ee,pixelStorei:Oe,getParameter:De,updateUBOMapping:K,uniformBlockBinding:q,texStorage2D:Ce,texStorage3D:we,texSubImage2D:ye,texSubImage3D:be,compressedTexSubImage2D:xe,compressedTexSubImage3D:Se,scissor:G,viewport:ke,reset:J}}function un(t,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 e.bn,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(t,n){return h?new OffscreenCanvas(t,n):e.On(`canvas`)}function _(t,n,r){let i=1,a=_e(t);if((a.width>r||a.height>r)&&(i=r/Math.max(a.width,a.height)),i<1){if(typeof HTMLImageElement<`u`&&t instanceof HTMLImageElement||typeof HTMLCanvasElement<`u`&&t instanceof HTMLCanvasElement||typeof ImageBitmap<`u`&&t instanceof ImageBitmap||typeof VideoFrame<`u`&&t 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(t,0,0,r,o),e.Fn(`WebGLRenderer: Texture has been resized from (`+a.width+`x`+a.height+`) to (`+r+`x`+o+`).`),s}return`data`in t&&e.Fn(`WebGLRenderer: Image in DataTexture is too big (`+a.width+`x`+a.height+`).`),t}return t}function v(e){return e.generateMipmaps}function y(e){t.generateMipmap(e)}function b(e){return e.isWebGLCubeRenderTarget?t.TEXTURE_CUBE_MAP:e.isWebGL3DRenderTarget?t.TEXTURE_3D:e.isWebGLArrayRenderTarget||e.isCompressedArrayTexture?t.TEXTURE_2D_ARRAY:t.TEXTURE_2D}function x(r,i,a,o,s,c=!1){if(r!==null){if(t[r]!==void 0)return t[r];e.Fn(`WebGLRenderer: Attempt to use non-existing WebGL internal format '`+r+`'`)}let l;o&&(l=n.get(`EXT_texture_norm16`),l||e.Fn(`WebGLRenderer: Unable to use normalized textures without EXT_texture_norm16 extension`));let u=i;if(i===t.RED&&(a===t.FLOAT&&(u=t.R32F),a===t.HALF_FLOAT&&(u=t.R16F),a===t.UNSIGNED_BYTE&&(u=t.R8),a===t.UNSIGNED_SHORT&&l&&(u=l.R16_EXT),a===t.SHORT&&l&&(u=l.R16_SNORM_EXT)),i===t.RED_INTEGER&&(a===t.UNSIGNED_BYTE&&(u=t.R8UI),a===t.UNSIGNED_SHORT&&(u=t.R16UI),a===t.UNSIGNED_INT&&(u=t.R32UI),a===t.BYTE&&(u=t.R8I),a===t.SHORT&&(u=t.R16I),a===t.INT&&(u=t.R32I)),i===t.RG&&(a===t.FLOAT&&(u=t.RG32F),a===t.HALF_FLOAT&&(u=t.RG16F),a===t.UNSIGNED_BYTE&&(u=t.RG8),a===t.UNSIGNED_SHORT&&l&&(u=l.RG16_EXT),a===t.SHORT&&l&&(u=l.RG16_SNORM_EXT)),i===t.RG_INTEGER&&(a===t.UNSIGNED_BYTE&&(u=t.RG8UI),a===t.UNSIGNED_SHORT&&(u=t.RG16UI),a===t.UNSIGNED_INT&&(u=t.RG32UI),a===t.BYTE&&(u=t.RG8I),a===t.SHORT&&(u=t.RG16I),a===t.INT&&(u=t.RG32I)),i===t.RGB_INTEGER&&(a===t.UNSIGNED_BYTE&&(u=t.RGB8UI),a===t.UNSIGNED_SHORT&&(u=t.RGB16UI),a===t.UNSIGNED_INT&&(u=t.RGB32UI),a===t.BYTE&&(u=t.RGB8I),a===t.SHORT&&(u=t.RGB16I),a===t.INT&&(u=t.RGB32I)),i===t.RGBA_INTEGER&&(a===t.UNSIGNED_BYTE&&(u=t.RGBA8UI),a===t.UNSIGNED_SHORT&&(u=t.RGBA16UI),a===t.UNSIGNED_INT&&(u=t.RGBA32UI),a===t.BYTE&&(u=t.RGBA8I),a===t.SHORT&&(u=t.RGBA16I),a===t.INT&&(u=t.RGBA32I)),i===t.RGB&&(a===t.UNSIGNED_SHORT&&l&&(u=l.RGB16_EXT),a===t.SHORT&&l&&(u=l.RGB16_SNORM_EXT),a===t.UNSIGNED_INT_5_9_9_9_REV&&(u=t.RGB9_E5),a===t.UNSIGNED_INT_10F_11F_11F_REV&&(u=t.R11F_G11F_B10F)),i===t.RGBA){let n=c?e.U:e._.getTransfer(s);a===t.FLOAT&&(u=t.RGBA32F),a===t.HALF_FLOAT&&(u=t.RGBA16F),a===t.UNSIGNED_BYTE&&(u=n===`srgb`?t.SRGB8_ALPHA8:t.RGBA8),a===t.UNSIGNED_SHORT&&l&&(u=l.RGBA16_EXT),a===t.SHORT&&l&&(u=l.RGBA16_SNORM_EXT),a===t.UNSIGNED_SHORT_4_4_4_4&&(u=t.RGBA4),a===t.UNSIGNED_SHORT_5_5_5_1&&(u=t.RGB5_A1)}return(u===t.R16F||u===t.R32F||u===t.RG16F||u===t.RG32F||u===t.RGBA16F||u===t.RGBA32F)&&n.get(`EXT_color_buffer_float`),u}function S(n,r){let i;return n?r===null||r===1014||r===1020?i=t.DEPTH24_STENCIL8:r===1015?i=t.DEPTH32F_STENCIL8:r===1012&&(i=t.DEPTH24_STENCIL8,e.Fn(`DepthTexture: 16 bit depth attachment is not supported with stencil. Using 24-bit attachment.`)):r===null||r===1014||r===1020?i=t.DEPTH_COMPONENT24:r===1015?i=t.DEPTH_COMPONENT32F:r===1012&&(i=t.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(e){let n=i.get(e);t.deleteTexture(n.__webglTexture);let r=e.source,a=m.get(r);delete a[n.__cacheKey],s.memory.textures--}function O(e){let n=i.get(e);if(e.depthTexture&&(e.depthTexture.dispose(),i.remove(e.depthTexture)),e.isWebGLCubeRenderTarget)for(let e=0;e<6;e++){if(Array.isArray(n.__webglFramebuffer[e]))for(let r=0;r<n.__webglFramebuffer[e].length;r++)t.deleteFramebuffer(n.__webglFramebuffer[e][r]);else t.deleteFramebuffer(n.__webglFramebuffer[e]);n.__webglDepthbuffer&&t.deleteRenderbuffer(n.__webglDepthbuffer[e])}else{if(Array.isArray(n.__webglFramebuffer))for(let e=0;e<n.__webglFramebuffer.length;e++)t.deleteFramebuffer(n.__webglFramebuffer[e]);else t.deleteFramebuffer(n.__webglFramebuffer);if(n.__webglDepthbuffer&&t.deleteRenderbuffer(n.__webglDepthbuffer),n.__webglMultisampledFramebuffer&&t.deleteFramebuffer(n.__webglMultisampledFramebuffer),n.__webglColorRenderbuffer)for(let e=0;e<n.__webglColorRenderbuffer.length;e++)n.__webglColorRenderbuffer[e]&&t.deleteRenderbuffer(n.__webglColorRenderbuffer[e]);n.__webglDepthRenderbuffer&&t.deleteRenderbuffer(n.__webglDepthRenderbuffer)}let r=e.textures;for(let e=0,n=r.length;e<n;e++){let n=i.get(r[e]);n.__webglTexture&&(t.deleteTexture(n.__webglTexture),s.memory.textures--),i.remove(r[e])}i.remove(e)}let k=0;function A(){k=0}function j(){return k}function M(e){k=e}function N(){let t=k;return t>=a.maxTextures&&e.Fn(`WebGLTextures: Trying to use `+t+` texture units while this GPU supports only `+a.maxTextures),k+=1,t}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&&he(n),n.isRenderTargetTexture===!1&&n.isExternalTexture!==!0&&n.version>0&&o.__version!==n.version){let t=n.image;if(t===null)e.Fn(`WebGLRenderer: Texture marked for update but no image data found.`);else if(t.complete===!1)e.Fn(`WebGLRenderer: Texture marked for update but image is incomplete`);else{L(o,n,a);return}}else n.isExternalTexture&&(o.__webglTexture=n.sourceTexture?n.sourceTexture:null);r.bindTexture(t.TEXTURE_2D,o.__webglTexture,t.TEXTURE0+a)}function te(e,n){let a=i.get(e);if(e.isRenderTargetTexture===!1&&e.version>0&&a.__version!==e.version){L(a,e,n);return}e.isExternalTexture&&(a.__webglTexture=e.sourceTexture?e.sourceTexture:null),r.bindTexture(t.TEXTURE_2D_ARRAY,a.__webglTexture,t.TEXTURE0+n)}function F(e,n){let a=i.get(e);if(e.isRenderTargetTexture===!1&&e.version>0&&a.__version!==e.version){L(a,e,n);return}r.bindTexture(t.TEXTURE_3D,a.__webglTexture,t.TEXTURE0+n)}function ne(e,n){let a=i.get(e);if(e.isCubeDepthTexture!==!0&&e.version>0&&a.__version!==e.version){le(a,e,n);return}r.bindTexture(t.TEXTURE_CUBE_MAP,a.__webglTexture,t.TEXTURE0+n)}let re={[e.Yt]:t.REPEAT,[e.h]:t.CLAMP_TO_EDGE,[e.Q]:t.MIRRORED_REPEAT},ie={[e.$]:t.NEAREST,[e.tt]:t.NEAREST_MIPMAP_NEAREST,[e.et]:t.NEAREST_MIPMAP_LINEAR,[e.z]:t.LINEAR,[e.V]:t.LINEAR_MIPMAP_NEAREST,[e.B]:t.LINEAR_MIPMAP_LINEAR},ae={512:t.NEVER,519:t.ALWAYS,513:t.LESS,515:t.LEQUAL,514:t.EQUAL,518:t.GEQUAL,516:t.GREATER,517:t.NOTEQUAL};function I(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)&&e.Fn(`WebGLRenderer: Unable to use linear filtering with floating point textures. OES_texture_float_linear not supported on this device.`),t.texParameteri(r,t.TEXTURE_WRAP_S,re[o.wrapS]),t.texParameteri(r,t.TEXTURE_WRAP_T,re[o.wrapT]),(r===t.TEXTURE_3D||r===t.TEXTURE_2D_ARRAY)&&t.texParameteri(r,t.TEXTURE_WRAP_R,re[o.wrapR]),t.texParameteri(r,t.TEXTURE_MAG_FILTER,ie[o.magFilter]),t.texParameteri(r,t.TEXTURE_MIN_FILTER,ie[o.minFilter]),o.compareFunction&&(t.texParameteri(r,t.TEXTURE_COMPARE_MODE,t.COMPARE_REF_TO_TEXTURE),t.texParameteri(r,t.TEXTURE_COMPARE_FUNC,ae[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 e=n.get(`EXT_texture_filter_anisotropic`);t.texParameterf(r,e.TEXTURE_MAX_ANISOTROPY_EXT,Math.min(o.anisotropy,a.getMaxAnisotropy())),i.get(o).__currentAnisotropy=o.anisotropy}}}function oe(e,n){let r=!1;e.__webglInit===void 0&&(e.__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!==e.__cacheKey){a[o]===void 0&&(a[o]={texture:t.createTexture(),usedTimes:0},s.memory.textures++,r=!0),a[o].usedTimes++;let i=a[e.__cacheKey];i!==void 0&&(a[e.__cacheKey].usedTimes--,i.usedTimes===0&&D(n)),e.__cacheKey=o,e.__webglTexture=a[o].texture}return r}function se(e,t,n){return Math.floor(Math.floor(e/n)/t)}function ce(e,n,i,a){let o=e.updateRanges;if(o.length===0)r.texSubImage2D(t.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(t.UNPACK_ROW_LENGTH),l=r.getParameter(t.UNPACK_SKIP_PIXELS),u=r.getParameter(t.UNPACK_SKIP_ROWS);r.pixelStorei(t.UNPACK_ROW_LENGTH,n.width);for(let e=0,s=o.length;e<s;e++){let s=o[e],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(t.UNPACK_SKIP_PIXELS,u),r.pixelStorei(t.UNPACK_SKIP_ROWS,d),r.texSubImage2D(t.TEXTURE_2D,0,u,d,f,1,i,a,n.data)}e.clearUpdateRanges(),r.pixelStorei(t.UNPACK_ROW_LENGTH,c),r.pixelStorei(t.UNPACK_SKIP_PIXELS,l),r.pixelStorei(t.UNPACK_SKIP_ROWS,u)}}function L(n,s,c){let l=t.TEXTURE_2D;(s.isDataArrayTexture||s.isCompressedArrayTexture)&&(l=t.TEXTURE_2D_ARRAY),s.isData3DTexture&&(l=t.TEXTURE_3D);let u=oe(n,s),d=s.source;r.bindTexture(l,n.__webglTexture,t.TEXTURE0+c);let p=i.get(d);if(d.version!==p.__version||u===!0){if(r.activeTexture(t.TEXTURE0+c),!(typeof ImageBitmap<`u`&&s.image instanceof ImageBitmap)){let n=e._.getPrimaries(e._.workingColorSpace),i=s.colorSpace===``?null:e._.getPrimaries(s.colorSpace),a=s.colorSpace===``||n===i?t.NONE:t.BROWSER_DEFAULT_WEBGL;r.pixelStorei(t.UNPACK_FLIP_Y_WEBGL,s.flipY),r.pixelStorei(t.UNPACK_PREMULTIPLY_ALPHA_WEBGL,s.premultiplyAlpha),r.pixelStorei(t.UNPACK_COLORSPACE_CONVERSION_WEBGL,a)}r.pixelStorei(t.UNPACK_ALIGNMENT,s.unpackAlignment);let n=_(s.image,!1,a.maxTextureSize);n=ge(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);I(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===e.E,s.type),T&&(w?r.texStorage2D(t.TEXTURE_2D,1,h,n.width,n.height):r.texImage2D(t.TEXTURE_2D,0,h,n.width,n.height,0,i,m,null));else if(s.isDataTexture){if(b.length>0){w&&T&&r.texStorage2D(t.TEXTURE_2D,D,h,b[0].width,b[0].height);for(let e=0,n=b.length;e<n;e++)g=b[e],w?E&&r.texSubImage2D(t.TEXTURE_2D,e,0,0,g.width,g.height,i,m,g.data):r.texImage2D(t.TEXTURE_2D,e,h,g.width,g.height,0,i,m,g.data);s.generateMipmaps=!1}else w?(T&&r.texStorage2D(t.TEXTURE_2D,D,h,n.width,n.height),E&&ce(s,n,i,m)):r.texImage2D(t.TEXTURE_2D,0,h,n.width,n.height,0,i,m,n.data)}else if(s.isCompressedTexture){if(s.isCompressedArrayTexture){w&&T&&r.texStorage3D(t.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=e.An(g.width,g.height,s.format,s.type);for(let e of s.layerUpdates){let o=g.data.subarray(e*n/g.data.BYTES_PER_ELEMENT,(e+1)*n/g.data.BYTES_PER_ELEMENT);r.compressedTexSubImage3D(t.TEXTURE_2D_ARRAY,a,0,0,e,g.width,g.height,1,i,o)}s.clearLayerUpdates()}else r.compressedTexSubImage3D(t.TEXTURE_2D_ARRAY,a,0,0,0,g.width,g.height,n.depth,i,g.data)}}else r.compressedTexImage3D(t.TEXTURE_2D_ARRAY,a,h,g.width,g.height,n.depth,0,g.data,0,0)}else e.Fn(`WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()`)}else w?E&&r.texSubImage3D(t.TEXTURE_2D_ARRAY,a,0,0,0,g.width,g.height,n.depth,i,m,g.data):r.texImage3D(t.TEXTURE_2D_ARRAY,a,h,g.width,g.height,n.depth,0,i,m,g.data)}else{w&&T&&r.texStorage2D(t.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(t.TEXTURE_2D,n,0,0,g.width,g.height,i,m,g.data):r.texImage2D(t.TEXTURE_2D,n,h,g.width,g.height,0,i,m,g.data):i===null?e.Fn(`WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()`):w?E&&r.compressedTexSubImage2D(t.TEXTURE_2D,n,0,0,g.width,g.height,i,g.data):r.compressedTexImage2D(t.TEXTURE_2D,n,h,g.width,g.height,0,g.data)}}else if(s.isDataArrayTexture){if(w){if(T&&r.texStorage3D(t.TEXTURE_2D_ARRAY,D,h,n.width,n.height,n.depth),E){if(s.layerUpdates.size>0){let a=e.An(n.width,n.height,s.format,s.type);for(let e of s.layerUpdates){let o=n.data.subarray(e*a/n.data.BYTES_PER_ELEMENT,(e+1)*a/n.data.BYTES_PER_ELEMENT);r.texSubImage3D(t.TEXTURE_2D_ARRAY,0,0,0,e,n.width,n.height,1,i,m,o)}s.clearLayerUpdates()}else r.texSubImage3D(t.TEXTURE_2D_ARRAY,0,0,0,0,n.width,n.height,n.depth,i,m,n.data)}}else r.texImage3D(t.TEXTURE_2D_ARRAY,0,h,n.width,n.height,n.depth,0,i,m,n.data)}else if(s.isData3DTexture)w?(T&&r.texStorage3D(t.TEXTURE_3D,D,h,n.width,n.height,n.depth),E&&r.texSubImage3D(t.TEXTURE_3D,0,0,0,0,n.width,n.height,n.depth,i,m,n.data)):r.texImage3D(t.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(t.TEXTURE_2D,D,h,n.width,n.height);else{let e=n.width,a=n.height;for(let n=0;n<D;n++)r.texImage2D(t.TEXTURE_2D,n,h,e,a,0,i,m,null),e>>=1,a>>=1}}}else if(s.isHTMLTexture){if(`texElementImage2D`in t){let e=t.canvas;if(e.hasAttribute(`layoutsubtree`)||e.setAttribute(`layoutsubtree`,`true`),n.parentNode!==e){e.appendChild(n),f.add(s),e.onpaint=e=>{let t=e.changedElements;for(let e of f)t.includes(e.image)&&(e.needsUpdate=!0)},e.requestPaint();return}if(t.texElementImage2D.length===3)t.texElementImage2D(t.TEXTURE_2D,t.RGBA8,n);else{let e=t.RGBA,r=t.RGBA,i=t.UNSIGNED_BYTE;t.texElementImage2D(t.TEXTURE_2D,0,e,r,i,n)}t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_S,t.CLAMP_TO_EDGE),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_T,t.CLAMP_TO_EDGE)}}else if(b.length>0){if(w&&T){let e=_e(b[0]);r.texStorage2D(t.TEXTURE_2D,D,h,e.width,e.height)}for(let e=0,n=b.length;e<n;e++)g=b[e],w?E&&r.texSubImage2D(t.TEXTURE_2D,e,0,0,i,m,g):r.texImage2D(t.TEXTURE_2D,e,h,i,m,g);s.generateMipmaps=!1}else if(w){if(T){let e=_e(n);r.texStorage2D(t.TEXTURE_2D,D,h,e.width,e.height)}E&&r.texSubImage2D(t.TEXTURE_2D,0,0,0,i,m,n)}else r.texImage2D(t.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(t.TEXTURE_CUBE_MAP,n.__webglTexture,t.TEXTURE0+c);let d=i.get(u);if(u.version!==d.__version||l===!0){r.activeTexture(t.TEXTURE0+c);let n=e._.getPrimaries(e._.workingColorSpace),i=s.colorSpace===``?null:e._.getPrimaries(s.colorSpace),f=s.colorSpace===``||n===i?t.NONE:t.BROWSER_DEFAULT_WEBGL;r.pixelStorei(t.UNPACK_FLIP_Y_WEBGL,s.flipY),r.pixelStorei(t.UNPACK_PREMULTIPLY_ALPHA_WEBGL,s.premultiplyAlpha),r.pixelStorei(t.UNPACK_ALIGNMENT,s.unpackAlignment),r.pixelStorei(t.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]=ge(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);I(t.TEXTURE_CUBE_MAP,s);let k;if(p){T&&E&&r.texStorage2D(t.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(t.TEXTURE_CUBE_MAP_POSITIVE_X+n,i,0,0,a.width,a.height,b,S,a.data):r.texImage2D(t.TEXTURE_CUBE_MAP_POSITIVE_X+n,i,w,a.width,a.height,0,b,S,a.data):b===null?e.Fn(`WebGLRenderer: Attempt to load unsupported compressed texture format in .setTextureCube()`):T?D&&r.compressedTexSubImage2D(t.TEXTURE_CUBE_MAP_POSITIVE_X+n,i,0,0,a.width,a.height,b,a.data):r.compressedTexImage2D(t.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 e=_e(h[0]);r.texStorage2D(t.TEXTURE_CUBE_MAP,O,w,e.width,e.height)}for(let e=0;e<6;e++)if(m){T?D&&r.texSubImage2D(t.TEXTURE_CUBE_MAP_POSITIVE_X+e,0,0,0,h[e].width,h[e].height,b,S,h[e].data):r.texImage2D(t.TEXTURE_CUBE_MAP_POSITIVE_X+e,0,w,h[e].width,h[e].height,0,b,S,h[e].data);for(let n=0;n<k.length;n++){let i=k[n].image[e].image;T?D&&r.texSubImage2D(t.TEXTURE_CUBE_MAP_POSITIVE_X+e,n+1,0,0,i.width,i.height,b,S,i.data):r.texImage2D(t.TEXTURE_CUBE_MAP_POSITIVE_X+e,n+1,w,i.width,i.height,0,b,S,i.data)}}else{T?D&&r.texSubImage2D(t.TEXTURE_CUBE_MAP_POSITIVE_X+e,0,0,0,b,S,h[e]):r.texImage2D(t.TEXTURE_CUBE_MAP_POSITIVE_X+e,0,w,b,S,h[e]);for(let n=0;n<k.length;n++){let i=k[n];T?D&&r.texSubImage2D(t.TEXTURE_CUBE_MAP_POSITIVE_X+e,n+1,0,0,b,S,i.image[e]):r.texImage2D(t.TEXTURE_CUBE_MAP_POSITIVE_X+e,n+1,w,b,S,i.image[e])}}}v(s)&&y(t.TEXTURE_CUBE_MAP),d.__version=u.version,s.onUpdate&&s.onUpdate(s)}n.__version=s.version}function R(e,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 e=Math.max(1,n.width>>u),i=Math.max(1,n.height>>u);l===t.TEXTURE_3D||l===t.TEXTURE_2D_ARRAY?r.texImage3D(l,u,p,e,i,n.depth,0,d,f,null):r.texImage2D(l,u,p,e,i,0,d,f,null)}r.bindFramebuffer(t.FRAMEBUFFER,e),W(n)?c.framebufferTexture2DMultisampleEXT(t.FRAMEBUFFER,s,l,h.__webglTexture,0,U(n)):(l===t.TEXTURE_2D||l>=t.TEXTURE_CUBE_MAP_POSITIVE_X&&l<=t.TEXTURE_CUBE_MAP_NEGATIVE_Z)&&t.framebufferTexture2D(t.FRAMEBUFFER,s,l,h.__webglTexture,u),r.bindFramebuffer(t.FRAMEBUFFER,null)}function z(e,n,r){if(t.bindRenderbuffer(t.RENDERBUFFER,e),n.depthBuffer){let i=n.depthTexture,a=i&&i.isDepthTexture?i.type:null,o=S(n.stencilBuffer,a),s=n.stencilBuffer?t.DEPTH_STENCIL_ATTACHMENT:t.DEPTH_ATTACHMENT;W(n)?c.renderbufferStorageMultisampleEXT(t.RENDERBUFFER,U(n),o,n.width,n.height):r?t.renderbufferStorageMultisample(t.RENDERBUFFER,U(n),o,n.width,n.height):t.renderbufferStorage(t.RENDERBUFFER,o,n.width,n.height),t.framebufferRenderbuffer(t.FRAMEBUFFER,s,t.RENDERBUFFER,e)}else{let e=n.textures;for(let i=0;i<e.length;i++){let a=e[i],s=o.convert(a.format,a.colorSpace),l=o.convert(a.type),u=x(a.internalFormat,s,l,a.normalized,a.colorSpace);W(n)?c.renderbufferStorageMultisampleEXT(t.RENDERBUFFER,U(n),u,n.width,n.height):r?t.renderbufferStorageMultisample(t.RENDERBUFFER,U(n),u,n.width,n.height):t.renderbufferStorage(t.RENDERBUFFER,u,n.width,n.height)}}t.bindRenderbuffer(t.RENDERBUFFER,null)}function ue(e,n,a){let s=n.isWebGLCubeRenderTarget===!0;if(r.bindFramebuffer(t.FRAMEBUFFER,e),!(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=t.createTexture(),r.bindTexture(t.TEXTURE_CUBE_MAP,l.__webglTexture),I(t.TEXTURE_CUBE_MAP,n.depthTexture);let e=o.convert(n.depthTexture.format),i=o.convert(n.depthTexture.type),a;n.depthTexture.format===1026?a=t.DEPTH_COMPONENT24:n.depthTexture.format===1027&&(a=t.DEPTH24_STENCIL8);for(let r=0;r<6;r++)t.texImage2D(t.TEXTURE_CUBE_MAP_POSITIVE_X+r,0,a,n.width,n.height,0,e,i,null)}}else P(n.depthTexture,0);let u=l.__webglTexture,d=U(n),f=s?t.TEXTURE_CUBE_MAP_POSITIVE_X+a:t.TEXTURE_2D,p=n.depthTexture.format===1027?t.DEPTH_STENCIL_ATTACHMENT:t.DEPTH_ATTACHMENT;if(n.depthTexture.format===1026)W(n)?c.framebufferTexture2DMultisampleEXT(t.FRAMEBUFFER,p,f,u,0,d):t.framebufferTexture2D(t.FRAMEBUFFER,p,f,u,0);else if(n.depthTexture.format===1027)W(n)?c.framebufferTexture2DMultisampleEXT(t.FRAMEBUFFER,p,f,u,0,d):t.framebufferTexture2D(t.FRAMEBUFFER,p,f,u,0);else throw Error(`THREE.WebGLTextures: Unknown depthTexture format.`)}function B(e){let n=i.get(e),a=e.isWebGLCubeRenderTarget===!0;if(n.__boundDepthTexture!==e.depthTexture){let t=e.depthTexture;if(n.__depthDisposeCallback&&n.__depthDisposeCallback(),t){let e=()=>{delete n.__boundDepthTexture,delete n.__depthDisposeCallback,t.removeEventListener(`dispose`,e)};t.addEventListener(`dispose`,e),n.__depthDisposeCallback=e}n.__boundDepthTexture=t}if(e.depthTexture&&!n.__autoAllocateDepthBuffer){if(a)for(let t=0;t<6;t++)ue(n.__webglFramebuffer[t],e,t);else{let t=e.texture.mipmaps;t&&t.length>0?ue(n.__webglFramebuffer[0],e,0):ue(n.__webglFramebuffer,e,0)}}else if(a){n.__webglDepthbuffer=[];for(let i=0;i<6;i++)if(r.bindFramebuffer(t.FRAMEBUFFER,n.__webglFramebuffer[i]),n.__webglDepthbuffer[i]===void 0)n.__webglDepthbuffer[i]=t.createRenderbuffer(),z(n.__webglDepthbuffer[i],e,!1);else{let r=e.stencilBuffer?t.DEPTH_STENCIL_ATTACHMENT:t.DEPTH_ATTACHMENT,a=n.__webglDepthbuffer[i];t.bindRenderbuffer(t.RENDERBUFFER,a),t.framebufferRenderbuffer(t.FRAMEBUFFER,r,t.RENDERBUFFER,a)}}else{let i=e.texture.mipmaps;if(i&&i.length>0?r.bindFramebuffer(t.FRAMEBUFFER,n.__webglFramebuffer[0]):r.bindFramebuffer(t.FRAMEBUFFER,n.__webglFramebuffer),n.__webglDepthbuffer===void 0)n.__webglDepthbuffer=t.createRenderbuffer(),z(n.__webglDepthbuffer,e,!1);else{let r=e.stencilBuffer?t.DEPTH_STENCIL_ATTACHMENT:t.DEPTH_ATTACHMENT,i=n.__webglDepthbuffer;t.bindRenderbuffer(t.RENDERBUFFER,i),t.framebufferRenderbuffer(t.FRAMEBUFFER,r,t.RENDERBUFFER,i)}}r.bindFramebuffer(t.FRAMEBUFFER,null)}function V(e,n,r){let a=i.get(e);n!==void 0&&R(a.__webglFramebuffer,e,e.texture,t.COLOR_ATTACHMENT0,t.TEXTURE_2D,0),r!==void 0&&B(e)}function de(e){let n=e.texture,a=i.get(e),c=i.get(n);e.addEventListener(`dispose`,T);let l=e.textures,u=e.isWebGLCubeRenderTarget===!0,d=l.length>1;if(d||(c.__webglTexture===void 0&&(c.__webglTexture=t.createTexture()),c.__version=n.version,s.memory.textures++),u){a.__webglFramebuffer=[];for(let e=0;e<6;e++)if(n.mipmaps&&n.mipmaps.length>0){a.__webglFramebuffer[e]=[];for(let r=0;r<n.mipmaps.length;r++)a.__webglFramebuffer[e][r]=t.createFramebuffer()}else a.__webglFramebuffer[e]=t.createFramebuffer()}else{if(n.mipmaps&&n.mipmaps.length>0){a.__webglFramebuffer=[];for(let e=0;e<n.mipmaps.length;e++)a.__webglFramebuffer[e]=t.createFramebuffer()}else a.__webglFramebuffer=t.createFramebuffer();if(d)for(let e=0,n=l.length;e<n;e++){let n=i.get(l[e]);n.__webglTexture===void 0&&(n.__webglTexture=t.createTexture(),s.memory.textures++)}if(e.samples>0&&W(e)===!1){a.__webglMultisampledFramebuffer=t.createFramebuffer(),a.__webglColorRenderbuffer=[],r.bindFramebuffer(t.FRAMEBUFFER,a.__webglMultisampledFramebuffer);for(let n=0;n<l.length;n++){let r=l[n];a.__webglColorRenderbuffer[n]=t.createRenderbuffer(),t.bindRenderbuffer(t.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,e.isXRRenderTarget===!0),u=U(e);t.renderbufferStorageMultisample(t.RENDERBUFFER,u,c,e.width,e.height),t.framebufferRenderbuffer(t.FRAMEBUFFER,t.COLOR_ATTACHMENT0+n,t.RENDERBUFFER,a.__webglColorRenderbuffer[n])}t.bindRenderbuffer(t.RENDERBUFFER,null),e.depthBuffer&&(a.__webglDepthRenderbuffer=t.createRenderbuffer(),z(a.__webglDepthRenderbuffer,e,!0)),r.bindFramebuffer(t.FRAMEBUFFER,null)}}if(u){r.bindTexture(t.TEXTURE_CUBE_MAP,c.__webglTexture),I(t.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],e,n,t.COLOR_ATTACHMENT0,t.TEXTURE_CUBE_MAP_POSITIVE_X+r,i);else R(a.__webglFramebuffer[r],e,n,t.COLOR_ATTACHMENT0,t.TEXTURE_CUBE_MAP_POSITIVE_X+r,0);v(n)&&y(t.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=t.TEXTURE_2D;(e.isWebGL3DRenderTarget||e.isWebGLArrayRenderTarget)&&(c=e.isWebGL3DRenderTarget?t.TEXTURE_3D:t.TEXTURE_2D_ARRAY),r.bindTexture(c,s.__webglTexture),I(c,o),R(a.__webglFramebuffer,e,o,t.COLOR_ATTACHMENT0+n,c,0),v(o)&&y(c)}r.unbindTexture()}else{let i=t.TEXTURE_2D;if((e.isWebGL3DRenderTarget||e.isWebGLArrayRenderTarget)&&(i=e.isWebGL3DRenderTarget?t.TEXTURE_3D:t.TEXTURE_2D_ARRAY),r.bindTexture(i,c.__webglTexture),I(i,n),n.mipmaps&&n.mipmaps.length>0)for(let r=0;r<n.mipmaps.length;r++)R(a.__webglFramebuffer[r],e,n,t.COLOR_ATTACHMENT0,i,r);else R(a.__webglFramebuffer,e,n,t.COLOR_ATTACHMENT0,i,0);v(n)&&y(i),r.unbindTexture()}e.depthBuffer&&B(e)}function fe(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 pe=[],me=[];function H(e){if(e.samples>0){if(W(e)===!1){let n=e.textures,a=e.width,o=e.height,s=t.COLOR_BUFFER_BIT,c=e.stencilBuffer?t.DEPTH_STENCIL_ATTACHMENT:t.DEPTH_ATTACHMENT,u=i.get(e),d=n.length>1;if(d)for(let e=0;e<n.length;e++)r.bindFramebuffer(t.FRAMEBUFFER,u.__webglMultisampledFramebuffer),t.framebufferRenderbuffer(t.FRAMEBUFFER,t.COLOR_ATTACHMENT0+e,t.RENDERBUFFER,null),r.bindFramebuffer(t.FRAMEBUFFER,u.__webglFramebuffer),t.framebufferTexture2D(t.DRAW_FRAMEBUFFER,t.COLOR_ATTACHMENT0+e,t.TEXTURE_2D,null,0);r.bindFramebuffer(t.READ_FRAMEBUFFER,u.__webglMultisampledFramebuffer);let f=e.texture.mipmaps;f&&f.length>0?r.bindFramebuffer(t.DRAW_FRAMEBUFFER,u.__webglFramebuffer[0]):r.bindFramebuffer(t.DRAW_FRAMEBUFFER,u.__webglFramebuffer);for(let r=0;r<n.length;r++){if(e.resolveDepthBuffer&&(e.depthBuffer&&(s|=t.DEPTH_BUFFER_BIT),e.stencilBuffer&&e.resolveStencilBuffer&&(s|=t.STENCIL_BUFFER_BIT)),d){t.framebufferRenderbuffer(t.READ_FRAMEBUFFER,t.COLOR_ATTACHMENT0,t.RENDERBUFFER,u.__webglColorRenderbuffer[r]);let e=i.get(n[r]).__webglTexture;t.framebufferTexture2D(t.DRAW_FRAMEBUFFER,t.COLOR_ATTACHMENT0,t.TEXTURE_2D,e,0)}t.blitFramebuffer(0,0,a,o,0,0,a,o,s,t.NEAREST),l===!0&&(pe.length=0,me.length=0,pe.push(t.COLOR_ATTACHMENT0+r),e.depthBuffer&&e.resolveDepthBuffer===!1&&(pe.push(c),me.push(c),t.invalidateFramebuffer(t.DRAW_FRAMEBUFFER,me)),t.invalidateFramebuffer(t.READ_FRAMEBUFFER,pe))}if(r.bindFramebuffer(t.READ_FRAMEBUFFER,null),r.bindFramebuffer(t.DRAW_FRAMEBUFFER,null),d)for(let e=0;e<n.length;e++){r.bindFramebuffer(t.FRAMEBUFFER,u.__webglMultisampledFramebuffer),t.framebufferRenderbuffer(t.FRAMEBUFFER,t.COLOR_ATTACHMENT0+e,t.RENDERBUFFER,u.__webglColorRenderbuffer[e]);let a=i.get(n[e]).__webglTexture;r.bindFramebuffer(t.FRAMEBUFFER,u.__webglFramebuffer),t.framebufferTexture2D(t.DRAW_FRAMEBUFFER,t.COLOR_ATTACHMENT0+e,t.TEXTURE_2D,a,0)}r.bindFramebuffer(t.DRAW_FRAMEBUFFER,u.__webglMultisampledFramebuffer)}else if(e.depthBuffer&&e.resolveDepthBuffer===!1&&l){let n=e.stencilBuffer?t.DEPTH_STENCIL_ATTACHMENT:t.DEPTH_ATTACHMENT;t.invalidateFramebuffer(t.DRAW_FRAMEBUFFER,[n])}}}function U(e){return Math.min(a.maxSamples,e.samples)}function W(e){let t=i.get(e);return e.samples>0&&n.has(`WEBGL_multisampled_render_to_texture`)===!0&&t.__useRenderToTexture!==!1}function he(e){let t=s.render.frame;d.get(e)!==t&&(d.set(e,t),e.update())}function ge(t,n){let r=t.colorSpace,i=t.format,a=t.type;return t.isCompressedTexture===!0||t.isVideoTexture===!0||r!==`srgb-linear`&&r!==``&&(e._.getTransfer(r)===`srgb`?(i!==1023||a!==1009)&&e.Fn(`WebGLTextures: sRGB encoded textures have to use RGBAFormat and UnsignedByteType.`):e.kn(`WebGLTextures: Unsupported texture color space:`,r)),n}function _e(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=te,this.setTexture3D=F,this.setTextureCube=ne,this.rebindTextures=V,this.setupRenderTarget=de,this.updateRenderTargetMipmap=fe,this.updateMultisampleRenderTarget=H,this.setupDepthRenderbuffer=B,this.setupFrameBufferTexture=R,this.useMultisampledRTT=W,this.isReversedDepthBuffer=function(){return r.buffers.depth.getReversed()}}function dn(t,n){function r(r,i=``){let a,o=e._.getTransfer(i);if(r===1009)return t.UNSIGNED_BYTE;if(r===1017)return t.UNSIGNED_SHORT_4_4_4_4;if(r===1018)return t.UNSIGNED_SHORT_5_5_5_1;if(r===35902)return t.UNSIGNED_INT_5_9_9_9_REV;if(r===35899)return t.UNSIGNED_INT_10F_11F_11F_REV;if(r===1010)return t.BYTE;if(r===1011)return t.SHORT;if(r===1012)return t.UNSIGNED_SHORT;if(r===1013)return t.INT;if(r===1014)return t.UNSIGNED_INT;if(r===1015)return t.FLOAT;if(r===1016)return t.HALF_FLOAT;if(r===1021)return t.ALPHA;if(r===1022)return t.RGB;if(r===1023)return t.RGBA;if(r===1026)return t.DEPTH_COMPONENT;if(r===1027)return t.DEPTH_STENCIL;if(r===1028)return t.RED;if(r===1029)return t.RED_INTEGER;if(r===1030)return t.RG;if(r===1031)return t.RG_INTEGER;if(r===1033)return t.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?t.UNSIGNED_INT_24_8:t[r]===void 0?null:t[r]}return{convert:r}}var fn=`
|
|
4081
4081
|
void main() {
|
|
4082
4082
|
|
|
4083
4083
|
gl_Position = vec4( position, 1.0 );
|
|
@@ -4101,7 +4101,7 @@ void main() {
|
|
|
4101
4101
|
|
|
4102
4102
|
}
|
|
4103
4103
|
|
|
4104
|
-
}`,mn=class{constructor(){this.texture=null,this.mesh=null,this.depthNear=0,this.depthFar=0}init(t,n){if(this.texture===null){let r=new e.T(t.texture);(t.depthNear!==n.depthNear||t.depthFar!==n.depthFar)&&(this.depthNear=t.depthNear,this.depthFar=t.depthFar),this.texture=r}}getMesh(t){if(this.texture!==null&&this.mesh===null){let n=t.cameras[0].viewport,r=new e.$t({vertexShader:fn,fragmentShader:pn,uniforms:{depthColor:{value:this.texture},depthWidth:{value:n.z},depthHeight:{value:n.w}}});this.mesh=new e.U(new e.et(20,20),r)}return this.mesh}reset(){this.texture=null,this.mesh=null}getDepthTexture(){return this.texture}},hn=class extends e.w{constructor(t,n){super();let i=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 mn,v={},y=n.getContextAttributes(),b=null,x=null,S=[],C=[],w=new e.hn,T=null,E=new e.Q;E.viewport=new e._n;let D=new e.Q;D.viewport=new e._n;let O=[E,D],k=new e.a,A=null,j=null;this.cameraAutoUpdate=!0,this.enabled=!1,this.isPresenting=!1,this.getController=function(t){let n=S[t];return n===void 0&&(n=new e.bn,S[t]=n),n.getTargetRaySpace()},this.getControllerGrip=function(t){let n=S[t];return n===void 0&&(n=new e.bn,S[t]=n),n.getGripSpace()},this.getHand=function(t){let n=S[t];return n===void 0&&(n=new e.bn,S[t]=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];t.setRenderTarget(b),m=null,p=null,f=null,a=null,x=null,F.stop(),i.isPresenting=!1,t.setPixelRatio(T),t.setSize(w.width,w.height,!1),i.dispatchEvent({type:`sessionend`})}this.setFramebufferScaleFactor=function(t){o=t,i.isPresenting===!0&&e.An(`WebXRManager: Cannot change framebuffer scale while presenting.`)},this.setReferenceSpaceType=function(t){c=t,i.isPresenting===!0&&e.An(`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(r){if(a=r,a!==null){if(b=t.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=t.getPixelRatio(),t.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?e.x:e.b,i=y.stencil?e.ln:e.dn);let c={colorFormat:n.RGBA8,depthFormat:s,scaleFactor:o};f=this.getBinding(),p=f.createProjectionLayer(c),a.updateRenderState({layers:[p]}),t.setPixelRatio(1),t.setSize(p.textureWidth,p.textureHeight,!1),x=new e.yn(p.textureWidth,p.textureHeight,{format:e.st,type:e.sn,depthTexture:new e.S(p.textureWidth,p.textureHeight,i,void 0,void 0,void 0,void 0,void 0,void 0,r),stencilBuffer:y.stencil,colorSpace:t.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}),t.setPixelRatio(1),t.setSize(m.framebufferWidth,m.framebufferHeight,!1),x=new e.yn(m.framebufferWidth,m.framebufferHeight,{format:e.st,type:e.sn,colorSpace:t.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),F.setContext(a),F.start(),i.isPresenting=!0,i.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 e.gn,te=new e.gn;function ne(e,t,n){P.setFromMatrixPosition(t.matrixWorld),te.setFromMatrixPosition(n.matrixWorld);let r=P.distanceTo(te),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 re(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;re(k,r);for(let e=0;e<i.length;e++)re(i[e],r);i.length===2?ne(k,E,D):k.projectionMatrix.copy(E.projectionMatrix),ie(e,k,r)};function ie(t,n,r){r===null?t.matrix.copy(n.matrixWorld):(t.matrix.copy(r.matrixWorld),t.matrix.invert(),t.matrix.multiply(n.matrixWorld)),t.matrix.decompose(t.position,t.quaternion,t.scale),t.updateMatrixWorld(!0),t.projectionMatrix.copy(n.projectionMatrix),t.projectionMatrixInverse.copy(n.projectionMatrixInverse),t.isPerspectiveCamera&&(t.fov=e.rt*2*Math.atan(1/t.projectionMatrix.elements[5]),t.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 ae=null;function oe(n,r){if(d=r.getViewerPose(u||s),h=r,d!==null){let n=d.views;m!==null&&(t.setRenderTargetFramebuffer(x,m.framebuffer),t.setRenderTarget(x));let r=!1;n.length!==k.cameras.length&&(k.cameras.length=0,r=!0);for(let i=0;i<n.length;i++){let a=n[i],o=null;if(m!==null)o=m.getViewport(a);else{let e=f.getViewSubImage(p,a);o=e.viewport,i===0&&(t.setRenderTargetTextures(x,e.colorTexture,e.depthStencilTexture),t.setRenderTarget(x))}let s=O[i];s===void 0&&(s=new e.Q,s.layers.enable(i),s.viewport=new e._n,O[i]=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),i===0&&(k.matrix.copy(s.matrix),k.matrix.decompose(k.position,k.quaternion,k.scale)),r===!0&&k.cameras.push(s)}let o=a.enabledFeatures;if(o&&o.includes(`depth-sensing`)&&a.depthUsage==`gpu-optimized`&&g){f=i.getBinding();let e=f.getDepthInformation(n[0]);e&&e.isValid&&e.texture&&_.init(e,a.renderState)}if(o&&o.includes(`camera-access`)&&g){t.state.unbindTexture(),f=i.getBinding();for(let t=0;t<n.length;t++){let r=n[t].camera;if(r){let t=v[r];t||(t=new e.T,v[r]=t);let n=f.getCameraImage(r);t.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,r,u||s)}ae&&ae(n,r),r.detectedPlanes&&i.dispatchEvent({type:`planesdetected`,data:r}),h=null}let F=new r;F.setAnimationLoop(oe),this.setAnimationLoop=function(e){ae=e},this.dispose=function(){}}},gn=new e.H,_n=new e.V;_n.set(-1,0,0,0,1,0,0,0,1);function vn(t,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,e.En(t)),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(gn.makeRotationFromEuler(o)).transpose(),a.isCubeTexture&&a.isRenderTargetTexture===!1&&e.envMapRotation.value.premultiply(_n),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 yn(t,n,r,i){let a={},o={},s=[],c=t.getParameter(t.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(e){let n=f();e.__bindingPointIndex=n;let r=t.createBuffer(),i=e.__size,a=e.usage;return t.bindBuffer(t.UNIFORM_BUFFER,r),t.bufferData(t.UNIFORM_BUFFER,i,a),t.bindBuffer(t.UNIFORM_BUFFER,null),t.bindBufferBase(t.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 e.wn(`WebGLRenderer: Maximum number of simultaneously usable uniforms groups reached.`),0}function p(e){let n=a[e.id],r=e.uniforms,i=e.__cache;t.bindBuffer(t.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)}t.bindBuffer(t.UNIFORM_BUFFER,null)}function m(e,n,r,i){if(g(e,n,r,i)===!0){let n=e.__offset,r=e.value;if(Array.isArray(r)){let t=0;for(let n=0;n<r.length;n++){let i=r[n],a=v(i);h(i,e.__data,t),typeof i!=`number`&&typeof i!=`boolean`&&!i.isMatrix3&&!ArrayBuffer.isView(i)&&(t+=a.storage/Float32Array.BYTES_PER_ELEMENT)}}else h(r,e.__data,0);t.bufferSubData(t.UNIFORM_BUFFER,n,e.__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(t){let n={boundary:0,storage:0};return typeof t==`number`||typeof t==`boolean`?(n.boundary=4,n.storage=4):t.isVector2?(n.boundary=8,n.storage=8):t.isVector3||t.isColor?(n.boundary=16,n.storage=12):t.isVector4?(n.boundary=16,n.storage=16):t.isMatrix3?(n.boundary=48,n.storage=48):t.isMatrix4?(n.boundary=64,n.storage=64):t.isTexture?e.An(`WebGLRenderer: Texture samplers can not be part of an uniforms group.`):ArrayBuffer.isView(t)?(n.boundary=16,n.storage=t.byteLength):e.An(`WebGLRenderer: Unsupported uniform value type.`,t),n}function y(e){let n=e.target;n.removeEventListener(`dispose`,y);let r=s.indexOf(n.__bindingPointIndex);s.splice(r,1),t.deleteBuffer(a[n.id]),delete a[n.id],delete o[n.id]}function b(){for(let e in a)t.deleteBuffer(a[e]);s=[],a={},o={}}return{bind:l,update:u,dispose:b}}var bn=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]),xn=null;function Sn(){return xn===null&&(xn=new e.y(bn,16,16,e.Rt,e.j),xn.name=`DFG_LUT`,xn.minFilter=e.P,xn.magFilter=e.P,xn.wrapS=e.u,xn.wrapT=e.u,xn.generateMipmaps=!1,xn.needsUpdate=!0),xn}var Cn=class{constructor(t={}){let{canvas:n=e.Sn(),context:a=null,depth:o=!0,stencil:s=!1,alpha:c=!1,antialias:l=!1,premultipliedAlpha:u=!0,preserveDrawingBuffer:g=!1,powerPreference:_=`default`,failIfMajorPerformanceCaveat:v=!1,reversedDepthBuffer:y=!1,outputBufferType:b=e.sn}=t;this.isWebGLRenderer=!0;let x;if(a!==null){if(typeof WebGLRenderingContext<`u`&&a instanceof WebGLRenderingContext)throw Error(`THREE.WebGLRenderer: WebGL 1 is not supported since r163.`);x=a.getContextAttributes().alpha}else x=c;let S=b,C=new Set([e.ct,e.zt,e.Ut]),w=new Set([e.sn,e.dn,e.mn,e.ln,e.fn,e.pn]),T=new Uint32Array(4),E=new Int32Array(4),D=new e.gn,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,te=null,ce=null,L=null;this._outputColorSpace=e.Xt;let le=0,R=0,z=null,ue=-1,B=null,V=new e._n,de=new e._n,fe=null,pe=new e.d(0),me=0,H=n.width,U=n.height,W=1,he=null,ge=null,_e=new e._n(0,0,H,U),ve=new e._n(0,0,H,U),ye=!1,be=new e.O,xe=!1,Se=!1,Ce=new e.H,we=new e.gn,Te=new e._n,Ee={background:null,fog:null,environment:null,overrideMaterial:null,isScene:!0},De=!1;function Oe(){return z===null?W:1}let G=a;function ke(e,t){return n.getContext(e,t)}try{let e={alpha:!0,depth:o,stencil:s,antialias:l,premultipliedAlpha:u,preserveDrawingBuffer:g,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),G===null){let t=`webgl2`;if(G=ke(t,e),G===null)throw ke(t)?Error(`THREE.WebGLRenderer: Error creating WebGL context with your selected attributes.`):Error(`THREE.WebGLRenderer: Error creating WebGL context.`)}}catch(t){throw e.wn(`WebGLRenderer: `+t.message),t}let K,q,J,Ae,Y,X,je,Me,Ne,Pe,Fe,Ie,Le,Re,ze,Be,Ve,He,Ue,We,Ge,Ke,qe;function Je(){K=new re(G),K.init(),Ge=new dn(G,K),q=new m(G,K,t,Ge),J=new ln(G,K),q.reversedDepthBuffer&&y&&J.buffers.depth.setReversed(!0),te=G.createFramebuffer(),ce=G.createFramebuffer(),L=G.createFramebuffer(),Ae=new oe(G),Y=new Ht,X=new un(G,K,J,Y,q,Ge,Ae),je=new ne(N),Me=new i(G),Ke=new f(G,Me),Ne=new ie(G,Me,Ae,Ke),Pe=new se(G,Ne,Me,Ke,Ae),He=new F(G,q,X),ze=new h(Y),Fe=new Vt(N,je,K,q,Ke,ze),Ie=new vn(N,Y),Le=new Kt,Re=new $t(K),Ve=new d(N,je,J,Pe,x,u),Be=new cn(N,Pe,q),qe=new yn(G,Ae,q,J),Ue=new p(G,K,Ae),We=new ae(G,K,Ae),Ae.programs=Fe.programs,N.capabilities=q,N.extensions=K,N.properties=Y,N.renderLists=Le,N.shadowMap=Be,N.state=J,N.info=Ae}Je(),S!==1009&&(M=new I(S,n.width,n.height,l,o,s));let Z=new hn(N,G);this.xr=Z,this.getContext=function(){return G},this.getContextAttributes=function(){return G.getContextAttributes()},this.forceContextLoss=function(){let e=K.get(`WEBGL_lose_context`);e&&e.loseContext()},this.forceContextRestore=function(){let e=K.get(`WEBGL_lose_context`);e&&e.restoreContext()},this.getPixelRatio=function(){return W},this.setPixelRatio=function(e){e!==void 0&&(W=e,this.setSize(H,U,!1))},this.getSize=function(e){return e.set(H,U)},this.setSize=function(t,r,i=!0){if(Z.isPresenting){e.An(`WebGLRenderer: Can't change size while VR device is presenting.`);return}H=t,U=r,n.width=Math.floor(t*W),n.height=Math.floor(r*W),i===!0&&(n.style.width=t+`px`,n.style.height=r+`px`),M!==null&&M.setSize(n.width,n.height),this.setViewport(0,0,t,r)},this.getDrawingBufferSize=function(e){return e.set(H*W,U*W).floor()},this.setDrawingBufferSize=function(e,t,r){H=e,U=t,W=r,n.width=Math.floor(e*r),n.height=Math.floor(t*r),this.setViewport(0,0,e,t)},this.setEffects=function(t){if(S===1009){e.wn(`WebGLRenderer: setEffects() requires outputBufferType set to HalfFloatType or FloatType.`);return}if(t){for(let n=0;n<t.length;n++)if(t[n].isOutputPass===!0){e.An(`WebGLRenderer: OutputPass is not needed in setEffects(). Tone mapping and color space conversion are applied automatically.`);break}}M.setEffects(t||[])},this.getCurrentViewport=function(e){return e.copy(V)},this.getViewport=function(e){return e.copy(_e)},this.setViewport=function(e,t,n,r){e.isVector4?_e.set(e.x,e.y,e.z,e.w):_e.set(e,t,n,r),J.viewport(V.copy(_e).multiplyScalar(W).round())},this.getScissor=function(e){return e.copy(ve)},this.setScissor=function(e,t,n,r){e.isVector4?ve.set(e.x,e.y,e.z,e.w):ve.set(e,t,n,r),J.scissor(de.copy(ve).multiplyScalar(W).round())},this.getScissorTest=function(){return ye},this.setScissorTest=function(e){J.setScissorTest(ye=e)},this.setOpaqueSort=function(e){he=e},this.setTransparentSort=function(e){ge=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,G.clearBufferuiv(G.COLOR,0,T)):(E[0]=i,E[1]=a,E[2]=o,E[3]=r,G.clearBufferiv(G.COLOR,0,E))}else r|=G.COLOR_BUFFER_BIT}t&&(r|=G.DEPTH_BUFFER_BIT,this.state.buffers.depth.setMask(!0)),n&&(r|=G.STENCIL_BUFFER_BIT,this.state.buffers.stencil.setMask(4294967295)),r!==0&&G.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(t){t.preventDefault(),e.Dn(`WebGLRenderer: Context Lost.`),ee=!0}function Xe(){e.Dn(`WebGLRenderer: Context Restored.`),ee=!1;let t=Ae.autoReset,n=Be.enabled,r=Be.autoUpdate,i=Be.needsUpdate,a=Be.type;Je(),Ae.autoReset=t,Be.enabled=n,Be.autoUpdate=r,Be.needsUpdate=i,Be.type=a}function Ze(t){e.wn(`WebGLRenderer: A WebGL context could not be created. Reason: `,t.statusMessage)}function Qe(e){let t=e.target;t.removeEventListener(`dispose`,Qe),$e(t)}function $e(e){tt(e),Y.remove(e)}function tt(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=Ee);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*Oe()),g.setMode(G.LINES)):g.setMode(G.TRIANGLES);else if(i.isLine){let e=r.linewidth;e===void 0&&(e=1),J.setLineWidth(e*Oe()),i.isLineSegments?g.setMode(G.LINES):i.isLineLoop?g.setMode(G.LINE_LOOP):g.setMode(G.LINE_STRIP)}else i.isPoints?g.setMode(G.POINTS):i.isSprite&&g.setMode(G.TRIANGLES);if(i.isBatchedMesh){if(K.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(G,`_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)}K.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 r;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(t,n){if(n!==void 0&&n.isCamera!==!0){e.wn(`WebGLRenderer.render: camera is not an instance of THREE.Camera.`);return}if(ee===!0)return;P!==null&&P.renderStart(t,n);let r=Z.enabled===!0&&Z.isPresenting===!0,i=M!==null&&(z===null||r)&&M.begin(N,z);if(t.matrixWorldAutoUpdate===!0&&t.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()),t.isScene===!0&&t.onBeforeRender(N,t,n,z),k=Re.get(t,j.length),k.init(n),k.state.textureUnits=X.getTextureUnits(),j.push(k),Ce.multiplyMatrices(n.projectionMatrix,n.matrixWorldInverse),be.setFromProjectionMatrix(Ce,e.vn,n.reversedDepth),Se=this.localClippingEnabled,xe=ze.init(this.clippingPlanes,Se),O=Le.get(t,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(t,n,0,N.sortObjects),O.finish(),N.sortObjects===!0&&O.sort(he,ge,n.reversedDepth),De=Z.enabled===!1||Z.isPresenting===!1||Z.hasDepthSensing()===!1,De&&Ve.addToRenderList(O,t),this.info.render.frame++,this.info.autoReset===!0&&this.info.reset(),xe===!0&&ze.beginShadows();let a=k.state.shadowsArray;if(Be.render(a,t,n),xe===!0&&ze.endShadows(),(i&&M.hasRenderPass())===!1){let e=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(e,r,t,a)}De&&Ve.render(t);for(let e=0,n=i.length;e<n;e++){let n=i[e];lt(O,t,n,n.viewport)}}else r.length>0&&ut(e,r,t,n),De&&Ve.render(t),lt(O,t,n)}z!==null&&R===0&&(X.updateMultisampleRenderTarget(z),X.updateRenderTargetMipmap(z)),i&&M.end(N),t.isScene===!0&&t.onAfterRender(N,t,n),Ke.resetDefaultState(),ue=-1,B=null,j.pop(),j.length>0?(k=j[j.length-1],X.setTextureUnits(k.state.textureUnits),xe===!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||be.intersectsSprite(e)){r&&Te.setFromMatrixPosition(e.matrixWorld).applyMatrix4(Ce);let t=Pe.update(e),i=e.material;i.visible&&O.push(e,t,i,n,Te.z,null)}}else if((e.isMesh||e.isLine||e.isPoints)&&(!e.frustumCulled||be.intersectsObject(e))){let t=Pe.update(e),i=e.material;if(r&&(e.boundingSphere===void 0?(t.boundingSphere===null&&t.computeBoundingSphere(),Te.copy(t.boundingSphere.center)):(e.boundingSphere===null&&e.computeBoundingSphere(),Te.copy(e.boundingSphere.center)),Te.applyMatrix4(e.matrixWorld).applyMatrix4(Ce)),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,Te.z,o)}}else i.visible&&O.push(e,t,i,n,Te.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),xe===!0&&ze.setGlobalState(N.clippingPlanes,n),r&&J.viewport(V.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(t,n,r,i){if((r.isScene===!0?r.overrideMaterial:null)!==null)return;if(k.state.transmissionRenderTarget[i.id]===void 0){let t=K.has(`EXT_color_buffer_half_float`)||K.has(`EXT_color_buffer_float`);k.state.transmissionRenderTarget[i.id]=new e.yn(1,1,{generateMipmaps:!0,type:t?e.j:e.sn,minFilter:e.F,samples:Math.max(4,q.samples),stencilBuffer:s,resolveDepthBuffer:!1,resolveStencilBuffer:!1,colorSpace:e.f.workingColorSpace})}let a=k.state.transmissionRenderTarget[i.id],o=i.viewport||V;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(pe),me=N.getClearAlpha(),me<1&&N.setClearColor(16777215,.5),N.clear(),De&&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),xe===!0&&ze.setGlobalState(N.clippingPlanes,i),dt(t,r,i),X.updateMultisampleRenderTarget(a),X.updateRenderTargetMipmap(a),K.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(pe,me),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=Ee);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=et.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(t,n,r,i,a){n.isScene!==!0&&(n=Ee),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:e.f.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(xe===!0&&(Se===!0||t!==B)){let e=t===B&&i.id===ue;ze.setState(i,t,e)}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!==ue&&(ue=i.id,w=!0),y.needsLights){let e=gt(k.state.lightProbeGridArray,a);y.lightProbeGrid!==e&&(y.lightProbeGrid=e,w=!0)}if(C||B!==t){J.buffers.depth.getReversed()&&t.reversedDepth!==!0&&(t._reversedDepth=!0,t.updateProjectionMatrix()),E.setValue(G,`projectionMatrix`,t.projectionMatrix),E.setValue(G,`viewMatrix`,t.matrixWorldInverse);let e=E.map.cameraPosition;e!==void 0&&e.setValue(G,we.setFromMatrixPosition(t.matrixWorld)),q.logarithmicDepthBuffer&&E.setValue(G,`logDepthBufFC`,2/(Math.log(t.far+1)/Math.LN2)),(i.isMeshPhongMaterial||i.isMeshToonMaterial||i.isMeshLambertMaterial||i.isMeshBasicMaterial||i.isMeshStandardMaterial||i.isShaderMaterial)&&E.setValue(G,`isOrthographic`,t.isOrthographicCamera===!0),B!==t&&(B=t,w=!0,T=!0)}if(y.needsLights&&(b.state.directionalShadowMap.length>0&&E.setValue(G,`directionalShadowMap`,b.state.directionalShadowMap,X),b.state.spotShadowMap.length>0&&E.setValue(G,`spotShadowMap`,b.state.spotShadowMap,X),b.state.pointShadowMap.length>0&&E.setValue(G,`pointShadowMap`,b.state.pointShadowMap,X)),a.isSkinnedMesh){E.setOptional(G,a,`bindMatrix`),E.setOptional(G,a,`bindMatrixInverse`);let e=a.skeleton;e&&(e.boneTexture===null&&e.computeBoneTexture(),E.setValue(G,`boneTexture`,e.boneTexture,X))}a.isBatchedMesh&&(E.setOptional(G,a,`batchingTexture`),E.setValue(G,`batchingTexture`,a._matricesTexture,X),E.setOptional(G,a,`batchingIdTexture`),E.setValue(G,`batchingIdTexture`,a._indirectTexture,X),E.setOptional(G,a,`batchingColorTexture`),a._colorsTexture!==null&&E.setValue(G,`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(G,`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=Sn()),w){if(E.setValue(G,`toneMappingExposure`,N.toneMappingExposure),y.needsLights&&vt(D,T),o&&i.fog===!0&&Ie.refreshFogUniforms(D,o),Ie.refreshMaterialUniforms(D,i,W,U,k.state.transmissionRenderTarget[t.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)}et.upload(G,mt(y),D,X)}if(i.isShaderMaterial&&i.uniformsNeedUpdate===!0&&(et.upload(G,mt(y),D,X),i.uniformsNeedUpdate=!1),i.isSpriteMaterial&&E.setValue(G,`center`,a.center),E.setValue(G,`modelViewMatrix`,a.modelViewMatrix),E.setValue(G,`normalMatrix`,a.normalMatrix),E.setValue(G,`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(G.FRAMEBUFFER,o.__webglFramebuffer),V.copy(e.viewport),de.copy(e.scissor),fe=e.scissorTest,J.viewport(V),J.scissor(de),J.setScissorTest(fe),ue=-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,V.copy(e.viewport),de.copy(e.scissor),fe=e.scissorTest}else V.copy(_e).multiplyScalar(W).floor(),de.copy(ve).multiplyScalar(W).floor(),fe=ye;if(n!==0&&(r=te),J.bindFramebuffer(G.FRAMEBUFFER,r)&&J.drawBuffers(e,r),J.viewport(V),J.scissor(de),J.setScissorTest(fe),i){let r=Y.get(e.texture);G.framebufferTexture2D(G.FRAMEBUFFER,G.COLOR_ATTACHMENT0,G.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]);G.framebufferTextureLayer(G.FRAMEBUFFER,G.COLOR_ATTACHMENT0+t,i.__webglTexture,n,r)}}else if(e!==null&&n!==0){let t=Y.get(e.texture);G.framebufferTexture2D(G.FRAMEBUFFER,G.COLOR_ATTACHMENT0,G.TEXTURE_2D,t.__webglTexture,n)}ue=-1},this.readRenderTargetPixels=function(t,n,r,i,a,o,s,c=0){if(!(t&&t.isWebGLRenderTarget)){e.wn(`WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.`);return}let l=Y.get(t).__webglFramebuffer;if(t.isWebGLCubeRenderTarget&&s!==void 0&&(l=l[s]),l){J.bindFramebuffer(G.FRAMEBUFFER,l);try{let s=t.textures[c],l=s.format,u=s.type;if(t.textures.length>1&&G.readBuffer(G.COLOR_ATTACHMENT0+c),!q.textureFormatReadable(l)){e.wn(`WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format.`);return}if(!q.textureTypeReadable(u)){e.wn(`WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.`);return}n>=0&&n<=t.width-i&&r>=0&&r<=t.height-a&&G.readPixels(n,r,i,a,Ge.convert(l),Ge.convert(u),o)}finally{let e=z===null?null:Y.get(z).__webglFramebuffer;J.bindFramebuffer(G.FRAMEBUFFER,e)}}},this.readRenderTargetPixelsAsync=async function(t,n,r,i,a,o,s,c=0){if(!(t&&t.isWebGLRenderTarget))throw Error(`THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.`);let l=Y.get(t).__webglFramebuffer;if(t.isWebGLCubeRenderTarget&&s!==void 0&&(l=l[s]),l){if(n>=0&&n<=t.width-i&&r>=0&&r<=t.height-a){J.bindFramebuffer(G.FRAMEBUFFER,l);let s=t.textures[c],u=s.format,d=s.type;if(t.textures.length>1&&G.readBuffer(G.COLOR_ATTACHMENT0+c),!q.textureFormatReadable(u))throw Error(`THREE.WebGLRenderer.readRenderTargetPixelsAsync: renderTarget is not in RGBA or implementation defined format.`);if(!q.textureTypeReadable(d))throw Error(`THREE.WebGLRenderer.readRenderTargetPixelsAsync: renderTarget is not in UnsignedByteType or implementation defined type.`);let f=G.createBuffer();G.bindBuffer(G.PIXEL_PACK_BUFFER,f),G.bufferData(G.PIXEL_PACK_BUFFER,o.byteLength,G.STREAM_READ),G.readPixels(n,r,i,a,Ge.convert(u),Ge.convert(d),0);let p=z===null?null:Y.get(z).__webglFramebuffer;J.bindFramebuffer(G.FRAMEBUFFER,p);let m=G.fenceSync(G.SYNC_GPU_COMMANDS_COMPLETE,0);return G.flush(),await e.kn(G,m,4),G.bindBuffer(G.PIXEL_PACK_BUFFER,f),G.getBufferSubData(G.PIXEL_PACK_BUFFER,0,o),G.deleteBuffer(f),G.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),G.copyTexSubImage2D(G.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=G.TEXTURE_3D):t.isDataArrayTexture||t.isCompressedArrayTexture?(X.setTexture2DArray(t,0),v=G.TEXTURE_2D_ARRAY):(X.setTexture2D(t,0),v=G.TEXTURE_2D),J.activeTexture(G.TEXTURE0),J.pixelStorei(G.UNPACK_FLIP_Y_WEBGL,t.flipY),J.pixelStorei(G.UNPACK_PREMULTIPLY_ALPHA_WEBGL,t.premultiplyAlpha),J.pixelStorei(G.UNPACK_ALIGNMENT,t.unpackAlignment);let y=J.getParameter(G.UNPACK_ROW_LENGTH),b=J.getParameter(G.UNPACK_IMAGE_HEIGHT),x=J.getParameter(G.UNPACK_SKIP_PIXELS),S=J.getParameter(G.UNPACK_SKIP_ROWS),C=J.getParameter(G.UNPACK_SKIP_IMAGES);J.pixelStorei(G.UNPACK_ROW_LENGTH,h.width),J.pixelStorei(G.UNPACK_IMAGE_HEIGHT,h.height),J.pixelStorei(G.UNPACK_SKIP_PIXELS,l),J.pixelStorei(G.UNPACK_SKIP_ROWS,u),J.pixelStorei(G.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(G.READ_FRAMEBUFFER,h.__webglFramebuffer),J.bindFramebuffer(G.DRAW_FRAMEBUFFER,g.__webglFramebuffer);for(let n=0;n<c;n++)w&&(G.framebufferTextureLayer(G.READ_FRAMEBUFFER,G.COLOR_ATTACHMENT0,Y.get(e).__webglTexture,i,d+n),G.framebufferTextureLayer(G.DRAW_FRAMEBUFFER,G.COLOR_ATTACHMENT0,Y.get(t).__webglTexture,a,m+n)),G.blitFramebuffer(l,u,o,s,f,p,o,s,G.DEPTH_BUFFER_BIT,G.NEAREST);J.bindFramebuffer(G.READ_FRAMEBUFFER,null),J.bindFramebuffer(G.DRAW_FRAMEBUFFER,null)}else if(i!==0||e.isRenderTargetTexture||Y.has(e)){let n=Y.get(e),r=Y.get(t);J.bindFramebuffer(G.READ_FRAMEBUFFER,ce),J.bindFramebuffer(G.DRAW_FRAMEBUFFER,L);for(let e=0;e<c;e++)w?G.framebufferTextureLayer(G.READ_FRAMEBUFFER,G.COLOR_ATTACHMENT0,n.__webglTexture,i,d+e):G.framebufferTexture2D(G.READ_FRAMEBUFFER,G.COLOR_ATTACHMENT0,G.TEXTURE_2D,n.__webglTexture,i),T?G.framebufferTextureLayer(G.DRAW_FRAMEBUFFER,G.COLOR_ATTACHMENT0,r.__webglTexture,a,m+e):G.framebufferTexture2D(G.DRAW_FRAMEBUFFER,G.COLOR_ATTACHMENT0,G.TEXTURE_2D,r.__webglTexture,a),i===0?T?G.copyTexSubImage3D(v,a,f,p,m+e,l,u,o,s):G.copyTexSubImage2D(v,a,f,p,l,u,o,s):G.blitFramebuffer(l,u,o,s,f,p,o,s,G.COLOR_BUFFER_BIT,G.NEAREST);J.bindFramebuffer(G.READ_FRAMEBUFFER,null),J.bindFramebuffer(G.DRAW_FRAMEBUFFER,null)}else T?e.isDataTexture||e.isData3DTexture?G.texSubImage3D(v,a,f,p,m,o,s,c,g,_,h.data):t.isCompressedArrayTexture?G.compressedTexSubImage3D(v,a,f,p,m,o,s,c,g,h.data):G.texSubImage3D(v,a,f,p,m,o,s,c,g,_,h):e.isDataTexture?G.texSubImage2D(G.TEXTURE_2D,a,f,p,o,s,g,_,h.data):e.isCompressedTexture?G.compressedTexSubImage2D(G.TEXTURE_2D,a,f,p,h.width,h.height,g,h.data):G.texSubImage2D(G.TEXTURE_2D,a,f,p,o,s,g,_,h);J.pixelStorei(G.UNPACK_ROW_LENGTH,y),J.pixelStorei(G.UNPACK_IMAGE_HEIGHT,b),J.pixelStorei(G.UNPACK_SKIP_PIXELS,x),J.pixelStorei(G.UNPACK_SKIP_ROWS,S),J.pixelStorei(G.UNPACK_SKIP_IMAGES,C),a===0&&t.generateMipmaps&&G.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 e.vn}get outputColorSpace(){return this._outputColorSpace}set outputColorSpace(t){this._outputColorSpace=t;let n=this.getContext();n.drawingBufferColorSpace=e.f._getDrawingBufferColorSpace(t),n.unpackColorSpace=e.f._getUnpackColorSpace()}},wn={type:`change`},Tn={type:`start`},En={type:`end`},Dn=new e.Vt,On=new e.$,kn=Math.cos(70*e.B.DEG2RAD),Q=new e.gn,An=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},jn=1e-6,Mn=class extends e.p{constructor(t,n=null){super(t,n),this.state=$.NONE,this.target=new e.gn,this.cursor=new e.gn,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:e.z.ROTATE,MIDDLE:e.z.DOLLY,RIGHT:e.z.PAN},this.touches={ONE:e.nn.ROTATE,TWO:e.nn.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 e.gn,this._lastQuaternion=new e.tt,this._lastTargetPosition=new e.gn,this._quat=new e.tt().setFromUnitVectors(t.up,new e.gn(0,1,0)),this._quatInverse=this._quat.clone().invert(),this._spherical=new e.tn,this._sphericalDelta=new e.tn,this._scale=1,this._panOffset=new e.gn,this._rotateStart=new e.hn,this._rotateEnd=new e.hn,this._rotateDelta=new e.hn,this._panStart=new e.hn,this._panEnd=new e.hn,this._panDelta=new e.hn,this._dollyStart=new e.hn,this._dollyEnd=new e.hn,this._dollyDelta=new e.hn,this._dollyDirection=new e.gn,this._mouse=new e.hn,this._performCursorZoom=!1,this._pointers=[],this._pointerPositions={},this._controlActive=!1,this._onPointerMove=Pn.bind(this),this._onPointerDown=Nn.bind(this),this._onPointerUp=Fn.bind(this),this._onContextMenu=Hn.bind(this),this._onMouseWheel=Rn.bind(this),this._onKeyDown=zn.bind(this),this._onTouchStart=Bn.bind(this),this._onTouchMove=Vn.bind(this),this._onMouseDown=In.bind(this),this._onMouseMove=Ln.bind(this),this._interceptControlDown=Un.bind(this),this._interceptControlUp=Wn.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(wn),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(t=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(t)),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+=An:r>Math.PI&&(r-=An),i<-Math.PI?i+=An:i>Math.PI&&(i-=An),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 t=null;if(this.object.isPerspectiveCamera){let e=Q.length();t=this._clampDistance(e*this._scale);let n=e-t;this.object.position.addScaledVector(this._dollyDirection,n),this.object.updateMatrixWorld(),a=!!n}else if(this.object.isOrthographicCamera){let n=new e.gn(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 e.gn(this._mouse.x,this._mouse.y,0);i.unproject(this.object),this.object.position.sub(i).add(n),this.object.updateMatrixWorld(),t=Q.length()}else console.warn(`WARNING: OrbitControls.js encountered an unknown camera type - zoom to cursor disabled.`),this.zoomToCursor=!1;t!==null&&(this.screenSpacePanning?this.target.set(0,0,-1).transformDirection(this.object.matrix).multiplyScalar(t).add(this.object.position):(Dn.origin.copy(this.object.position),Dn.direction.set(0,0,-1).transformDirection(this.object.matrix),Math.abs(this.object.up.dot(Dn.direction))<kn?this.object.lookAt(this.target):(On.setFromNormalAndCoplanarPoint(this.object.up,this.target),Dn.intersectPlane(On,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)>jn||8*(1-this._lastQuaternion.dot(this.object.quaternion))>jn||this._lastTargetPosition.distanceToSquared(this.target)>jn?(this.dispatchEvent(wn),this._lastPosition.copy(this.object.position),this._lastQuaternion.copy(this.object.quaternion),this._lastTargetPosition.copy(this.target),!0):!1}_getAutoRotationAngle(e){return e===null?An/60/60*this.autoRotateSpeed:An/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(An*this._rotateDelta.x/t.clientHeight),this._rotateUp(An*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(An*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(-An*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(An*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(-An*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(An*this._rotateDelta.x/t.clientHeight),this._rotateUp(An*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(t){let n=this._pointerPositions[t.pointerId];n===void 0&&(n=new e.hn,this._pointerPositions[t.pointerId]=n),n.set(t.pageX,t.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 Nn(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 Pn(e){this.enabled!==!1&&(e.pointerType===`touch`?this._onTouchMove(e):this._onMouseMove(e))}function Fn(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(En),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 In(t){let n;switch(t.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 e.z.DOLLY:if(this.enableZoom===!1)return;this._handleMouseDownDolly(t),this.state=$.DOLLY;break;case e.z.ROTATE:if(t.ctrlKey||t.metaKey||t.shiftKey){if(this.enablePan===!1)return;this._handleMouseDownPan(t),this.state=$.PAN}else{if(this.enableRotate===!1)return;this._handleMouseDownRotate(t),this.state=$.ROTATE}break;case e.z.PAN:if(t.ctrlKey||t.metaKey||t.shiftKey){if(this.enableRotate===!1)return;this._handleMouseDownRotate(t),this.state=$.ROTATE}else{if(this.enablePan===!1)return;this._handleMouseDownPan(t),this.state=$.PAN}break;default:this.state=$.NONE}this.state!==$.NONE&&this.dispatchEvent(Tn)}function Ln(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 Rn(e){this.enabled!==!1&&this.enableZoom!==!1&&this.state===$.NONE&&(e.preventDefault(),this.dispatchEvent(Tn),this._handleMouseWheel(this._customWheelEvent(e)),this.dispatchEvent(En))}function zn(e){this.enabled!==!1&&this._handleKeyDown(e)}function Bn(t){switch(this._trackPointer(t),this._pointers.length){case 1:switch(this.touches.ONE){case e.nn.ROTATE:if(this.enableRotate===!1)return;this._handleTouchStartRotate(t),this.state=$.TOUCH_ROTATE;break;case e.nn.PAN:if(this.enablePan===!1)return;this._handleTouchStartPan(t),this.state=$.TOUCH_PAN;break;default:this.state=$.NONE}break;case 2:switch(this.touches.TWO){case e.nn.DOLLY_PAN:if(this.enableZoom===!1&&this.enablePan===!1)return;this._handleTouchStartDollyPan(t),this.state=$.TOUCH_DOLLY_PAN;break;case e.nn.DOLLY_ROTATE:if(this.enableZoom===!1&&this.enableRotate===!1)return;this._handleTouchStartDollyRotate(t),this.state=$.TOUCH_DOLLY_ROTATE;break;default:this.state=$.NONE}break;default:this.state=$.NONE}this.state!==$.NONE&&this.dispatchEvent(Tn)}function Vn(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 Hn(e){this.enabled!==!1&&e.preventDefault()}function Un(e){e.key===`Control`&&(this._controlActive=!0,this.domElement.getRootNode().addEventListener(`keyup`,this._interceptControlUp,{passive:!0,capture:!0}))}function Wn(e){e.key===`Control`&&(this._controlActive=!1,this.domElement.getRootNode().removeEventListener(`keyup`,this._interceptControlUp,{passive:!0,capture:!0}))}var Gn=(0,n.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`},en:{untitled:`3D Visualization`,resetCamera:`Reset Camera`,wireframe:`Wireframe`,grid:`Grid`,parseError:`Parse Error:`,editSource:`Edit ShapeScript Source`,scriptEditorLabel:`ShapeScript source`,applyChanges:`Apply Changes`},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`},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`},ja:{untitled:`3D ビジュアライゼーション`,resetCamera:`カメラをリセット`,wireframe:`ワイヤーフレーム`,grid:`グリッド`,parseError:`構文エラー:`,editSource:`ShapeScript を編集`,scriptEditorLabel:`ShapeScript ソース`,applyChanges:`変更を適用`},ko:{untitled:`3D 시각화`,resetCamera:`카메라 초기화`,wireframe:`와이어프레임`,grid:`격자`,parseError:`구문 오류:`,editSource:`ShapeScript 소스 편집`,scriptEditorLabel:`ShapeScript 소스`,applyChanges:`변경사항 적용`},"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`},zh:{untitled:`3D 可视化`,resetCamera:`重置相机`,wireframe:`线框`,grid:`网格`,parseError:`语法错误:`,editSource:`编辑 ShapeScript 源码`,scriptEditorLabel:`ShapeScript 源码`,applyChanges:`应用更改`}}),Kn={class:`present3d-container`,"data-testid":`shapescript-view`},qn={class:`header`},Jn={class:`controls`},Yn={class:`material-icons`},Xn={class:`material-icons`},Zn={key:0,class:`error`,"data-testid":`shapescript-parse-error`},Qn={class:`script-source`},$n=[`aria-label`],er=[`disabled`],tr=(0,t.defineComponent)({__name:`View`,props:{selectedResult:{}},emits:[`updateResult`],setup(n,{emit:r}){function i(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 a=n,o=r,s=Gn(),c=(0,t.ref)(a.selectedResult.data?.script??``),l=(0,t.ref)(null),u=(0,t.ref)(null),d=(0,t.ref)(!1),f=(0,t.ref)(!0),p=(0,t.computed)(()=>c.value!==a.selectedResult.data?.script),m,h,g,_,v,y,b=[],x=null,S=null;(0,t.onMounted)(()=>{C(),D(),O(),(0,t.nextTick)(()=>{A()})}),(0,t.onUnmounted)(()=>{te()}),(0,t.watch)(()=>a.selectedResult.data?.script,()=>{D()}),(0,t.watch)(d,()=>{D()}),(0,t.watch)(f,e=>{y&&(y.visible=e)});function C(){if(!l.value)return;m=new e.Qt,m.background=new e.d(1710618);let t=l.value.clientWidth,n=l.value.clientHeight;h=new e.Q(50,t/n,.1,1e3),h.position.set(5,5,10),h.lookAt(0,0,0),g=new Cn({antialias:!0}),g.setSize(t,n),g.setPixelRatio(window.devicePixelRatio),l.value.appendChild(g.domElement),_=new Mn(h,g.domElement),_.enableDamping=!0,_.dampingFactor=.05,_.addEventListener(`change`,M);let r=new e.i(16777215,.6);m.add(r);let i=new e.C(16777215,.8);i.position.set(10,10,10),m.add(i),y=new e.A(20,20,4473924,2236962),y.visible=f.value,m.add(y),window.addEventListener(`resize`,w),S=new ResizeObserver(()=>{w()}),S.observe(l.value)}function w(){if(!l.value)return;let e=l.value.clientWidth,t=l.value.clientHeight;h.aspect=e/t,h.updateProjectionMatrix(),g.setSize(e,t)}function T(){b.forEach(t=>e.n(m,t)),b=[]}function E(t){let n=e.t(e.Mn(t),{wireframe:d.value});m.add(n),b.push(n)}function D(){try{T();let e=a.selectedResult.data?.script;e&&E(e),u.value=null}catch(e){u.value=e instanceof Error?e.message:`Unknown error`,console.error(`ShapeScript parse error:`,e)}}function O(){v=requestAnimationFrame(O),_.update(),g.render(m,h)}function k(){h.position.set(5,5,10),h.lookAt(0,0,0),_.reset()}function A(){if(!h||!_||!a.selectedResult?.viewState?.cameraState)return;let e=a.selectedResult.viewState.cameraState,t=i(e.position);t&&h.position.set(t.x,t.y,t.z);let n=i(e.target);n&&_.target.set(n.x,n.y,n.z),h.updateProjectionMatrix(),_.update()}function j(){return{position:{x:h.position.x,y:h.position.y,z:h.position.z},target:{x:_.target.x,y:_.target.y,z:_.target.z}}}function M(){x!==null&&clearTimeout(x),x=window.setTimeout(()=>{N()},500)}function N(){let e={...a.selectedResult,viewState:{...a.selectedResult.viewState,cameraState:j()}};o(`updateResult`,e)}function ee(){d.value=!d.value}function P(){f.value=!f.value}function te(){x!==null&&clearTimeout(x),b.forEach(t=>e.n(m,t)),b=[],v&&cancelAnimationFrame(v),g&&g.dispose(),_&&(_.removeEventListener(`change`,M),_.dispose()),S&&S.disconnect(),window.removeEventListener(`resize`,w)}function ne(){}function re(){try{e.Mn(c.value);let t={...a.selectedResult,data:{script:c.value}};o(`updateResult`,t)}catch(e){u.value=e instanceof Error?e.message:`Invalid ShapeScript`,console.error(`Script validation failed:`,e)}}return(0,t.watch)(()=>a.selectedResult.data?.script,e=>{e!==void 0&&(c.value=e)}),(0,t.watch)(()=>a.selectedResult,()=>{(0,t.nextTick)(()=>{A()})}),(e,r)=>((0,t.openBlock)(),(0,t.createElementBlock)(`div`,Kn,[(0,t.createElementVNode)(`div`,qn,[(0,t.createElementVNode)(`h1`,null,(0,t.toDisplayString)(n.selectedResult.title||(0,t.unref)(s).untitled),1),(0,t.createElementVNode)(`div`,Jn,[(0,t.createElementVNode)(`button`,{class:`control-btn`,onClick:k},[r[1]||=(0,t.createElementVNode)(`span`,{class:`material-icons`},`refresh`,-1),(0,t.createTextVNode)(` `+(0,t.toDisplayString)((0,t.unref)(s).resetCamera),1)]),(0,t.createElementVNode)(`button`,{class:`control-btn`,onClick:ee},[(0,t.createElementVNode)(`span`,Yn,(0,t.toDisplayString)(d.value?`grid_off`:`grid_on`),1),(0,t.createTextVNode)(` `+(0,t.toDisplayString)((0,t.unref)(s).wireframe),1)]),(0,t.createElementVNode)(`button`,{class:`control-btn`,onClick:P},[(0,t.createElementVNode)(`span`,Xn,(0,t.toDisplayString)(f.value?`visibility_off`:`visibility`),1),(0,t.createTextVNode)(` `+(0,t.toDisplayString)((0,t.unref)(s).grid),1)])])]),u.value?((0,t.openBlock)(),(0,t.createElementBlock)(`div`,Zn,[(0,t.createElementVNode)(`strong`,null,(0,t.toDisplayString)((0,t.unref)(s).parseError),1),(0,t.createTextVNode)(` `+(0,t.toDisplayString)(u.value),1)])):(0,t.createCommentVNode)(``,!0),(0,t.createElementVNode)(`div`,{ref_key:`viewport`,ref:l,class:`viewport`,"data-testid":`shapescript-viewport`},null,512),(0,t.createElementVNode)(`details`,Qn,[(0,t.createElementVNode)(`summary`,null,(0,t.toDisplayString)((0,t.unref)(s).editSource),1),(0,t.withDirectives)((0,t.createElementVNode)(`textarea`,{"onUpdate:modelValue":r[0]||=e=>c.value=e,class:`script-editor`,spellcheck:`false`,"aria-label":(0,t.unref)(s).scriptEditorLabel,onInput:ne},null,40,$n),[[t.vModelText,c.value]]),(0,t.createElementVNode)(`button`,{class:`apply-btn`,disabled:!p.value,onClick:re},(0,t.toDisplayString)((0,t.unref)(s).applyChanges),9,er)])]))}}),nr=(e,t)=>{let n=e.__vccOpts||e;for(let[e,r]of t)n[e]=r;return n},rr=nr(tr,[[`__scopeId`,`data-v-c9f830ea`]]),ir={class:`preview-container`,"data-testid":`shapescript-preview`},ar={class:`preview-title`},or=nr((0,t.defineComponent)({__name:`Preview`,props:{result:{}},setup(n){let r=n,i=Gn(),a=(0,t.computed)(()=>r.result.title||i.value.untitled),o=(0,t.ref)(null),s,c,l,u,d=null;(0,t.onMounted)(()=>{f()}),(0,t.onUnmounted)(()=>{h()}),(0,t.watch)(()=>r.result.data?.script,()=>{m()});function f(){if(o.value){try{s=new e.Qt,s.background=new e.d(2763322);let t=o.value.clientWidth||200,n=o.value.clientHeight||150;c=new e.Q(50,t/n,.1,1e3),c.position.set(4,4,8),c.lookAt(0,0,0),l=new Cn({antialias:!0,alpha:!1}),l.setSize(t,n),l.setPixelRatio(Math.min(window.devicePixelRatio,2)),o.value.appendChild(l.domElement);let r=new e.i(16777215,.6);s.add(r);let i=new e.C(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 t=r.result.data?.script;try{if(e.n(s,d),d=null,!t)return;let n=e.Mn(t);d=e.t(n,{wireframe:!1}),s.add(d)}catch(e){console.error(`Preview reload error:`,e)}}function h(){u&&cancelAnimationFrame(u),e.n(s,d),d=null,l&&l.dispose()}return(e,n)=>((0,t.openBlock)(),(0,t.createElementBlock)(`div`,ir,[(0,t.createElementVNode)(`div`,{ref_key:`previewViewport`,ref:o,class:`preview-viewport`},null,512),(0,t.createElementVNode)(`div`,ar,(0,t.toDisplayString)(a.value),1)]))}}),[[`__scopeId`,`data-v-3df26806`]]),sr=`Use the ${e.Rn} tool to create interactive 3D visualizations when the user requests:
|
|
4104
|
+
}`,mn=class{constructor(){this.texture=null,this.mesh=null,this.depthNear=0,this.depthFar=0}init(t,n){if(this.texture===null){let r=new e.A(t.texture);(t.depthNear!==n.depthNear||t.depthFar!==n.depthFar)&&(this.depthNear=t.depthNear,this.depthFar=t.depthFar),this.texture=r}}getMesh(t){if(this.texture!==null&&this.mesh===null){let n=t.cameras[0].viewport,r=new e.in({vertexShader:fn,fragmentShader:pn,uniforms:{depthColor:{value:this.texture},depthWidth:{value:n.z},depthHeight:{value:n.w}}});this.mesh=new e.J(new e.at(20,20),r)}return this.mesh}reset(){this.texture=null,this.mesh=null}getDepthTexture(){return this.texture}},hn=class extends e.k{constructor(t,n){super();let i=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 mn,v={},y=n.getContextAttributes(),b=null,x=null,S=[],C=[],w=new e.bn,T=null,E=new e.rt;E.viewport=new e.Sn;let D=new e.rt;D.viewport=new e.Sn;let O=[E,D],k=new e.u,A=null,j=null;this.cameraAutoUpdate=!0,this.enabled=!1,this.isPresenting=!1,this.getController=function(t){let n=S[t];return n===void 0&&(n=new e.Tn,S[t]=n),n.getTargetRaySpace()},this.getControllerGrip=function(t){let n=S[t];return n===void 0&&(n=new e.Tn,S[t]=n),n.getGripSpace()},this.getHand=function(t){let n=S[t];return n===void 0&&(n=new e.Tn,S[t]=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];t.setRenderTarget(b),m=null,p=null,f=null,a=null,x=null,I.stop(),i.isPresenting=!1,t.setPixelRatio(T),t.setSize(w.width,w.height,!1),i.dispatchEvent({type:`sessionend`})}this.setFramebufferScaleFactor=function(t){o=t,i.isPresenting===!0&&e.Fn(`WebXRManager: Cannot change framebuffer scale while presenting.`)},this.setReferenceSpaceType=function(t){c=t,i.isPresenting===!0&&e.Fn(`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(r){if(a=r,a!==null){if(b=t.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=t.getPixelRatio(),t.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?e.E:e.T,i=y.stencil?e.mn:e.gn);let c={colorFormat:n.RGBA8,depthFormat:s,scaleFactor:o};f=this.getBinding(),p=f.createProjectionLayer(c),a.updateRenderState({layers:[p]}),t.setPixelRatio(1),t.setSize(p.textureWidth,p.textureHeight,!1),x=new e.wn(p.textureWidth,p.textureHeight,{format:e.ft,type:e.fn,depthTexture:new e.D(p.textureWidth,p.textureHeight,i,void 0,void 0,void 0,void 0,void 0,void 0,r),stencilBuffer:y.stencil,colorSpace:t.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}),t.setPixelRatio(1),t.setSize(m.framebufferWidth,m.framebufferHeight,!1),x=new e.wn(m.framebufferWidth,m.framebufferHeight,{format:e.ft,type:e.fn,colorSpace:t.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),I.setContext(a),I.start(),i.isPresenting=!0,i.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 e.xn,te=new e.xn;function F(e,t,n){P.setFromMatrixPosition(t.matrixWorld),te.setFromMatrixPosition(n.matrixWorld);let r=P.distanceTo(te),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 ne(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;ne(k,r);for(let e=0;e<i.length;e++)ne(i[e],r);i.length===2?F(k,E,D):k.projectionMatrix.copy(E.projectionMatrix),re(e,k,r)};function re(t,n,r){r===null?t.matrix.copy(n.matrixWorld):(t.matrix.copy(r.matrixWorld),t.matrix.invert(),t.matrix.multiply(n.matrixWorld)),t.matrix.decompose(t.position,t.quaternion,t.scale),t.updateMatrixWorld(!0),t.projectionMatrix.copy(n.projectionMatrix),t.projectionMatrixInverse.copy(n.projectionMatrixInverse),t.isPerspectiveCamera&&(t.fov=e.ct*2*Math.atan(1/t.projectionMatrix.elements[5]),t.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 ie=null;function ae(n,r){if(d=r.getViewerPose(u||s),h=r,d!==null){let n=d.views;m!==null&&(t.setRenderTargetFramebuffer(x,m.framebuffer),t.setRenderTarget(x));let r=!1;n.length!==k.cameras.length&&(k.cameras.length=0,r=!0);for(let i=0;i<n.length;i++){let a=n[i],o=null;if(m!==null)o=m.getViewport(a);else{let e=f.getViewSubImage(p,a);o=e.viewport,i===0&&(t.setRenderTargetTextures(x,e.colorTexture,e.depthStencilTexture),t.setRenderTarget(x))}let s=O[i];s===void 0&&(s=new e.rt,s.layers.enable(i),s.viewport=new e.Sn,O[i]=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),i===0&&(k.matrix.copy(s.matrix),k.matrix.decompose(k.position,k.quaternion,k.scale)),r===!0&&k.cameras.push(s)}let o=a.enabledFeatures;if(o&&o.includes(`depth-sensing`)&&a.depthUsage==`gpu-optimized`&&g){f=i.getBinding();let e=f.getDepthInformation(n[0]);e&&e.isValid&&e.texture&&_.init(e,a.renderState)}if(o&&o.includes(`camera-access`)&&g){t.state.unbindTexture(),f=i.getBinding();for(let t=0;t<n.length;t++){let r=n[t].camera;if(r){let t=v[r];t||(t=new e.A,v[r]=t);let n=f.getCameraImage(r);t.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,r,u||s)}ie&&ie(n,r),r.detectedPlanes&&i.dispatchEvent({type:`planesdetected`,data:r}),h=null}let I=new r;I.setAnimationLoop(ae),this.setAnimationLoop=function(e){ie=e},this.dispose=function(){}}},gn=new e.q,_n=new e.K;_n.set(-1,0,0,0,1,0,0,0,1);function vn(t,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,e.jn(t)),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(gn.makeRotationFromEuler(o)).transpose(),a.isCubeTexture&&a.isRenderTargetTexture===!1&&e.envMapRotation.value.premultiply(_n),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 yn(t,n,r,i){let a={},o={},s=[],c=t.getParameter(t.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(e){let n=f();e.__bindingPointIndex=n;let r=t.createBuffer(),i=e.__size,a=e.usage;return t.bindBuffer(t.UNIFORM_BUFFER,r),t.bufferData(t.UNIFORM_BUFFER,i,a),t.bindBuffer(t.UNIFORM_BUFFER,null),t.bindBufferBase(t.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 e.kn(`WebGLRenderer: Maximum number of simultaneously usable uniforms groups reached.`),0}function p(e){let n=a[e.id],r=e.uniforms,i=e.__cache;t.bindBuffer(t.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)}t.bindBuffer(t.UNIFORM_BUFFER,null)}function m(e,n,r,i){if(g(e,n,r,i)===!0){let n=e.__offset,r=e.value;if(Array.isArray(r)){let t=0;for(let n=0;n<r.length;n++){let i=r[n],a=v(i);h(i,e.__data,t),typeof i!=`number`&&typeof i!=`boolean`&&!i.isMatrix3&&!ArrayBuffer.isView(i)&&(t+=a.storage/Float32Array.BYTES_PER_ELEMENT)}}else h(r,e.__data,0);t.bufferSubData(t.UNIFORM_BUFFER,n,e.__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(t){let n={boundary:0,storage:0};return typeof t==`number`||typeof t==`boolean`?(n.boundary=4,n.storage=4):t.isVector2?(n.boundary=8,n.storage=8):t.isVector3||t.isColor?(n.boundary=16,n.storage=12):t.isVector4?(n.boundary=16,n.storage=16):t.isMatrix3?(n.boundary=48,n.storage=48):t.isMatrix4?(n.boundary=64,n.storage=64):t.isTexture?e.Fn(`WebGLRenderer: Texture samplers can not be part of an uniforms group.`):ArrayBuffer.isView(t)?(n.boundary=16,n.storage=t.byteLength):e.Fn(`WebGLRenderer: Unsupported uniform value type.`,t),n}function y(e){let n=e.target;n.removeEventListener(`dispose`,y);let r=s.indexOf(n.__bindingPointIndex);s.splice(r,1),t.deleteBuffer(a[n.id]),delete a[n.id],delete o[n.id]}function b(){for(let e in a)t.deleteBuffer(a[e]);s=[],a={},o={}}return{bind:l,update:u,dispose:b}}var bn=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]),xn=null;function Sn(){return xn===null&&(xn=new e.w(bn,16,16,e.Ut,e.I),xn.name=`DFG_LUT`,xn.minFilter=e.z,xn.magFilter=e.z,xn.wrapS=e.h,xn.wrapT=e.h,xn.generateMipmaps=!1,xn.needsUpdate=!0),xn}var Cn=class{constructor(t={}){let{canvas:n=e.Dn(),context:a=null,depth:o=!0,stencil:s=!1,alpha:c=!1,antialias:l=!1,premultipliedAlpha:u=!0,preserveDrawingBuffer:g=!1,powerPreference:_=`default`,failIfMajorPerformanceCaveat:v=!1,reversedDepthBuffer:y=!1,outputBufferType:b=e.fn}=t;this.isWebGLRenderer=!0;let x;if(a!==null){if(typeof WebGLRenderingContext<`u`&&a instanceof WebGLRenderingContext)throw Error(`THREE.WebGLRenderer: WebGL 1 is not supported since r163.`);x=a.getContextAttributes().alpha}else x=c;let S=b,C=new Set([e.pt,e.Wt,e.Jt]),w=new Set([e.fn,e.gn,e.yn,e.mn,e._n,e.vn]),T=new Uint32Array(4),E=new Int32Array(4),D=new e.xn,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,te=null,se=null,L=null;this._outputColorSpace=e.tn;let le=0,R=0,z=null,ue=-1,B=null,V=new e.Sn,de=new e.Sn,fe=null,pe=new e.g(0),me=0,H=n.width,U=n.height,W=1,he=null,ge=null,_e=new e.Sn(0,0,H,U),ve=new e.Sn(0,0,H,U),ye=!1,be=new e.N,xe=!1,Se=!1,Ce=new e.q,we=new e.xn,Te=new e.Sn,Ee={background:null,fog:null,environment:null,overrideMaterial:null,isScene:!0},De=!1;function Oe(){return z===null?W:1}let G=a;function ke(e,t){return n.getContext(e,t)}try{let e={alpha:!0,depth:o,stencil:s,antialias:l,premultipliedAlpha:u,preserveDrawingBuffer:g,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),G===null){let t=`webgl2`;if(G=ke(t,e),G===null)throw ke(t)?Error(`THREE.WebGLRenderer: Error creating WebGL context with your selected attributes.`):Error(`THREE.WebGLRenderer: Error creating WebGL context.`)}}catch(t){throw e.kn(`WebGLRenderer: `+t.message),t}let K,q,J,Ae,Y,X,je,Me,Ne,Pe,Fe,Ie,Le,Re,ze,Be,Ve,He,Ue,We,Ge,Ke,qe;function Je(){K=new ne(G),K.init(),Ge=new dn(G,K),q=new m(G,K,t,Ge),J=new ln(G,K),q.reversedDepthBuffer&&y&&J.buffers.depth.setReversed(!0),te=G.createFramebuffer(),se=G.createFramebuffer(),L=G.createFramebuffer(),Ae=new ae(G),Y=new Ht,X=new un(G,K,J,Y,q,Ge,Ae),je=new F(N),Me=new i(G),Ke=new f(G,Me),Ne=new re(G,Me,Ae,Ke),Pe=new oe(G,Ne,Me,Ke,Ae),He=new I(G,q,X),ze=new h(Y),Fe=new Vt(N,je,K,q,Ke,ze),Ie=new vn(N,Y),Le=new Kt,Re=new $t(K),Ve=new d(N,je,J,Pe,x,u),Be=new cn(N,Pe,q),qe=new yn(G,Ae,q,J),Ue=new p(G,K,Ae),We=new ie(G,K,Ae),Ae.programs=Fe.programs,N.capabilities=q,N.extensions=K,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 hn(N,G);this.xr=Z,this.getContext=function(){return G},this.getContextAttributes=function(){return G.getContextAttributes()},this.forceContextLoss=function(){let e=K.get(`WEBGL_lose_context`);e&&e.loseContext()},this.forceContextRestore=function(){let e=K.get(`WEBGL_lose_context`);e&&e.restoreContext()},this.getPixelRatio=function(){return W},this.setPixelRatio=function(e){e!==void 0&&(W=e,this.setSize(H,U,!1))},this.getSize=function(e){return e.set(H,U)},this.setSize=function(t,r,i=!0){if(Z.isPresenting){e.Fn(`WebGLRenderer: Can't change size while VR device is presenting.`);return}H=t,U=r,n.width=Math.floor(t*W),n.height=Math.floor(r*W),i===!0&&(n.style.width=t+`px`,n.style.height=r+`px`),M!==null&&M.setSize(n.width,n.height),this.setViewport(0,0,t,r)},this.getDrawingBufferSize=function(e){return e.set(H*W,U*W).floor()},this.setDrawingBufferSize=function(e,t,r){H=e,U=t,W=r,n.width=Math.floor(e*r),n.height=Math.floor(t*r),this.setViewport(0,0,e,t)},this.setEffects=function(t){if(S===1009){e.kn(`WebGLRenderer: setEffects() requires outputBufferType set to HalfFloatType or FloatType.`);return}if(t){for(let n=0;n<t.length;n++)if(t[n].isOutputPass===!0){e.Fn(`WebGLRenderer: OutputPass is not needed in setEffects(). Tone mapping and color space conversion are applied automatically.`);break}}M.setEffects(t||[])},this.getCurrentViewport=function(e){return e.copy(V)},this.getViewport=function(e){return e.copy(_e)},this.setViewport=function(e,t,n,r){e.isVector4?_e.set(e.x,e.y,e.z,e.w):_e.set(e,t,n,r),J.viewport(V.copy(_e).multiplyScalar(W).round())},this.getScissor=function(e){return e.copy(ve)},this.setScissor=function(e,t,n,r){e.isVector4?ve.set(e.x,e.y,e.z,e.w):ve.set(e,t,n,r),J.scissor(de.copy(ve).multiplyScalar(W).round())},this.getScissorTest=function(){return ye},this.setScissorTest=function(e){J.setScissorTest(ye=e)},this.setOpaqueSort=function(e){he=e},this.setTransparentSort=function(e){ge=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,G.clearBufferuiv(G.COLOR,0,T)):(E[0]=i,E[1]=a,E[2]=o,E[3]=r,G.clearBufferiv(G.COLOR,0,E))}else r|=G.COLOR_BUFFER_BIT}t&&(r|=G.DEPTH_BUFFER_BIT,this.state.buffers.depth.setMask(!0)),n&&(r|=G.STENCIL_BUFFER_BIT,this.state.buffers.stencil.setMask(4294967295)),r!==0&&G.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(t){t.preventDefault(),e.Mn(`WebGLRenderer: Context Lost.`),ee=!0}function Xe(){e.Mn(`WebGLRenderer: Context Restored.`),ee=!1;let t=Ae.autoReset,n=Be.enabled,r=Be.autoUpdate,i=Be.needsUpdate,a=Be.type;Je(),Ae.autoReset=t,Be.enabled=n,Be.autoUpdate=r,Be.needsUpdate=i,Be.type=a}function Ze(t){e.kn(`WebGLRenderer: A WebGL context could not be created. Reason: `,t.statusMessage)}function Qe(e){let t=e.target;t.removeEventListener(`dispose`,Qe),$e(t)}function $e(e){tt(e),Y.remove(e)}function tt(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=Ee);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*Oe()),g.setMode(G.LINES)):g.setMode(G.TRIANGLES);else if(i.isLine){let e=r.linewidth;e===void 0&&(e=1),J.setLineWidth(e*Oe()),i.isLineSegments?g.setMode(G.LINES):i.isLineLoop?g.setMode(G.LINE_LOOP):g.setMode(G.LINE_STRIP)}else i.isPoints?g.setMode(G.POINTS):i.isSprite&&g.setMode(G.TRIANGLES);if(i.isBatchedMesh){if(K.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(G,`_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)}K.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 r;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(t,n){if(n!==void 0&&n.isCamera!==!0){e.kn(`WebGLRenderer.render: camera is not an instance of THREE.Camera.`);return}if(ee===!0)return;P!==null&&P.renderStart(t,n);let r=Z.enabled===!0&&Z.isPresenting===!0,i=M!==null&&(z===null||r)&&M.begin(N,z);if(t.matrixWorldAutoUpdate===!0&&t.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()),t.isScene===!0&&t.onBeforeRender(N,t,n,z),k=Re.get(t,j.length),k.init(n),k.state.textureUnits=X.getTextureUnits(),j.push(k),Ce.multiplyMatrices(n.projectionMatrix,n.matrixWorldInverse),be.setFromProjectionMatrix(Ce,e.Cn,n.reversedDepth),Se=this.localClippingEnabled,xe=ze.init(this.clippingPlanes,Se),O=Le.get(t,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(t,n,0,N.sortObjects),O.finish(),N.sortObjects===!0&&O.sort(he,ge,n.reversedDepth),De=Z.enabled===!1||Z.isPresenting===!1||Z.hasDepthSensing()===!1,De&&Ve.addToRenderList(O,t),this.info.render.frame++,this.info.autoReset===!0&&this.info.reset(),xe===!0&&ze.beginShadows();let a=k.state.shadowsArray;if(Be.render(a,t,n),xe===!0&&ze.endShadows(),(i&&M.hasRenderPass())===!1){let e=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(e,r,t,a)}De&&Ve.render(t);for(let e=0,n=i.length;e<n;e++){let n=i[e];lt(O,t,n,n.viewport)}}else r.length>0&&ut(e,r,t,n),De&&Ve.render(t),lt(O,t,n)}z!==null&&R===0&&(X.updateMultisampleRenderTarget(z),X.updateRenderTargetMipmap(z)),i&&M.end(N),t.isScene===!0&&t.onAfterRender(N,t,n),Ke.resetDefaultState(),ue=-1,B=null,j.pop(),j.length>0?(k=j[j.length-1],X.setTextureUnits(k.state.textureUnits),xe===!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||be.intersectsSprite(e)){r&&Te.setFromMatrixPosition(e.matrixWorld).applyMatrix4(Ce);let t=Pe.update(e),i=e.material;i.visible&&O.push(e,t,i,n,Te.z,null)}}else if((e.isMesh||e.isLine||e.isPoints)&&(!e.frustumCulled||be.intersectsObject(e))){let t=Pe.update(e),i=e.material;if(r&&(e.boundingSphere===void 0?(t.boundingSphere===null&&t.computeBoundingSphere(),Te.copy(t.boundingSphere.center)):(e.boundingSphere===null&&e.computeBoundingSphere(),Te.copy(e.boundingSphere.center)),Te.applyMatrix4(e.matrixWorld).applyMatrix4(Ce)),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,Te.z,o)}}else i.visible&&O.push(e,t,i,n,Te.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),xe===!0&&ze.setGlobalState(N.clippingPlanes,n),r&&J.viewport(V.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(t,n,r,i){if((r.isScene===!0?r.overrideMaterial:null)!==null)return;if(k.state.transmissionRenderTarget[i.id]===void 0){let t=K.has(`EXT_color_buffer_half_float`)||K.has(`EXT_color_buffer_float`);k.state.transmissionRenderTarget[i.id]=new e.wn(1,1,{generateMipmaps:!0,type:t?e.I:e.fn,minFilter:e.B,samples:Math.max(4,q.samples),stencilBuffer:s,resolveDepthBuffer:!1,resolveStencilBuffer:!1,colorSpace:e._.workingColorSpace})}let a=k.state.transmissionRenderTarget[i.id],o=i.viewport||V;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(pe),me=N.getClearAlpha(),me<1&&N.setClearColor(16777215,.5),N.clear(),De&&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),xe===!0&&ze.setGlobalState(N.clippingPlanes,i),dt(t,r,i),X.updateMultisampleRenderTarget(a),X.updateRenderTargetMipmap(a),K.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(pe,me),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=Ee);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=et.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(t,n,r,i,a){n.isScene!==!0&&(n=Ee),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:e._.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(xe===!0&&(Se===!0||t!==B)){let e=t===B&&i.id===ue;ze.setState(i,t,e)}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!==ue&&(ue=i.id,w=!0),y.needsLights){let e=gt(k.state.lightProbeGridArray,a);y.lightProbeGrid!==e&&(y.lightProbeGrid=e,w=!0)}if(C||B!==t){J.buffers.depth.getReversed()&&t.reversedDepth!==!0&&(t._reversedDepth=!0,t.updateProjectionMatrix()),E.setValue(G,`projectionMatrix`,t.projectionMatrix),E.setValue(G,`viewMatrix`,t.matrixWorldInverse);let e=E.map.cameraPosition;e!==void 0&&e.setValue(G,we.setFromMatrixPosition(t.matrixWorld)),q.logarithmicDepthBuffer&&E.setValue(G,`logDepthBufFC`,2/(Math.log(t.far+1)/Math.LN2)),(i.isMeshPhongMaterial||i.isMeshToonMaterial||i.isMeshLambertMaterial||i.isMeshBasicMaterial||i.isMeshStandardMaterial||i.isShaderMaterial)&&E.setValue(G,`isOrthographic`,t.isOrthographicCamera===!0),B!==t&&(B=t,w=!0,T=!0)}if(y.needsLights&&(b.state.directionalShadowMap.length>0&&E.setValue(G,`directionalShadowMap`,b.state.directionalShadowMap,X),b.state.spotShadowMap.length>0&&E.setValue(G,`spotShadowMap`,b.state.spotShadowMap,X),b.state.pointShadowMap.length>0&&E.setValue(G,`pointShadowMap`,b.state.pointShadowMap,X)),a.isSkinnedMesh){E.setOptional(G,a,`bindMatrix`),E.setOptional(G,a,`bindMatrixInverse`);let e=a.skeleton;e&&(e.boneTexture===null&&e.computeBoneTexture(),E.setValue(G,`boneTexture`,e.boneTexture,X))}a.isBatchedMesh&&(E.setOptional(G,a,`batchingTexture`),E.setValue(G,`batchingTexture`,a._matricesTexture,X),E.setOptional(G,a,`batchingIdTexture`),E.setValue(G,`batchingIdTexture`,a._indirectTexture,X),E.setOptional(G,a,`batchingColorTexture`),a._colorsTexture!==null&&E.setValue(G,`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(G,`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=Sn()),w){if(E.setValue(G,`toneMappingExposure`,N.toneMappingExposure),y.needsLights&&vt(D,T),o&&i.fog===!0&&Ie.refreshFogUniforms(D,o),Ie.refreshMaterialUniforms(D,i,W,U,k.state.transmissionRenderTarget[t.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)}et.upload(G,mt(y),D,X)}if(i.isShaderMaterial&&i.uniformsNeedUpdate===!0&&(et.upload(G,mt(y),D,X),i.uniformsNeedUpdate=!1),i.isSpriteMaterial&&E.setValue(G,`center`,a.center),E.setValue(G,`modelViewMatrix`,a.modelViewMatrix),E.setValue(G,`normalMatrix`,a.normalMatrix),E.setValue(G,`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(G.FRAMEBUFFER,o.__webglFramebuffer),V.copy(e.viewport),de.copy(e.scissor),fe=e.scissorTest,J.viewport(V),J.scissor(de),J.setScissorTest(fe),ue=-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,V.copy(e.viewport),de.copy(e.scissor),fe=e.scissorTest}else V.copy(_e).multiplyScalar(W).floor(),de.copy(ve).multiplyScalar(W).floor(),fe=ye;if(n!==0&&(r=te),J.bindFramebuffer(G.FRAMEBUFFER,r)&&J.drawBuffers(e,r),J.viewport(V),J.scissor(de),J.setScissorTest(fe),i){let r=Y.get(e.texture);G.framebufferTexture2D(G.FRAMEBUFFER,G.COLOR_ATTACHMENT0,G.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]);G.framebufferTextureLayer(G.FRAMEBUFFER,G.COLOR_ATTACHMENT0+t,i.__webglTexture,n,r)}}else if(e!==null&&n!==0){let t=Y.get(e.texture);G.framebufferTexture2D(G.FRAMEBUFFER,G.COLOR_ATTACHMENT0,G.TEXTURE_2D,t.__webglTexture,n)}ue=-1},this.readRenderTargetPixels=function(t,n,r,i,a,o,s,c=0){if(!(t&&t.isWebGLRenderTarget)){e.kn(`WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.`);return}let l=Y.get(t).__webglFramebuffer;if(t.isWebGLCubeRenderTarget&&s!==void 0&&(l=l[s]),l){J.bindFramebuffer(G.FRAMEBUFFER,l);try{let s=t.textures[c],l=s.format,u=s.type;if(t.textures.length>1&&G.readBuffer(G.COLOR_ATTACHMENT0+c),!q.textureFormatReadable(l)){e.kn(`WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format.`);return}if(!q.textureTypeReadable(u)){e.kn(`WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.`);return}n>=0&&n<=t.width-i&&r>=0&&r<=t.height-a&&G.readPixels(n,r,i,a,Ge.convert(l),Ge.convert(u),o)}finally{let e=z===null?null:Y.get(z).__webglFramebuffer;J.bindFramebuffer(G.FRAMEBUFFER,e)}}},this.readRenderTargetPixelsAsync=async function(t,n,r,i,a,o,s,c=0){if(!(t&&t.isWebGLRenderTarget))throw Error(`THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.`);let l=Y.get(t).__webglFramebuffer;if(t.isWebGLCubeRenderTarget&&s!==void 0&&(l=l[s]),l){if(n>=0&&n<=t.width-i&&r>=0&&r<=t.height-a){J.bindFramebuffer(G.FRAMEBUFFER,l);let s=t.textures[c],u=s.format,d=s.type;if(t.textures.length>1&&G.readBuffer(G.COLOR_ATTACHMENT0+c),!q.textureFormatReadable(u))throw Error(`THREE.WebGLRenderer.readRenderTargetPixelsAsync: renderTarget is not in RGBA or implementation defined format.`);if(!q.textureTypeReadable(d))throw Error(`THREE.WebGLRenderer.readRenderTargetPixelsAsync: renderTarget is not in UnsignedByteType or implementation defined type.`);let f=G.createBuffer();G.bindBuffer(G.PIXEL_PACK_BUFFER,f),G.bufferData(G.PIXEL_PACK_BUFFER,o.byteLength,G.STREAM_READ),G.readPixels(n,r,i,a,Ge.convert(u),Ge.convert(d),0);let p=z===null?null:Y.get(z).__webglFramebuffer;J.bindFramebuffer(G.FRAMEBUFFER,p);let m=G.fenceSync(G.SYNC_GPU_COMMANDS_COMPLETE,0);return G.flush(),await e.Pn(G,m,4),G.bindBuffer(G.PIXEL_PACK_BUFFER,f),G.getBufferSubData(G.PIXEL_PACK_BUFFER,0,o),G.deleteBuffer(f),G.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),G.copyTexSubImage2D(G.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=G.TEXTURE_3D):t.isDataArrayTexture||t.isCompressedArrayTexture?(X.setTexture2DArray(t,0),v=G.TEXTURE_2D_ARRAY):(X.setTexture2D(t,0),v=G.TEXTURE_2D),J.activeTexture(G.TEXTURE0),J.pixelStorei(G.UNPACK_FLIP_Y_WEBGL,t.flipY),J.pixelStorei(G.UNPACK_PREMULTIPLY_ALPHA_WEBGL,t.premultiplyAlpha),J.pixelStorei(G.UNPACK_ALIGNMENT,t.unpackAlignment);let y=J.getParameter(G.UNPACK_ROW_LENGTH),b=J.getParameter(G.UNPACK_IMAGE_HEIGHT),x=J.getParameter(G.UNPACK_SKIP_PIXELS),S=J.getParameter(G.UNPACK_SKIP_ROWS),C=J.getParameter(G.UNPACK_SKIP_IMAGES);J.pixelStorei(G.UNPACK_ROW_LENGTH,h.width),J.pixelStorei(G.UNPACK_IMAGE_HEIGHT,h.height),J.pixelStorei(G.UNPACK_SKIP_PIXELS,l),J.pixelStorei(G.UNPACK_SKIP_ROWS,u),J.pixelStorei(G.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(G.READ_FRAMEBUFFER,h.__webglFramebuffer),J.bindFramebuffer(G.DRAW_FRAMEBUFFER,g.__webglFramebuffer);for(let n=0;n<c;n++)w&&(G.framebufferTextureLayer(G.READ_FRAMEBUFFER,G.COLOR_ATTACHMENT0,Y.get(e).__webglTexture,i,d+n),G.framebufferTextureLayer(G.DRAW_FRAMEBUFFER,G.COLOR_ATTACHMENT0,Y.get(t).__webglTexture,a,m+n)),G.blitFramebuffer(l,u,o,s,f,p,o,s,G.DEPTH_BUFFER_BIT,G.NEAREST);J.bindFramebuffer(G.READ_FRAMEBUFFER,null),J.bindFramebuffer(G.DRAW_FRAMEBUFFER,null)}else if(i!==0||e.isRenderTargetTexture||Y.has(e)){let n=Y.get(e),r=Y.get(t);J.bindFramebuffer(G.READ_FRAMEBUFFER,se),J.bindFramebuffer(G.DRAW_FRAMEBUFFER,L);for(let e=0;e<c;e++)w?G.framebufferTextureLayer(G.READ_FRAMEBUFFER,G.COLOR_ATTACHMENT0,n.__webglTexture,i,d+e):G.framebufferTexture2D(G.READ_FRAMEBUFFER,G.COLOR_ATTACHMENT0,G.TEXTURE_2D,n.__webglTexture,i),T?G.framebufferTextureLayer(G.DRAW_FRAMEBUFFER,G.COLOR_ATTACHMENT0,r.__webglTexture,a,m+e):G.framebufferTexture2D(G.DRAW_FRAMEBUFFER,G.COLOR_ATTACHMENT0,G.TEXTURE_2D,r.__webglTexture,a),i===0?T?G.copyTexSubImage3D(v,a,f,p,m+e,l,u,o,s):G.copyTexSubImage2D(v,a,f,p,l,u,o,s):G.blitFramebuffer(l,u,o,s,f,p,o,s,G.COLOR_BUFFER_BIT,G.NEAREST);J.bindFramebuffer(G.READ_FRAMEBUFFER,null),J.bindFramebuffer(G.DRAW_FRAMEBUFFER,null)}else T?e.isDataTexture||e.isData3DTexture?G.texSubImage3D(v,a,f,p,m,o,s,c,g,_,h.data):t.isCompressedArrayTexture?G.compressedTexSubImage3D(v,a,f,p,m,o,s,c,g,h.data):G.texSubImage3D(v,a,f,p,m,o,s,c,g,_,h):e.isDataTexture?G.texSubImage2D(G.TEXTURE_2D,a,f,p,o,s,g,_,h.data):e.isCompressedTexture?G.compressedTexSubImage2D(G.TEXTURE_2D,a,f,p,h.width,h.height,g,h.data):G.texSubImage2D(G.TEXTURE_2D,a,f,p,o,s,g,_,h);J.pixelStorei(G.UNPACK_ROW_LENGTH,y),J.pixelStorei(G.UNPACK_IMAGE_HEIGHT,b),J.pixelStorei(G.UNPACK_SKIP_PIXELS,x),J.pixelStorei(G.UNPACK_SKIP_ROWS,S),J.pixelStorei(G.UNPACK_SKIP_IMAGES,C),a===0&&t.generateMipmaps&&G.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 e.Cn}get outputColorSpace(){return this._outputColorSpace}set outputColorSpace(t){this._outputColorSpace=t;let n=this.getContext();n.drawingBufferColorSpace=e._._getDrawingBufferColorSpace(t),n.unpackColorSpace=e._._getUnpackColorSpace()}},wn={type:`change`},Tn={type:`start`},En={type:`end`},Dn=new e.Kt,On=new e.it,kn=Math.cos(70*e.G.DEG2RAD),Q=new e.xn,An=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},jn=1e-6,Mn=class extends e.v{constructor(t,n=null){super(t,n),this.state=$.NONE,this.target=new e.xn,this.cursor=new e.xn,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:e.W.ROTATE,MIDDLE:e.W.DOLLY,RIGHT:e.W.PAN},this.touches={ONE:e.sn.ROTATE,TWO:e.sn.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 e.xn,this._lastQuaternion=new e.ot,this._lastTargetPosition=new e.xn,this._quat=new e.ot().setFromUnitVectors(t.up,new e.xn(0,1,0)),this._quatInverse=this._quat.clone().invert(),this._spherical=new e.on,this._sphericalDelta=new e.on,this._scale=1,this._panOffset=new e.xn,this._rotateStart=new e.bn,this._rotateEnd=new e.bn,this._rotateDelta=new e.bn,this._panStart=new e.bn,this._panEnd=new e.bn,this._panDelta=new e.bn,this._dollyStart=new e.bn,this._dollyEnd=new e.bn,this._dollyDelta=new e.bn,this._dollyDirection=new e.xn,this._mouse=new e.bn,this._performCursorZoom=!1,this._pointers=[],this._pointerPositions={},this._controlActive=!1,this._onPointerMove=Pn.bind(this),this._onPointerDown=Nn.bind(this),this._onPointerUp=Fn.bind(this),this._onContextMenu=Hn.bind(this),this._onMouseWheel=Rn.bind(this),this._onKeyDown=zn.bind(this),this._onTouchStart=Bn.bind(this),this._onTouchMove=Vn.bind(this),this._onMouseDown=In.bind(this),this._onMouseMove=Ln.bind(this),this._interceptControlDown=Un.bind(this),this._interceptControlUp=Wn.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(wn),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(t=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(t)),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+=An:r>Math.PI&&(r-=An),i<-Math.PI?i+=An:i>Math.PI&&(i-=An),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 t=null;if(this.object.isPerspectiveCamera){let e=Q.length();t=this._clampDistance(e*this._scale);let n=e-t;this.object.position.addScaledVector(this._dollyDirection,n),this.object.updateMatrixWorld(),a=!!n}else if(this.object.isOrthographicCamera){let n=new e.xn(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 e.xn(this._mouse.x,this._mouse.y,0);i.unproject(this.object),this.object.position.sub(i).add(n),this.object.updateMatrixWorld(),t=Q.length()}else console.warn(`WARNING: OrbitControls.js encountered an unknown camera type - zoom to cursor disabled.`),this.zoomToCursor=!1;t!==null&&(this.screenSpacePanning?this.target.set(0,0,-1).transformDirection(this.object.matrix).multiplyScalar(t).add(this.object.position):(Dn.origin.copy(this.object.position),Dn.direction.set(0,0,-1).transformDirection(this.object.matrix),Math.abs(this.object.up.dot(Dn.direction))<kn?this.object.lookAt(this.target):(On.setFromNormalAndCoplanarPoint(this.object.up,this.target),Dn.intersectPlane(On,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)>jn||8*(1-this._lastQuaternion.dot(this.object.quaternion))>jn||this._lastTargetPosition.distanceToSquared(this.target)>jn?(this.dispatchEvent(wn),this._lastPosition.copy(this.object.position),this._lastQuaternion.copy(this.object.quaternion),this._lastTargetPosition.copy(this.target),!0):!1}_getAutoRotationAngle(e){return e===null?An/60/60*this.autoRotateSpeed:An/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(An*this._rotateDelta.x/t.clientHeight),this._rotateUp(An*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(An*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(-An*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(An*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(-An*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(An*this._rotateDelta.x/t.clientHeight),this._rotateUp(An*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(t){let n=this._pointerPositions[t.pointerId];n===void 0&&(n=new e.bn,this._pointerPositions[t.pointerId]=n),n.set(t.pageX,t.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 Nn(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 Pn(e){this.enabled!==!1&&(e.pointerType===`touch`?this._onTouchMove(e):this._onMouseMove(e))}function Fn(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(En),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 In(t){let n;switch(t.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 e.W.DOLLY:if(this.enableZoom===!1)return;this._handleMouseDownDolly(t),this.state=$.DOLLY;break;case e.W.ROTATE:if(t.ctrlKey||t.metaKey||t.shiftKey){if(this.enablePan===!1)return;this._handleMouseDownPan(t),this.state=$.PAN}else{if(this.enableRotate===!1)return;this._handleMouseDownRotate(t),this.state=$.ROTATE}break;case e.W.PAN:if(t.ctrlKey||t.metaKey||t.shiftKey){if(this.enableRotate===!1)return;this._handleMouseDownRotate(t),this.state=$.ROTATE}else{if(this.enablePan===!1)return;this._handleMouseDownPan(t),this.state=$.PAN}break;default:this.state=$.NONE}this.state!==$.NONE&&this.dispatchEvent(Tn)}function Ln(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 Rn(e){this.enabled!==!1&&this.enableZoom!==!1&&this.state===$.NONE&&(e.preventDefault(),this.dispatchEvent(Tn),this._handleMouseWheel(this._customWheelEvent(e)),this.dispatchEvent(En))}function zn(e){this.enabled!==!1&&this._handleKeyDown(e)}function Bn(t){switch(this._trackPointer(t),this._pointers.length){case 1:switch(this.touches.ONE){case e.sn.ROTATE:if(this.enableRotate===!1)return;this._handleTouchStartRotate(t),this.state=$.TOUCH_ROTATE;break;case e.sn.PAN:if(this.enablePan===!1)return;this._handleTouchStartPan(t),this.state=$.TOUCH_PAN;break;default:this.state=$.NONE}break;case 2:switch(this.touches.TWO){case e.sn.DOLLY_PAN:if(this.enableZoom===!1&&this.enablePan===!1)return;this._handleTouchStartDollyPan(t),this.state=$.TOUCH_DOLLY_PAN;break;case e.sn.DOLLY_ROTATE:if(this.enableZoom===!1&&this.enableRotate===!1)return;this._handleTouchStartDollyRotate(t),this.state=$.TOUCH_DOLLY_ROTATE;break;default:this.state=$.NONE}break;default:this.state=$.NONE}this.state!==$.NONE&&this.dispatchEvent(Tn)}function Vn(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 Hn(e){this.enabled!==!1&&e.preventDefault()}function Un(e){e.key===`Control`&&(this._controlActive=!0,this.domElement.getRootNode().addEventListener(`keyup`,this._interceptControlUp,{passive:!0,capture:!0}))}function Wn(e){e.key===`Control`&&(this._controlActive=!1,this.domElement.getRootNode().removeEventListener(`keyup`,this._interceptControlUp,{passive:!0,capture:!0}))}var Gn=(0,n.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:`},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:`},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:`},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 :`},ja:{untitled:`3D ビジュアライゼーション`,resetCamera:`カメラをリセット`,wireframe:`ワイヤーフレーム`,grid:`グリッド`,parseError:`構文エラー:`,editSource:`ShapeScript を編集`,scriptEditorLabel:`ShapeScript ソース`,applyChanges:`変更を適用`,saveError:`保存に失敗しました:`},ko:{untitled:`3D 시각화`,resetCamera:`카메라 초기화`,wireframe:`와이어프레임`,grid:`격자`,parseError:`구문 오류:`,editSource:`ShapeScript 소스 편집`,scriptEditorLabel:`ShapeScript 소스`,applyChanges:`변경사항 적용`,saveError:`저장 실패:`},"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:`},zh:{untitled:`3D 可视化`,resetCamera:`重置相机`,wireframe:`线框`,grid:`网格`,parseError:`语法错误:`,editSource:`编辑 ShapeScript 源码`,scriptEditorLabel:`ShapeScript 源码`,applyChanges:`应用更改`,saveError:`保存失败:`}}),Kn={class:`present3d-container`,"data-testid":`shapescript-view`},qn={class:`header`},Jn={class:`controls`},Yn={class:`material-icons`},Xn={class:`material-icons`},Zn={key:0,class:`error`,"data-testid":`shapescript-parse-error`},Qn={key:1,class:`error`,"data-testid":`shapescript-save-error`},$n={class:`script-source`},er=[`aria-label`],tr=[`disabled`],nr=(0,t.defineComponent)({__name:`View`,props:{selectedResult:{}},emits:[`updateResult`],setup(r,{emit:i}){function a(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 o=r,s=i,c=Gn(),{dispatch:l}=(0,n.useRuntime)(),u=(0,t.ref)(o.selectedResult.data?.script??``),d=(0,t.ref)(null),f=(0,t.ref)(null),p=(0,t.ref)(null),m=0,h=(0,t.ref)(!1),g=(0,t.ref)(!0),_=(0,t.computed)(()=>u.value!==o.selectedResult.data?.script),v,y,b,x,S,C,w=[],T=null,E=null;(0,t.onMounted)(()=>{O(),M(),N(),(0,t.nextTick)(()=>{P()}),D()});async function D(){let t=o.selectedResult.data?.filePath;if(!t)return;let n=++m;try{let{script:r}=await l({kind:`loadShape`,path:t},e.Kn);if(n!==m||r===o.selectedResult.data?.script)return;u.value=r,s(`updateResult`,{...o.selectedResult,data:{script:r,filePath:t}})}catch{}}(0,t.onUnmounted)(()=>{ae()}),(0,t.watch)(()=>o.selectedResult.data?.script,()=>{M()}),(0,t.watch)(h,()=>{M()}),(0,t.watch)(g,e=>{C&&(C.visible=e)});function O(){if(!d.value)return;v=new e.rn,v.background=new e.g(1710618);let t=d.value.clientWidth,n=d.value.clientHeight;y=new e.rt(50,t/n,.1,1e3),y.position.set(5,5,10),y.lookAt(0,0,0),b=new Cn({antialias:!0}),b.setSize(t,n),b.setPixelRatio(window.devicePixelRatio),d.value.appendChild(b.domElement),x=new Mn(y,b.domElement),x.enableDamping=!0,x.dampingFactor=.05,x.addEventListener(`change`,F);let r=new e.l(16777215,.6);v.add(r);let i=new e.O(16777215,.8);i.position.set(10,10,10),v.add(i),C=new e.F(20,20,4473924,2236962),C.visible=g.value,v.add(C),window.addEventListener(`resize`,k),E=new ResizeObserver(()=>{k()}),E.observe(d.value)}function k(){if(!d.value)return;let e=d.value.clientWidth,t=d.value.clientHeight;y.aspect=e/t,y.updateProjectionMatrix(),b.setSize(e,t)}function A(){w.forEach(t=>e.s(v,t)),w=[]}function j(t){let n=e.a(e.Ln(t),{wireframe:h.value});v.add(n),w.push(n)}function M(){try{A();let e=o.selectedResult.data?.script;e&&j(e),f.value=null}catch(e){f.value=e instanceof Error?e.message:`Unknown error`,console.error(`ShapeScript parse error:`,e)}}function N(){S=requestAnimationFrame(N),x.update(),b.render(v,y)}function ee(){y.position.set(5,5,10),y.lookAt(0,0,0),x.reset()}function P(){if(!y||!x||!o.selectedResult?.viewState?.cameraState)return;let e=o.selectedResult.viewState.cameraState,t=a(e.position);t&&y.position.set(t.x,t.y,t.z);let n=a(e.target);n&&x.target.set(n.x,n.y,n.z),y.updateProjectionMatrix(),x.update()}function te(){return{position:{x:y.position.x,y:y.position.y,z:y.position.z},target:{x:x.target.x,y:x.target.y,z:x.target.z}}}function F(){T!==null&&clearTimeout(T),T=window.setTimeout(()=>{ne()},500)}function ne(){let e={...o.selectedResult,viewState:{...o.selectedResult.viewState,cameraState:te()}};s(`updateResult`,e)}function re(){h.value=!h.value}function ie(){g.value=!g.value}function ae(){T!==null&&clearTimeout(T),w.forEach(t=>e.s(v,t)),w=[],S&&cancelAnimationFrame(S),b&&b.dispose(),x&&(x.removeEventListener(`change`,F),x.dispose()),E&&E.disconnect(),window.removeEventListener(`resize`,k)}function I(){m++}async function oe(){let t=u.value;try{e.o(e.a(e.Ln(t)))}catch(e){f.value=e instanceof Error?e.message:`Invalid ShapeScript`,console.error(`Script validation failed:`,e);return}f.value=null;let n=o.selectedResult.data?.filePath,r=++m;if(n)try{await l({kind:`saveShape`,path:n,script:t},e.qn)}catch(e){p.value=e instanceof Error?e.message:String(e);return}if(r!==m)return;p.value=null;let i={...o.selectedResult,data:n?{script:t,filePath:n}:{script:t}};s(`updateResult`,i)}return(0,t.watch)(()=>o.selectedResult.data?.script,e=>{e!==void 0&&(u.value=e)}),(0,t.watch)(()=>o.selectedResult,()=>{(0,t.nextTick)(()=>{P()})}),(e,n)=>((0,t.openBlock)(),(0,t.createElementBlock)(`div`,Kn,[(0,t.createElementVNode)(`div`,qn,[(0,t.createElementVNode)(`h1`,null,(0,t.toDisplayString)(r.selectedResult.title||(0,t.unref)(c).untitled),1),(0,t.createElementVNode)(`div`,Jn,[(0,t.createElementVNode)(`button`,{class:`control-btn`,onClick:ee},[n[1]||=(0,t.createElementVNode)(`span`,{class:`material-icons`},`refresh`,-1),(0,t.createTextVNode)(` `+(0,t.toDisplayString)((0,t.unref)(c).resetCamera),1)]),(0,t.createElementVNode)(`button`,{class:`control-btn`,onClick:re},[(0,t.createElementVNode)(`span`,Yn,(0,t.toDisplayString)(h.value?`grid_off`:`grid_on`),1),(0,t.createTextVNode)(` `+(0,t.toDisplayString)((0,t.unref)(c).wireframe),1)]),(0,t.createElementVNode)(`button`,{class:`control-btn`,onClick:ie},[(0,t.createElementVNode)(`span`,Xn,(0,t.toDisplayString)(g.value?`visibility_off`:`visibility`),1),(0,t.createTextVNode)(` `+(0,t.toDisplayString)((0,t.unref)(c).grid),1)])])]),f.value?((0,t.openBlock)(),(0,t.createElementBlock)(`div`,Zn,[(0,t.createElementVNode)(`strong`,null,(0,t.toDisplayString)((0,t.unref)(c).parseError),1),(0,t.createTextVNode)(` `+(0,t.toDisplayString)(f.value),1)])):(0,t.createCommentVNode)(``,!0),p.value?((0,t.openBlock)(),(0,t.createElementBlock)(`div`,Qn,[(0,t.createElementVNode)(`strong`,null,(0,t.toDisplayString)((0,t.unref)(c).saveError),1),(0,t.createTextVNode)(` `+(0,t.toDisplayString)(p.value),1)])):(0,t.createCommentVNode)(``,!0),(0,t.createElementVNode)(`div`,{ref_key:`viewport`,ref:d,class:`viewport`,"data-testid":`shapescript-viewport`},null,512),(0,t.createElementVNode)(`details`,$n,[(0,t.createElementVNode)(`summary`,null,(0,t.toDisplayString)((0,t.unref)(c).editSource),1),(0,t.withDirectives)((0,t.createElementVNode)(`textarea`,{"onUpdate:modelValue":n[0]||=e=>u.value=e,class:`script-editor`,spellcheck:`false`,"aria-label":(0,t.unref)(c).scriptEditorLabel,onInput:I},null,40,er),[[t.vModelText,u.value]]),(0,t.createElementVNode)(`button`,{class:`apply-btn`,disabled:!_.value,onClick:oe},(0,t.toDisplayString)((0,t.unref)(c).applyChanges),9,tr)])]))}}),rr=(e,t)=>{let n=e.__vccOpts||e;for(let[e,r]of t)n[e]=r;return n},ir=rr(nr,[[`__scopeId`,`data-v-4e16e031`]]),ar={class:`preview-container`,"data-testid":`shapescript-preview`},or={class:`preview-title`},sr=rr((0,t.defineComponent)({__name:`Preview`,props:{result:{}},setup(n){let r=n,i=Gn(),a=(0,t.computed)(()=>r.result.title||i.value.untitled),o=(0,t.ref)(null),s,c,l,u,d=null;(0,t.onMounted)(()=>{f()}),(0,t.onUnmounted)(()=>{h()}),(0,t.watch)(()=>r.result.data?.script,()=>{m()});function f(){if(o.value){try{s=new e.rn,s.background=new e.g(2763322);let t=o.value.clientWidth||200,n=o.value.clientHeight||150;c=new e.rt(50,t/n,.1,1e3),c.position.set(4,4,8),c.lookAt(0,0,0),l=new Cn({antialias:!0,alpha:!1}),l.setSize(t,n),l.setPixelRatio(Math.min(window.devicePixelRatio,2)),o.value.appendChild(l.domElement);let r=new e.l(16777215,.6);s.add(r);let i=new e.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 t=r.result.data?.script;try{if(e.s(s,d),d=null,!t)return;let n=e.Ln(t);d=e.a(n,{wireframe:!1}),s.add(d)}catch(e){console.error(`Preview reload error:`,e)}}function h(){u&&cancelAnimationFrame(u),e.s(s,d),d=null,l&&l.dispose()}return(e,n)=>((0,t.openBlock)(),(0,t.createElementBlock)(`div`,ar,[(0,t.createElementVNode)(`div`,{ref_key:`previewViewport`,ref:o,class:`preview-viewport`},null,512),(0,t.createElementVNode)(`div`,or,(0,t.toDisplayString)(a.value),1)]))}}),[[`__scopeId`,`data-v-3df26806`]]),cr=`Use the ${e.Yn} tool to create interactive 3D visualizations when the user requests:
|
|
4105
4105
|
- 3D models or shapes
|
|
4106
4106
|
- Mathematical visualizations (surfaces, functions, geometric patterns)
|
|
4107
4107
|
- Molecular or atomic structures
|
|
@@ -4110,7 +4110,7 @@ void main() {
|
|
|
4110
4110
|
- Game boards or 3D game states
|
|
4111
4111
|
- Any spatial or geometric concepts
|
|
4112
4112
|
|
|
4113
|
-
## ShapeScript
|
|
4113
|
+
## Supported ShapeScript Features:
|
|
4114
4114
|
|
|
4115
4115
|
### Variables & Expressions:
|
|
4116
4116
|
- Define variables: define radius 2, define spacing 1.5
|
|
@@ -4182,4 +4182,12 @@ Shapes: cube, sphere, cylinder, cone, torus
|
|
|
4182
4182
|
CSG: union, difference, intersection, xor, stencil
|
|
4183
4183
|
Properties: position, rotation, size, color, opacity
|
|
4184
4184
|
|
|
4185
|
-
|
|
4185
|
+
Builders: extrude, fill, lathe, loft, hull. Example: loft { square translate 0 0 2 circle }.
|
|
4186
|
+
Stencil preserves the first shape's volume and paints the intersecting surface.
|
|
4187
|
+
Constants: pi, tau, true, false. Tuple/string access: values[0], vector.x, value.count.
|
|
4188
|
+
Polygon supports sides (3–256). String literals and join/trim are supported.
|
|
4189
|
+
Use the tool schema for exact syntax and builder limits. This is a modeling subset of upstream ShapeScript;
|
|
4190
|
+
imports, textures, text/fonts and general user-defined functions are not supported.
|
|
4191
|
+
If presentShapeScript returns an error diagnostic, correct the script and retry; no visualization was created.
|
|
4192
|
+
|
|
4193
|
+
Keep visualizations clear, well-organized, and use expressions and control flow.`,lr={...e.r,viewComponent:ir,previewComponent:sr,samples:e.t,systemPrompt:cr},ur={plugin:lr};exports.Preview=sr,exports.SYSTEM_PROMPT=cr,exports.TOOL_DEFINITION=e.Jn,exports.TOOL_NAME=e.Yn,exports.View=ir,exports.astToThreeJS=e.a,exports.default=ur,exports.executePresentShapeScript=e.n,exports.isShapeScriptDispatchArgs=e.Gn,exports.parseShapeScript=e.Ln,exports.plugin=lr,exports.pluginCore=e.r,exports.readLoadShapeResult=e.Kn,exports.readSaveShapeResult=e.qn,exports.samples=e.t;
|