Skip to content
Snippets Groups Projects
three.min.js 582 KiB
Newer Older
Amira Abdel-Rahman's avatar
Amira Abdel-Rahman committed
(function(k,Ba){"object"===typeof exports&&"undefined"!==typeof module?Ba(exports):"function"===typeof define&&define.amd?define(["exports"],Ba):(k=k||self,Ba(k.THREE={}))})(this,function(k){function Ba(){}function B(a,b){this.x=a||0;this.y=b||0}function wa(a,b,c,d){this._x=a||0;this._y=b||0;this._z=c||0;this._w=void 0!==d?d:1}function n(a,b,c){this.x=a||0;this.y=b||0;this.z=c||0}function Z(){this.elements=[1,0,0,0,1,0,0,0,1];0<arguments.length&&console.error("THREE.Matrix3: the constructor no longer reads arguments. use .set() instead.")}
function Y(a,b,c,d,e,f,g,h,l,m){Object.defineProperty(this,"id",{value:Si++});this.uuid=P.generateUUID();this.name="";this.image=void 0!==a?a:Y.DEFAULT_IMAGE;this.mipmaps=[];this.mapping=void 0!==b?b:Y.DEFAULT_MAPPING;this.wrapS=void 0!==c?c:1001;this.wrapT=void 0!==d?d:1001;this.magFilter=void 0!==e?e:1006;this.minFilter=void 0!==f?f:1008;this.anisotropy=void 0!==l?l:1;this.format=void 0!==g?g:1023;this.type=void 0!==h?h:1009;this.offset=new B(0,0);this.repeat=new B(1,1);this.center=new B(0,0);this.rotation=
0;this.matrixAutoUpdate=!0;this.matrix=new Z;this.generateMipmaps=!0;this.premultiplyAlpha=!1;this.flipY=!0;this.unpackAlignment=4;this.encoding=void 0!==m?m:3E3;this.version=0;this.onUpdate=null}function da(a,b,c,d){this.x=a||0;this.y=b||0;this.z=c||0;this.w=void 0!==d?d:1}function la(a,b,c){this.width=a;this.height=b;this.scissor=new da(0,0,a,b);this.scissorTest=!1;this.viewport=new da(0,0,a,b);c=c||{};this.texture=new Y(void 0,void 0,c.wrapS,c.wrapT,c.magFilter,c.minFilter,c.format,c.type,c.anisotropy,
c.encoding);this.texture.image={};this.texture.image.width=a;this.texture.image.height=b;this.texture.generateMipmaps=void 0!==c.generateMipmaps?c.generateMipmaps:!1;this.texture.minFilter=void 0!==c.minFilter?c.minFilter:1006;this.depthBuffer=void 0!==c.depthBuffer?c.depthBuffer:!0;this.stencilBuffer=void 0!==c.stencilBuffer?c.stencilBuffer:!0;this.depthTexture=void 0!==c.depthTexture?c.depthTexture:null}function Sf(a,b,c){la.call(this,a,b,c);this.samples=4}function Q(){this.elements=[1,0,0,0,0,
1,0,0,0,0,1,0,0,0,0,1];0<arguments.length&&console.error("THREE.Matrix4: the constructor no longer reads arguments. use .set() instead.")}function Pb(a,b,c,d){this._x=a||0;this._y=b||0;this._z=c||0;this._order=d||Pb.DefaultOrder}function Tf(){this.mask=1}function D(){Object.defineProperty(this,"id",{value:Ti++});this.uuid=P.generateUUID();this.name="";this.type="Object3D";this.parent=null;this.children=[];this.up=D.DefaultUp.clone();var a=new n,b=new Pb,c=new wa,d=new n(1,1,1);b._onChange(function(){c.setFromEuler(b,
!1)});c._onChange(function(){b.setFromQuaternion(c,void 0,!1)});Object.defineProperties(this,{position:{configurable:!0,enumerable:!0,value:a},rotation:{configurable:!0,enumerable:!0,value:b},quaternion:{configurable:!0,enumerable:!0,value:c},scale:{configurable:!0,enumerable:!0,value:d},modelViewMatrix:{value:new Q},normalMatrix:{value:new Z}});this.matrix=new Q;this.matrixWorld=new Q;this.matrixAutoUpdate=D.DefaultMatrixAutoUpdate;this.matrixWorldNeedsUpdate=!1;this.layers=new Tf;this.visible=!0;
this.receiveShadow=this.castShadow=!1;this.frustumCulled=!0;this.renderOrder=0;this.userData={}}function wd(){D.call(this);this.type="Scene";this.overrideMaterial=this.fog=this.background=null;this.autoUpdate=!0;"undefined"!==typeof __THREE_DEVTOOLS__&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("observe",{detail:this}))}function ab(a,b){this.min=void 0!==a?a:new n(Infinity,Infinity,Infinity);this.max=void 0!==b?b:new n(-Infinity,-Infinity,-Infinity)}function Uf(a,b,c,d,e){var f;var g=0;for(f=
a.length-3;g<=f;g+=3){Qb.fromArray(a,g);var h=e.x*Math.abs(Qb.x)+e.y*Math.abs(Qb.y)+e.z*Math.abs(Qb.z),l=b.dot(Qb),m=c.dot(Qb),r=d.dot(Qb);if(Math.max(-Math.max(l,m,r),Math.min(l,m,r))>h)return!1}return!0}function mb(a,b){this.center=void 0!==a?a:new n;this.radius=void 0!==b?b:0}function Rb(a,b){this.origin=void 0!==a?a:new n;this.direction=void 0!==b?b:new n}function Oa(a,b){this.normal=void 0!==a?a:new n(1,0,0);this.constant=void 0!==b?b:0}function ba(a,b,c){this.a=void 0!==a?a:new n;this.b=void 0!==
b?b:new n;this.c=void 0!==c?c:new n}function J(a,b,c){return void 0===b&&void 0===c?this.set(a):this.setRGB(a,b,c)}function Vf(a,b,c){0>c&&(c+=1);1<c&&--c;return c<1/6?a+6*(b-a)*c:.5>c?b:c<2/3?a+6*(b-a)*(2/3-c):a}function Wf(a){return.04045>a?.0773993808*a:Math.pow(.9478672986*a+.0521327014,2.4)}function Xf(a){return.0031308>a?12.92*a:1.055*Math.pow(a,.41666)-.055}function yc(a,b,c,d,e,f){this.a=a;this.b=b;this.c=c;this.normal=d&&d.isVector3?d:new n;this.vertexNormals=Array.isArray(d)?d:[];this.color=
e&&e.isColor?e:new J;this.vertexColors=Array.isArray(e)?e:[];this.materialIndex=void 0!==f?f:0}function O(){Object.defineProperty(this,"id",{value:Ui++});this.uuid=P.generateUUID();this.name="";this.type="Material";this.fog=!0;this.blending=1;this.side=0;this.vertexTangents=this.flatShading=!1;this.vertexColors=0;this.opacity=1;this.transparent=!1;this.blendSrc=204;this.blendDst=205;this.blendEquation=100;this.blendEquationAlpha=this.blendDstAlpha=this.blendSrcAlpha=null;this.depthFunc=3;this.depthWrite=
this.depthTest=!0;this.stencilWriteMask=255;this.stencilFunc=519;this.stencilRef=0;this.stencilFuncMask=255;this.stencilZPass=this.stencilZFail=this.stencilFail=7680;this.stencilWrite=!1;this.clippingPlanes=null;this.clipShadows=this.clipIntersection=!1;this.shadowSide=null;this.colorWrite=!0;this.precision=null;this.polygonOffset=!1;this.polygonOffsetUnits=this.polygonOffsetFactor=0;this.dithering=!1;this.alphaTest=0;this.premultipliedAlpha=!1;this.toneMapped=this.visible=!0;this.userData={};this.needsUpdate=
!0}function Ga(a){O.call(this);this.type="MeshBasicMaterial";this.color=new J(16777215);this.lightMap=this.map=null;this.lightMapIntensity=1;this.aoMap=null;this.aoMapIntensity=1;this.envMap=this.alphaMap=this.specularMap=null;this.combine=0;this.reflectivity=1;this.refractionRatio=.98;this.wireframe=!1;this.wireframeLinewidth=1;this.wireframeLinejoin=this.wireframeLinecap="round";this.morphTargets=this.skinning=!1;this.setValues(a)}function N(a,b,c){if(Array.isArray(a))throw new TypeError("THREE.BufferAttribute: array should be a Typed Array.");
this.name="";this.array=a;this.itemSize=b;this.count=void 0!==a?a.length/b:0;this.normalized=!0===c;this.usage=35044;this.updateRange={offset:0,count:-1};this.version=0}function xd(a,b,c){N.call(this,new Int8Array(a),b,c)}function yd(a,b,c){N.call(this,new Uint8Array(a),b,c)}function zd(a,b,c){N.call(this,new Uint8ClampedArray(a),b,c)}function Ad(a,b,c){N.call(this,new Int16Array(a),b,c)}function Sb(a,b,c){N.call(this,new Uint16Array(a),b,c)}function Bd(a,b,c){N.call(this,new Int32Array(a),b,c)}function Tb(a,
b,c){N.call(this,new Uint32Array(a),b,c)}function A(a,b,c){N.call(this,new Float32Array(a),b,c)}function Cd(a,b,c){N.call(this,new Float64Array(a),b,c)}function ih(){this.vertices=[];this.normals=[];this.colors=[];this.uvs=[];this.uvs2=[];this.groups=[];this.morphTargets={};this.skinWeights=[];this.skinIndices=[];this.boundingSphere=this.boundingBox=null;this.groupsNeedUpdate=this.uvsNeedUpdate=this.colorsNeedUpdate=this.normalsNeedUpdate=this.verticesNeedUpdate=!1}function jh(a){if(0===a.length)return-Infinity;
for(var b=a[0],c=1,d=a.length;c<d;++c)a[c]>b&&(b=a[c]);return b}function E(){Object.defineProperty(this,"id",{value:Vi+=2});this.uuid=P.generateUUID();this.name="";this.type="BufferGeometry";this.index=null;this.attributes={};this.morphAttributes={};this.groups=[];this.boundingSphere=this.boundingBox=null;this.drawRange={start:0,count:Infinity};this.userData={}}function ea(a,b){D.call(this);this.type="Mesh";this.geometry=void 0!==a?a:new E;this.material=void 0!==b?b:new Ga({color:16777215*Math.random()});
this.drawMode=0;this.updateMorphTargets()}function kh(a,b,c,d,e,f,g,h){if(null===(1===b.side?d.intersectTriangle(g,f,e,!0,h):d.intersectTriangle(e,f,g,2!==b.side,h)))return null;Ee.copy(h);Ee.applyMatrix4(a.matrixWorld);b=c.ray.origin.distanceTo(Ee);return b<c.near||b>c.far?null:{distance:b,point:Ee.clone(),object:a}}function Fe(a,b,c,d,e,f,g,h,l,m,r){Ub.fromBufferAttribute(e,l);Vb.fromBufferAttribute(e,m);Wb.fromBufferAttribute(e,r);e=a.morphTargetInfluences;if(b.morphTargets&&f&&e){Yf.set(0,0,0);
Zf.set(0,0,0);$f.set(0,0,0);for(var q=0,u=f.length;q<u;q++){var p=e[q],k=f[q];0!==p&&(lh.fromBufferAttribute(k,l),mh.fromBufferAttribute(k,m),nh.fromBufferAttribute(k,r),Yf.addScaledVector(lh.sub(Ub),p),Zf.addScaledVector(mh.sub(Vb),p),$f.addScaledVector(nh.sub(Wb),p))}Ub.add(Yf);Vb.add(Zf);Wb.add($f)}if(a=kh(a,b,c,d,Ub,Vb,Wb,Dd))g&&(zc.fromBufferAttribute(g,l),Ac.fromBufferAttribute(g,m),Bc.fromBufferAttribute(g,r),a.uv=ba.getUV(Dd,Ub,Vb,Wb,zc,Ac,Bc,new B)),h&&(zc.fromBufferAttribute(h,l),Ac.fromBufferAttribute(h,
m),Bc.fromBufferAttribute(h,r),a.uv2=ba.getUV(Dd,Ub,Vb,Wb,zc,Ac,Bc,new B)),g=new yc(l,m,r),ba.getNormal(Ub,Vb,Wb,g.normal),a.face=g;return a}function C(){Object.defineProperty(this,"id",{value:Wi+=2});this.uuid=P.generateUUID();this.name="";this.type="Geometry";this.vertices=[];this.colors=[];this.faces=[];this.faceVertexUvs=[[]];this.morphTargets=[];this.morphNormals=[];this.skinWeights=[];this.skinIndices=[];this.lineDistances=[];this.boundingSphere=this.boundingBox=null;this.groupsNeedUpdate=this.lineDistancesNeedUpdate=
this.colorsNeedUpdate=this.normalsNeedUpdate=this.uvsNeedUpdate=this.verticesNeedUpdate=this.elementsNeedUpdate=!1}function Xb(a){var b={},c;for(c in a){b[c]={};for(var d in a[c]){var e=a[c][d];e&&(e.isColor||e.isMatrix3||e.isMatrix4||e.isVector2||e.isVector3||e.isVector4||e.isTexture)?b[c][d]=e.clone():Array.isArray(e)?b[c][d]=e.slice():b[c][d]=e}}return b}function ua(a){for(var b={},c=0;c<a.length;c++){var d=Xb(a[c]),e;for(e in d)b[e]=d[e]}return b}function va(a){O.call(this);this.type="ShaderMaterial";
this.defines={};this.uniforms={};this.vertexShader="void main() {\n\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n}";this.fragmentShader="void main() {\n\tgl_FragColor = vec4( 1.0, 0.0, 0.0, 1.0 );\n}";this.linewidth=1;this.wireframe=!1;this.wireframeLinewidth=1;this.morphNormals=this.morphTargets=this.skinning=this.clipping=this.lights=this.fog=!1;this.extensions={derivatives:!1,fragDepth:!1,drawBuffers:!1,shaderTextureLOD:!1};this.defaultAttributeValues={color:[1,1,
1],uv:[0,0],uv2:[0,0]};this.index0AttributeName=void 0;this.uniformsNeedUpdate=!1;void 0!==a&&(void 0!==a.attributes&&console.error("THREE.ShaderMaterial: attributes should now be defined in THREE.BufferGeometry instead."),this.setValues(a))}function bb(){D.call(this);this.type="Camera";this.matrixWorldInverse=new Q;this.projectionMatrix=new Q;this.projectionMatrixInverse=new Q}function U(a,b,c,d){bb.call(this);this.type="PerspectiveCamera";this.fov=void 0!==a?a:50;this.zoom=1;this.near=void 0!==
c?c:.1;this.far=void 0!==d?d:2E3;this.focus=10;this.aspect=void 0!==b?b:1;this.view=null;this.filmGauge=35;this.filmOffset=0;this.updateProjectionMatrix()}function Cc(a,b,c,d){D.call(this);this.type="CubeCamera";var e=new U(90,1,a,b);e.up.set(0,-1,0);e.lookAt(new n(1,0,0));this.add(e);var f=new U(90,1,a,b);f.up.set(0,-1,0);f.lookAt(new n(-1,0,0));this.add(f);var g=new U(90,1,a,b);g.up.set(0,0,1);g.lookAt(new n(0,1,0));this.add(g);var h=new U(90,1,a,b);h.up.set(0,0,-1);h.lookAt(new n(0,-1,0));this.add(h);
var l=new U(90,1,a,b);l.up.set(0,-1,0);l.lookAt(new n(0,0,1));this.add(l);var m=new U(90,1,a,b);m.up.set(0,-1,0);m.lookAt(new n(0,0,-1));this.add(m);d=d||{format:1022,magFilter:1006,minFilter:1006};this.renderTarget=new Bb(c,c,d);this.renderTarget.texture.name="CubeCamera";this.update=function(a,b){null===this.parent&&this.updateMatrixWorld();var c=a.getRenderTarget(),d=this.renderTarget,r=d.texture.generateMipmaps;d.texture.generateMipmaps=!1;a.setRenderTarget(d,0);a.render(b,e);a.setRenderTarget(d,
1);a.render(b,f);a.setRenderTarget(d,2);a.render(b,g);a.setRenderTarget(d,3);a.render(b,h);a.setRenderTarget(d,4);a.render(b,l);d.texture.generateMipmaps=r;a.setRenderTarget(d,5);a.render(b,m);a.setRenderTarget(c)};this.clear=function(a,b,c,d){for(var e=a.getRenderTarget(),f=this.renderTarget,g=0;6>g;g++)a.setRenderTarget(f,g),a.clear(b,c,d);a.setRenderTarget(e)}}function Bb(a,b,c){la.call(this,a,b,c)}function Yb(a,b,c,d,e,f,g,h,l,m,r,q){Y.call(this,null,f,g,h,l,m,d,e,r,q);this.image={data:a||null,
width:b||1,height:c||1};this.magFilter=void 0!==l?l:1003;this.minFilter=void 0!==m?m:1003;this.flipY=this.generateMipmaps=!1;this.unpackAlignment=1;this.needsUpdate=!0}function Ed(a,b,c,d,e,f){this.planes=[void 0!==a?a:new Oa,void 0!==b?b:new Oa,void 0!==c?c:new Oa,void 0!==d?d:new Oa,void 0!==e?e:new Oa,void 0!==f?f:new Oa]}function ag(){function a(e,f){!1!==c&&(d(e,f),b.requestAnimationFrame(a))}var b=null,c=!1,d=null;return{start:function(){!0!==c&&null!==d&&(b.requestAnimationFrame(a),c=!0)},
stop:function(){c=!1},setAnimationLoop:function(a){d=a},setContext:function(a){b=a}}}function Xi(a){function b(b,c){var d=b.array,e=b.usage,h=a.createBuffer();a.bindBuffer(c,h);a.bufferData(c,d,e);b.onUploadCallback();c=5126;d instanceof Float32Array?c=5126:d instanceof Float64Array?console.warn("THREE.WebGLAttributes: Unsupported data buffer format: Float64Array."):d instanceof Uint16Array?c=5123:d instanceof Int16Array?c=5122:d instanceof Uint32Array?c=5125:d instanceof Int32Array?c=5124:d instanceof
Int8Array?c=5120:d instanceof Uint8Array&&(c=5121);return{buffer:h,type:c,bytesPerElement:d.BYTES_PER_ELEMENT,version:b.version}}var c=new WeakMap;return{get:function(a){a.isInterleavedBufferAttribute&&(a=a.data);return c.get(a)},remove:function(b){b.isInterleavedBufferAttribute&&(b=b.data);var d=c.get(b);d&&(a.deleteBuffer(d.buffer),c.delete(b))},update:function(d,e){d.isInterleavedBufferAttribute&&(d=d.data);var f=c.get(d);if(void 0===f)c.set(d,b(d,e));else if(f.version<d.version){var g=d.array,
h=d.updateRange;a.bindBuffer(e,f.buffer);-1===h.count?a.bufferSubData(e,0,g):(a.bufferSubData(e,h.offset*g.BYTES_PER_ELEMENT,g.subarray(h.offset,h.offset+h.count)),h.count=-1);f.version=d.version}}}}function Fd(a,b,c,d){C.call(this);this.type="PlaneGeometry";this.parameters={width:a,height:b,widthSegments:c,heightSegments:d};this.fromBufferGeometry(new Zb(a,b,c,d));this.mergeVertices()}function Zb(a,b,c,d){E.call(this);this.type="PlaneBufferGeometry";this.parameters={width:a,height:b,widthSegments:c,
heightSegments:d};a=a||1;b=b||1;var e=a/2,f=b/2;c=Math.floor(c)||1;d=Math.floor(d)||1;var g=c+1,h=d+1,l=a/c,m=b/d,r=[],q=[],u=[],p=[];for(a=0;a<h;a++){var k=a*m-f;for(b=0;b<g;b++)q.push(b*l-e,-k,0),u.push(0,0,1),p.push(b/c),p.push(1-a/d)}for(a=0;a<d;a++)for(b=0;b<c;b++)e=b+g*(a+1),f=b+1+g*(a+1),h=b+1+g*a,r.push(b+g*a,e,h),r.push(e,f,h);this.setIndex(r);this.setAttribute("position",new A(q,3));this.setAttribute("normal",new A(u,3));this.setAttribute("uv",new A(p,2))}function Yi(a,b,c,d){function e(a,
c){b.buffers.color.setClear(a.r,a.g,a.b,c,d)}var f=new J(0),g=0,h,l,m=null,r=0;return{getClearColor:function(){return f},setClearColor:function(a,b){f.set(a);g=void 0!==b?b:1;e(f,g)},getClearAlpha:function(){return g},setClearAlpha:function(a){g=a;e(f,g)},render:function(b,d,p,k){d=d.background;p=a.vr;(p=p.getSession&&p.getSession())&&"additive"===p.environmentBlendMode&&(d=null);null===d?(e(f,g),m=null,r=0):d&&d.isColor&&(e(d,1),k=!0,m=null,r=0);(a.autoClear||k)&&a.clear(a.autoClearColor,a.autoClearDepth,
a.autoClearStencil);if(d&&(d.isCubeTexture||d.isWebGLRenderTargetCube)){void 0===l&&(l=new ea(new Gd(1,1,1),new va({type:"BackgroundCubeMaterial",uniforms:Xb(cb.cube.uniforms),vertexShader:cb.cube.vertexShader,fragmentShader:cb.cube.fragmentShader,side:1,depthTest:!1,depthWrite:!1,fog:!1})),l.geometry.deleteAttribute("normal"),l.geometry.deleteAttribute("uv"),l.onBeforeRender=function(a,b,c){this.matrixWorld.copyPosition(c.matrixWorld)},Object.defineProperty(l.material,"map",{get:function(){return this.uniforms.tCube.value}}),
c.update(l));k=d.isWebGLRenderTargetCube?d.texture:d;l.material.uniforms.tCube.value=k;l.material.uniforms.tFlip.value=d.isWebGLRenderTargetCube?1:-1;if(m!==d||r!==k.version)l.material.needsUpdate=!0,m=d,r=k.version;b.unshift(l,l.geometry,l.material,0,0,null)}else if(d&&d.isTexture){void 0===h&&(h=new ea(new Zb(2,2),new va({type:"BackgroundMaterial",uniforms:Xb(cb.background.uniforms),vertexShader:cb.background.vertexShader,fragmentShader:cb.background.fragmentShader,side:0,depthTest:!1,depthWrite:!1,
fog:!1})),h.geometry.deleteAttribute("normal"),Object.defineProperty(h.material,"map",{get:function(){return this.uniforms.t2D.value}}),c.update(h));h.material.uniforms.t2D.value=d;!0===d.matrixAutoUpdate&&d.updateMatrix();h.material.uniforms.uvTransform.value.copy(d.matrix);if(m!==d||r!==d.version)h.material.needsUpdate=!0,m=d,r=d.version;b.unshift(h,h.geometry,h.material,0,0,null)}}}}function Zi(a,b,c,d){var e=d.isWebGL2,f;this.setMode=function(a){f=a};this.render=function(b,d){a.drawArrays(f,b,
d);c.update(d,f)};this.renderInstances=function(d,h,l,m){if(0!==m){if(e){d=a;var g="drawArraysInstanced"}else if(d=b.get("ANGLE_instanced_arrays"),g="drawArraysInstancedANGLE",null===d){console.error("THREE.WebGLBufferRenderer: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.");return}d[g](f,h,l,m);c.update(l,f,m)}}}function $i(a,b,c){function d(b){if("highp"===b){if(0<a.getShaderPrecisionFormat(35633,36338).precision&&0<a.getShaderPrecisionFormat(35632,
36338).precision)return"highp";b="mediump"}return"mediump"===b&&0<a.getShaderPrecisionFormat(35633,36337).precision&&0<a.getShaderPrecisionFormat(35632,36337).precision?"mediump":"lowp"}var e,f="undefined"!==typeof WebGL2RenderingContext&&a instanceof WebGL2RenderingContext||"undefined"!==typeof WebGL2ComputeRenderingContext&&a instanceof WebGL2ComputeRenderingContext,g=void 0!==c.precision?c.precision:"highp",h=d(g);h!==g&&(console.warn("THREE.WebGLRenderer:",g,"not supported, using",h,"instead."),
g=h);c=!0===c.logarithmicDepthBuffer;h=a.getParameter(34930);var l=a.getParameter(35660),m=a.getParameter(3379),r=a.getParameter(34076),q=a.getParameter(34921),k=a.getParameter(36347),p=a.getParameter(36348),t=a.getParameter(36349),v=0<l,y=f||!!b.get("OES_texture_float"),n=v&&y,x=f?a.getParameter(36183):0;return{isWebGL2:f,getMaxAnisotropy:function(){if(void 0!==e)return e;var c=b.get("EXT_texture_filter_anisotropic");return e=null!==c?a.getParameter(c.MAX_TEXTURE_MAX_ANISOTROPY_EXT):0},getMaxPrecision:d,
precision:g,logarithmicDepthBuffer:c,maxTextures:h,maxVertexTextures:l,maxTextureSize:m,maxCubemapSize:r,maxAttributes:q,maxVertexUniforms:k,maxVaryings:p,maxFragmentUniforms:t,vertexTextures:v,floatFragmentTextures:y,floatVertexTextures:n,maxSamples:x}}function aj(){function a(){m.value!==d&&(m.value=d,m.needsUpdate=0<e);c.numPlanes=e;c.numIntersection=0}function b(a,b,d,e){var f=null!==a?a.length:0,g=null;if(0!==f){g=m.value;if(!0!==e||null===g){e=d+4*f;b=b.matrixWorldInverse;l.getNormalMatrix(b);
if(null===g||g.length<e)g=new Float32Array(e);for(e=0;e!==f;++e,d+=4)h.copy(a[e]).applyMatrix4(b,l),h.normal.toArray(g,d),g[d+3]=h.constant}m.value=g;m.needsUpdate=!0}c.numPlanes=f;return g}var c=this,d=null,e=0,f=!1,g=!1,h=new Oa,l=new Z,m={value:null,needsUpdate:!1};this.uniform=m;this.numIntersection=this.numPlanes=0;this.init=function(a,c,g){var h=0!==a.length||c||0!==e||f;f=c;d=b(a,g,0);e=a.length;return h};this.beginShadows=function(){g=!0;b(null)};this.endShadows=function(){g=!1;a()};this.setState=
function(c,h,l,k,t,v){if(!f||null===c||0===c.length||g&&!l)g?b(null):a();else{l=g?0:e;var r=4*l,q=t.clippingState||null;m.value=q;q=b(c,k,r,v);for(c=0;c!==r;++c)q[c]=d[c];t.clippingState=q;this.numIntersection=h?this.numPlanes:0;this.numPlanes+=l}}}function bj(a){var b={};return{get:function(c){if(void 0!==b[c])return b[c];switch(c){case "WEBGL_depth_texture":var d=a.getExtension("WEBGL_depth_texture")||a.getExtension("MOZ_WEBGL_depth_texture")||a.getExtension("WEBKIT_WEBGL_depth_texture");break;
case "EXT_texture_filter_anisotropic":d=a.getExtension("EXT_texture_filter_anisotropic")||a.getExtension("MOZ_EXT_texture_filter_anisotropic")||a.getExtension("WEBKIT_EXT_texture_filter_anisotropic");break;case "WEBGL_compressed_texture_s3tc":d=a.getExtension("WEBGL_compressed_texture_s3tc")||a.getExtension("MOZ_WEBGL_compressed_texture_s3tc")||a.getExtension("WEBKIT_WEBGL_compressed_texture_s3tc");break;case "WEBGL_compressed_texture_pvrtc":d=a.getExtension("WEBGL_compressed_texture_pvrtc")||a.getExtension("WEBKIT_WEBGL_compressed_texture_pvrtc");
break;default:d=a.getExtension(c)}null===d&&console.warn("THREE.WebGLRenderer: "+c+" extension not supported.");return b[c]=d}}}function cj(a,b,c){function d(a){var e=a.target;a=f.get(e);null!==a.index&&b.remove(a.index);for(var h in a.attributes)b.remove(a.attributes[h]);e.removeEventListener("dispose",d);f.delete(e);if(h=g.get(a))b.remove(h),g.delete(a);c.memory.geometries--}function e(a){var c=[],d=a.index,e=a.attributes.position;if(null!==d){var f=d.array;d=d.version;e=0;for(var h=f.length;e<
h;e+=3){var k=f[e+0],t=f[e+1],v=f[e+2];c.push(k,t,t,v,v,k)}}else for(f=e.array,d=e.version,e=0,h=f.length/3-1;e<h;e+=3)k=e+0,t=e+1,v=e+2,c.push(k,t,t,v,v,k);c=new (65535<jh(c)?Tb:Sb)(c,1);c.version=d;b.update(c,34963);(f=g.get(a))&&b.remove(f);g.set(a,c)}var f=new WeakMap,g=new WeakMap;return{get:function(a,b){var e=f.get(b);if(e)return e;b.addEventListener("dispose",d);b.isBufferGeometry?e=b:b.isGeometry&&(void 0===b._bufferGeometry&&(b._bufferGeometry=(new E).setFromObject(a)),e=b._bufferGeometry);
f.set(b,e);c.memory.geometries++;return e},update:function(a){var c=a.index,d=a.attributes;null!==c&&b.update(c,34963);for(var e in d)b.update(d[e],34962);a=a.morphAttributes;for(e in a){c=a[e];d=0;for(var f=c.length;d<f;d++)b.update(c[d],34962)}},getWireframeAttribute:function(a){var b=g.get(a);if(b){var c=a.index;null!==c&&b.version<c.version&&e(a)}else e(a);return g.get(a)}}}function dj(a,b,c,d){var e=d.isWebGL2,f,g,h;this.setMode=function(a){f=a};this.setIndex=function(a){g=a.type;h=a.bytesPerElement};
this.render=function(b,d){a.drawElements(f,d,g,b*h);c.update(d,f)};this.renderInstances=function(d,m,r,q){if(0!==q){if(e){d=a;var l="drawElementsInstanced"}else if(d=b.get("ANGLE_instanced_arrays"),l="drawElementsInstancedANGLE",null===d){console.error("THREE.WebGLIndexedBufferRenderer: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.");return}d[l](f,r,g,m*h,q);c.update(r,f,q)}}}function ej(a){var b={frame:0,calls:0,triangles:0,points:0,lines:0};
return{memory:{geometries:0,textures:0},render:b,programs:null,autoReset:!0,reset:function(){b.frame++;b.calls=0;b.triangles=0;b.points=0;b.lines=0},update:function(a,d,e){e=e||1;b.calls++;switch(d){case 4:b.triangles+=a/3*e;break;case 5:case 6:b.triangles+=e*(a-2);break;case 1:b.lines+=a/2*e;break;case 3:b.lines+=e*(a-1);break;case 2:b.lines+=e*a;break;case 0:b.points+=e*a;break;default:console.error("THREE.WebGLInfo: Unknown draw mode:",d)}}}}function fj(a,b){return Math.abs(b[1])-Math.abs(a[1])}
function gj(a){var b={},c=new Float32Array(8);return{update:function(d,e,f,g){var h=d.morphTargetInfluences,l=h.length;d=b[e.id];if(void 0===d){d=[];for(var m=0;m<l;m++)d[m]=[m,0];b[e.id]=d}var r=f.morphTargets&&e.morphAttributes.position;f=f.morphNormals&&e.morphAttributes.normal;for(m=0;m<l;m++){var q=d[m];0!==q[1]&&(r&&e.deleteAttribute("morphTarget"+m),f&&e.deleteAttribute("morphNormal"+m))}for(m=0;m<l;m++)q=d[m],q[0]=m,q[1]=h[m];d.sort(fj);for(m=0;8>m;m++){if(q=d[m])if(h=q[0],l=q[1]){r&&e.setAttribute("morphTarget"+
m,r[h]);f&&e.setAttribute("morphNormal"+m,f[h]);c[m]=l;continue}c[m]=0}g.getUniforms().setValue(a,"morphTargetInfluences",c)}}}function hj(a,b,c,d){var e={};return{update:function(a){var f=d.render.frame,h=a.geometry,l=b.get(a,h);e[l.id]!==f&&(h.isGeometry&&l.updateFromObject(a),b.update(l),e[l.id]=f);a.isInstancedMesh&&c.update(a.instanceMatrix,34962);return l},dispose:function(){e={}}}}function nb(a,b,c,d,e,f,g,h,l,m){a=void 0!==a?a:[];Y.call(this,a,void 0!==b?b:301,c,d,e,f,void 0!==g?g:1022,h,
l,m);this.flipY=!1}function Dc(a,b,c,d){Y.call(this,null);this.image={data:a||null,width:b||1,height:c||1,depth:d||1};this.minFilter=this.magFilter=1003;this.wrapR=1001;this.flipY=this.generateMipmaps=!1;this.needsUpdate=!0}function Ec(a,b,c,d){Y.call(this,null);this.image={data:a||null,width:b||1,height:c||1,depth:d||1};this.minFilter=this.magFilter=1003;this.wrapR=1001;this.flipY=this.generateMipmaps=!1;this.needsUpdate=!0}function Fc(a,b,c){var d=a[0];if(0>=d||0<d)return a;var e=b*c,f=oh[e];void 0===
f&&(f=new Float32Array(e),oh[e]=f);if(0!==b)for(d.toArray(f,0),d=1,e=0;d!==b;++d)e+=c,a[d].toArray(f,e);return f}function La(a,b){if(a.length!==b.length)return!1;for(var c=0,d=a.length;c<d;c++)if(a[c]!==b[c])return!1;return!0}function Ha(a,b){for(var c=0,d=b.length;c<d;c++)a[c]=b[c]}function ph(a,b){var c=qh[b];void 0===c&&(c=new Int32Array(b),qh[b]=c);for(var d=0;d!==b;++d)c[d]=a.allocateTextureUnit();return c}function ij(a,b){var c=this.cache;c[0]!==b&&(a.uniform1f(this.addr,b),c[0]=b)}function jj(a,
b){var c=this.cache;if(void 0!==b.x){if(c[0]!==b.x||c[1]!==b.y)a.uniform2f(this.addr,b.x,b.y),c[0]=b.x,c[1]=b.y}else La(c,b)||(a.uniform2fv(this.addr,b),Ha(c,b))}function kj(a,b){var c=this.cache;if(void 0!==b.x){if(c[0]!==b.x||c[1]!==b.y||c[2]!==b.z)a.uniform3f(this.addr,b.x,b.y,b.z),c[0]=b.x,c[1]=b.y,c[2]=b.z}else if(void 0!==b.r){if(c[0]!==b.r||c[1]!==b.g||c[2]!==b.b)a.uniform3f(this.addr,b.r,b.g,b.b),c[0]=b.r,c[1]=b.g,c[2]=b.b}else La(c,b)||(a.uniform3fv(this.addr,b),Ha(c,b))}function lj(a,b){var c=
this.cache;if(void 0!==b.x){if(c[0]!==b.x||c[1]!==b.y||c[2]!==b.z||c[3]!==b.w)a.uniform4f(this.addr,b.x,b.y,b.z,b.w),c[0]=b.x,c[1]=b.y,c[2]=b.z,c[3]=b.w}else La(c,b)||(a.uniform4fv(this.addr,b),Ha(c,b))}function mj(a,b){var c=this.cache,d=b.elements;void 0===d?La(c,b)||(a.uniformMatrix2fv(this.addr,!1,b),Ha(c,b)):La(c,d)||(rh.set(d),a.uniformMatrix2fv(this.addr,!1,rh),Ha(c,d))}function nj(a,b){var c=this.cache,d=b.elements;void 0===d?La(c,b)||(a.uniformMatrix3fv(this.addr,!1,b),Ha(c,b)):La(c,d)||
(sh.set(d),a.uniformMatrix3fv(this.addr,!1,sh),Ha(c,d))}function oj(a,b){var c=this.cache,d=b.elements;void 0===d?La(c,b)||(a.uniformMatrix4fv(this.addr,!1,b),Ha(c,b)):La(c,d)||(th.set(d),a.uniformMatrix4fv(this.addr,!1,th),Ha(c,d))}function pj(a,b,c){var d=this.cache,e=c.allocateTextureUnit();d[0]!==e&&(a.uniform1i(this.addr,e),d[0]=e);c.safeSetTexture2D(b||uh,e)}function qj(a,b,c){var d=this.cache,e=c.allocateTextureUnit();d[0]!==e&&(a.uniform1i(this.addr,e),d[0]=e);c.setTexture2DArray(b||rj,e)}
function sj(a,b,c){var d=this.cache,e=c.allocateTextureUnit();d[0]!==e&&(a.uniform1i(this.addr,e),d[0]=e);c.setTexture3D(b||tj,e)}function uj(a,b,c){var d=this.cache,e=c.allocateTextureUnit();d[0]!==e&&(a.uniform1i(this.addr,e),d[0]=e);c.safeSetTextureCube(b||vh,e)}function vj(a,b){var c=this.cache;c[0]!==b&&(a.uniform1i(this.addr,b),c[0]=b)}function wj(a,b){var c=this.cache;La(c,b)||(a.uniform2iv(this.addr,b),Ha(c,b))}function xj(a,b){var c=this.cache;La(c,b)||(a.uniform3iv(this.addr,b),Ha(c,b))}
function yj(a,b){var c=this.cache;La(c,b)||(a.uniform4iv(this.addr,b),Ha(c,b))}function zj(a){switch(a){case 5126:return ij;case 35664:return jj;case 35665:return kj;case 35666:return lj;case 35674:return mj;case 35675:return nj;case 35676:return oj;case 35678:case 36198:return pj;case 35679:return sj;case 35680:return uj;case 36289:return qj;case 5124:case 35670:return vj;case 35667:case 35671:return wj;case 35668:case 35672:return xj;case 35669:case 35673:return yj}}function Aj(a,b){a.uniform1fv(this.addr,
b)}function Bj(a,b){a.uniform1iv(this.addr,b)}function Cj(a,b){a.uniform2iv(this.addr,b)}function Dj(a,b){a.uniform3iv(this.addr,b)}function Ej(a,b){a.uniform4iv(this.addr,b)}function Fj(a,b){b=Fc(b,this.size,2);a.uniform2fv(this.addr,b)}function Gj(a,b){b=Fc(b,this.size,3);a.uniform3fv(this.addr,b)}function Hj(a,b){b=Fc(b,this.size,4);a.uniform4fv(this.addr,b)}function Ij(a,b){b=Fc(b,this.size,4);a.uniformMatrix2fv(this.addr,!1,b)}function Jj(a,b){b=Fc(b,this.size,9);a.uniformMatrix3fv(this.addr,
!1,b)}function Kj(a,b){b=Fc(b,this.size,16);a.uniformMatrix4fv(this.addr,!1,b)}function Lj(a,b,c){var d=b.length,e=ph(c,d);a.uniform1iv(this.addr,e);for(a=0;a!==d;++a)c.safeSetTexture2D(b[a]||uh,e[a])}function Mj(a,b,c){var d=b.length,e=ph(c,d);a.uniform1iv(this.addr,e);for(a=0;a!==d;++a)c.safeSetTextureCube(b[a]||vh,e[a])}function Nj(a){switch(a){case 5126:return Aj;case 35664:return Fj;case 35665:return Gj;case 35666:return Hj;case 35674:return Ij;case 35675:return Jj;case 35676:return Kj;case 35678:return Lj;
case 35680:return Mj;case 5124:case 35670:return Bj;case 35667:case 35671:return Cj;case 35668:case 35672:return Dj;case 35669:case 35673:return Ej}}function Oj(a,b,c){this.id=a;this.addr=c;this.cache=[];this.setValue=zj(b.type)}function wh(a,b,c){this.id=a;this.addr=c;this.cache=[];this.size=b.size;this.setValue=Nj(b.type)}function xh(a){this.id=a;this.seq=[];this.map={}}function Cb(a,b){this.seq=[];this.map={};for(var c=a.getProgramParameter(b,35718),d=0;d<c;++d){var e=a.getActiveUniform(b,d),f=
a.getUniformLocation(b,e.name),g=this,h=e.name,l=h.length;for(bg.lastIndex=0;;){var m=bg.exec(h),r=bg.lastIndex,q=m[1],k=m[3];"]"===m[2]&&(q|=0);if(void 0===k||"["===k&&r+2===l){h=g;e=void 0===k?new Oj(q,e,f):new wh(q,e,f);h.seq.push(e);h.map[e.id]=e;break}else k=g.map[q],void 0===k&&(k=new xh(q),q=g,g=k,q.seq.push(g),q.map[g.id]=g),g=k}}}function yh(a,b,c){b=a.createShader(b);a.shaderSource(b,c);a.compileShader(b);return b}function zh(a){switch(a){case 3E3:return["Linear","( value )"];case 3001:return["sRGB",
"( value )"];case 3002:return["RGBE","( value )"];case 3004:return["RGBM","( value, 7.0 )"];case 3005:return["RGBM","( value, 16.0 )"];case 3006:return["RGBD","( value, 256.0 )"];case 3007:return["Gamma","( value, float( GAMMA_FACTOR ) )"];case 3003:return["LogLuv","( value )"];default:throw Error("unsupported encoding: "+a);}}function Ah(a,b,c){var d=a.getShaderParameter(b,35713),e=a.getShaderInfoLog(b).trim();if(d&&""===e)return"";a=a.getShaderSource(b).split("\n");for(b=0;b<a.length;b++)a[b]=b+
1+": "+a[b];a=a.join("\n");return"THREE.WebGLShader: gl.getShaderInfoLog() "+c+"\n"+e+a}function Ge(a,b){b=zh(b);return"vec4 "+a+"( vec4 value ) { return "+b[0]+"ToLinear"+b[1]+"; }"}function Pj(a,b){b=zh(b);return"vec4 "+a+"( vec4 value ) { return LinearTo"+b[0]+b[1]+"; }"}function Qj(a,b){switch(b){case 1:b="Linear";break;case 2:b="Reinhard";break;case 3:b="Uncharted2";break;case 4:b="OptimizedCineon";break;case 5:b="ACESFilmic";break;default:throw Error("unsupported toneMapping: "+b);}return"vec3 "+
a+"( vec3 color ) { return "+b+"ToneMapping( color ); }"}function Rj(a,b,c){a=a||{};return[a.derivatives||b.envMapCubeUV||b.bumpMap||b.tangentSpaceNormalMap||b.clearcoatNormalMap||b.flatShading?"#extension GL_OES_standard_derivatives : enable":"",(a.fragDepth||b.logarithmicDepthBuffer)&&c.get("EXT_frag_depth")?"#extension GL_EXT_frag_depth : enable":"",a.drawBuffers&&c.get("WEBGL_draw_buffers")?"#extension GL_EXT_draw_buffers : require":"",(a.shaderTextureLOD||b.envMap)&&c.get("EXT_shader_texture_lod")?
"#extension GL_EXT_shader_texture_lod : enable":""].filter(Hd).join("\n")}function Sj(a){var b=[],c;for(c in a){var d=a[c];!1!==d&&b.push("#define "+c+" "+d)}return b.join("\n")}function Hd(a){return""!==a}function Bh(a,b){return a.replace(/NUM_DIR_LIGHTS/g,b.numDirLights).replace(/NUM_SPOT_LIGHTS/g,b.numSpotLights).replace(/NUM_RECT_AREA_LIGHTS/g,b.numRectAreaLights).replace(/NUM_POINT_LIGHTS/g,b.numPointLights).replace(/NUM_HEMI_LIGHTS/g,b.numHemiLights).replace(/NUM_DIR_LIGHT_SHADOWS/g,b.numDirLightShadows).replace(/NUM_SPOT_LIGHT_SHADOWS/g,
b.numSpotLightShadows).replace(/NUM_POINT_LIGHT_SHADOWS/g,b.numPointLightShadows)}function Ch(a,b){return a.replace(/NUM_CLIPPING_PLANES/g,b.numClippingPlanes).replace(/UNION_CLIPPING_PLANES/g,b.numClippingPlanes-b.numClipIntersection)}function cg(a,b){a=S[b];if(void 0===a)throw Error("Can not resolve #include <"+b+">");return a.replace(dg,cg)}function Dh(a,b,c,d){a="";for(b=parseInt(b);b<parseInt(c);b++)a+=d.replace(/\[ i \]/g,"[ "+b+" ]").replace(/UNROLLED_LOOP_INDEX/g,b);return a}function Eh(a){var b=
"precision "+a.precision+" float;\nprecision "+a.precision+" int;";"highp"===a.precision?b+="\n#define HIGH_PRECISION":"mediump"===a.precision?b+="\n#define MEDIUM_PRECISION":"lowp"===a.precision&&(b+="\n#define LOW_PRECISION");return b}function Tj(a){var b="SHADOWMAP_TYPE_BASIC";1===a.shadowMapType?b="SHADOWMAP_TYPE_PCF":2===a.shadowMapType?b="SHADOWMAP_TYPE_PCF_SOFT":3===a.shadowMapType&&(b="SHADOWMAP_TYPE_VSM");return b}function Uj(a){var b="ENVMAP_TYPE_CUBE";if(a.envMap)switch(a.envMapMode){case 301:case 302:b=
"ENVMAP_TYPE_CUBE";break;case 306:case 307:b="ENVMAP_TYPE_CUBE_UV";break;case 303:case 304:b="ENVMAP_TYPE_EQUIREC";break;case 305:b="ENVMAP_TYPE_SPHERE"}return b}function Vj(a){var b="ENVMAP_MODE_REFLECTION";if(a.envMap)switch(a.envMapMode){case 302:case 304:b="ENVMAP_MODE_REFRACTION"}return b}function Wj(a){var b="ENVMAP_BLENDING_MULTIPLY";if(a.envMap)switch(a.combine){case 0:b="ENVMAP_BLENDING_MULTIPLY";break;case 1:b="ENVMAP_BLENDING_MIX";break;case 2:b="ENVMAP_BLENDING_ADD"}return b}function Xj(a,
b,c,d,e,f){var g=a.getContext(),h=d.defines,l=e.vertexShader,m=e.fragmentShader,r=Tj(f),q=Uj(f),k=Vj(f),p=Wj(f),t=0<a.gammaFactor?a.gammaFactor:1,v=f.isWebGL2?"":Rj(d.extensions,f,b),n=Sj(h),w=g.createProgram(),x=f.numMultiviewViews;d.isRawShaderMaterial?(h=[n].filter(Hd).join("\n"),0<h.length&&(h+="\n"),b=[v,n].filter(Hd).join("\n"),0<b.length&&(b+="\n")):(h=[Eh(f),"#define SHADER_NAME "+e.name,n,f.instancing?"#define USE_INSTANCING":"",f.supportsVertexTextures?"#define VERTEX_TEXTURES":"","#define GAMMA_FACTOR "+
t,"#define MAX_BONES "+f.maxBones,f.useFog&&f.fog?"#define USE_FOG":"",f.useFog&&f.fogExp2?"#define FOG_EXP2":"",f.map?"#define USE_MAP":"",f.envMap?"#define USE_ENVMAP":"",f.envMap?"#define "+k:"",f.lightMap?"#define USE_LIGHTMAP":"",f.aoMap?"#define USE_AOMAP":"",f.emissiveMap?"#define USE_EMISSIVEMAP":"",f.bumpMap?"#define USE_BUMPMAP":"",f.normalMap?"#define USE_NORMALMAP":"",f.normalMap&&f.objectSpaceNormalMap?"#define OBJECTSPACE_NORMALMAP":"",f.normalMap&&f.tangentSpaceNormalMap?"#define TANGENTSPACE_NORMALMAP":
"",f.clearcoatNormalMap?"#define USE_CLEARCOAT_NORMALMAP":"",f.displacementMap&&f.supportsVertexTextures?"#define USE_DISPLACEMENTMAP":"",f.specularMap?"#define USE_SPECULARMAP":"",f.roughnessMap?"#define USE_ROUGHNESSMAP":"",f.metalnessMap?"#define USE_METALNESSMAP":"",f.alphaMap?"#define USE_ALPHAMAP":"",f.vertexTangents?"#define USE_TANGENT":"",f.vertexColors?"#define USE_COLOR":"",f.vertexUvs?"#define USE_UV":"",f.flatShading?"#define FLAT_SHADED":"",f.skinning?"#define USE_SKINNING":"",f.useVertexTexture?
"#define BONE_TEXTURE":"",f.morphTargets?"#define USE_MORPHTARGETS":"",f.morphNormals&&!1===f.flatShading?"#define USE_MORPHNORMALS":"",f.doubleSided?"#define DOUBLE_SIDED":"",f.flipSided?"#define FLIP_SIDED":"",f.shadowMapEnabled?"#define USE_SHADOWMAP":"",f.shadowMapEnabled?"#define "+r:"",f.sizeAttenuation?"#define USE_SIZEATTENUATION":"",f.logarithmicDepthBuffer?"#define USE_LOGDEPTHBUF":"",f.logarithmicDepthBuffer&&(f.isWebGL2||b.get("EXT_frag_depth"))?"#define USE_LOGDEPTHBUF_EXT":"","uniform mat4 modelMatrix;",
"uniform mat4 modelViewMatrix;","uniform mat4 projectionMatrix;","uniform mat4 viewMatrix;","uniform mat3 normalMatrix;","uniform vec3 cameraPosition;","#ifdef USE_INSTANCING"," attribute mat4 instanceMatrix;","#endif","attribute vec3 position;","attribute vec3 normal;","attribute vec2 uv;","#ifdef USE_TANGENT","\tattribute vec4 tangent;","#endif","#ifdef USE_COLOR","\tattribute vec3 color;","#endif","#ifdef USE_MORPHTARGETS","\tattribute vec3 morphTarget0;","\tattribute vec3 morphTarget1;","\tattribute vec3 morphTarget2;",
"\tattribute vec3 morphTarget3;","\t#ifdef USE_MORPHNORMALS","\t\tattribute vec3 morphNormal0;","\t\tattribute vec3 morphNormal1;","\t\tattribute vec3 morphNormal2;","\t\tattribute vec3 morphNormal3;","\t#else","\t\tattribute vec3 morphTarget4;","\t\tattribute vec3 morphTarget5;","\t\tattribute vec3 morphTarget6;","\t\tattribute vec3 morphTarget7;","\t#endif","#endif","#ifdef USE_SKINNING","\tattribute vec4 skinIndex;","\tattribute vec4 skinWeight;","#endif","\n"].filter(Hd).join("\n"),b=[v,Eh(f),
"#define SHADER_NAME "+e.name,n,f.alphaTest?"#define ALPHATEST "+f.alphaTest+(f.alphaTest%1?"":".0"):"","#define GAMMA_FACTOR "+t,f.useFog&&f.fog?"#define USE_FOG":"",f.useFog&&f.fogExp2?"#define FOG_EXP2":"",f.map?"#define USE_MAP":"",f.matcap?"#define USE_MATCAP":"",f.envMap?"#define USE_ENVMAP":"",f.envMap?"#define "+q:"",f.envMap?"#define "+k:"",f.envMap?"#define "+p:"",f.lightMap?"#define USE_LIGHTMAP":"",f.aoMap?"#define USE_AOMAP":"",f.emissiveMap?"#define USE_EMISSIVEMAP":"",f.bumpMap?"#define USE_BUMPMAP":
"",f.normalMap?"#define USE_NORMALMAP":"",f.normalMap&&f.objectSpaceNormalMap?"#define OBJECTSPACE_NORMALMAP":"",f.normalMap&&f.tangentSpaceNormalMap?"#define TANGENTSPACE_NORMALMAP":"",f.clearcoatNormalMap?"#define USE_CLEARCOAT_NORMALMAP":"",f.specularMap?"#define USE_SPECULARMAP":"",f.roughnessMap?"#define USE_ROUGHNESSMAP":"",f.metalnessMap?"#define USE_METALNESSMAP":"",f.alphaMap?"#define USE_ALPHAMAP":"",f.sheen?"#define USE_SHEEN":"",f.vertexTangents?"#define USE_TANGENT":"",f.vertexColors?
"#define USE_COLOR":"",f.vertexUvs?"#define USE_UV":"",f.gradientMap?"#define USE_GRADIENTMAP":"",f.flatShading?"#define FLAT_SHADED":"",f.doubleSided?"#define DOUBLE_SIDED":"",f.flipSided?"#define FLIP_SIDED":"",f.shadowMapEnabled?"#define USE_SHADOWMAP":"",f.shadowMapEnabled?"#define "+r:"",f.premultipliedAlpha?"#define PREMULTIPLIED_ALPHA":"",f.physicallyCorrectLights?"#define PHYSICALLY_CORRECT_LIGHTS":"",f.logarithmicDepthBuffer?"#define USE_LOGDEPTHBUF":"",f.logarithmicDepthBuffer&&(f.isWebGL2||
b.get("EXT_frag_depth"))?"#define USE_LOGDEPTHBUF_EXT":"",(d.extensions&&d.extensions.shaderTextureLOD||f.envMap)&&(f.isWebGL2||b.get("EXT_shader_texture_lod"))?"#define TEXTURE_LOD_EXT":"","uniform mat4 viewMatrix;","uniform vec3 cameraPosition;",0!==f.toneMapping?"#define TONE_MAPPING":"",0!==f.toneMapping?S.tonemapping_pars_fragment:"",0!==f.toneMapping?Qj("toneMapping",f.toneMapping):"",f.dithering?"#define DITHERING":"",f.outputEncoding||f.mapEncoding||f.matcapEncoding||f.envMapEncoding||f.emissiveMapEncoding?
S.encodings_pars_fragment:"",f.mapEncoding?Ge("mapTexelToLinear",f.mapEncoding):"",f.matcapEncoding?Ge("matcapTexelToLinear",f.matcapEncoding):"",f.envMapEncoding?Ge("envMapTexelToLinear",f.envMapEncoding):"",f.emissiveMapEncoding?Ge("emissiveMapTexelToLinear",f.emissiveMapEncoding):"",f.outputEncoding?Pj("linearToOutputTexel",f.outputEncoding):"",f.depthPacking?"#define DEPTH_PACKING "+d.depthPacking:"","\n"].filter(Hd).join("\n"));l=l.replace(dg,cg);l=Bh(l,f);l=Ch(l,f);m=m.replace(dg,cg);m=Bh(m,
f);m=Ch(m,f);l=l.replace(Fh,Dh);m=m.replace(Fh,Dh);f.isWebGL2&&!d.isRawShaderMaterial&&(r=!1,q=/^\s*#version\s+300\s+es\s*\n/,d.isShaderMaterial&&null!==l.match(q)&&null!==m.match(q)&&(r=!0,l=l.replace(q,""),m=m.replace(q,"")),h="#version 300 es\n\n#define attribute in\n#define varying out\n#define texture2D texture\n"+h,b=["#version 300 es\n\n#define varying in",r?"":"out highp vec4 pc_fragColor;",r?"":"#define gl_FragColor pc_fragColor","#define gl_FragDepthEXT gl_FragDepth\n#define texture2D texture\n#define textureCube texture\n#define texture2DProj textureProj\n#define texture2DLodEXT textureLod\n#define texture2DProjLodEXT textureProjLod\n#define textureCubeLodEXT textureLod\n#define texture2DGradEXT textureGrad\n#define texture2DProjGradEXT textureProjGrad\n#define textureCubeGradEXT textureGrad"].join("\n")+
"\n"+b,0<x&&(h=h.replace("#version 300 es\n",["#version 300 es\n\n#extension GL_OVR_multiview2 : require","layout(num_views = "+x+") in;","#define VIEW_ID gl_ViewID_OVR"].join("\n")),h=h.replace("uniform mat4 modelViewMatrix;\nuniform mat4 projectionMatrix;\nuniform mat4 viewMatrix;\nuniform mat3 normalMatrix;",["uniform mat4 modelViewMatrices["+x+"];","uniform mat4 projectionMatrices["+x+"];","uniform mat4 viewMatrices["+x+"];","uniform mat3 normalMatrices["+x+"];","#define modelViewMatrix modelViewMatrices[VIEW_ID]\n#define projectionMatrix projectionMatrices[VIEW_ID]\n#define viewMatrix viewMatrices[VIEW_ID]\n#define normalMatrix normalMatrices[VIEW_ID]"].join("\n")),
b=b.replace("#version 300 es\n","#version 300 es\n\n#extension GL_OVR_multiview2 : require\n#define VIEW_ID gl_ViewID_OVR"),b=b.replace("uniform mat4 viewMatrix;",["uniform mat4 viewMatrices["+x+"];","#define viewMatrix viewMatrices[VIEW_ID]"].join("\n"))));m=b+m;l=yh(g,35633,h+l);m=yh(g,35632,m);g.attachShader(w,l);g.attachShader(w,m);void 0!==d.index0AttributeName?g.bindAttribLocation(w,0,d.index0AttributeName):!0===f.morphTargets&&g.bindAttribLocation(w,0,"position");g.linkProgram(w);if(a.debug.checkShaderErrors){a=
g.getProgramInfoLog(w).trim();f=g.getShaderInfoLog(l).trim();r=g.getShaderInfoLog(m).trim();k=q=!0;if(!1===g.getProgramParameter(w,35714))q=!1,p=Ah(g,l,"vertex"),t=Ah(g,m,"fragment"),console.error("THREE.WebGLProgram: shader error: ",g.getError(),"35715",g.getProgramParameter(w,35715),"gl.getProgramInfoLog",a,p,t);else if(""!==a)console.warn("THREE.WebGLProgram: gl.getProgramInfoLog()",a);else if(""===f||""===r)k=!1;k&&(this.diagnostics={runnable:q,material:d,programLog:a,vertexShader:{log:f,prefix:h},
fragmentShader:{log:r,prefix:b}})}g.deleteShader(l);g.deleteShader(m);var F;this.getUniforms=function(){void 0===F&&(F=new Cb(g,w));return F};var H;this.getAttributes=function(){if(void 0===H){for(var a={},b=g.getProgramParameter(w,35721),c=0;c<b;c++){var d=g.getActiveAttrib(w,c).name;a[d]=g.getAttribLocation(w,d)}H=a}return H};this.destroy=function(){g.deleteProgram(w);this.program=void 0};this.name=e.name;this.id=Yj++;this.cacheKey=c;this.usedTimes=1;this.program=w;this.vertexShader=l;this.fragmentShader=
m;this.numMultiviewViews=x;return this}function Zj(a,b,c){function d(a,b){if(a)a.isTexture?c=a.encoding:a.isWebGLRenderTarget&&(console.warn("THREE.WebGLPrograms.getTextureEncodingFromMap: don't use render targets as textures. Use their .texture property instead."),c=a.texture.encoding);else var c=3E3;3E3===c&&b&&(c=3007);return c}var e=[],f=c.isWebGL2,g=c.logarithmicDepthBuffer,h=c.floatVertexTextures,l=c.precision,m=c.maxVertexUniforms,r=c.vertexTextures,q={MeshDepthMaterial:"depth",MeshDistanceMaterial:"distanceRGBA",
MeshNormalMaterial:"normal",MeshBasicMaterial:"basic",MeshLambertMaterial:"lambert",MeshPhongMaterial:"phong",MeshToonMaterial:"phong",MeshStandardMaterial:"physical",MeshPhysicalMaterial:"physical",MeshMatcapMaterial:"matcap",LineBasicMaterial:"basic",LineDashedMaterial:"dashed",PointsMaterial:"points",ShadowMaterial:"shadow",SpriteMaterial:"sprite"},k="precision isWebGL2 supportsVertexTextures outputEncoding instancing numMultiviewViews map mapEncoding matcap matcapEncoding envMap envMapMode envMapEncoding envMapCubeUV lightMap aoMap emissiveMap emissiveMapEncoding bumpMap normalMap objectSpaceNormalMap tangentSpaceNormalMap clearcoatNormalMap displacementMap specularMap roughnessMap metalnessMap gradientMap alphaMap combine vertexColors vertexTangents vertexUvs fog useFog fogExp2 flatShading sizeAttenuation logarithmicDepthBuffer skinning maxBones useVertexTexture morphTargets morphNormals maxMorphTargets maxMorphNormals premultipliedAlpha numDirLights numPointLights numSpotLights numHemiLights numRectAreaLights numDirLightShadows numPointLightShadows numSpotLightShadows shadowMapEnabled shadowMapType toneMapping physicallyCorrectLights alphaTest doubleSided flipSided numClippingPlanes numClipIntersection depthPacking dithering sheen".split(" ");
this.getParameters=function(b,e,k,u,n,x,F){var t=q[b.type];if(F.isSkinnedMesh){var p=F.skeleton.bones;if(h)p=1024;else{var v=Math.min(Math.floor((m-20)/4),p.length);v<p.length?(console.warn("THREE.WebGLRenderer: Skeleton has "+p.length+" bones. This GPU supports "+v+"."),p=0):p=v}}else p=0;null!==b.precision&&(l=c.getMaxPrecision(b.precision),l!==b.precision&&console.warn("THREE.WebGLProgram.getParameters:",b.precision,"not supported, using",l,"instead."));v=a.getRenderTarget();return{isWebGL2:f,
shaderID:t,precision:l,instancing:!0===F.isInstancedMesh,supportsVertexTextures:r,numMultiviewViews:v&&v.isWebGLMultiviewRenderTarget?v.numViews:0,outputEncoding:d(v?v.texture:null,a.gammaOutput),map:!!b.map,mapEncoding:d(b.map,a.gammaInput),matcap:!!b.matcap,matcapEncoding:d(b.matcap,a.gammaInput),envMap:!!b.envMap,envMapMode:b.envMap&&b.envMap.mapping,envMapEncoding:d(b.envMap,a.gammaInput),envMapCubeUV:!!b.envMap&&(306===b.envMap.mapping||307===b.envMap.mapping),lightMap:!!b.lightMap,aoMap:!!b.aoMap,
emissiveMap:!!b.emissiveMap,emissiveMapEncoding:d(b.emissiveMap,a.gammaInput),bumpMap:!!b.bumpMap,normalMap:!!b.normalMap,objectSpaceNormalMap:1===b.normalMapType,tangentSpaceNormalMap:0===b.normalMapType,clearcoatNormalMap:!!b.clearcoatNormalMap,displacementMap:!!b.displacementMap,roughnessMap:!!b.roughnessMap,metalnessMap:!!b.metalnessMap,specularMap:!!b.specularMap,alphaMap:!!b.alphaMap,gradientMap:!!b.gradientMap,sheen:!!b.sheen,combine:b.combine,vertexTangents:b.normalMap&&b.vertexTangents,vertexColors:b.vertexColors,
vertexUvs:!!b.map||!!b.bumpMap||!!b.normalMap||!!b.specularMap||!!b.alphaMap||!!b.emissiveMap||!!b.roughnessMap||!!b.metalnessMap||!!b.clearcoatNormalMap||!!b.displacementMap,fog:!!u,useFog:b.fog,fogExp2:u&&u.isFogExp2,flatShading:b.flatShading,sizeAttenuation:b.sizeAttenuation,logarithmicDepthBuffer:g,skinning:b.skinning&&0<p,maxBones:p,useVertexTexture:h,morphTargets:b.morphTargets,morphNormals:b.morphNormals,maxMorphTargets:a.maxMorphTargets,maxMorphNormals:a.maxMorphNormals,numDirLights:e.directional.length,
numPointLights:e.point.length,numSpotLights:e.spot.length,numRectAreaLights:e.rectArea.length,numHemiLights:e.hemi.length,numDirLightShadows:e.directionalShadowMap.length,numPointLightShadows:e.pointShadowMap.length,numSpotLightShadows:e.spotShadowMap.length,numClippingPlanes:n,numClipIntersection:x,dithering:b.dithering,shadowMapEnabled:a.shadowMap.enabled&&0<k.length,shadowMapType:a.shadowMap.type,toneMapping:b.toneMapped?a.toneMapping:0,physicallyCorrectLights:a.physicallyCorrectLights,premultipliedAlpha:b.premultipliedAlpha,
alphaTest:b.alphaTest,doubleSided:2===b.side,flipSided:1===b.side,depthPacking:void 0!==b.depthPacking?b.depthPacking:!1}};this.getProgramCacheKey=function(b,c){var d=[];c.shaderID?d.push(c.shaderID):(d.push(b.fragmentShader),d.push(b.vertexShader));if(void 0!==b.defines)for(var e in b.defines)d.push(e),d.push(b.defines[e]);for(e=0;e<k.length;e++)d.push(c[k[e]]);d.push(b.onBeforeCompile.toString());d.push(a.gammaOutput);d.push(a.gammaFactor);return d.join()};this.acquireProgram=function(c,d,f,g){for(var h,
l=0,m=e.length;l<m;l++){var r=e[l];if(r.cacheKey===g){h=r;++h.usedTimes;break}}void 0===h&&(h=new Xj(a,b,g,c,d,f),e.push(h));return h};this.releaseProgram=function(a){if(0===--a.usedTimes){var b=e.indexOf(a);e[b]=e[e.length-1];e.pop();a.destroy()}};this.programs=e}function ak(){var a=new WeakMap;return{get:function(b){var c=a.get(b);void 0===c&&(c={},a.set(b,c));return c},remove:function(b){a.delete(b)},update:function(b,c,d){a.get(b)[c]=d},dispose:function(){a=new WeakMap}}}function bk(a,b){return a.groupOrder!==
b.groupOrder?a.groupOrder-b.groupOrder:a.renderOrder!==b.renderOrder?a.renderOrder-b.renderOrder:a.program!==b.program?a.program.id-b.program.id:a.material.id!==b.material.id?a.material.id-b.material.id:a.z!==b.z?a.z-b.z:a.id-b.id}function ck(a,b){return a.groupOrder!==b.groupOrder?a.groupOrder-b.groupOrder:a.renderOrder!==b.renderOrder?a.renderOrder-b.renderOrder:a.z!==b.z?b.z-a.z:a.id-b.id}function Gh(){function a(a,d,e,m,r,q){var g=b[c];void 0===g?(g={id:a.id,object:a,geometry:d,material:e,program:e.program||
f,groupOrder:m,renderOrder:a.renderOrder,z:r,group:q},b[c]=g):(g.id=a.id,g.object=a,g.geometry=d,g.material=e,g.program=e.program||f,g.groupOrder=m,g.renderOrder=a.renderOrder,g.z=r,g.group=q);c++;return g}var b=[],c=0,d=[],e=[],f={id:-1};return{opaque:d,transparent:e,init:function(){c=0;d.length=0;e.length=0},push:function(b,c,f,m,r,q){b=a(b,c,f,m,r,q);(!0===f.transparent?e:d).push(b)},unshift:function(b,c,f,m,r,q){b=a(b,c,f,m,r,q);(!0===f.transparent?e:d).unshift(b)},sort:function(){1<d.length&&
d.sort(bk);1<e.length&&e.sort(ck)}}}function dk(){function a(c){c=c.target;c.removeEventListener("dispose",a);b.delete(c)}var b=new WeakMap;return{get:function(c,d){var e=b.get(c);if(void 0===e){var f=new Gh;b.set(c,new WeakMap);b.get(c).set(d,f);c.addEventListener("dispose",a)}else f=e.get(d),void 0===f&&(f=new Gh,e.set(d,f));return f},dispose:function(){b=new WeakMap}}}function ek(){var a={};return{get:function(b){if(void 0!==a[b.id])return a[b.id];switch(b.type){case "DirectionalLight":var c={direction:new n,
color:new J,shadow:!1,shadowBias:0,shadowRadius:1,shadowMapSize:new B};break;case "SpotLight":c={position:new n,direction:new n,color:new J,distance:0,coneCos:0,penumbraCos:0,decay:0,shadow:!1,shadowBias:0,shadowRadius:1,shadowMapSize:new B};break;case "PointLight":c={position:new n,color:new J,distance:0,decay:0,shadow:!1,shadowBias:0,shadowRadius:1,shadowMapSize:new B,shadowCameraNear:1,shadowCameraFar:1E3};break;case "HemisphereLight":c={direction:new n,skyColor:new J,groundColor:new J};break;
case "RectAreaLight":c={color:new J,position:new n,halfWidth:new n,halfHeight:new n}}return a[b.id]=c}}}function fk(a,b){return(b.castShadow?1:0)-(a.castShadow?1:0)}function gk(){for(var a=new ek,b={version:0,hash:{directionalLength:-1,pointLength:-1,spotLength:-1,rectAreaLength:-1,hemiLength:-1,numDirectionalShadows:-1,numPointShadows:-1,numSpotShadows:-1},ambient:[0,0,0],probe:[],directional:[],directionalShadowMap:[],directionalShadowMatrix:[],spot:[],spotShadowMap:[],spotShadowMatrix:[],rectArea:[],
point:[],pointShadowMap:[],pointShadowMatrix:[],hemi:[],numDirectionalShadows:-1,numPointShadows:-1,numSpotShadows:-1},c=0;9>c;c++)b.probe.push(new n);var d=new n,e=new Q,f=new Q;return{setup:function(c,h,l){for(var g=0,r=0,q=0,k=0;9>k;k++)b.probe[k].set(0,0,0);var p=h=0,t=0,v=0,n=0,w=0,x=0,F=0;l=l.matrixWorldInverse;c.sort(fk);k=0;for(var H=c.length;k<H;k++){var z=c[k],Ca=z.color,ia=z.intensity,B=z.distance,ma=z.shadow&&z.shadow.map?z.shadow.map.texture:null;if(z.isAmbientLight)g+=Ca.r*ia,r+=Ca.g*
ia,q+=Ca.b*ia;else if(z.isLightProbe)for(ma=0;9>ma;ma++)b.probe[ma].addScaledVector(z.sh.coefficients[ma],ia);else if(z.isDirectionalLight){var I=a.get(z);I.color.copy(z.color).multiplyScalar(z.intensity);I.direction.setFromMatrixPosition(z.matrixWorld);d.setFromMatrixPosition(z.target.matrixWorld);I.direction.sub(d);I.direction.transformDirection(l);if(I.shadow=z.castShadow)ia=z.shadow,I.shadowBias=ia.bias,I.shadowRadius=ia.radius,I.shadowMapSize=ia.mapSize,b.directionalShadowMap[h]=ma,b.directionalShadowMatrix[h]=
z.shadow.matrix,w++;b.directional[h]=I;h++}else if(z.isSpotLight){I=a.get(z);I.position.setFromMatrixPosition(z.matrixWorld);I.position.applyMatrix4(l);I.color.copy(Ca).multiplyScalar(ia);I.distance=B;I.direction.setFromMatrixPosition(z.matrixWorld);d.setFromMatrixPosition(z.target.matrixWorld);I.direction.sub(d);I.direction.transformDirection(l);I.coneCos=Math.cos(z.angle);I.penumbraCos=Math.cos(z.angle*(1-z.penumbra));I.decay=z.decay;if(I.shadow=z.castShadow)ia=z.shadow,I.shadowBias=ia.bias,I.shadowRadius=
ia.radius,I.shadowMapSize=ia.mapSize,b.spotShadowMap[t]=ma,b.spotShadowMatrix[t]=z.shadow.matrix,F++;b.spot[t]=I;t++}else if(z.isRectAreaLight)I=a.get(z),I.color.copy(Ca).multiplyScalar(ia),I.position.setFromMatrixPosition(z.matrixWorld),I.position.applyMatrix4(l),f.identity(),e.copy(z.matrixWorld),e.premultiply(l),f.extractRotation(e),I.halfWidth.set(.5*z.width,0,0),I.halfHeight.set(0,.5*z.height,0),I.halfWidth.applyMatrix4(f),I.halfHeight.applyMatrix4(f),b.rectArea[v]=I,v++;else if(z.isPointLight){I=
a.get(z);I.position.setFromMatrixPosition(z.matrixWorld);I.position.applyMatrix4(l);I.color.copy(z.color).multiplyScalar(z.intensity);I.distance=z.distance;I.decay=z.decay;if(I.shadow=z.castShadow)ia=z.shadow,I.shadowBias=ia.bias,I.shadowRadius=ia.radius,I.shadowMapSize=ia.mapSize,I.shadowCameraNear=ia.camera.near,I.shadowCameraFar=ia.camera.far,b.pointShadowMap[p]=ma,b.pointShadowMatrix[p]=z.shadow.matrix,x++;b.point[p]=I;p++}else z.isHemisphereLight&&(I=a.get(z),I.direction.setFromMatrixPosition(z.matrixWorld),
I.direction.transformDirection(l),I.direction.normalize(),I.skyColor.copy(z.color).multiplyScalar(ia),I.groundColor.copy(z.groundColor).multiplyScalar(ia),b.hemi[n]=I,n++)}b.ambient[0]=g;b.ambient[1]=r;b.ambient[2]=q;c=b.hash;if(c.directionalLength!==h||c.pointLength!==p||c.spotLength!==t||c.rectAreaLength!==v||c.hemiLength!==n||c.numDirectionalShadows!==w||c.numPointShadows!==x||c.numSpotShadows!==F)b.directional.length=h,b.spot.length=t,b.rectArea.length=v,b.point.length=p,b.hemi.length=n,b.directionalShadowMap.length=
w,b.pointShadowMap.length=x,b.spotShadowMap.length=F,b.directionalShadowMatrix.length=w,b.pointShadowMatrix.length=x,b.spotShadowMatrix.length=F,c.directionalLength=h,c.pointLength=p,c.spotLength=t,c.rectAreaLength=v,c.hemiLength=n,c.numDirectionalShadows=w,c.numPointShadows=x,c.numSpotShadows=F,b.version=hk++},state:b}}function Hh(){var a=new gk,b=[],c=[];return{init:function(){b.length=0;c.length=0},state:{lightsArray:b,shadowsArray:c,lights:a},setupLights:function(d){a.setup(b,c,d)},pushLight:function(a){b.push(a)},
pushShadow:function(a){c.push(a)}}}function ik(){function a(c){c=c.target;c.removeEventListener("dispose",a);b.delete(c)}var b=new WeakMap;return{get:function(c,d){if(!1===b.has(c)){var e=new Hh;b.set(c,new WeakMap);b.get(c).set(d,e);c.addEventListener("dispose",a)}else!1===b.get(c).has(d)?(e=new Hh,b.get(c).set(d,e)):e=b.get(c).get(d);return e},dispose:function(){b=new WeakMap}}}function Db(a){O.call(this);this.type="MeshDepthMaterial";this.depthPacking=3200;this.morphTargets=this.skinning=!1;this.displacementMap=
this.alphaMap=this.map=null;this.displacementScale=1;this.displacementBias=0;this.wireframe=!1;this.wireframeLinewidth=1;this.fog=!1;this.setValues(a)}function Eb(a){O.call(this);this.type="MeshDistanceMaterial";this.referencePosition=new n;this.nearDistance=1;this.farDistance=1E3;this.morphTargets=this.skinning=!1;this.displacementMap=this.alphaMap=this.map=null;this.displacementScale=1;this.displacementBias=0;this.fog=!1;this.setValues(a)}function Ih(a,b,c){function d(a,b,c){c=a<<0|b<<1|c<<2;var d=
q[c];void 0===d&&(d=new Db({depthPacking:3201,morphTargets:a,skinning:b}),q[c]=d);return d}function e(a,b,c){c=a<<0|b<<1|c<<2;var d=k[c];void 0===d&&(d=new Eb({morphTargets:a,skinning:b}),k[c]=d);return d}function f(b,c,f,g,h,l){var m=b.geometry,r=d,q=b.customDepthMaterial;!0===f.isPointLight&&(r=e,q=b.customDistanceMaterial);void 0===q?(q=!1,!0===c.morphTargets&&(!0===m.isBufferGeometry?q=m.morphAttributes&&m.morphAttributes.position&&0<m.morphAttributes.position.length:!0===m.isGeometry&&(q=m.morphTargets&&
0<m.morphTargets.length)),m=!1,!0===b.isSkinnedMesh&&(!0===c.skinning?m=!0:console.warn("THREE.WebGLShadowMap: THREE.SkinnedMesh with material.skinning set to false:",b)),b=r(q,m,!0===b.isInstancedMesh)):b=q;a.localClippingEnabled&&!0===c.clipShadows&&0!==c.clippingPlanes.length&&(q=b.uuid,r=c.uuid,m=p[q],void 0===m&&(m={},p[q]=m),q=m[r],void 0===q&&(q=b.clone(),m[r]=q),b=q);b.visible=c.visible;b.wireframe=c.wireframe;b.side=3===l?null!==c.shadowSide?c.shadowSide:c.side:null!==c.shadowSide?c.shadowSide:
t[c.side];b.clipShadows=c.clipShadows;b.clippingPlanes=c.clippingPlanes;b.clipIntersection=c.clipIntersection;b.wireframeLinewidth=c.wireframeLinewidth;b.linewidth=c.linewidth;!0===f.isPointLight&&!0===b.isMeshDistanceMaterial&&(b.referencePosition.setFromMatrixPosition(f.matrixWorld),b.nearDistance=g,b.farDistance=h);return b}function g(c,d,e,l,m){if(!1!==c.visible){if(c.layers.test(d.layers)&&(c.isMesh||c.isLine||c.isPoints)&&(c.castShadow||c.receiveShadow&&3===m)&&(!c.frustumCulled||h.intersectsObject(c))){c.modelViewMatrix.multiplyMatrices(e.matrixWorldInverse,
c.matrixWorld);var r=b.update(c),q=c.material;if(Array.isArray(q))for(var k=r.groups,u=0,t=k.length;u<t;u++){var p=k[u],v=q[p.materialIndex];v&&v.visible&&(v=f(c,v,l,e.near,e.far,m),a.renderBufferDirect(e,null,r,v,c,p))}else q.visible&&(v=f(c,q,l,e.near,e.far,m),a.renderBufferDirect(e,null,r,v,c,null))}c=c.children;r=0;for(q=c.length;r<q;r++)g(c[r],d,e,l,m)}}var h=new Ed,l=new B,m=new B,r=new da,q=[],k=[],p={},t={0:1,1:0,2:2},v=new va({defines:{SAMPLE_RATE:.25,HALF_SAMPLE_RATE:.125},uniforms:{shadow_pass:{value:null},
resolution:{value:new B},radius:{value:4}},vertexShader:"void main() {\n\tgl_Position = vec4( position, 1.0 );\n}",fragmentShader:"uniform sampler2D shadow_pass;\nuniform vec2 resolution;\nuniform float radius;\n#include <packing>\nvoid main() {\n  float mean = 0.0;\n  float squared_mean = 0.0;\n  \n\tfloat depth = unpackRGBAToDepth( texture2D( shadow_pass, ( gl_FragCoord.xy  ) / resolution ) );\n  for ( float i = -1.0; i < 1.0 ; i += SAMPLE_RATE) {\n    #ifdef HORIZONAL_PASS\n      vec2 distribution = decodeHalfRGBA ( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( i, 0.0 ) * radius ) / resolution ) );\n      mean += distribution.x;\n      squared_mean += distribution.y * distribution.y + distribution.x * distribution.x;\n    #else\n      float depth = unpackRGBAToDepth( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( 0.0,  i )  * radius ) / resolution ) );\n      mean += depth;\n      squared_mean += depth * depth;\n    #endif\n  }\n  mean = mean * HALF_SAMPLE_RATE;\n  squared_mean = squared_mean * HALF_SAMPLE_RATE;\n  float std_dev = pow( squared_mean - mean * mean, 0.5 );\n  gl_FragColor = encodeHalfRGBA( vec2( mean, std_dev ) );\n}"}),
n=v.clone();n.defines.HORIZONAL_PASS=1;var w=new E;w.setAttribute("position",new N(new Float32Array([-1,-1,.5,3,-1,.5,-1,3,.5]),3));var x=new ea(w,v),F=this;this.enabled=!1;this.autoUpdate=!0;this.needsUpdate=!1;this.type=1;this.render=function(d,e,f){if(!1!==F.enabled&&(!1!==F.autoUpdate||!1!==F.needsUpdate)&&0!==d.length){var q=a.getRenderTarget(),k=a.getActiveCubeFace(),u=a.getActiveMipmapLevel(),t=a.state;t.setBlending(0);t.buffers.color.setClear(1,1,1,1);t.buffers.depth.setTest(!0);t.setScissorTest(!1);
for(var p=0,y=d.length;p<y;p++){var w=d[p],z=w.shadow;if(void 0===z)console.warn("THREE.WebGLShadowMap:",w,"has no shadow.");else{l.copy(z.mapSize);var H=z.getFrameExtents();l.multiply(H);m.copy(z.mapSize);if(l.x>c||l.y>c)console.warn("THREE.WebGLShadowMap:",w,"has shadow exceeding max texture size, reducing"),l.x>c&&(m.x=Math.floor(c/H.x),l.x=m.x*H.x,z.mapSize.x=m.x),l.y>c&&(m.y=Math.floor(c/H.y),l.y=m.y*H.y,z.mapSize.y=m.y);null!==z.map||z.isPointLightShadow||3!==this.type||(H={minFilter:1006,magFilter:1006,
format:1023},z.map=new la(l.x,l.y,H),z.map.texture.name=w.name+".shadowMap",z.mapPass=new la(l.x,l.y,H),z.camera.updateProjectionMatrix());null===z.map&&(H={minFilter:1003,magFilter:1003,format:1023},z.map=new la(l.x,l.y,H),z.map.texture.name=w.name+".shadowMap",z.camera.updateProjectionMatrix());a.setRenderTarget(z.map);a.clear();H=z.getViewportCount();for(var Ca=0;Ca<H;Ca++){var B=z.getViewport(Ca);r.set(m.x*B.x,m.y*B.y,m.x*B.z,m.y*B.w);t.viewport(r);z.updateMatrices(w,Ca);h=z.getFrustum();g(e,
f,z.camera,w,this.type)}z.isPointLightShadow||3!==this.type||(w=z,z=f,H=b.update(x),v.uniforms.shadow_pass.value=w.map.texture,v.uniforms.resolution.value=w.mapSize,v.uniforms.radius.value=w.radius,a.setRenderTarget(w.mapPass),a.clear(),a.renderBufferDirect(z,null,H,v,x,null),n.uniforms.shadow_pass.value=w.mapPass.texture,n.uniforms.resolution.value=w.mapSize,n.uniforms.radius.value=w.radius,a.setRenderTarget(w.map),a.clear(),a.renderBufferDirect(z,null,H,n,x,null))}}F.needsUpdate=!1;a.setRenderTarget(q,
k,u)}}}function jk(a,b,c){function d(b,c,d){var e=new Uint8Array(4),f=a.createTexture();a.bindTexture(b,f);a.texParameteri(b,10241,9728);a.texParameteri(b,10240,9728);for(b=0;b<d;b++)a.texImage2D(c+b,0,6408,1,1,0,6408,5121,e);return f}function e(c,d){n[c]=1;0===w[c]&&(a.enableVertexAttribArray(c),w[c]=1);x[c]!==d&&((k?a:b.get("ANGLE_instanced_arrays"))[k?"vertexAttribDivisor":"vertexAttribDivisorANGLE"](c,d),x[c]=d)}function f(b){!0!==F[b]&&(a.enable(b),F[b]=!0)}function g(b){!1!==F[b]&&(a.disable(b),
F[b]=!1)}function h(b,c,d,e,h,l,m,r){if(0===b)z&&(g(3042),z=!1);else if(z||(f(3042),z=!0),5!==b){if(b!==Ca||r!==E){if(100!==B||100!==I)a.blendEquation(32774),I=B=100;if(r)switch(b){case 1:a.blendFuncSeparate(1,771,1,771);break;case 2:a.blendFunc(1,1);break;case 3:a.blendFuncSeparate(0,0,769,771);break;case 4:a.blendFuncSeparate(0,768,0,770);break;default:console.error("THREE.WebGLState: Invalid blending: ",b)}else switch(b){case 1:a.blendFuncSeparate(770,771,1,771);break;case 2:a.blendFunc(770,1);
break;case 3:a.blendFunc(0,769);break;case 4:a.blendFunc(0,768);break;default:console.error("THREE.WebGLState: Invalid blending: ",b)}D=Id=ma=A=null;Ca=b;E=r}}else{h=h||c;l=l||d;m=m||e;if(c!==B||h!==I)a.blendEquationSeparate(Gc[c],Gc[h]),B=c,I=h;if(d!==A||e!==ma||l!==Id||m!==D)a.blendFuncSeparate(M[d],M[e],M[l],M[m]),A=d,ma=e,Id=l,D=m;Ca=b;E=null}}function l(b){J!==b&&(b?a.frontFace(2304):a.frontFace(2305),J=b)}function m(b){0!==b?(f(2884),b!==L&&(1===b?a.cullFace(1029):2===b?a.cullFace(1028):a.cullFace(1032))):
g(2884);L=b}function r(b,c,d){if(b){if(f(32823),C!==c||N!==d)a.polygonOffset(c,d),C=c,N=d}else g(32823)}function q(b){void 0===b&&(b=33984+ha-1);P!==b&&(a.activeTexture(b),P=b)}var k=c.isWebGL2,p=new function(){var b=!1,c=new da,d=null,e=new da(0,0,0,0);return{setMask:function(c){d===c||b||(a.colorMask(c,c,c,c),d=c)},setLocked:function(a){b=a},setClear:function(b,d,f,g,h){!0===h&&(b*=g,d*=g,f*=g);c.set(b,d,f,g);!1===e.equals(c)&&(a.clearColor(b,d,f,g),e.copy(c))},reset:function(){b=!1;d=null;e.set(-1,
0,0,0)}}},t=new function(){var b=!1,c=null,d=null,e=null;return{setTest:function(a){a?f(2929):g(2929)},setMask:function(d){c===d||b||(a.depthMask(d),c=d)},setFunc:function(b){if(d!==b){if(b)switch(b){case 0:a.depthFunc(512);break;case 1:a.depthFunc(519);break;case 2:a.depthFunc(513);break;case 3:a.depthFunc(515);break;case 4:a.depthFunc(514);break;case 5:a.depthFunc(518);break;case 6:a.depthFunc(516);break;case 7:a.depthFunc(517);break;default:a.depthFunc(515)}else a.depthFunc(515);d=b}},setLocked:function(a){b=
a},setClear:function(b){e!==b&&(a.clearDepth(b),e=b)},reset:function(){b=!1;e=d=c=null}}},v=new function(){var b=!1,c=null,d=null,e=null,h=null,l=null,m=null,r=null,q=null;return{setTest:function(a){b||(a?f(2960):g(2960))},setMask:function(d){c===d||b||(a.stencilMask(d),c=d)},setFunc:function(b,c,f){if(d!==b||e!==c||h!==f)a.stencilFunc(b,c,f),d=b,e=c,h=f},setOp:function(b,c,d){if(l!==b||m!==c||r!==d)a.stencilOp(b,c,d),l=b,m=c,r=d},setLocked:function(a){b=a},setClear:function(b){q!==b&&(a.clearStencil(b),
q=b)},reset:function(){b=!1;q=r=m=l=h=e=d=c=null}}};c=a.getParameter(34921);var n=new Uint8Array(c),w=new Uint8Array(c),x=new Uint8Array(c),F={},H=null,z=null,Ca=null,B=null,A=null,ma=null,I=null,Id=null,D=null,E=!1,J=null,L=null,G=null,C=null,N=null,ha=a.getParameter(35661),O=!1;c=0;c=a.getParameter(7938);-1!==c.indexOf("WebGL")?(c=parseFloat(/^WebGL ([0-9])/.exec(c)[1]),O=1<=c):-1!==c.indexOf("OpenGL ES")&&(c=parseFloat(/^OpenGL ES ([0-9])/.exec(c)[1]),O=2<=c);var P=null,Ke={},$b=new da,Jh=new da,
ob={};ob[3553]=d(3553,3553,1);ob[34067]=d(34067,34069,6);p.setClear(0,0,0,1);t.setClear(1);v.setClear(0);f(2929);t.setFunc(3);l(!1);m(1);f(2884);h(0);var Gc={100:32774,101:32778,102:32779};k?(Gc[103]=32775,Gc[104]=32776):(c=b.get("EXT_blend_minmax"),null!==c&&(Gc[103]=c.MIN_EXT,Gc[104]=c.MIN_EXT));var M={200:0,201:1,202:768,204:770,210:776,208:774,206:772,203:769,205:771,209:775,207:773};return{buffers:{color:p,depth:t,stencil:v},initAttributes:function(){for(var a=0,b=n.length;a<b;a++)n[a]=0},enableAttribute:function(a){e(a,
0)},enableAttributeAndDivisor:e,disableUnusedAttributes:function(){for(var b=0,c=w.length;b!==c;++b)w[b]!==n[b]&&(a.disableVertexAttribArray(b),w[b]=0)},enable:f,disable:g,useProgram:function(b){return H!==b?(a.useProgram(b),H=b,!0):!1},setBlending:h,setMaterial:function(a,b){2===a.side?g(2884):f(2884);var c=1===a.side;b&&(c=!c);l(c);1===a.blending&&!1===a.transparent?h(0):h(a.blending,a.blendEquation,a.blendSrc,a.blendDst,a.blendEquationAlpha,a.blendSrcAlpha,a.blendDstAlpha,a.premultipliedAlpha);
t.setFunc(a.depthFunc);t.setTest(a.depthTest);t.setMask(a.depthWrite);p.setMask(a.colorWrite);b=a.stencilWrite;v.setTest(b);b&&(v.setMask(a.stencilWriteMask),v.setFunc(a.stencilFunc,a.stencilRef,a.stencilFuncMask),v.setOp(a.stencilFail,a.stencilZFail,a.stencilZPass));r(a.polygonOffset,a.polygonOffsetFactor,a.polygonOffsetUnits)},setFlipSided:l,setCullFace:m,setLineWidth:function(b){b!==G&&(O&&a.lineWidth(b),G=b)},setPolygonOffset:r,setScissorTest:function(a){a?f(3089):g(3089)},activeTexture:q,bindTexture:function(b,
c){null===P&&q();var d=Ke[P];void 0===d&&(d={type:void 0,texture:void 0},Ke[P]=d);if(d.type!==b||d.texture!==c)a.bindTexture(b,c||ob[b]),d.type=b,d.texture=c},unbindTexture:function(){var b=Ke[P];void 0!==b&&void 0!==b.type&&(a.bindTexture(b.type,null),b.type=void 0,b.texture=void 0)},compressedTexImage2D:function(){try{a.compressedTexImage2D.apply(a,arguments)}catch(W){console.error("THREE.WebGLState:",W)}},texImage2D:function(){try{a.texImage2D.apply(a,arguments)}catch(W){console.error("THREE.WebGLState:",
W)}},texImage3D:function(){try{a.texImage3D.apply(a,arguments)}catch(W){console.error("THREE.WebGLState:",W)}},scissor:function(b){!1===$b.equals(b)&&(a.scissor(b.x,b.y,b.z,b.w),$b.copy(b))},viewport:function(b){!1===Jh.equals(b)&&(a.viewport(b.x,b.y,b.z,b.w),Jh.copy(b))},reset:function(){for(var b=0;b<w.length;b++)1===w[b]&&(a.disableVertexAttribArray(b),w[b]=0);F={};P=null;Ke={};L=J=Ca=H=null;p.reset();t.reset();v.reset()}}}function kk(a,b,c,d,e,f,g){function h(a,b){return G?new OffscreenCanvas(a,
b):document.createElementNS("http://www.w3.org/1999/xhtml","canvas")}function l(a,b,c,d){var e=1;if(a.width>d||a.height>d)e=d/Math.max(a.width,a.height);if(1>e||!0===b){if("undefined"!==typeof HTMLImageElement&&a instanceof HTMLImageElement||"undefined"!==typeof HTMLCanvasElement&&a instanceof HTMLCanvasElement||"undefined"!==typeof ImageBitmap&&a instanceof ImageBitmap)return d=b?P.floorPowerOfTwo:Math.floor,b=d(e*a.width),e=d(e*a.height),void 0===L&&(L=h(b,e)),c=c?h(b,e):L,c.width=b,c.height=e,
c.getContext("2d").drawImage(a,0,0,b,e),console.warn("THREE.WebGLRenderer: Texture has been resized from ("+a.width+"x"+a.height+") to ("+b+"x"+e+")."),c;"data"in a&&console.warn("THREE.WebGLRenderer: Image in DataTexture is too big ("+a.width+"x"+a.height+").")}return a}function m(a){return P.isPowerOfTwo(a.width)&&P.isPowerOfTwo(a.height)}function r(a,b){return a.generateMipmaps&&b&&1003!==a.minFilter&&1006!==a.minFilter}function q(b,c,e,f){a.generateMipmap(b);d.get(c).__maxMipLevel=Math.log(Math.max(e,
f))*Math.LOG2E}function k(a,c){if(!1===ma)return a;var d=a;6403===a&&(5126===c&&(d=33326),5131===c&&(d=33325),5121===c&&(d=33321));6407===a&&(5126===c&&(d=34837),5131===c&&(d=34843),5121===c&&(d=32849));6408===a&&(5126===c&&(d=34836),5131===c&&(d=34842),5121===c&&(d=32856));33325===d||33326===d||34842===d||34836===d?b.get("EXT_color_buffer_float"):(34843===d||34837===d)&&console.warn("THREE.WebGLRenderer: Floating point textures with RGB format not supported. Please use RGBA instead.");return d}function p(a){return 1003===
a||1004===a||1005===a?9728:9729}function t(b){b=b.target;b.removeEventListener("dispose",t);var c=d.get(b);void 0!==c.__webglInit&&(a.deleteTexture(c.__webglTexture),d.remove(b));b.isVideoTexture&&J.delete(b);g.memory.textures--}function v(b){b=b.target;b.removeEventListener("dispose",v);var c=d.get(b),e=d.get(b.texture);if(b){void 0!==e.__webglTexture&&a.deleteTexture(e.__webglTexture);b.depthTexture&&b.depthTexture.dispose();if(b.isWebGLRenderTargetCube)for(e=0;6>e;e++)a.deleteFramebuffer(c.__webglFramebuffer[e]),
c.__webglDepthbuffer&&a.deleteRenderbuffer(c.__webglDepthbuffer[e]);else a.deleteFramebuffer(c.__webglFramebuffer),c.__webglDepthbuffer&&a.deleteRenderbuffer(c.__webglDepthbuffer);if(b.isWebGLMultiviewRenderTarget){a.deleteTexture(c.__webglColorTexture);a.deleteTexture(c.__webglDepthStencilTexture);g.memory.textures-=2;e=0;for(var f=c.__webglViewFramebuffers.length;e<f;e++)a.deleteFramebuffer(c.__webglViewFramebuffers[e])}d.remove(b.texture);d.remove(b)}g.memory.textures--}function n(a,b){var e=d.get(a);
if(a.isVideoTexture){var f=g.render.frame;J.get(a)!==f&&(J.set(a,f),a.update())}if(0<a.version&&e.__version!==a.version)if(f=a.image,void 0===f)console.warn("THREE.WebGLRenderer: Texture marked for update but image is undefined");else if(!1===f.complete)console.warn("THREE.WebGLRenderer: Texture marked for update but image is incomplete");else{z(e,a,b);return}c.activeTexture(33984+b);c.bindTexture(3553,e.__webglTexture)}function w(b,e){if(6===b.image.length){var g=d.get(b);if(0<b.version&&g.__version!==
b.version){H(g,b);c.activeTexture(33984+e);c.bindTexture(34067,g.__webglTexture);a.pixelStorei(37440,b.flipY);var h=b&&b.isCompressedTexture;e=b.image[0]&&b.image[0].isDataTexture;for(var t=[],u=0;6>u;u++)t[u]=h||e?e?b.image[u].image:b.image[u]:l(b.image[u],!1,!0,Id);var p=t[0],v=m(p)||ma,n=f.convert(b.format),y=f.convert(b.type),w=k(n,y);F(34067,b,v);if(h){for(u=0;6>u;u++){var z=t[u].mipmaps;for(h=0;h<z.length;h++){var x=z[h];1023!==b.format&&1022!==b.format?null!==n?c.compressedTexImage2D(34069+
u,h,w,x.width,x.height,0,x.data):console.warn("THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .setTextureCube()"):c.texImage2D(34069+u,h,w,x.width,x.height,0,n,y,x.data)}}g.__maxMipLevel=z.length-1}else{z=b.mipmaps;for(u=0;6>u;u++)if(e)for(c.texImage2D(34069+u,0,w,t[u].width,t[u].height,0,n,y,t[u].data),h=0;h<z.length;h++)x=z[h],x=x.image[u].image,c.texImage2D(34069+u,h+1,w,x.width,x.height,0,n,y,x.data);else for(c.texImage2D(34069+u,0,w,n,y,t[u]),h=0;h<z.length;h++)x=
z[h],c.texImage2D(34069+u,h+1,w,n,y,x.image[u]);g.__maxMipLevel=z.length}r(b,v)&&q(34067,b,p.width,p.height);g.__version=b.version;if(b.onUpdate)b.onUpdate(b)}else c.activeTexture(33984+e),c.bindTexture(34067,g.__webglTexture)}}function x(a,b){c.activeTexture(33984+b);c.bindTexture(34067,d.get(a).__webglTexture)}function F(c,f,g){g?(a.texParameteri(c,10242,N[f.wrapS]),a.texParameteri(c,10243,N[f.wrapT]),32879!==c&&35866!==c||a.texParameteri(c,32882,N[f.wrapR]),a.texParameteri(c,10240,O[f.magFilter]),
a.texParameteri(c,10241,O[f.minFilter])):(a.texParameteri(c,10242,33071),a.texParameteri(c,10243,33071),32879!==c&&35866!==c||a.texParameteri(c,32882,33071),1001===f.wrapS&&1001===f.wrapT||console.warn("THREE.WebGLRenderer: Texture is not power of two. Texture.wrapS and Texture.wrapT should be set to THREE.ClampToEdgeWrapping."),a.texParameteri(c,10240,p(f.magFilter)),a.texParameteri(c,10241,p(f.minFilter)),1003!==f.minFilter&&1006!==f.minFilter&&console.warn("THREE.WebGLRenderer: Texture is not power of two. Texture.minFilter should be set to THREE.NearestFilter or THREE.LinearFilter."));
!(g=b.get("EXT_texture_filter_anisotropic"))||1015===f.type&&null===b.get("OES_texture_float_linear")||1016===f.type&&null===(ma||b.get("OES_texture_half_float_linear"))||!(1<f.anisotropy||d.get(f).__currentAnisotropy)||(a.texParameterf(c,g.TEXTURE_MAX_ANISOTROPY_EXT,Math.min(f.anisotropy,e.getMaxAnisotropy())),d.get(f).__currentAnisotropy=f.anisotropy)}function H(b,c){void 0===b.__webglInit&&(b.__webglInit=!0,c.addEventListener("dispose",t),b.__webglTexture=a.createTexture(),g.memory.textures++)}
function z(b,d,e){var g=3553;d.isDataTexture2DArray&&(g=35866);d.isDataTexture3D&&(g=32879);H(b,d);c.activeTexture(33984+e);c.bindTexture(g,b.__webglTexture);a.pixelStorei(37440,d.flipY);a.pixelStorei(37441,d.premultiplyAlpha);a.pixelStorei(3317,d.unpackAlignment);e=ma?!1:1001!==d.wrapS||1001!==d.wrapT||1003!==d.minFilter&&1006!==d.minFilter;e=e&&!1===m(d.image);e=l(d.image,e,!1,D);var h=m(e)||ma,u=f.convert(d.format),t=f.convert(d.type),p=k(u,t);F(g,d,h);var v=d.mipmaps;if(d.isDepthTexture){p=6402;
if(1015===d.type){if(!1===ma)throw Error("Float Depth Texture only supported in WebGL2.0");p=36012}else ma&&(p=33189);1026===d.format&&6402===p&&1012!==d.type&&1014!==d.type&&(console.warn("THREE.WebGLRenderer: Use UnsignedShortType or UnsignedIntType for DepthFormat DepthTexture."),d.type=1012,t=f.convert(d.type));1027===d.format&&(p=34041,1020!==d.type&&(console.warn("THREE.WebGLRenderer: Use UnsignedInt248Type for DepthStencilFormat DepthTexture."),d.type=1020,t=f.convert(d.type)));c.texImage2D(3553,
0,p,e.width,e.height,0,u,t,null)}else if(d.isDataTexture)if(0<v.length&&h){for(var n=0,y=v.length;n<y;n++)g=v[n],c.texImage2D(3553,n,p,g.width,g.height,0,u,t,g.data);d.generateMipmaps=!1;b.__maxMipLevel=v.length-1}else c.texImage2D(3553,0,p,e.width,e.height,0,u,t,e.data),b.__maxMipLevel=0;else if(d.isCompressedTexture){n=0;for(y=v.length;n<y;n++)g=v[n],1023!==d.format&&1022!==d.format?null!==u?c.compressedTexImage2D(3553,n,p,g.width,g.height,0,g.data):console.warn("THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()"):
c.texImage2D(3553,n,p,g.width,g.height,0,u,t,g.data);b.__maxMipLevel=v.length-1}else if(d.isDataTexture2DArray)c.texImage3D(35866,0,p,e.width,e.height,e.depth,0,u,t,e.data),b.__maxMipLevel=0;else if(d.isDataTexture3D)c.texImage3D(32879,0,p,e.width,e.height,e.depth,0,u,t,e.data),b.__maxMipLevel=0;else if(0<v.length&&h){n=0;for(y=v.length;n<y;n++)g=v[n],c.texImage2D(3553,n,p,u,t,g);d.generateMipmaps=!1;b.__maxMipLevel=v.length-1}else c.texImage2D(3553,0,p,u,t,e),b.__maxMipLevel=0;r(d,h)&&q(3553,d,e.width,
e.height);b.__version=d.version;if(d.onUpdate)d.onUpdate(d)}function B(b,e,g,h){var l=f.convert(e.texture.format),m=f.convert(e.texture.type),r=k(l,m);c.texImage2D(h,0,r,e.width,e.height,0,l,m,null);a.bindFramebuffer(36160,b);a.framebufferTexture2D(36160,g,h,d.get(e.texture).__webglTexture,0);a.bindFramebuffer(36160,null)}function ia(b,c,d){a.bindRenderbuffer(36161,b);if(c.depthBuffer&&!c.stencilBuffer)d?(d=A(c),a.renderbufferStorageMultisample(36161,d,33189,c.width,c.height)):a.renderbufferStorage(36161,
33189,c.width,c.height),a.framebufferRenderbuffer(36160,36096,36161,b);else if(c.depthBuffer&&c.stencilBuffer)d?(d=A(c),a.renderbufferStorageMultisample(36161,d,35056,c.width,c.height)):a.renderbufferStorage(36161,34041,c.width,c.height),a.framebufferRenderbuffer(36160,33306,36161,b);else{b=f.convert(c.texture.format);var e=f.convert(c.texture.type);b=k(b,e);d?(d=A(c),a.renderbufferStorageMultisample(36161,d,b,c.width,c.height)):a.renderbufferStorage(36161,b,c.width,c.height)}a.bindRenderbuffer(36161,
null)}function A(a){return ma&&a.isWebGLMultisampleRenderTarget?Math.min(E,a.samples):0}var ma=e.isWebGL2,I=e.maxTextures,Id=e.maxCubemapSize,D=e.maxTextureSize,E=e.maxSamples,J=new WeakMap,L,G="undefined"!==typeof OffscreenCanvas&&null!==(new OffscreenCanvas(1,1)).getContext("2d"),C=0,N={1E3:10497,1001:33071,1002:33648},O={1003:9728,1004:9984,1005:9986,1006:9729,1007:9985,1008:9987},Q=!1,S=!1;this.allocateTextureUnit=function(){var a=C;a>=I&&console.warn("THREE.WebGLTextures: Trying to use "+a+" texture units while this GPU supports only "+
I);C+=1;return a};this.resetTextureUnits=function(){C=0};this.setTexture2D=n;this.setTexture2DArray=function(a,b){var e=d.get(a);0<a.version&&e.__version!==a.version?z(e,a,b):(c.activeTexture(33984+b),c.bindTexture(35866,e.__webglTexture))};this.setTexture3D=function(a,b){var e=d.get(a);0<a.version&&e.__version!==a.version?z(e,a,b):(c.activeTexture(33984+b),c.bindTexture(32879,e.__webglTexture))};this.setTextureCube=w;this.setTextureCubeDynamic=x;this.setupRenderTarget=function(e){var h=d.get(e),
l=d.get(e.texture);e.addEventListener("dispose",v);l.__webglTexture=a.createTexture();g.memory.textures++;var u=!0===e.isWebGLRenderTargetCube,t=!0===e.isWebGLMultisampleRenderTarget,p=!0===e.isWebGLMultiviewRenderTarget,y=m(e)||ma;if(u){h.__webglFramebuffer=[];for(var w=0;6>w;w++)h.__webglFramebuffer[w]=a.createFramebuffer()}else if(h.__webglFramebuffer=a.createFramebuffer(),t)if(ma){h.__webglMultisampledFramebuffer=a.createFramebuffer();h.__webglColorRenderbuffer=a.createRenderbuffer();a.bindRenderbuffer(36161,
h.__webglColorRenderbuffer);t=f.convert(e.texture.format);var z=f.convert(e.texture.type);t=k(t,z);z=A(e);a.renderbufferStorageMultisample(36161,z,t,e.width,e.height);a.bindFramebuffer(36160,h.__webglMultisampledFramebuffer);a.framebufferRenderbuffer(36160,36064,36161,h.__webglColorRenderbuffer);a.bindRenderbuffer(36161,null);e.depthBuffer&&(h.__webglDepthRenderbuffer=a.createRenderbuffer(),ia(h.__webglDepthRenderbuffer,e,!0));a.bindFramebuffer(36160,null)}else console.warn("THREE.WebGLRenderer: WebGLMultisampleRenderTarget can only be used with WebGL2.");
else if(p){w=e.width;var x=e.height;t=e.numViews;a.bindFramebuffer(36160,h.__webglFramebuffer);var H=b.get("OVR_multiview2");g.memory.textures+=2;z=a.createTexture();a.bindTexture(35866,z);a.texParameteri(35866,10240,9728);a.texParameteri(35866,10241,9728);a.texImage3D(35866,0,32856,w,x,t,0,6408,5121,null);H.framebufferTextureMultiviewOVR(36160,36064,z,0,0,t);var I=a.createTexture();a.bindTexture(35866,I);a.texParameteri(35866,10240,9728);a.texParameteri(35866,10241,9728);a.texImage3D(35866,0,35056,
w,x,t,0,34041,34042,null);H.framebufferTextureMultiviewOVR(36160,33306,I,0,0,t);x=Array(t);for(w=0;w<t;++w)x[w]=a.createFramebuffer(),a.bindFramebuffer(36160,x[w]),a.framebufferTextureLayer(36160,36064,z,0,w);h.__webglColorTexture=z;h.__webglDepthStencilTexture=I;h.__webglViewFramebuffers=x;a.bindFramebuffer(36160,null);a.bindTexture(35866,null)}if(u){c.bindTexture(34067,l.__webglTexture);F(34067,e.texture,y);for(w=0;6>w;w++)B(h.__webglFramebuffer[w],e,36064,34069+w);r(e.texture,y)&&q(34067,e.texture,
e.width,e.height);c.bindTexture(34067,null)}else p||(c.bindTexture(3553,l.__webglTexture),F(3553,e.texture,y),B(h.__webglFramebuffer,e,36064,3553),r(e.texture,y)&&q(3553,e.texture,e.width,e.height),c.bindTexture(3553,null));if(e.depthBuffer){h=d.get(e);l=!0===e.isWebGLRenderTargetCube;if(e.depthTexture){if(l)throw Error("target.depthTexture not supported in Cube render targets");if(e&&e.isWebGLRenderTargetCube)throw Error("Depth Texture with cube render targets is not supported");a.bindFramebuffer(36160,
h.__webglFramebuffer);if(!e.depthTexture||!e.depthTexture.isDepthTexture)throw Error("renderTarget.depthTexture must be an instance of THREE.DepthTexture");d.get(e.depthTexture).__webglTexture&&e.depthTexture.image.width===e.width&&e.depthTexture.image.height===e.height||(e.depthTexture.image.width=e.width,e.depthTexture.image.height=e.height,e.depthTexture.needsUpdate=!0);n(e.depthTexture,0);h=d.get(e.depthTexture).__webglTexture;if(1026===e.depthTexture.format)a.framebufferTexture2D(36160,36096,
3553,h,0);else if(1027===e.depthTexture.format)a.framebufferTexture2D(36160,33306,3553,h,0);else throw Error("Unknown depthTexture format");}else if(l)for(h.__webglDepthbuffer=[],l=0;6>l;l++)a.bindFramebuffer(36160,h.__webglFramebuffer[l]),h.__webglDepthbuffer[l]=a.createRenderbuffer(),ia(h.__webglDepthbuffer[l],e);else a.bindFramebuffer(36160,h.__webglFramebuffer),h.__webglDepthbuffer=a.createRenderbuffer(),ia(h.__webglDepthbuffer,e);a.bindFramebuffer(36160,null)}};this.updateRenderTargetMipmap=
function(a){var b=a.texture,e=m(a)||ma;if(r(b,e)){e=a.isWebGLRenderTargetCube?34067:3553;var f=d.get(b).__webglTexture;c.bindTexture(e,f);q(e,b,a.width,a.height);c.bindTexture(e,null)}};this.updateMultisampleRenderTarget=function(b){if(b.isWebGLMultisampleRenderTarget)if(ma){var c=d.get(b);a.bindFramebuffer(36008,c.__webglMultisampledFramebuffer);a.bindFramebuffer(36009,c.__webglFramebuffer);c=b.width;var e=b.height,f=16384;b.depthBuffer&&(f|=256);b.stencilBuffer&&(f|=1024);a.blitFramebuffer(0,0,
c,e,0,0,c,e,f,9728)}else console.warn("THREE.WebGLRenderer: WebGLMultisampleRenderTarget can only be used with WebGL2.")};this.safeSetTexture2D=function(a,b){a&&a.isWebGLRenderTarget&&(!1===Q&&(console.warn("THREE.WebGLTextures.safeSetTexture2D: don't use render targets as textures. Use their .texture property instead."),Q=!0),a=a.texture);n(a,b)};this.safeSetTextureCube=function(a,b){a&&a.isWebGLRenderTargetCube&&(!1===S&&(console.warn("THREE.WebGLTextures.safeSetTextureCube: don't use cube render targets as textures. Use their .texture property instead."),
S=!0),a=a.texture);a&&a.isCubeTexture||Array.isArray(a.image)&&6===a.image.length?w(a,b):x(a,b)}}function Kh(a,b,c){var d=c.isWebGL2;return{convert:function(a){if(1009===a)return 5121;if(1017===a)return 32819;if(1018===a)return 32820;if(1019===a)return 33635;if(1010===a)return 5120;if(1011===a)return 5122;if(1012===a)return 5123;if(1013===a)return 5124;if(1014===a)return 5125;if(1015===a)return 5126;if(1016===a){if(d)return 5131;var c=b.get("OES_texture_half_float");return null!==c?c.HALF_FLOAT_OES:
null}if(1021===a)return 6406;if(1022===a)return 6407;if(1023===a)return 6408;if(1024===a)return 6409;if(1025===a)return 6410;if(1026===a)return 6402;if(1027===a)return 34041;if(1028===a)return 6403;if(33776===a||33777===a||33778===a||33779===a)if(c=b.get("WEBGL_compressed_texture_s3tc"),null!==c){if(33776===a)return c.COMPRESSED_RGB_S3TC_DXT1_EXT;if(33777===a)return c.COMPRESSED_RGBA_S3TC_DXT1_EXT;if(33778===a)return c.COMPRESSED_RGBA_S3TC_DXT3_EXT;if(33779===a)return c.COMPRESSED_RGBA_S3TC_DXT5_EXT}else return null;
if(35840===a||35841===a||35842===a||35843===a)if(c=b.get("WEBGL_compressed_texture_pvrtc"),null!==c){if(35840===a)return c.COMPRESSED_RGB_PVRTC_4BPPV1_IMG;if(35841===a)return c.COMPRESSED_RGB_PVRTC_2BPPV1_IMG;if(35842===a)return c.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;if(35843===a)return c.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG}else return null;if(36196===a)return c=b.get("WEBGL_compressed_texture_etc1"),null!==c?c.COMPRESSED_RGB_ETC1_WEBGL:null;if(37808===a||37809===a||37810===a||37811===a||37812===a||37813===
a||37814===a||37815===a||37816===a||37817===a||37818===a||37819===a||37820===a||37821===a)return c=b.get("WEBGL_compressed_texture_astc"),null!==c?a:null;if(1020===a){if(d)return 34042;c=b.get("WEBGL_depth_texture");return null!==c?c.UNSIGNED_INT_24_8_WEBGL:null}}}}function fg(a,b,c,d){la.call(this,a,b,d);this.stencilBuffer=this.depthBuffer=!1;this.numViews=c}function lk(a,b){function c(a){if(a.isArrayCamera)return a.cameras;r[0]=a;return r}function d(a){if(void 0===a.isArrayCamera)return!0;a=a.cameras;
if(a.length>p)return!1;for(var b=1,c=a.length;b<c;b++)if(a[0].viewport.z!==a[b].viewport.z||a[0].viewport.w!==a[b].viewport.w)return!1;return!0}var e=a.extensions,f=a.properties,g,h,l,m,r,q,k,p=0;this.isAvailable=function(){if(void 0===k){var a=e.get("OVR_multiview2");if(k=null!==a&&!1===b.getContextAttributes().antialias)for(p=b.getParameter(a.MAX_VIEWS_OVR),g=new fg(0,0,2),q=new B,m=[],l=[],r=[],a=0;a<p;a++)m[a]=new Q,l[a]=new Z}return k};this.attachCamera=function(b){if(!1!==d(b)){(h=a.getRenderTarget())?
q.set(h.width,h.height):a.getDrawingBufferSize(q);if(b.isArrayCamera){var c=b.cameras[0].viewport;g.setSize(c.z,c.w);g.setNumViews(b.cameras.length)}else g.setSize(q.x,q.y),g.setNumViews(2);a.setRenderTarget(g)}};this.detachCamera=function(c){if(g===a.getRenderTarget()){a.setRenderTarget(h);var d=g,e=d.numViews,l=f.get(d).__webglViewFramebuffers,m=d.width;d=d.height;if(c.isArrayCamera)for(var r=0;r<e;r++){var k=c.cameras[r].viewport,u=k.x,p=k.y,t=u+k.z;k=p+k.w;b.bindFramebuffer(36008,l[r]);b.blitFramebuffer(0,
0,m,d,u,p,t,k,16384,9728)}else b.bindFramebuffer(36008,l[0]),b.blitFramebuffer(0,0,m,d,0,0,q.x,q.y,16384,9728)}};this.updateCameraProjectionMatricesUniform=function(a,d){a=c(a);for(var e=0;e<a.length;e++)m[e].copy(a[e].projectionMatrix);d.setValue(b,"projectionMatrices",m)};this.updateCameraViewMatricesUniform=function(a,d){a=c(a);for(var e=0;e<a.length;e++)m[e].copy(a[e].matrixWorldInverse);d.setValue(b,"viewMatrices",m)};this.updateObjectMatricesUniforms=function(a,d,e){d=c(d);for(var f=0;f<d.length;f++)m[f].multiplyMatrices(d[f].matrixWorldInverse,
a.matrixWorld),l[f].getNormalMatrix(m[f]);e.setValue(b,"modelViewMatrices",m);e.setValue(b,"normalMatrices",l)}}function Hc(){D.call(this);this.type="Group"}function Kd(a){U.call(this);this.cameras=a||[]}function Lh(a,b,c){Mh.setFromMatrixPosition(b.matrixWorld);Nh.setFromMatrixPosition(c.matrixWorld);var d=Mh.distanceTo(Nh),e=b.projectionMatrix.elements,f=c.projectionMatrix.elements,g=e[14]/(e[10]-1);c=e[14]/(e[10]+1);var h=(e[9]+1)/e[5],l=(e[9]-1)/e[5],m=(e[8]-1)/e[0],r=(f[8]+1)/f[0];e=g*m;f=g*
r;r=d/(-m+r);m=r*-m;b.matrixWorld.decompose(a.position,a.quaternion,a.scale);a.translateX(m);a.translateZ(r);a.matrixWorld.compose(a.position,a.quaternion,a.scale);a.matrixWorldInverse.getInverse(a.matrixWorld);b=g+r;g=c+r;a.projectionMatrix.makePerspective(e-m,f+(d-m),h*c/g*b,l*c/g*b,b,g)}function gg(a){function b(){return null!==h&&!0===h.isPresenting}function c(){if(b()){var c=h.getEyeParameters("left");e=2*c.renderWidth*p;f=c.renderHeight*p;Ca=a.getPixelRatio();a.getSize(z);a.setDrawingBufferSize(e,
f,1);x.viewport.set(0,0,e/2,f);F.viewport.set(e/2,0,e/2,f);A.start();g.dispatchEvent({type:"sessionstart"})}else g.enabled&&a.setDrawingBufferSize(z.width,z.height,Ca),A.stop(),g.dispatchEvent({type:"sessionend"})}function d(a,b){null!==b&&4===b.length&&a.set(b[0]*e,b[1]*f,b[2]*e,b[3]*f)}var e,f,g=this,h=null,l=null,m=null,r=[],q=new Q,k=new Q,p=1,t="local-floor";"undefined"!==typeof window&&"VRFrameData"in window&&(l=new window.VRFrameData,window.addEventListener("vrdisplaypresentchange",c,!1));
var v=new Q,y=new wa,w=new n,x=new U;x.viewport=new da;x.layers.enable(1);var F=new U;F.viewport=new da;F.layers.enable(2);var H=new Kd([x,F]);H.layers.enable(1);H.layers.enable(2);var z=new B,Ca,ia=[];this.enabled=!1;this.getController=function(a){var b=r[a];void 0===b&&(b=new Hc,b.matrixAutoUpdate=!1,b.visible=!1,r[a]=b);return b};this.getDevice=function(){return h};this.setDevice=function(a){void 0!==a&&(h=a);A.setContext(a)};this.setFramebufferScaleFactor=function(a){p=a};this.setReferenceSpaceType=
function(a){t=a};this.setPoseTarget=function(a){void 0!==a&&(m=a)};this.getCamera=function(a){var c="local-floor"===t?1.6:0;if(!1===b())return a.position.set(0,c,0),a.rotation.set(0,0,0),a;h.depthNear=a.near;h.depthFar=a.far;h.getFrameData(l);if("local-floor"===t){var e=h.stageParameters;e?q.fromArray(e.sittingToStandingTransform):q.makeTranslation(0,c,0)}c=l.pose;e=null!==m?m:a;e.matrix.copy(q);e.matrix.decompose(e.position,e.quaternion,e.scale);null!==c.orientation&&(y.fromArray(c.orientation),
e.quaternion.multiply(y));null!==c.position&&(y.setFromRotationMatrix(q),w.fromArray(c.position),w.applyQuaternion(y),e.position.add(w));e.updateMatrixWorld();x.near=a.near;F.near=a.near;x.far=a.far;F.far=a.far;x.matrixWorldInverse.fromArray(l.leftViewMatrix);F.matrixWorldInverse.fromArray(l.rightViewMatrix);k.getInverse(q);"local-floor"===t&&(x.matrixWorldInverse.multiply(k),F.matrixWorldInverse.multiply(k));a=e.parent;null!==a&&(v.getInverse(a.matrixWorld),x.matrixWorldInverse.multiply(v),F.matrixWorldInverse.multiply(v));
x.matrixWorld.getInverse(x.matrixWorldInverse);F.matrixWorld.getInverse(F.matrixWorldInverse);x.projectionMatrix.fromArray(l.leftProjectionMatrix);F.projectionMatrix.fromArray(l.rightProjectionMatrix);Lh(H,x,F);a=h.getLayers();a.length&&(a=a[0],d(x.viewport,a.leftBounds),d(F.viewport,a.rightBounds));a:for(a=0;a<r.length;a++){c=r[a];b:{e=a;for(var f=navigator.getGamepads&&navigator.getGamepads(),g=0,u=f.length;g<u;g++){var p=f[g];if(p&&("Daydream Controller"===p.id||"Gear VR Controller"===p.id||"Oculus Go Controller"===
p.id||"OpenVR Gamepad"===p.id||p.id.startsWith("Oculus Touch")||p.id.startsWith("HTC Vive Focus")||p.id.startsWith("Spatial Controller"))){var n=p.hand;if(0===e&&(""===n||"right"===n)||1===e&&"left"===n){e=p;break b}}}e=void 0}if(void 0!==e&&void 0!==e.pose){if(null===e.pose)break a;f=e.pose;!1===f.hasPosition&&c.position.set(.2,-.6,-.05);null!==f.position&&c.position.fromArray(f.position);null!==f.orientation&&c.quaternion.fromArray(f.orientation);c.matrix.compose(c.position,c.quaternion,c.scale);
c.matrix.premultiply(q);c.matrix.decompose(c.position,c.quaternion,c.scale);c.matrixWorldNeedsUpdate=!0;c.visible=!0;f="Daydream Controller"===e.id?0:1;void 0===ia[a]&&(ia[a]=!1);ia[a]!==e.buttons[f].pressed&&(ia[a]=e.buttons[f].pressed,!0===ia[a]?c.dispatchEvent({type:"selectstart"}):(c.dispatchEvent({type:"selectend"}),c.dispatchEvent({type:"select"})))}else c.visible=!1}return H};this.getStandingMatrix=function(){return q};this.isPresenting=b;var A=new ag;this.setAnimationLoop=function(a){A.setAnimationLoop(a);
b()&&A.start()};this.submitFrame=function(){b()&&h.submitFrame()};this.dispose=function(){"undefined"!==typeof window&&window.removeEventListener("vrdisplaypresentchange",c)};this.setFrameOfReferenceType=function(){console.warn("THREE.WebVRManager: setFrameOfReferenceType() has been deprecated.")}}function Oh(a,b){function c(){return null!==m&&null!==r}function d(a){for(var b=0;b<p.length;b++)t[b]===a.inputSource&&p[b].dispatchEvent({type:a.type})}function e(){a.setFramebuffer(null);a.setRenderTarget(a.getRenderTarget());
F.stop();l.dispatchEvent({type:"sessionend"})}function f(a){r=a;F.setContext(m);F.start();l.dispatchEvent({type:"sessionstart"})}function g(){for(var a=0;a<p.length;a++){var b=a;a:{var c=m.inputSources;for(var d=0;d<c.length;d++){var e=c[d],f=e.handedness;if(0===a&&("none"===f||"right"===f)){c=e;break a}if(1===a&&"left"===f){c=e;break a}}c=void 0}t[b]=c}}function h(a,b){null===b?a.matrixWorld.copy(a.matrix):a.matrixWorld.multiplyMatrices(b.matrixWorld,a.matrix);a.matrixWorldInverse.getInverse(a.matrixWorld)}
var l=this,m=null,r=null,q="local-floor",k=null,p=[],t=[],n=new U;n.layers.enable(1);n.viewport=new da;var y=new U;y.layers.enable(2);y.viewport=new da;var w=new Kd([n,y]);w.layers.enable(1);w.layers.enable(2);this.enabled=!1;this.getController=function(a){var b=p[a];void 0===b&&(b=new Hc,b.matrixAutoUpdate=!1,b.visible=!1,p[a]=b);return b};this.setFramebufferScaleFactor=function(){};this.setReferenceSpaceType=function(a){q=a};this.getSession=function(){return m};this.setSession=function(a){m=a;null!==
m&&(m.addEventListener("select",d),m.addEventListener("selectstart",d),m.addEventListener("selectend",d),m.addEventListener("end",e),m.updateRenderState({baseLayer:new XRWebGLLayer(m,b)}),m.requestReferenceSpace(q).then(f),m.addEventListener("inputsourceschange",g),g())};this.getCamera=function(a){if(c()){var b=a.parent,d=w.cameras;h(w,b);for(var e=0;e<d.length;e++)h(d[e],b);a.matrixWorld.copy(w.matrixWorld);a=a.children;e=0;for(b=a.length;e<b;e++)a[e].updateMatrixWorld(!0);Lh(w,n,y);return w}return a};
this.isPresenting=c;var x=null,F=new ag;F.setAnimationLoop(function(b,c){k=c.getViewerPose(r);if(null!==k){var d=k.views,e=m.renderState.baseLayer;a.setFramebuffer(e.framebuffer);for(var f=0;f<d.length;f++){var g=d[f],h=e.getViewport(g),l=w.cameras[f];l.matrix.fromArray(g.transform.inverse.matrix).getInverse(l.matrix);l.projectionMatrix.fromArray(g.projectionMatrix);l.viewport.set(h.x,h.y,h.width,h.height);0===f&&w.matrix.copy(l.matrix)}}for(f=0;f<p.length;f++){d=p[f];if(e=t[f])if(e=c.getPose(e.targetRaySpace,
r),null!==e){d.matrix.fromArray(e.transform.matrix);d.matrix.decompose(d.position,d.rotation,d.scale);d.visible=!0;continue}d.visible=!1}x&&x(b)});this.setAnimationLoop=function(a){x=a};this.dispose=function(){};this.getStandingMatrix=function(){console.warn("THREE.WebXRManager: getStandingMatrix() is no longer needed.");return new Q};this.getDevice=function(){console.warn("THREE.WebXRManager: getDevice() has been deprecated.")};this.setDevice=function(){console.warn("THREE.WebXRManager: setDevice() has been deprecated.")};
this.setFrameOfReferenceType=function(){console.warn("THREE.WebXRManager: setFrameOfReferenceType() has been deprecated.")};this.submitFrame=function(){}}function hg(a){var b;function c(){qa=new bj(K);Fa=new $i(K,qa,a);!1===Fa.isWebGL2&&(qa.get("WEBGL_depth_texture"),qa.get("OES_texture_float"),qa.get("OES_texture_half_float"),qa.get("OES_texture_half_float_linear"),qa.get("OES_standard_derivatives"),qa.get("OES_element_index_uint"),qa.get("ANGLE_instanced_arrays"));qa.get("OES_texture_float_linear");
la=new Kh(K,qa,Fa);aa=new jk(K,qa,Fa);aa.scissor(ob.copy(U).multiplyScalar(fa).floor());aa.viewport(T.copy(ea).multiplyScalar(fa).floor());ca=new ej(K);Z=new ak;ba=new kk(K,qa,aa,Z,Fa,la,ca);ra=new Xi(K);xa=new cj(K,ra,ca);sa=new hj(K,xa,ra,ca);ya=new gj(K);pa=new Zj(C,qa,Fa);wa=new dk;va=new ik;na=new Yi(C,aa,sa,A);Aa=new Zi(K,qa,ca,Fa);Ba=new dj(K,qa,ca,Fa);ca.programs=pa.programs;C.capabilities=Fa;C.extensions=qa;C.properties=Z;C.renderLists=wa;C.state=aa;C.info=ca}function d(a){a.preventDefault();
console.log("THREE.WebGLRenderer: Context Lost.");N=!0}function e(){console.log("THREE.WebGLRenderer: Context Restored.");N=!1;c()}function f(a){a=a.target;a.removeEventListener("dispose",f);g(a);Z.remove(a)}function g(a){var b=Z.get(a).program;a.program=void 0;void 0!==b&&pa.releaseProgram(b)}function h(a,b){a.render(function(a){C.renderBufferImmediate(a,b)})}function l(a,b,c,d){if(!1!==a.visible){if(a.layers.test(b.layers))if(a.isGroup)c=a.renderOrder;else if(a.isLOD)!0===a.autoUpdate&&a.update(b);
else if(a.isLight)G.pushLight(a),a.castShadow&&G.pushShadow(a);else if(a.isSprite){if(!a.frustumCulled||eg.intersectsSprite(a)){d&&Fb.setFromMatrixPosition(a.matrixWorld).applyMatrix4(Jd);var e=sa.update(a),f=a.material;f.visible&&I.push(a,e,f,c,Fb.z,null)}}else if(a.isImmediateRenderObject)d&&Fb.setFromMatrixPosition(a.matrixWorld).applyMatrix4(Jd),I.push(a,null,a.material,c,Fb.z,null);else if(a.isMesh||a.isLine||a.isPoints)if(a.isSkinnedMesh&&a.skeleton.frame!==ca.render.frame&&(a.skeleton.update(),
a.skeleton.frame=ca.render.frame),!a.frustumCulled||eg.intersectsObject(a))if(d&&Fb.setFromMatrixPosition(a.matrixWorld).applyMatrix4(Jd),e=sa.update(a),f=a.material,Array.isArray(f))for(var g=e.groups,h=0,m=g.length;h<m;h++){var r=g[h],q=f[r.materialIndex];q&&q.visible&&I.push(a,e,q,c,Fb.z,r)}else f.visible&&I.push(a,e,f,c,Fb.z,null);a=a.children;h=0;for(m=a.length;h<m;h++)l(a[h],b,c,d)}}function m(a,b,c,d){for(var e=0,f=a.length;e<f;e++){var g=a[e],h=g.object,l=g.geometry,m=void 0===d?g.material:
d;g=g.group;if(c.isArrayCamera)if($b=c,ja.enabled&&ua.isAvailable())r(h,b,c,l,m,g);else for(var q=c.cameras,k=0,p=q.length;k<p;k++){var u=q[k];h.layers.test(u.layers)&&(aa.viewport(T.copy(u.viewport)),G.setupLights(u),r(h,b,u,l,m,g))}else $b=null,r(h,b,c,l,m,g)}}function r(a,c,d,e,f,g){a.onBeforeRender(C,c,d,e,f,g);G=va.get(c,$b||d);a.modelViewMatrix.multiplyMatrices(d.matrixWorldInverse,a.matrixWorld);a.normalMatrix.getNormalMatrix(a.modelViewMatrix);if(a.isImmediateRenderObject){aa.setMaterial(f);
var l=k(d,c.fog,f,a);Je=b=null;Y=!1;h(a,l)}else C.renderBufferDirect(d,c.fog,e,f,a,g);a.onAfterRender(C,c,d,e,f,g);G=va.get(c,$b||d)}function q(a,b,c){var d=Z.get(a),e=G.state.lights,h=e.state.version;c=pa.getParameters(a,e.state,G.state.shadowsArray,b,Pa.numPlanes,Pa.numIntersection,c);var l=pa.getProgramCacheKey(a,c),m=d.program,r=!0;if(void 0===m)a.addEventListener("dispose",f);else if(m.cacheKey!==l)g(a);else{if(d.lightsStateVersion!==h)d.lightsStateVersion=h;else if(void 0!==c.shaderID)return;
r=!1}r&&(c.shaderID?(l=cb[c.shaderID],d.shader={name:a.type,uniforms:Xb(l.uniforms),vertexShader:l.vertexShader,fragmentShader:l.fragmentShader}):d.shader={name:a.type,uniforms:a.uniforms,vertexShader:a.vertexShader,fragmentShader:a.fragmentShader},a.onBeforeCompile(d.shader,C),l=pa.getProgramCacheKey(a,c),m=pa.acquireProgram(a,d.shader,c,l),d.program=m,a.program=m);c=m.getAttributes();if(a.morphTargets)for(l=a.numSupportedMorphTargets=0;l<C.maxMorphTargets;l++)0<=c["morphTarget"+l]&&a.numSupportedMorphTargets++;
if(a.morphNormals)for(l=a.numSupportedMorphNormals=0;l<C.maxMorphNormals;l++)0<=c["morphNormal"+l]&&a.numSupportedMorphNormals++;c=d.shader.uniforms;if(!a.isShaderMaterial&&!a.isRawShaderMaterial||!0===a.clipping)d.numClippingPlanes=Pa.numPlanes,d.numIntersection=Pa.numIntersection,c.clippingPlanes=Pa.uniform;d.fog=b;d.needsLights=a.isMeshLambertMaterial||a.isMeshPhongMaterial||a.isMeshStandardMaterial||a.isShadowMaterial||a.isShaderMaterial&&!0===a.lights;d.lightsStateVersion=h;d.needsLights&&(c.ambientLightColor.value=
e.state.ambient,c.lightProbe.value=e.state.probe,c.directionalLights.value=e.state.directional,c.spotLights.value=e.state.spot,c.rectAreaLights.value=e.state.rectArea,c.pointLights.value=e.state.point,c.hemisphereLights.value=e.state.hemi,c.directionalShadowMap.value=e.state.directionalShadowMap,c.directionalShadowMatrix.value=e.state.directionalShadowMatrix,c.spotShadowMap.value=e.state.spotShadowMap,c.spotShadowMatrix.value=e.state.spotShadowMatrix,c.pointShadowMap.value=e.state.pointShadowMap,
c.pointShadowMatrix.value=e.state.pointShadowMatrix);a=d.program.getUniforms();a=Cb.seqWithValue(a.seq,c);d.uniformsList=a}function k(a,b,c,d){ba.resetTextureUnits();var e=Z.get(c),f=G.state.lights;He&&(ta||a!==X)&&Pa.setState(c.clippingPlanes,c.clipIntersection,c.clipShadows,a,e,a===X&&c.id===ha);!1===c.needsUpdate&&(void 0===e.program?c.needsUpdate=!0:c.fog&&e.fog!==b?c.needsUpdate=!0:e.needsLights&&e.lightsStateVersion!==f.state.version?c.needsUpdate=!0:void 0===e.numClippingPlanes||e.numClippingPlanes===
Pa.numPlanes&&e.numIntersection===Pa.numIntersection||(c.needsUpdate=!0));c.needsUpdate&&(q(c,b,d),c.needsUpdate=!1);var g=!1,h=!1,l=!1;f=e.program;var m=f.getUniforms(),r=e.shader.uniforms;aa.useProgram(f.program)&&(l=h=g=!0);c.id!==ha&&(ha=c.id,h=!0);if(g||X!==a){0<f.numMultiviewViews?ua.updateCameraProjectionMatricesUniform(a,m):m.setValue(K,"projectionMatrix",a.projectionMatrix);Fa.logarithmicDepthBuffer&&m.setValue(K,"logDepthBufFC",2/(Math.log(a.far+1)/Math.LN2));X!==a&&(X=a,l=h=!0);if(c.isShaderMaterial||
c.isMeshPhongMaterial||c.isMeshStandardMaterial||c.envMap)g=m.map.cameraPosition,void 0!==g&&g.setValue(K,Fb.setFromMatrixPosition(a.matrixWorld));if(c.isMeshPhongMaterial||c.isMeshLambertMaterial||c.isMeshBasicMaterial||c.isMeshStandardMaterial||c.isShaderMaterial||c.skinning)0<f.numMultiviewViews?ua.updateCameraViewMatricesUniform(a,m):m.setValue(K,"viewMatrix",a.matrixWorldInverse)}if(c.skinning&&(m.setOptional(K,d,"bindMatrix"),m.setOptional(K,d,"bindMatrixInverse"),g=d.skeleton)){var k=g.bones;
if(Fa.floatVertexTextures){if(void 0===g.boneTexture){k=Math.sqrt(4*k.length);k=P.ceilPowerOfTwo(k);k=Math.max(k,4);var u=new Float32Array(k*k*4);u.set(g.boneMatrices);var n=new Yb(u,k,k,1023,1015);g.boneMatrices=u;g.boneTexture=n;g.boneTextureSize=k}m.setValue(K,"boneTexture",g.boneTexture,ba);m.setValue(K,"boneTextureSize",g.boneTextureSize)}else m.setOptional(K,g,"boneMatrices")}if(h||e.receiveShadow!==d.receiveShadow)e.receiveShadow=d.receiveShadow,m.setValue(K,"receiveShadow",d.receiveShadow);
if(h){m.setValue(K,"toneMappingExposure",C.toneMappingExposure);m.setValue(K,"toneMappingWhitePoint",C.toneMappingWhitePoint);e.needsLights&&(h=l,r.ambientLightColor.needsUpdate=h,r.lightProbe.needsUpdate=h,r.directionalLights.needsUpdate=h,r.pointLights.needsUpdate=h,r.spotLights.needsUpdate=h,r.rectAreaLights.needsUpdate=h,r.hemisphereLights.needsUpdate=h);b&&c.fog&&(r.fogColor.value.copy(b.color),b.isFog?(r.fogNear.value=b.near,r.fogFar.value=b.far):b.isFogExp2&&(r.fogDensity.value=b.density));
if(c.isMeshBasicMaterial)p(r,c);else if(c.isMeshLambertMaterial)p(r,c),c.emissiveMap&&(r.emissiveMap.value=c.emissiveMap);else if(c.isMeshPhongMaterial)p(r,c),c.isMeshToonMaterial?(t(r,c),c.gradientMap&&(r.gradientMap.value=c.gradientMap)):t(r,c);else if(c.isMeshStandardMaterial)p(r,c),c.isMeshPhysicalMaterial?(v(r,c),r.reflectivity.value=c.reflectivity,r.clearcoat.value=c.clearcoat,r.clearcoatRoughness.value=c.clearcoatRoughness,c.sheen&&r.sheen.value.copy(c.sheen),c.clearcoatNormalMap&&(r.clearcoatNormalScale.value.copy(c.clearcoatNormalScale),
r.clearcoatNormalMap.value=c.clearcoatNormalMap,1===c.side&&r.clearcoatNormalScale.value.negate()),r.transparency.value=c.transparency):v(r,c);else if(c.isMeshMatcapMaterial)p(r,c),c.matcap&&(r.matcap.value=c.matcap),c.bumpMap&&(r.bumpMap.value=c.bumpMap,r.bumpScale.value=c.bumpScale,1===c.side&&(r.bumpScale.value*=-1)),c.normalMap&&(r.normalMap.value=c.normalMap,r.normalScale.value.copy(c.normalScale),1===c.side&&r.normalScale.value.negate()),c.displacementMap&&(r.displacementMap.value=c.displacementMap,
r.displacementScale.value=c.displacementScale,r.displacementBias.value=c.displacementBias);else if(c.isMeshDepthMaterial)p(r,c),c.displacementMap&&(r.displacementMap.value=c.displacementMap,r.displacementScale.value=c.displacementScale,r.displacementBias.value=c.displacementBias);else if(c.isMeshDistanceMaterial)p(r,c),c.displacementMap&&(r.displacementMap.value=c.displacementMap,r.displacementScale.value=c.displacementScale,r.displacementBias.value=c.displacementBias),r.referencePosition.value.copy(c.referencePosition),
r.nearDistance.value=c.nearDistance,r.farDistance.value=c.farDistance;else if(c.isMeshNormalMaterial)p(r,c),c.bumpMap&&(r.bumpMap.value=c.bumpMap,r.bumpScale.value=c.bumpScale,1===c.side&&(r.bumpScale.value*=-1)),c.normalMap&&(r.normalMap.value=c.normalMap,r.normalScale.value.copy(c.normalScale),1===c.side&&r.normalScale.value.negate()),c.displacementMap&&(r.displacementMap.value=c.displacementMap,r.displacementScale.value=c.displacementScale,r.displacementBias.value=c.displacementBias);else if(c.isLineBasicMaterial)r.diffuse.value.copy(c.color),
r.opacity.value=c.opacity,c.isLineDashedMaterial&&(r.dashSize.value=c.dashSize,r.totalSize.value=c.dashSize+c.gapSize,r.scale.value=c.scale);else if(c.isPointsMaterial){r.diffuse.value.copy(c.color);r.opacity.value=c.opacity;r.size.value=c.size*fa;r.scale.value=.5*W;c.map&&(r.map.value=c.map);c.alphaMap&&(r.alphaMap.value=c.alphaMap);if(c.map)var y=c.map;else c.alphaMap&&(y=c.alphaMap);void 0!==y&&(!0===y.matrixAutoUpdate&&y.updateMatrix(),r.uvTransform.value.copy(y.matrix))}else if(c.isSpriteMaterial){r.diffuse.value.copy(c.color);
r.opacity.value=c.opacity;r.rotation.value=c.rotation;c.map&&(r.map.value=c.map);c.alphaMap&&(r.alphaMap.value=c.alphaMap);if(c.map)var w=c.map;else c.alphaMap&&(w=c.alphaMap);void 0!==w&&(!0===w.matrixAutoUpdate&&w.updateMatrix(),r.uvTransform.value.copy(w.matrix))}else c.isShadowMaterial&&(r.color.value.copy(c.color),r.opacity.value=c.opacity);void 0!==r.ltc_1&&(r.ltc_1.value=L.LTC_1);void 0!==r.ltc_2&&(r.ltc_2.value=L.LTC_2);Cb.upload(K,e.uniformsList,r,ba);c.isShaderMaterial&&(c.uniformsNeedUpdate=
!1)}c.isShaderMaterial&&!0===c.uniformsNeedUpdate&&(Cb.upload(K,e.uniformsList,r,ba),c.uniformsNeedUpdate=!1);c.isSpriteMaterial&&m.setValue(K,"center",d.center);0<f.numMultiviewViews?ua.updateObjectMatricesUniforms(d,a,m):(m.setValue(K,"modelViewMatrix",d.modelViewMatrix),m.setValue(K,"normalMatrix",d.normalMatrix));m.setValue(K,"modelMatrix",d.matrixWorld);return f}function p(a,b){a.opacity.value=b.opacity;b.color&&a.diffuse.value.copy(b.color);b.emissive&&a.emissive.value.copy(b.emissive).multiplyScalar(b.emissiveIntensity);
b.map&&(a.map.value=b.map);b.alphaMap&&(a.alphaMap.value=b.alphaMap);b.specularMap&&(a.specularMap.value=b.specularMap);b.envMap&&(a.envMap.value=b.envMap,a.flipEnvMap.value=b.envMap.isCubeTexture?-1:1,a.reflectivity.value=b.reflectivity,a.refractionRatio.value=b.refractionRatio,a.maxMipLevel.value=Z.get(b.envMap).__maxMipLevel);b.lightMap&&(a.lightMap.value=b.lightMap,a.lightMapIntensity.value=b.lightMapIntensity);b.aoMap&&(a.aoMap.value=b.aoMap,a.aoMapIntensity.value=b.aoMapIntensity);if(b.map)var c=
b.map;else b.specularMap?c=b.specularMap:b.displacementMap?c=b.displacementMap:b.normalMap?c=b.normalMap:b.bumpMap?c=b.bumpMap:b.roughnessMap?c=b.roughnessMap:b.metalnessMap?c=b.metalnessMap:b.alphaMap?c=b.alphaMap:b.emissiveMap&&(c=b.emissiveMap);void 0!==c&&(c.isWebGLRenderTarget&&(c=c.texture),!0===c.matrixAutoUpdate&&c.updateMatrix(),a.uvTransform.value.copy(c.matrix))}function t(a,b){a.specular.value.copy(b.specular);a.shininess.value=Math.max(b.shininess,1E-4);b.emissiveMap&&(a.emissiveMap.value=
b.emissiveMap);b.bumpMap&&(a.bumpMap.value=b.bumpMap,a.bumpScale.value=b.bumpScale,1===b.side&&(a.bumpScale.value*=-1));b.normalMap&&(a.normalMap.value=b.normalMap,a.normalScale.value.copy(b.normalScale),1===b.side&&a.normalScale.value.negate());b.displacementMap&&(a.displacementMap.value=b.displacementMap,a.displacementScale.value=b.displacementScale,a.displacementBias.value=b.displacementBias)}function v(a,b){a.roughness.value=b.roughness;a.metalness.value=b.metalness;b.roughnessMap&&(a.roughnessMap.value=
Loading
Loading full blame...