Bladeren bron

Updated builds.

Mr.doob 8 jaren geleden
bovenliggende
commit
87cfc8a746
3 gewijzigde bestanden met toevoegingen van 135 en 123 verwijderingen
  1. 43 37
      build/three.js
  2. 49 49
      build/three.min.js
  3. 43 37
      build/three.module.js

+ 43 - 37
build/three.js

@@ -21336,27 +21336,33 @@
 
 			}
 
-			//
+			// render scene
 
-			var opaqueObjects = currentRenderList.opaque;
-			var transparentObjects = currentRenderList.transparent;
+			if ( camera.isArrayCamera ) {
 
-			if ( scene.overrideMaterial ) {
+				var cameras = camera.cameras;
 
-				var overrideMaterial = scene.overrideMaterial;
+				for ( var j = 0, jl = cameras.length; j < jl; j ++ ) {
 
-				if ( opaqueObjects.length ) renderObjects( opaqueObjects, scene, camera, overrideMaterial );
-				if ( transparentObjects.length ) renderObjects( transparentObjects, scene, camera, overrideMaterial );
+					var camera2 = cameras[ j ];
+					var bounds = camera2.bounds;
 
-			} else {
+					var x = bounds.x * _width;
+					var y = bounds.y * _height;
+					var width = bounds.z * _width;
+					var height = bounds.w * _height;
 
-				// opaque pass (front-to-back order)
+					_this.setViewport( x, y, width, height );
+					_this.setScissor( x, y, width, height );
+					_this.setScissorTest( true );
 
-				if ( opaqueObjects.length ) renderObjects( opaqueObjects, scene, camera );
+					renderScene( currentRenderList, scene, camera );
 
-				// transparent pass (back-to-front order)
+				}
 
-				if ( transparentObjects.length ) renderObjects( transparentObjects, scene, camera );
+			} else {
+
+				renderScene( currentRenderList, scene, camera );
 
 			}
 
@@ -21544,46 +21550,46 @@
 
 		}
 
-		function renderObjects( renderList, scene, camera, overrideMaterial ) {
+		function renderScene( renderList, scene, camera ) {
 
-			for ( var i = 0, l = renderList.length; i < l; i ++ ) {
+			var opaqueObjects = renderList.opaque;
+			var transparentObjects = renderList.transparent;
 
-				var renderItem = renderList[ i ];
+			if ( scene.overrideMaterial ) {
 
-				var object = renderItem.object;
-				var geometry = renderItem.geometry;
-				var material = overrideMaterial === undefined ? renderItem.material : overrideMaterial;
-				var group = renderItem.group;
+				var overrideMaterial = scene.overrideMaterial;
 
-				object.onBeforeRender( _this, scene, camera, geometry, material, group );
+				if ( opaqueObjects.length ) renderObjects( opaqueObjects, scene, camera, overrideMaterial );
+				if ( transparentObjects.length ) renderObjects( transparentObjects, scene, camera, overrideMaterial );
+
+			} else {
 
-				if ( camera.isArrayCamera ) {
+				// opaque pass (front-to-back order)
 
-					var cameras = camera.cameras;
+				if ( opaqueObjects.length ) renderObjects( opaqueObjects, scene, camera );
 
-					for ( var j = 0, jl = cameras.length; j < jl; j ++ ) {
+				// transparent pass (back-to-front order)
+
+				if ( transparentObjects.length ) renderObjects( transparentObjects, scene, camera );
 
-						var camera2 = cameras[ j ];
-						var bounds = camera2.bounds;
+			}
 
-						var x = bounds.x * _width;
-						var y = bounds.y * _height;
-						var width = bounds.z * _width;
-						var height = bounds.w * _height;
+		}
 
-						_this.setViewport( x, y, width, height );
-						_this.setScissor( x, y, width, height );
-						_this.setScissorTest( true );
+		function renderObjects( renderItems, scene, camera, overrideMaterial ) {
 
-						renderObject( object, scene, camera2, geometry, material, group );
+			for ( var i = 0, l = renderItems.length; i < l; i ++ ) {
 
-					}
+				var renderItem = renderItems[ i ];
 
-				} else {
+				var object = renderItem.object;
+				var geometry = renderItem.geometry;
+				var material = overrideMaterial === undefined ? renderItem.material : overrideMaterial;
+				var group = renderItem.group;
 
-					renderObject( object, scene, camera, geometry, material, group );
+				object.onBeforeRender( _this, scene, camera, geometry, material, group );
 
-				}
+				renderObject( object, scene, camera, geometry, material, group );
 
 				object.onAfterRender( _this, scene, camera, geometry, material, group );
 

+ 49 - 49
build/three.min.js

@@ -136,40 +136,40 @@ null!==a?a.length:0,g=null;if(0!==f){g=m.value;if(!0!==e||null===g){e=d+4*f;b=b.
 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,k,r,l,t){if(!f||null===c||0===c.length||g&&!k)g?b(null):a();else{k=g?0:e;var n=4*k,x=l.clippingState||null;m.value=x;x=b(c,r,n,t);for(c=0;c!==n;++c)x[c]=d[c];l.clippingState=x;this.numIntersection=h?this.numPlanes:0;this.numPlanes+=k}}}function Wd(a){function b(){fa.init();fa.scissor(N.copy(ga).multiplyScalar(U));fa.viewport(T.copy(id).multiplyScalar(U));fa.buffers.color.setClear(Ia.r,
 Ia.g,Ia.b,Z,C)}function c(){S=B=null;aa="";V=-1;fa.reset()}function d(a){a.preventDefault();c();b();ha.clear();wa.clear()}function e(a){a=a.target;a.removeEventListener("dispose",e);f(a);ha.remove(a)}function f(a){var b=ha.get(a).program;a.program=void 0;void 0!==b&&ya.releaseProgram(b)}function g(a,b,c){a.render(function(a){z.renderBufferImmediate(a,b,c)})}function h(a,b){return Math.abs(b[0])-Math.abs(a[0])}function k(a,b,c){if(a.visible){if(a.layers.test(b.layers))if(a.isLight)ca.push(a);else if(a.isSprite)a.frustumCulled&&
 !la.intersectsSprite(a)||K.push(a);else if(a.isLensFlare)D.push(a);else if(a.isImmediateRenderObject)c&&Qa.setFromMatrixPosition(a.matrixWorld).applyMatrix4(kd),F.push(a,null,a.material,Qa.z,null);else if(a.isMesh||a.isLine||a.isPoints)if(a.isSkinnedMesh&&a.skeleton.update(),!a.frustumCulled||la.intersectsObject(a)){c&&Qa.setFromMatrixPosition(a.matrixWorld).applyMatrix4(kd);var d=wa.update(a),e=a.material;if(Array.isArray(e))for(var f=d.groups,g=0,h=f.length;g<h;g++){var m=f[g],q=e[m.materialIndex];
-q&&q.visible&&F.push(a,d,q,Qa.z,m)}else e.visible&&F.push(a,d,e,Qa.z,null)}a=a.children;g=0;for(h=a.length;g<h;g++)k(a[g],b,c)}}function m(a,b,c,d){for(var e=0,f=a.length;e<f;e++){var g=a[e],h=g.object,k=g.geometry,m=void 0===d?g.material:d,g=g.group;h.onBeforeRender(z,b,c,k,m,g);if(c.isArrayCamera)for(var p=c.cameras,u=0,r=p.length;u<r;u++){var l=p[u],t=l.bounds,n=t.x*O,ba=t.y*da,v=t.z*O,t=t.w*da;z.setViewport(n,ba,v,t);z.setScissor(n,ba,v,t);z.setScissorTest(!0);q(h,b,l,k,m,g)}else q(h,b,c,k,m,
-g);h.onAfterRender(z,b,c,k,m,g)}}function q(a,b,c,d,e,f){a.modelViewMatrix.multiplyMatrices(c.matrixWorldInverse,a.matrixWorld);a.normalMatrix.getNormalMatrix(a.modelViewMatrix);a.isImmediateRenderObject?(fa.setMaterial(e),b=p(c,b.fog,e,a),aa="",g(a,b,e)):z.renderBufferDirect(c,b.fog,d,e,a,f)}function u(a,b,c){var d=ha.get(a);c=ya.getParameters(a,ea,b,Pa.numPlanes,Pa.numIntersection,c);var g=ya.getProgramCode(a,c),h=d.program,k=!0;if(void 0===h)a.addEventListener("dispose",e);else if(h.code!==g)f(a);
-else{if(void 0!==c.shaderID)return;k=!1}k&&(c.shaderID?(h=$a[c.shaderID],d.shader={name:a.type,uniforms:Ha.clone(h.uniforms),vertexShader:h.vertexShader,fragmentShader:h.fragmentShader}):d.shader={name:a.type,uniforms:a.uniforms,vertexShader:a.vertexShader,fragmentShader:a.fragmentShader},a.onBeforeCompile(d.shader),h=ya.acquireProgram(a,d.shader,c,g),d.program=h,a.program=h);c=h.getAttributes();if(a.morphTargets)for(g=a.numSupportedMorphTargets=0;g<z.maxMorphTargets;g++)0<=c["morphTarget"+g]&&a.numSupportedMorphTargets++;
-if(a.morphNormals)for(g=a.numSupportedMorphNormals=0;g<z.maxMorphNormals;g++)0<=c["morphNormal"+g]&&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.lightsHash=ea.hash;a.lights&&(c.ambientLightColor.value=ea.ambient,c.directionalLights.value=ea.directional,c.spotLights.value=ea.spot,c.rectAreaLights.value=ea.rectArea,c.pointLights.value=
-ea.point,c.hemisphereLights.value=ea.hemi,c.directionalShadowMap.value=ea.directionalShadowMap,c.directionalShadowMatrix.value=ea.directionalShadowMatrix,c.spotShadowMap.value=ea.spotShadowMap,c.spotShadowMatrix.value=ea.spotShadowMatrix,c.pointShadowMap.value=ea.pointShadowMap,c.pointShadowMatrix.value=ea.pointShadowMatrix);a=d.program.getUniforms();a=eb.seqWithValue(a.seq,c);d.uniformsList=a}function p(a,b,c,d){Q=0;var e=ha.get(c);jd&&(Vd||a!==S)&&Pa.setState(c.clippingPlanes,c.clipIntersection,
-c.clipShadows,a,e,a===S&&c.id===V);!1===c.needsUpdate&&(void 0===e.program?c.needsUpdate=!0:c.fog&&e.fog!==b?c.needsUpdate=!0:c.lights&&e.lightsHash!==ea.hash?c.needsUpdate=!0:void 0===e.numClippingPlanes||e.numClippingPlanes===Pa.numPlanes&&e.numIntersection===Pa.numIntersection||(c.needsUpdate=!0));c.needsUpdate&&(u(c,b,d),c.needsUpdate=!1);var f=!1,g=!1,h=!1,k=e.program,m=k.getUniforms(),q=e.shader.uniforms;k.id!==B&&(A.useProgram(k.program),B=k.id,h=g=f=!0);c.id!==V&&(V=c.id,g=!0);if(f||a!==S){m.setValue(A,
-"projectionMatrix",a.projectionMatrix);ma.logarithmicDepthBuffer&&m.setValue(A,"logDepthBufFC",2/(Math.log(a.far+1)/Math.LN2));a!==S&&(S=a,h=g=!0);if(c.isShaderMaterial||c.isMeshPhongMaterial||c.isMeshStandardMaterial||c.envMap)f=m.map.cameraPosition,void 0!==f&&f.setValue(A,Qa.setFromMatrixPosition(a.matrixWorld));(c.isMeshPhongMaterial||c.isMeshLambertMaterial||c.isMeshBasicMaterial||c.isMeshStandardMaterial||c.isShaderMaterial||c.skinning)&&m.setValue(A,"viewMatrix",a.matrixWorldInverse);m.setValue(A,
-"toneMappingExposure",z.toneMappingExposure);m.setValue(A,"toneMappingWhitePoint",z.toneMappingWhitePoint)}if(c.skinning&&(m.setOptional(A,d,"bindMatrix"),m.setOptional(A,d,"bindMatrixInverse"),a=d.skeleton))if(f=a.bones,ma.floatVertexTextures){if(void 0===a.boneTexture){var f=Math.sqrt(4*f.length),f=X.nextPowerOfTwo(Math.ceil(f)),f=Math.max(f,4),p=new Float32Array(f*f*4);p.set(a.boneMatrices);var t=new db(p,f,f,1023,1015);a.boneMatrices=p;a.boneTexture=t;a.boneTextureSize=f}m.setValue(A,"boneTexture",
-a.boneTexture);m.setValue(A,"boneTextureSize",a.boneTextureSize)}else m.setOptional(A,a,"boneMatrices");if(g){c.lights&&(g=h,q.ambientLightColor.needsUpdate=g,q.directionalLights.needsUpdate=g,q.pointLights.needsUpdate=g,q.spotLights.needsUpdate=g,q.rectAreaLights.needsUpdate=g,q.hemisphereLights.needsUpdate=g);b&&c.fog&&(q.fogColor.value=b.color,b.isFog?(q.fogNear.value=b.near,q.fogFar.value=b.far):b.isFogExp2&&(q.fogDensity.value=b.density));if(c.isMeshBasicMaterial||c.isMeshLambertMaterial||c.isMeshPhongMaterial||
-c.isMeshStandardMaterial||c.isMeshNormalMaterial||c.isMeshDepthMaterial){q.opacity.value=c.opacity;q.diffuse.value=c.color;c.emissive&&q.emissive.value.copy(c.emissive).multiplyScalar(c.emissiveIntensity);q.map.value=c.map;q.specularMap.value=c.specularMap;q.alphaMap.value=c.alphaMap;c.lightMap&&(q.lightMap.value=c.lightMap,q.lightMapIntensity.value=c.lightMapIntensity);c.aoMap&&(q.aoMap.value=c.aoMap,q.aoMapIntensity.value=c.aoMapIntensity);var n;c.map?n=c.map:c.specularMap?n=c.specularMap:c.displacementMap?
-n=c.displacementMap:c.normalMap?n=c.normalMap:c.bumpMap?n=c.bumpMap:c.roughnessMap?n=c.roughnessMap:c.metalnessMap?n=c.metalnessMap:c.alphaMap?n=c.alphaMap:c.emissiveMap&&(n=c.emissiveMap);void 0!==n&&(n.isWebGLRenderTarget&&(n=n.texture),b=n.offset,n=n.repeat,q.offsetRepeat.value.set(b.x,b.y,n.x,n.y));q.envMap.value=c.envMap;q.flipEnvMap.value=c.envMap&&c.envMap.isCubeTexture?-1:1;q.reflectivity.value=c.reflectivity;q.refractionRatio.value=c.refractionRatio}c.isLineBasicMaterial?(q.diffuse.value=
-c.color,q.opacity.value=c.opacity):c.isLineDashedMaterial?(q.diffuse.value=c.color,q.opacity.value=c.opacity,q.dashSize.value=c.dashSize,q.totalSize.value=c.dashSize+c.gapSize,q.scale.value=c.scale):c.isPointsMaterial?(q.diffuse.value=c.color,q.opacity.value=c.opacity,q.size.value=c.size*U,q.scale.value=.5*da,q.map.value=c.map,null!==c.map&&(n=c.map.offset,c=c.map.repeat,q.offsetRepeat.value.set(n.x,n.y,c.x,c.y))):c.isMeshLambertMaterial?c.emissiveMap&&(q.emissiveMap.value=c.emissiveMap):c.isMeshToonMaterial?
-(r(q,c),c.gradientMap&&(q.gradientMap.value=c.gradientMap)):c.isMeshPhongMaterial?r(q,c):c.isMeshPhysicalMaterial?(q.clearCoat.value=c.clearCoat,q.clearCoatRoughness.value=c.clearCoatRoughness,l(q,c)):c.isMeshStandardMaterial?l(q,c):c.isMeshDepthMaterial?c.displacementMap&&(q.displacementMap.value=c.displacementMap,q.displacementScale.value=c.displacementScale,q.displacementBias.value=c.displacementBias):c.isMeshNormalMaterial&&(c.bumpMap&&(q.bumpMap.value=c.bumpMap,q.bumpScale.value=c.bumpScale),
-c.normalMap&&(q.normalMap.value=c.normalMap,q.normalScale.value.copy(c.normalScale)),c.displacementMap&&(q.displacementMap.value=c.displacementMap,q.displacementScale.value=c.displacementScale,q.displacementBias.value=c.displacementBias));void 0!==q.ltcMat&&(q.ltcMat.value=Y.LTC_MAT_TEXTURE);void 0!==q.ltcMag&&(q.ltcMag.value=Y.LTC_MAG_TEXTURE);eb.upload(A,e.uniformsList,q,z)}m.setValue(A,"modelViewMatrix",d.modelViewMatrix);m.setValue(A,"normalMatrix",d.normalMatrix);m.setValue(A,"modelMatrix",d.matrixWorld);
-return k}function r(a,b){a.specular.value=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);b.normalMap&&(a.normalMap.value=b.normalMap,a.normalScale.value.copy(b.normalScale));b.displacementMap&&(a.displacementMap.value=b.displacementMap,a.displacementScale.value=b.displacementScale,a.displacementBias.value=b.displacementBias)}function l(a,b){a.roughness.value=b.roughness;
-a.metalness.value=b.metalness;b.roughnessMap&&(a.roughnessMap.value=b.roughnessMap);b.metalnessMap&&(a.metalnessMap.value=b.metalnessMap);b.emissiveMap&&(a.emissiveMap.value=b.emissiveMap);b.bumpMap&&(a.bumpMap.value=b.bumpMap,a.bumpScale.value=b.bumpScale);b.normalMap&&(a.normalMap.value=b.normalMap,a.normalScale.value.copy(b.normalScale));b.displacementMap&&(a.displacementMap.value=b.displacementMap,a.displacementScale.value=b.displacementScale,a.displacementBias.value=b.displacementBias);b.envMap&&
-(a.envMapIntensity.value=b.envMapIntensity)}function t(a,b){var c,d,e,f,g=0,h=0,k=0,m,q,p,u=b.matrixWorldInverse,r=0,l=0,n=0,t=0,ba=0;c=0;for(d=a.length;c<d;c++)if(e=a[c],f=e.color,m=e.intensity,q=e.distance,p=e.shadow&&e.shadow.map?e.shadow.map.texture:null,e.isAmbientLight)g+=f.r*m,h+=f.g*m,k+=f.b*m;else if(e.isDirectionalLight){var v=Ba.get(e);v.color.copy(e.color).multiplyScalar(e.intensity);v.direction.setFromMatrixPosition(e.matrixWorld);Qa.setFromMatrixPosition(e.target.matrixWorld);v.direction.sub(Qa);
-v.direction.transformDirection(u);if(v.shadow=e.castShadow)f=e.shadow,v.shadowBias=f.bias,v.shadowRadius=f.radius,v.shadowMapSize=f.mapSize;ea.directionalShadowMap[r]=p;ea.directionalShadowMatrix[r]=e.shadow.matrix;ea.directional[r]=v;r++}else if(e.isSpotLight){v=Ba.get(e);v.position.setFromMatrixPosition(e.matrixWorld);v.position.applyMatrix4(u);v.color.copy(f).multiplyScalar(m);v.distance=q;v.direction.setFromMatrixPosition(e.matrixWorld);Qa.setFromMatrixPosition(e.target.matrixWorld);v.direction.sub(Qa);
-v.direction.transformDirection(u);v.coneCos=Math.cos(e.angle);v.penumbraCos=Math.cos(e.angle*(1-e.penumbra));v.decay=0===e.distance?0:e.decay;if(v.shadow=e.castShadow)f=e.shadow,v.shadowBias=f.bias,v.shadowRadius=f.radius,v.shadowMapSize=f.mapSize;ea.spotShadowMap[n]=p;ea.spotShadowMatrix[n]=e.shadow.matrix;ea.spot[n]=v;n++}else if(e.isRectAreaLight)v=Ba.get(e),v.color.copy(f).multiplyScalar(m/(e.width*e.height)),v.position.setFromMatrixPosition(e.matrixWorld),v.position.applyMatrix4(u),qa.identity(),
-pa.copy(e.matrixWorld),pa.premultiply(u),qa.extractRotation(pa),v.halfWidth.set(.5*e.width,0,0),v.halfHeight.set(0,.5*e.height,0),v.halfWidth.applyMatrix4(qa),v.halfHeight.applyMatrix4(qa),ea.rectArea[t]=v,t++;else if(e.isPointLight){v=Ba.get(e);v.position.setFromMatrixPosition(e.matrixWorld);v.position.applyMatrix4(u);v.color.copy(e.color).multiplyScalar(e.intensity);v.distance=e.distance;v.decay=0===e.distance?0:e.decay;if(v.shadow=e.castShadow)f=e.shadow,v.shadowBias=f.bias,v.shadowRadius=f.radius,
-v.shadowMapSize=f.mapSize;ea.pointShadowMap[l]=p;ea.pointShadowMatrix[l]=e.shadow.matrix;ea.point[l]=v;l++}else e.isHemisphereLight&&(v=Ba.get(e),v.direction.setFromMatrixPosition(e.matrixWorld),v.direction.transformDirection(u),v.direction.normalize(),v.skyColor.copy(e.color).multiplyScalar(m),v.groundColor.copy(e.groundColor).multiplyScalar(m),ea.hemi[ba]=v,ba++);ea.ambient[0]=g;ea.ambient[1]=h;ea.ambient[2]=k;ea.directional.length=r;ea.spot.length=n;ea.rectArea.length=t;ea.point.length=l;ea.hemi.length=
-ba;ea.hash=r+","+l+","+n+","+t+","+ba+","+ea.shadows.length}function y(a){var b;if(1E3===a)return A.REPEAT;if(1001===a)return A.CLAMP_TO_EDGE;if(1002===a)return A.MIRRORED_REPEAT;if(1003===a)return A.NEAREST;if(1004===a)return A.NEAREST_MIPMAP_NEAREST;if(1005===a)return A.NEAREST_MIPMAP_LINEAR;if(1006===a)return A.LINEAR;if(1007===a)return A.LINEAR_MIPMAP_NEAREST;if(1008===a)return A.LINEAR_MIPMAP_LINEAR;if(1009===a)return A.UNSIGNED_BYTE;if(1017===a)return A.UNSIGNED_SHORT_4_4_4_4;if(1018===a)return A.UNSIGNED_SHORT_5_5_5_1;
-if(1019===a)return A.UNSIGNED_SHORT_5_6_5;if(1010===a)return A.BYTE;if(1011===a)return A.SHORT;if(1012===a)return A.UNSIGNED_SHORT;if(1013===a)return A.INT;if(1014===a)return A.UNSIGNED_INT;if(1015===a)return A.FLOAT;if(1016===a&&(b=oa.get("OES_texture_half_float"),null!==b))return b.HALF_FLOAT_OES;if(1021===a)return A.ALPHA;if(1022===a)return A.RGB;if(1023===a)return A.RGBA;if(1024===a)return A.LUMINANCE;if(1025===a)return A.LUMINANCE_ALPHA;if(1026===a)return A.DEPTH_COMPONENT;if(1027===a)return A.DEPTH_STENCIL;
-if(100===a)return A.FUNC_ADD;if(101===a)return A.FUNC_SUBTRACT;if(102===a)return A.FUNC_REVERSE_SUBTRACT;if(200===a)return A.ZERO;if(201===a)return A.ONE;if(202===a)return A.SRC_COLOR;if(203===a)return A.ONE_MINUS_SRC_COLOR;if(204===a)return A.SRC_ALPHA;if(205===a)return A.ONE_MINUS_SRC_ALPHA;if(206===a)return A.DST_ALPHA;if(207===a)return A.ONE_MINUS_DST_ALPHA;if(208===a)return A.DST_COLOR;if(209===a)return A.ONE_MINUS_DST_COLOR;if(210===a)return A.SRC_ALPHA_SATURATE;if(2001===a||2002===a||2003===
-a||2004===a)if(b=oa.get("WEBGL_compressed_texture_s3tc"),null!==b){if(2001===a)return b.COMPRESSED_RGB_S3TC_DXT1_EXT;if(2002===a)return b.COMPRESSED_RGBA_S3TC_DXT1_EXT;if(2003===a)return b.COMPRESSED_RGBA_S3TC_DXT3_EXT;if(2004===a)return b.COMPRESSED_RGBA_S3TC_DXT5_EXT}if(2100===a||2101===a||2102===a||2103===a)if(b=oa.get("WEBGL_compressed_texture_pvrtc"),null!==b){if(2100===a)return b.COMPRESSED_RGB_PVRTC_4BPPV1_IMG;if(2101===a)return b.COMPRESSED_RGB_PVRTC_2BPPV1_IMG;if(2102===a)return b.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;
-if(2103===a)return b.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG}if(2151===a&&(b=oa.get("WEBGL_compressed_texture_etc1"),null!==b))return b.COMPRESSED_RGB_ETC1_WEBGL;if(103===a||104===a)if(b=oa.get("EXT_blend_minmax"),null!==b){if(103===a)return b.MIN_EXT;if(104===a)return b.MAX_EXT}return 1020===a&&(b=oa.get("WEBGL_depth_texture"),null!==b)?b.UNSIGNED_INT_24_8_WEBGL:0}console.log("THREE.WebGLRenderer","86dev");a=a||{};var x=void 0!==a.canvas?a.canvas:document.createElementNS("http://www.w3.org/1999/xhtml",
-"canvas"),v=void 0!==a.context?a.context:null,E=void 0!==a.alpha?a.alpha:!1,w=void 0!==a.depth?a.depth:!0,M=void 0!==a.stencil?a.stencil:!0,W=void 0!==a.antialias?a.antialias:!1,C=void 0!==a.premultipliedAlpha?a.premultipliedAlpha:!0,I=void 0!==a.preserveDrawingBuffer?a.preserveDrawingBuffer:!1,ca=[],F=null,ja=new Float32Array(8),K=[],D=[];this.domElement=x;this.context=null;this.sortObjects=this.autoClearStencil=this.autoClearDepth=this.autoClearColor=this.autoClear=!0;this.clippingPlanes=[];this.localClippingEnabled=
-!1;this.gammaFactor=2;this.physicallyCorrectLights=this.gammaOutput=this.gammaInput=!1;this.toneMappingWhitePoint=this.toneMappingExposure=this.toneMapping=1;this.maxMorphTargets=8;this.maxMorphNormals=4;var z=this,B=null,P=null,L=null,V=-1,aa="",S=null,N=new ia,J=null,T=new ia,Q=0,Ia=new H(0),Z=0,O=x.width,da=x.height,U=1,ga=new ia(0,0,O,da),Oe=!1,id=new ia(0,0,O,da),la=new hd,Pa=new jg,jd=!1,Vd=!1,kd=new R,Qa=new n,pa=new R,qa=new R,ea={hash:"",ambient:[0,0,0],directional:[],directionalShadowMap:[],
-directionalShadowMatrix:[],spot:[],spotShadowMap:[],spotShadowMatrix:[],rectArea:[],point:[],pointShadowMap:[],pointShadowMatrix:[],hemi:[],shadows:[]},ta={geometries:0,textures:0},na={frame:0,calls:0,vertices:0,faces:0,points:0};this.info={render:na,memory:ta,programs:null};var A;try{E={alpha:E,depth:w,stencil:M,antialias:W,premultipliedAlpha:C,preserveDrawingBuffer:I};A=v||x.getContext("webgl",E)||x.getContext("experimental-webgl",E);if(null===A){if(null!==x.getContext("webgl"))throw"Error creating WebGL context with your selected attributes.";
-throw"Error creating WebGL context.";}void 0===A.getShaderPrecisionFormat&&(A.getShaderPrecisionFormat=function(){return{rangeMin:1,rangeMax:1,precision:1}});x.addEventListener("webglcontextlost",d,!1)}catch(kg){console.error("THREE.WebGLRenderer: "+kg)}var oa=new ig(A);oa.get("WEBGL_depth_texture");oa.get("OES_texture_float");oa.get("OES_texture_float_linear");oa.get("OES_texture_half_float");oa.get("OES_texture_half_float_linear");oa.get("OES_standard_derivatives");oa.get("ANGLE_instanced_arrays");
-oa.get("OES_element_index_uint")&&(G.MaxIndex=4294967296);var ma=new gg(A,oa,a),fa=new fg(A,oa,y),ha=new eg,ra=new dg(A,oa,fa,ha,ma,y,ta),Aa=new Mf(A),Da=new Tf(A,Aa,ta),wa=new Vf(A,Da,na),ya=new cg(this,ma),Ba=new Uf,Fa=new Qf,va=new hg(this);this.info.programs=ya.programs;var Ka=new Sf(A,oa,na),La=new Rf(A,oa,na),Ga,za,sa,ua;b();this.context=A;this.capabilities=ma;this.extensions=oa;this.properties=ha;this.renderLists=Fa;this.state=fa;this.vr=va;var Ja=new Ie(this,ea,wa,ma);this.shadowMap=Ja;var Na=
-new Jf(this,K),Oa=new If(this,D);this.getContext=function(){return A};this.getContextAttributes=function(){return A.getContextAttributes()};this.forceContextLoss=function(){var a=oa.get("WEBGL_lose_context");a&&a.loseContext()};this.getMaxAnisotropy=function(){return ma.getMaxAnisotropy()};this.getPrecision=function(){return ma.precision};this.getPixelRatio=function(){return U};this.setPixelRatio=function(a){void 0!==a&&(U=a,this.setSize(O,da,!1))};this.getSize=function(){return{width:O,height:da}};
-this.setSize=function(a,b,c){O=a;da=b;x.width=a*U;x.height=b*U;!1!==c&&(x.style.width=a+"px",x.style.height=b+"px");this.setViewport(0,0,a,b)};this.setViewport=function(a,b,c,d){id.set(a,da-b-d,c,d);fa.viewport(T.copy(id).multiplyScalar(U))};this.setScissor=function(a,b,c,d){ga.set(a,da-b-d,c,d);fa.scissor(N.copy(ga).multiplyScalar(U))};this.setScissorTest=function(a){fa.setScissorTest(Oe=a)};this.getClearColor=function(){return Ia};this.setClearColor=function(a,b){Ia.set(a);Z=void 0!==b?b:1;fa.buffers.color.setClear(Ia.r,
-Ia.g,Ia.b,Z,C)};this.getClearAlpha=function(){return Z};this.setClearAlpha=function(a){Z=a;fa.buffers.color.setClear(Ia.r,Ia.g,Ia.b,Z,C)};this.clear=function(a,b,c){var d=0;if(void 0===a||a)d|=A.COLOR_BUFFER_BIT;if(void 0===b||b)d|=A.DEPTH_BUFFER_BIT;if(void 0===c||c)d|=A.STENCIL_BUFFER_BIT;A.clear(d)};this.clearColor=function(){this.clear(!0,!1,!1)};this.clearDepth=function(){this.clear(!1,!0,!1)};this.clearStencil=function(){this.clear(!1,!1,!0)};this.clearTarget=function(a,b,c,d){this.setRenderTarget(a);
+q&&q.visible&&F.push(a,d,q,Qa.z,m)}else e.visible&&F.push(a,d,e,Qa.z,null)}a=a.children;g=0;for(h=a.length;g<h;g++)k(a[g],b,c)}}function m(a,b,c){var d=a.opaque;a=a.transparent;if(b.overrideMaterial){var e=b.overrideMaterial;d.length&&q(d,b,c,e);a.length&&q(a,b,c,e)}else d.length&&q(d,b,c),a.length&&q(a,b,c)}function q(a,b,c,d){for(var e=0,f=a.length;e<f;e++){var h=a[e],k=h.object,m=h.geometry,q=void 0===d?h.material:d,h=h.group;k.onBeforeRender(z,b,c,m,q,h);var u=k,r=b,l=c,t=m,n=q,ba=h;u.modelViewMatrix.multiplyMatrices(l.matrixWorldInverse,
+u.matrixWorld);u.normalMatrix.getNormalMatrix(u.modelViewMatrix);u.isImmediateRenderObject?(fa.setMaterial(n),r=p(l,r.fog,n,u),aa="",g(u,r,n)):z.renderBufferDirect(l,r.fog,t,n,u,ba);k.onAfterRender(z,b,c,m,q,h)}}function u(a,b,c){var d=ha.get(a);c=ya.getParameters(a,ea,b,Pa.numPlanes,Pa.numIntersection,c);var g=ya.getProgramCode(a,c),h=d.program,k=!0;if(void 0===h)a.addEventListener("dispose",e);else if(h.code!==g)f(a);else{if(void 0!==c.shaderID)return;k=!1}k&&(c.shaderID?(h=$a[c.shaderID],d.shader=
+{name:a.type,uniforms:Ha.clone(h.uniforms),vertexShader:h.vertexShader,fragmentShader:h.fragmentShader}):d.shader={name:a.type,uniforms:a.uniforms,vertexShader:a.vertexShader,fragmentShader:a.fragmentShader},a.onBeforeCompile(d.shader),h=ya.acquireProgram(a,d.shader,c,g),d.program=h,a.program=h);c=h.getAttributes();if(a.morphTargets)for(g=a.numSupportedMorphTargets=0;g<z.maxMorphTargets;g++)0<=c["morphTarget"+g]&&a.numSupportedMorphTargets++;if(a.morphNormals)for(g=a.numSupportedMorphNormals=0;g<
+z.maxMorphNormals;g++)0<=c["morphNormal"+g]&&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.lightsHash=ea.hash;a.lights&&(c.ambientLightColor.value=ea.ambient,c.directionalLights.value=ea.directional,c.spotLights.value=ea.spot,c.rectAreaLights.value=ea.rectArea,c.pointLights.value=ea.point,c.hemisphereLights.value=ea.hemi,c.directionalShadowMap.value=
+ea.directionalShadowMap,c.directionalShadowMatrix.value=ea.directionalShadowMatrix,c.spotShadowMap.value=ea.spotShadowMap,c.spotShadowMatrix.value=ea.spotShadowMatrix,c.pointShadowMap.value=ea.pointShadowMap,c.pointShadowMatrix.value=ea.pointShadowMatrix);a=d.program.getUniforms();a=eb.seqWithValue(a.seq,c);d.uniformsList=a}function p(a,b,c,d){Q=0;var e=ha.get(c);jd&&(Vd||a!==S)&&Pa.setState(c.clippingPlanes,c.clipIntersection,c.clipShadows,a,e,a===S&&c.id===V);!1===c.needsUpdate&&(void 0===e.program?
+c.needsUpdate=!0:c.fog&&e.fog!==b?c.needsUpdate=!0:c.lights&&e.lightsHash!==ea.hash?c.needsUpdate=!0:void 0===e.numClippingPlanes||e.numClippingPlanes===Pa.numPlanes&&e.numIntersection===Pa.numIntersection||(c.needsUpdate=!0));c.needsUpdate&&(u(c,b,d),c.needsUpdate=!1);var f=!1,g=!1,h=!1,k=e.program,m=k.getUniforms(),q=e.shader.uniforms;k.id!==B&&(A.useProgram(k.program),B=k.id,h=g=f=!0);c.id!==V&&(V=c.id,g=!0);if(f||a!==S){m.setValue(A,"projectionMatrix",a.projectionMatrix);ma.logarithmicDepthBuffer&&
+m.setValue(A,"logDepthBufFC",2/(Math.log(a.far+1)/Math.LN2));a!==S&&(S=a,h=g=!0);if(c.isShaderMaterial||c.isMeshPhongMaterial||c.isMeshStandardMaterial||c.envMap)f=m.map.cameraPosition,void 0!==f&&f.setValue(A,Qa.setFromMatrixPosition(a.matrixWorld));(c.isMeshPhongMaterial||c.isMeshLambertMaterial||c.isMeshBasicMaterial||c.isMeshStandardMaterial||c.isShaderMaterial||c.skinning)&&m.setValue(A,"viewMatrix",a.matrixWorldInverse);m.setValue(A,"toneMappingExposure",z.toneMappingExposure);m.setValue(A,
+"toneMappingWhitePoint",z.toneMappingWhitePoint)}if(c.skinning&&(m.setOptional(A,d,"bindMatrix"),m.setOptional(A,d,"bindMatrixInverse"),a=d.skeleton))if(f=a.bones,ma.floatVertexTextures){if(void 0===a.boneTexture){var f=Math.sqrt(4*f.length),f=X.nextPowerOfTwo(Math.ceil(f)),f=Math.max(f,4),p=new Float32Array(f*f*4);p.set(a.boneMatrices);var t=new db(p,f,f,1023,1015);a.boneMatrices=p;a.boneTexture=t;a.boneTextureSize=f}m.setValue(A,"boneTexture",a.boneTexture);m.setValue(A,"boneTextureSize",a.boneTextureSize)}else m.setOptional(A,
+a,"boneMatrices");if(g){c.lights&&(g=h,q.ambientLightColor.needsUpdate=g,q.directionalLights.needsUpdate=g,q.pointLights.needsUpdate=g,q.spotLights.needsUpdate=g,q.rectAreaLights.needsUpdate=g,q.hemisphereLights.needsUpdate=g);b&&c.fog&&(q.fogColor.value=b.color,b.isFog?(q.fogNear.value=b.near,q.fogFar.value=b.far):b.isFogExp2&&(q.fogDensity.value=b.density));if(c.isMeshBasicMaterial||c.isMeshLambertMaterial||c.isMeshPhongMaterial||c.isMeshStandardMaterial||c.isMeshNormalMaterial||c.isMeshDepthMaterial){q.opacity.value=
+c.opacity;q.diffuse.value=c.color;c.emissive&&q.emissive.value.copy(c.emissive).multiplyScalar(c.emissiveIntensity);q.map.value=c.map;q.specularMap.value=c.specularMap;q.alphaMap.value=c.alphaMap;c.lightMap&&(q.lightMap.value=c.lightMap,q.lightMapIntensity.value=c.lightMapIntensity);c.aoMap&&(q.aoMap.value=c.aoMap,q.aoMapIntensity.value=c.aoMapIntensity);var n;c.map?n=c.map:c.specularMap?n=c.specularMap:c.displacementMap?n=c.displacementMap:c.normalMap?n=c.normalMap:c.bumpMap?n=c.bumpMap:c.roughnessMap?
+n=c.roughnessMap:c.metalnessMap?n=c.metalnessMap:c.alphaMap?n=c.alphaMap:c.emissiveMap&&(n=c.emissiveMap);void 0!==n&&(n.isWebGLRenderTarget&&(n=n.texture),b=n.offset,n=n.repeat,q.offsetRepeat.value.set(b.x,b.y,n.x,n.y));q.envMap.value=c.envMap;q.flipEnvMap.value=c.envMap&&c.envMap.isCubeTexture?-1:1;q.reflectivity.value=c.reflectivity;q.refractionRatio.value=c.refractionRatio}c.isLineBasicMaterial?(q.diffuse.value=c.color,q.opacity.value=c.opacity):c.isLineDashedMaterial?(q.diffuse.value=c.color,
+q.opacity.value=c.opacity,q.dashSize.value=c.dashSize,q.totalSize.value=c.dashSize+c.gapSize,q.scale.value=c.scale):c.isPointsMaterial?(q.diffuse.value=c.color,q.opacity.value=c.opacity,q.size.value=c.size*U,q.scale.value=.5*da,q.map.value=c.map,null!==c.map&&(n=c.map.offset,c=c.map.repeat,q.offsetRepeat.value.set(n.x,n.y,c.x,c.y))):c.isMeshLambertMaterial?c.emissiveMap&&(q.emissiveMap.value=c.emissiveMap):c.isMeshToonMaterial?(r(q,c),c.gradientMap&&(q.gradientMap.value=c.gradientMap)):c.isMeshPhongMaterial?
+r(q,c):c.isMeshPhysicalMaterial?(q.clearCoat.value=c.clearCoat,q.clearCoatRoughness.value=c.clearCoatRoughness,l(q,c)):c.isMeshStandardMaterial?l(q,c):c.isMeshDepthMaterial?c.displacementMap&&(q.displacementMap.value=c.displacementMap,q.displacementScale.value=c.displacementScale,q.displacementBias.value=c.displacementBias):c.isMeshNormalMaterial&&(c.bumpMap&&(q.bumpMap.value=c.bumpMap,q.bumpScale.value=c.bumpScale),c.normalMap&&(q.normalMap.value=c.normalMap,q.normalScale.value.copy(c.normalScale)),
+c.displacementMap&&(q.displacementMap.value=c.displacementMap,q.displacementScale.value=c.displacementScale,q.displacementBias.value=c.displacementBias));void 0!==q.ltcMat&&(q.ltcMat.value=Y.LTC_MAT_TEXTURE);void 0!==q.ltcMag&&(q.ltcMag.value=Y.LTC_MAG_TEXTURE);eb.upload(A,e.uniformsList,q,z)}m.setValue(A,"modelViewMatrix",d.modelViewMatrix);m.setValue(A,"normalMatrix",d.normalMatrix);m.setValue(A,"modelMatrix",d.matrixWorld);return k}function r(a,b){a.specular.value=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);b.normalMap&&(a.normalMap.value=b.normalMap,a.normalScale.value.copy(b.normalScale));b.displacementMap&&(a.displacementMap.value=b.displacementMap,a.displacementScale.value=b.displacementScale,a.displacementBias.value=b.displacementBias)}function l(a,b){a.roughness.value=b.roughness;a.metalness.value=b.metalness;b.roughnessMap&&(a.roughnessMap.value=b.roughnessMap);
+b.metalnessMap&&(a.metalnessMap.value=b.metalnessMap);b.emissiveMap&&(a.emissiveMap.value=b.emissiveMap);b.bumpMap&&(a.bumpMap.value=b.bumpMap,a.bumpScale.value=b.bumpScale);b.normalMap&&(a.normalMap.value=b.normalMap,a.normalScale.value.copy(b.normalScale));b.displacementMap&&(a.displacementMap.value=b.displacementMap,a.displacementScale.value=b.displacementScale,a.displacementBias.value=b.displacementBias);b.envMap&&(a.envMapIntensity.value=b.envMapIntensity)}function t(a,b){var c,d,e,f,g=0,h=0,
+k=0,m,q,p,u=b.matrixWorldInverse,r=0,l=0,n=0,t=0,ba=0;c=0;for(d=a.length;c<d;c++)if(e=a[c],f=e.color,m=e.intensity,q=e.distance,p=e.shadow&&e.shadow.map?e.shadow.map.texture:null,e.isAmbientLight)g+=f.r*m,h+=f.g*m,k+=f.b*m;else if(e.isDirectionalLight){var v=Ba.get(e);v.color.copy(e.color).multiplyScalar(e.intensity);v.direction.setFromMatrixPosition(e.matrixWorld);Qa.setFromMatrixPosition(e.target.matrixWorld);v.direction.sub(Qa);v.direction.transformDirection(u);if(v.shadow=e.castShadow)f=e.shadow,
+v.shadowBias=f.bias,v.shadowRadius=f.radius,v.shadowMapSize=f.mapSize;ea.directionalShadowMap[r]=p;ea.directionalShadowMatrix[r]=e.shadow.matrix;ea.directional[r]=v;r++}else if(e.isSpotLight){v=Ba.get(e);v.position.setFromMatrixPosition(e.matrixWorld);v.position.applyMatrix4(u);v.color.copy(f).multiplyScalar(m);v.distance=q;v.direction.setFromMatrixPosition(e.matrixWorld);Qa.setFromMatrixPosition(e.target.matrixWorld);v.direction.sub(Qa);v.direction.transformDirection(u);v.coneCos=Math.cos(e.angle);
+v.penumbraCos=Math.cos(e.angle*(1-e.penumbra));v.decay=0===e.distance?0:e.decay;if(v.shadow=e.castShadow)f=e.shadow,v.shadowBias=f.bias,v.shadowRadius=f.radius,v.shadowMapSize=f.mapSize;ea.spotShadowMap[n]=p;ea.spotShadowMatrix[n]=e.shadow.matrix;ea.spot[n]=v;n++}else if(e.isRectAreaLight)v=Ba.get(e),v.color.copy(f).multiplyScalar(m/(e.width*e.height)),v.position.setFromMatrixPosition(e.matrixWorld),v.position.applyMatrix4(u),qa.identity(),pa.copy(e.matrixWorld),pa.premultiply(u),qa.extractRotation(pa),
+v.halfWidth.set(.5*e.width,0,0),v.halfHeight.set(0,.5*e.height,0),v.halfWidth.applyMatrix4(qa),v.halfHeight.applyMatrix4(qa),ea.rectArea[t]=v,t++;else if(e.isPointLight){v=Ba.get(e);v.position.setFromMatrixPosition(e.matrixWorld);v.position.applyMatrix4(u);v.color.copy(e.color).multiplyScalar(e.intensity);v.distance=e.distance;v.decay=0===e.distance?0:e.decay;if(v.shadow=e.castShadow)f=e.shadow,v.shadowBias=f.bias,v.shadowRadius=f.radius,v.shadowMapSize=f.mapSize;ea.pointShadowMap[l]=p;ea.pointShadowMatrix[l]=
+e.shadow.matrix;ea.point[l]=v;l++}else e.isHemisphereLight&&(v=Ba.get(e),v.direction.setFromMatrixPosition(e.matrixWorld),v.direction.transformDirection(u),v.direction.normalize(),v.skyColor.copy(e.color).multiplyScalar(m),v.groundColor.copy(e.groundColor).multiplyScalar(m),ea.hemi[ba]=v,ba++);ea.ambient[0]=g;ea.ambient[1]=h;ea.ambient[2]=k;ea.directional.length=r;ea.spot.length=n;ea.rectArea.length=t;ea.point.length=l;ea.hemi.length=ba;ea.hash=r+","+l+","+n+","+t+","+ba+","+ea.shadows.length}function y(a){var b;
+if(1E3===a)return A.REPEAT;if(1001===a)return A.CLAMP_TO_EDGE;if(1002===a)return A.MIRRORED_REPEAT;if(1003===a)return A.NEAREST;if(1004===a)return A.NEAREST_MIPMAP_NEAREST;if(1005===a)return A.NEAREST_MIPMAP_LINEAR;if(1006===a)return A.LINEAR;if(1007===a)return A.LINEAR_MIPMAP_NEAREST;if(1008===a)return A.LINEAR_MIPMAP_LINEAR;if(1009===a)return A.UNSIGNED_BYTE;if(1017===a)return A.UNSIGNED_SHORT_4_4_4_4;if(1018===a)return A.UNSIGNED_SHORT_5_5_5_1;if(1019===a)return A.UNSIGNED_SHORT_5_6_5;if(1010===
+a)return A.BYTE;if(1011===a)return A.SHORT;if(1012===a)return A.UNSIGNED_SHORT;if(1013===a)return A.INT;if(1014===a)return A.UNSIGNED_INT;if(1015===a)return A.FLOAT;if(1016===a&&(b=oa.get("OES_texture_half_float"),null!==b))return b.HALF_FLOAT_OES;if(1021===a)return A.ALPHA;if(1022===a)return A.RGB;if(1023===a)return A.RGBA;if(1024===a)return A.LUMINANCE;if(1025===a)return A.LUMINANCE_ALPHA;if(1026===a)return A.DEPTH_COMPONENT;if(1027===a)return A.DEPTH_STENCIL;if(100===a)return A.FUNC_ADD;if(101===
+a)return A.FUNC_SUBTRACT;if(102===a)return A.FUNC_REVERSE_SUBTRACT;if(200===a)return A.ZERO;if(201===a)return A.ONE;if(202===a)return A.SRC_COLOR;if(203===a)return A.ONE_MINUS_SRC_COLOR;if(204===a)return A.SRC_ALPHA;if(205===a)return A.ONE_MINUS_SRC_ALPHA;if(206===a)return A.DST_ALPHA;if(207===a)return A.ONE_MINUS_DST_ALPHA;if(208===a)return A.DST_COLOR;if(209===a)return A.ONE_MINUS_DST_COLOR;if(210===a)return A.SRC_ALPHA_SATURATE;if(2001===a||2002===a||2003===a||2004===a)if(b=oa.get("WEBGL_compressed_texture_s3tc"),
+null!==b){if(2001===a)return b.COMPRESSED_RGB_S3TC_DXT1_EXT;if(2002===a)return b.COMPRESSED_RGBA_S3TC_DXT1_EXT;if(2003===a)return b.COMPRESSED_RGBA_S3TC_DXT3_EXT;if(2004===a)return b.COMPRESSED_RGBA_S3TC_DXT5_EXT}if(2100===a||2101===a||2102===a||2103===a)if(b=oa.get("WEBGL_compressed_texture_pvrtc"),null!==b){if(2100===a)return b.COMPRESSED_RGB_PVRTC_4BPPV1_IMG;if(2101===a)return b.COMPRESSED_RGB_PVRTC_2BPPV1_IMG;if(2102===a)return b.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;if(2103===a)return b.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG}if(2151===
+a&&(b=oa.get("WEBGL_compressed_texture_etc1"),null!==b))return b.COMPRESSED_RGB_ETC1_WEBGL;if(103===a||104===a)if(b=oa.get("EXT_blend_minmax"),null!==b){if(103===a)return b.MIN_EXT;if(104===a)return b.MAX_EXT}return 1020===a&&(b=oa.get("WEBGL_depth_texture"),null!==b)?b.UNSIGNED_INT_24_8_WEBGL:0}console.log("THREE.WebGLRenderer","86dev");a=a||{};var x=void 0!==a.canvas?a.canvas:document.createElementNS("http://www.w3.org/1999/xhtml","canvas"),v=void 0!==a.context?a.context:null,E=void 0!==a.alpha?
+a.alpha:!1,w=void 0!==a.depth?a.depth:!0,M=void 0!==a.stencil?a.stencil:!0,W=void 0!==a.antialias?a.antialias:!1,C=void 0!==a.premultipliedAlpha?a.premultipliedAlpha:!0,I=void 0!==a.preserveDrawingBuffer?a.preserveDrawingBuffer:!1,ca=[],F=null,ja=new Float32Array(8),K=[],D=[];this.domElement=x;this.context=null;this.sortObjects=this.autoClearStencil=this.autoClearDepth=this.autoClearColor=this.autoClear=!0;this.clippingPlanes=[];this.localClippingEnabled=!1;this.gammaFactor=2;this.physicallyCorrectLights=
+this.gammaOutput=this.gammaInput=!1;this.toneMappingWhitePoint=this.toneMappingExposure=this.toneMapping=1;this.maxMorphTargets=8;this.maxMorphNormals=4;var z=this,B=null,P=null,L=null,V=-1,aa="",S=null,N=new ia,J=null,T=new ia,Q=0,Ia=new H(0),Z=0,O=x.width,da=x.height,U=1,ga=new ia(0,0,O,da),Oe=!1,id=new ia(0,0,O,da),la=new hd,Pa=new jg,jd=!1,Vd=!1,kd=new R,Qa=new n,pa=new R,qa=new R,ea={hash:"",ambient:[0,0,0],directional:[],directionalShadowMap:[],directionalShadowMatrix:[],spot:[],spotShadowMap:[],
+spotShadowMatrix:[],rectArea:[],point:[],pointShadowMap:[],pointShadowMatrix:[],hemi:[],shadows:[]},ta={geometries:0,textures:0},na={frame:0,calls:0,vertices:0,faces:0,points:0};this.info={render:na,memory:ta,programs:null};var A;try{E={alpha:E,depth:w,stencil:M,antialias:W,premultipliedAlpha:C,preserveDrawingBuffer:I};A=v||x.getContext("webgl",E)||x.getContext("experimental-webgl",E);if(null===A){if(null!==x.getContext("webgl"))throw"Error creating WebGL context with your selected attributes.";throw"Error creating WebGL context.";
+}void 0===A.getShaderPrecisionFormat&&(A.getShaderPrecisionFormat=function(){return{rangeMin:1,rangeMax:1,precision:1}});x.addEventListener("webglcontextlost",d,!1)}catch(kg){console.error("THREE.WebGLRenderer: "+kg)}var oa=new ig(A);oa.get("WEBGL_depth_texture");oa.get("OES_texture_float");oa.get("OES_texture_float_linear");oa.get("OES_texture_half_float");oa.get("OES_texture_half_float_linear");oa.get("OES_standard_derivatives");oa.get("ANGLE_instanced_arrays");oa.get("OES_element_index_uint")&&
+(G.MaxIndex=4294967296);var ma=new gg(A,oa,a),fa=new fg(A,oa,y),ha=new eg,ra=new dg(A,oa,fa,ha,ma,y,ta),Aa=new Mf(A),Da=new Tf(A,Aa,ta),wa=new Vf(A,Da,na),ya=new cg(this,ma),Ba=new Uf,Fa=new Qf,va=new hg(this);this.info.programs=ya.programs;var Ka=new Sf(A,oa,na),La=new Rf(A,oa,na),Ga,za,sa,ua;b();this.context=A;this.capabilities=ma;this.extensions=oa;this.properties=ha;this.renderLists=Fa;this.state=fa;this.vr=va;var Ja=new Ie(this,ea,wa,ma);this.shadowMap=Ja;var Na=new Jf(this,K),Oa=new If(this,
+D);this.getContext=function(){return A};this.getContextAttributes=function(){return A.getContextAttributes()};this.forceContextLoss=function(){var a=oa.get("WEBGL_lose_context");a&&a.loseContext()};this.getMaxAnisotropy=function(){return ma.getMaxAnisotropy()};this.getPrecision=function(){return ma.precision};this.getPixelRatio=function(){return U};this.setPixelRatio=function(a){void 0!==a&&(U=a,this.setSize(O,da,!1))};this.getSize=function(){return{width:O,height:da}};this.setSize=function(a,b,c){O=
+a;da=b;x.width=a*U;x.height=b*U;!1!==c&&(x.style.width=a+"px",x.style.height=b+"px");this.setViewport(0,0,a,b)};this.setViewport=function(a,b,c,d){id.set(a,da-b-d,c,d);fa.viewport(T.copy(id).multiplyScalar(U))};this.setScissor=function(a,b,c,d){ga.set(a,da-b-d,c,d);fa.scissor(N.copy(ga).multiplyScalar(U))};this.setScissorTest=function(a){fa.setScissorTest(Oe=a)};this.getClearColor=function(){return Ia};this.setClearColor=function(a,b){Ia.set(a);Z=void 0!==b?b:1;fa.buffers.color.setClear(Ia.r,Ia.g,
+Ia.b,Z,C)};this.getClearAlpha=function(){return Z};this.setClearAlpha=function(a){Z=a;fa.buffers.color.setClear(Ia.r,Ia.g,Ia.b,Z,C)};this.clear=function(a,b,c){var d=0;if(void 0===a||a)d|=A.COLOR_BUFFER_BIT;if(void 0===b||b)d|=A.DEPTH_BUFFER_BIT;if(void 0===c||c)d|=A.STENCIL_BUFFER_BIT;A.clear(d)};this.clearColor=function(){this.clear(!0,!1,!1)};this.clearDepth=function(){this.clear(!1,!0,!1)};this.clearStencil=function(){this.clear(!1,!1,!0)};this.clearTarget=function(a,b,c,d){this.setRenderTarget(a);
 this.clear(b,c,d)};this.resetGLState=c;this.dispose=function(){x.removeEventListener("webglcontextlost",d,!1);Fa.dispose()};this.renderBufferImmediate=function(a,b,c){fa.initAttributes();var d=ha.get(a);a.hasPositions&&!d.position&&(d.position=A.createBuffer());a.hasNormals&&!d.normal&&(d.normal=A.createBuffer());a.hasUvs&&!d.uv&&(d.uv=A.createBuffer());a.hasColors&&!d.color&&(d.color=A.createBuffer());b=b.getAttributes();a.hasPositions&&(A.bindBuffer(A.ARRAY_BUFFER,d.position),A.bufferData(A.ARRAY_BUFFER,
 a.positionArray,A.DYNAMIC_DRAW),fa.enableAttribute(b.position),A.vertexAttribPointer(b.position,3,A.FLOAT,!1,0,0));if(a.hasNormals){A.bindBuffer(A.ARRAY_BUFFER,d.normal);if(!c.isMeshPhongMaterial&&!c.isMeshStandardMaterial&&!c.isMeshNormalMaterial&&1===c.shading)for(var e=0,f=3*a.count;e<f;e+=9){var g=a.normalArray,h=(g[e+0]+g[e+3]+g[e+6])/3,k=(g[e+1]+g[e+4]+g[e+7])/3,m=(g[e+2]+g[e+5]+g[e+8])/3;g[e+0]=h;g[e+1]=k;g[e+2]=m;g[e+3]=h;g[e+4]=k;g[e+5]=m;g[e+6]=h;g[e+7]=k;g[e+8]=m}A.bufferData(A.ARRAY_BUFFER,
 a.normalArray,A.DYNAMIC_DRAW);fa.enableAttribute(b.normal);A.vertexAttribPointer(b.normal,3,A.FLOAT,!1,0,0)}a.hasUvs&&c.map&&(A.bindBuffer(A.ARRAY_BUFFER,d.uv),A.bufferData(A.ARRAY_BUFFER,a.uvArray,A.DYNAMIC_DRAW),fa.enableAttribute(b.uv),A.vertexAttribPointer(Aa.uv,2,A.FLOAT,!1,0,0));a.hasColors&&0!==c.vertexColors&&(A.bindBuffer(A.ARRAY_BUFFER,d.color),A.bufferData(A.ARRAY_BUFFER,a.colorArray,A.DYNAMIC_DRAW),fa.enableAttribute(b.color),A.vertexAttribPointer(b.color,3,A.FLOAT,!1,0,0));fa.disableUnusedAttributes();
@@ -182,9 +182,9 @@ break;case 2:a.setMode(A.TRIANGLE_FAN)}else e.isLine?(d=d.linewidth,void 0===d&&
 0;c<b.material.length;c++)u(b.material[c],a.fog,b);else u(b.material,a.fog,b)})};this.animate=function(a){function b(){a();(va.getDevice()||window).requestAnimationFrame(b)}(va.getDevice()||window).requestAnimationFrame(b)};this.render=function(a,b,c,d){if(b&&b.isCamera){aa="";V=-1;S=null;!0===a.autoUpdate&&a.updateMatrixWorld();null===b.parent&&b.updateMatrixWorld();va.enabled&&(b=va.getCamera(b));kd.multiplyMatrices(b.projectionMatrix,b.matrixWorldInverse);la.setFromMatrix(kd);ca.length=0;K.length=
 0;D.length=0;Vd=this.localClippingEnabled;jd=Pa.init(this.clippingPlanes,Vd,b);F=Fa.get(a,b);F.init();k(a,b,z.sortObjects);F.finish();!0===z.sortObjects&&F.sort();jd&&Pa.beginShadows();for(var e=ca,f=0,g=0,h=e.length;g<h;g++){var q=e[g];q.castShadow&&(ea.shadows[f]=q,f++)}ea.shadows.length=f;Ja.render(a,b);t(ca,b);jd&&Pa.endShadows();na.frame++;na.calls=0;na.vertices=0;na.faces=0;na.points=0;void 0===c&&(c=null);this.setRenderTarget(c);e=a.background;null===e?fa.buffers.color.setClear(Ia.r,Ia.g,Ia.b,
 Z,C):e&&e.isColor&&(fa.buffers.color.setClear(e.r,e.g,e.b,1,C),d=!0);(this.autoClear||d)&&this.clear(this.autoClearColor,this.autoClearDepth,this.autoClearStencil);e&&e.isCubeTexture?(void 0===sa&&(sa=new xa,ua=new Ca(new jb(5,5,5),new Ea({uniforms:$a.cube.uniforms,vertexShader:$a.cube.vertexShader,fragmentShader:$a.cube.fragmentShader,side:1,depthTest:!1,depthWrite:!1,fog:!1}))),sa.projectionMatrix.copy(b.projectionMatrix),sa.matrixWorld.extractRotation(b.matrixWorld),sa.matrixWorldInverse.getInverse(sa.matrixWorld),
-ua.material.uniforms.tCube.value=e,ua.modelViewMatrix.multiplyMatrices(sa.matrixWorldInverse,ua.matrixWorld),wa.update(ua),z.renderBufferDirect(sa,null,ua.geometry,ua.material,ua,null)):e&&e.isTexture&&(void 0===Ga&&(Ga=new Ib(-1,1,1,-1,0,1),za=new Ca(new kb(2,2),new Ma({depthTest:!1,depthWrite:!1,fog:!1}))),za.material.map=e,wa.update(za),z.renderBufferDirect(Ga,null,za.geometry,za.material,za,null));d=F.opaque;e=F.transparent;a.overrideMaterial?(f=a.overrideMaterial,d.length&&m(d,a,b,f),e.length&&
-m(e,a,b,f)):(d.length&&m(d,a,b),e.length&&m(e,a,b));Na.render(a,b);Oa.render(a,b,T);c&&ra.updateRenderTargetMipmap(c);fa.buffers.depth.setTest(!0);fa.buffers.depth.setMask(!0);fa.buffers.color.setMask(!0);b.isArrayCamera&&z.setScissorTest(!1);va.enabled&&va.submitFrame()}else console.error("THREE.WebGLRenderer.render: camera is not an instance of THREE.Camera.")};this.setFaceCulling=function(a,b){fa.setCullFace(a);fa.setFlipSided(0===b)};this.allocTextureUnit=function(){var a=Q;a>=ma.maxTextures&&
-console.warn("THREE.WebGLRenderer: Trying to use "+a+" texture units while this GPU supports only "+ma.maxTextures);Q+=1;return a};this.setTexture2D=function(){var a=!1;return function(b,c){b&&b.isWebGLRenderTarget&&(a||(console.warn("THREE.WebGLRenderer.setTexture2D: don't use render targets as textures. Use their .texture property instead."),a=!0),b=b.texture);ra.setTexture2D(b,c)}}();this.setTexture=function(){var a=!1;return function(b,c){a||(console.warn("THREE.WebGLRenderer: .setTexture is deprecated, use setTexture2D instead."),
+ua.material.uniforms.tCube.value=e,ua.modelViewMatrix.multiplyMatrices(sa.matrixWorldInverse,ua.matrixWorld),wa.update(ua),z.renderBufferDirect(sa,null,ua.geometry,ua.material,ua,null)):e&&e.isTexture&&(void 0===Ga&&(Ga=new Ib(-1,1,1,-1,0,1),za=new Ca(new kb(2,2),new Ma({depthTest:!1,depthWrite:!1,fog:!1}))),za.material.map=e,wa.update(za),z.renderBufferDirect(Ga,null,za.geometry,za.material,za,null));if(b.isArrayCamera)for(d=b.cameras,e=0,f=d.length;e<f;e++){var p=d[e].bounds,g=p.x*O,h=p.y*da,q=
+p.z*O,p=p.w*da;z.setViewport(g,h,q,p);z.setScissor(g,h,q,p);z.setScissorTest(!0);m(F,a,b)}else m(F,a,b);Na.render(a,b);Oa.render(a,b,T);c&&ra.updateRenderTargetMipmap(c);fa.buffers.depth.setTest(!0);fa.buffers.depth.setMask(!0);fa.buffers.color.setMask(!0);b.isArrayCamera&&z.setScissorTest(!1);va.enabled&&va.submitFrame()}else console.error("THREE.WebGLRenderer.render: camera is not an instance of THREE.Camera.")};this.setFaceCulling=function(a,b){fa.setCullFace(a);fa.setFlipSided(0===b)};this.allocTextureUnit=
+function(){var a=Q;a>=ma.maxTextures&&console.warn("THREE.WebGLRenderer: Trying to use "+a+" texture units while this GPU supports only "+ma.maxTextures);Q+=1;return a};this.setTexture2D=function(){var a=!1;return function(b,c){b&&b.isWebGLRenderTarget&&(a||(console.warn("THREE.WebGLRenderer.setTexture2D: don't use render targets as textures. Use their .texture property instead."),a=!0),b=b.texture);ra.setTexture2D(b,c)}}();this.setTexture=function(){var a=!1;return function(b,c){a||(console.warn("THREE.WebGLRenderer: .setTexture is deprecated, use setTexture2D instead."),
 a=!0);ra.setTexture2D(b,c)}}();this.setTextureCube=function(){var a=!1;return function(b,c){b&&b.isWebGLRenderTargetCube&&(a||(console.warn("THREE.WebGLRenderer.setTextureCube: don't use cube render targets as textures. Use their .texture property instead."),a=!0),b=b.texture);b&&b.isCubeTexture||Array.isArray(b.image)&&6===b.image.length?ra.setTextureCube(b,c):ra.setTextureCubeDynamic(b,c)}}();this.getRenderTarget=function(){return P};this.setRenderTarget=function(a){(P=a)&&void 0===ha.get(a).__webglFramebuffer&&
 ra.setupRenderTarget(a);var b=a&&a.isWebGLRenderTargetCube,c;a?(c=ha.get(a),c=b?c.__webglFramebuffer[a.activeCubeFace]:c.__webglFramebuffer,N.copy(a.scissor),J=a.scissorTest,T.copy(a.viewport)):(c=null,N.copy(ga).multiplyScalar(U),J=Oe,T.copy(id).multiplyScalar(U));L!==c&&(A.bindFramebuffer(A.FRAMEBUFFER,c),L=c);fa.scissor(N);fa.setScissorTest(J);fa.viewport(T);b&&(b=ha.get(a.texture),A.framebufferTexture2D(A.FRAMEBUFFER,A.COLOR_ATTACHMENT0,A.TEXTURE_CUBE_MAP_POSITIVE_X+a.activeCubeFace,b.__webglTexture,
 a.activeMipMapLevel))};this.readRenderTargetPixels=function(a,b,c,d,e,f){if(a&&a.isWebGLRenderTarget){var g=ha.get(a).__webglFramebuffer;if(g){var h=!1;g!==L&&(A.bindFramebuffer(A.FRAMEBUFFER,g),h=!0);try{var k=a.texture,m=k.format,q=k.type;1023!==m&&y(m)!==A.getParameter(A.IMPLEMENTATION_COLOR_READ_FORMAT)?console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format."):1009===q||y(q)===A.getParameter(A.IMPLEMENTATION_COLOR_READ_TYPE)||1015===
@@ -594,21 +594,21 @@ Dc.prototype.constructor=Dc;Ob.prototype=Object.create(G.prototype);Ob.prototype
 lb;Hc.prototype=Object.create(J.prototype);Hc.prototype.constructor=Hc;Qb.prototype=Object.create(ha.prototype);Qb.prototype.constructor=Qb;Ic.prototype=Object.create(J.prototype);Ic.prototype.constructor=Ic;Rb.prototype=Object.create(ha.prototype);Rb.prototype.constructor=Rb;Jc.prototype=Object.create(J.prototype);Jc.prototype.constructor=Jc;Sb.prototype=Object.create(G.prototype);Sb.prototype.constructor=Sb;Kc.prototype=Object.create(J.prototype);Kc.prototype.constructor=Kc;Tb.prototype=Object.create(G.prototype);
 Tb.prototype.constructor=Tb;Lc.prototype=Object.create(J.prototype);Lc.prototype.constructor=Lc;Ub.prototype=Object.create(G.prototype);Ub.prototype.constructor=Ub;var Ga={area:function(a){for(var b=a.length,c=0,d=b-1,e=0;e<b;d=e++)c+=a[d].x*a[e].y-a[e].x*a[d].y;return.5*c},triangulate:function(){return function(a,b){var c=a.length;if(3>c)return null;var d=[],e=[],f=[],g,h,k;if(0<Ga.area(a))for(h=0;h<c;h++)e[h]=h;else for(h=0;h<c;h++)e[h]=c-1-h;var m=2*c;for(h=c-1;2<c;){if(0>=m--){console.warn("THREE.ShapeUtils: Unable to triangulate polygon! in triangulate()");
 break}g=h;c<=g&&(g=0);h=g+1;c<=h&&(h=0);k=h+1;c<=k&&(k=0);var q;a:{var l,p,r,n,t,y,x,v;l=a[e[g]].x;p=a[e[g]].y;r=a[e[h]].x;n=a[e[h]].y;t=a[e[k]].x;y=a[e[k]].y;if(0>=(r-l)*(y-p)-(n-p)*(t-l))q=!1;else{var E,w,z,B,C,I,D,F,G,K;E=t-r;w=y-n;z=l-t;B=p-y;C=r-l;I=n-p;for(q=0;q<c;q++)if(x=a[e[q]].x,v=a[e[q]].y,!(x===l&&v===p||x===r&&v===n||x===t&&v===y)&&(D=x-l,F=v-p,G=x-r,K=v-n,x-=t,v-=y,G=E*K-w*G,D=C*F-I*D,F=z*v-B*x,G>=-Number.EPSILON&&F>=-Number.EPSILON&&D>=-Number.EPSILON)){q=!1;break a}q=!0}}if(q){d.push([a[e[g]],
-a[e[h]],a[e[k]]]);f.push([e[g],e[h],e[k]]);g=h;for(k=h+1;k<c;g++,k++)e[g]=e[k];c--;m=2*c}}return b?f:d}}(),triangulateShape:function(a,b){function c(a){var b=a.length;2<b&&a[b-1].equals(a[0])&&a.pop()}function d(a,b,c){return a.x!==b.x?a.x<b.x?a.x<=c.x&&c.x<=b.x:b.x<=c.x&&c.x<=a.x:a.y<b.y?a.y<=c.y&&c.y<=b.y:b.y<=c.y&&c.y<=a.y}function e(a,b,c,e,f){var g=b.x-a.x,h=b.y-a.y,k=e.x-c.x,m=e.y-c.y,l=a.x-c.x,q=a.y-c.y,p=h*k-g*m,n=h*l-g*q;if(Math.abs(p)>Number.EPSILON){if(0<p){if(0>n||n>p)return[];k=m*l-k*
-q;if(0>k||k>p)return[]}else{if(0<n||n<p)return[];k=m*l-k*q;if(0<k||k<p)return[]}if(0===k)return!f||0!==n&&n!==p?[a]:[];if(k===p)return!f||0!==n&&n!==p?[b]:[];if(0===n)return[c];if(n===p)return[e];f=k/p;return[{x:a.x+f*g,y:a.y+f*h}]}if(0!==n||m*l!==k*q)return[];h=0===g&&0===h;k=0===k&&0===m;if(h&&k)return a.x!==c.x||a.y!==c.y?[]:[a];if(h)return d(c,e,a)?[a]:[];if(k)return d(a,b,c)?[c]:[];0!==g?(a.x<b.x?(g=a,k=a.x,h=b,a=b.x):(g=b,k=b.x,h=a,a=a.x),c.x<e.x?(b=c,p=c.x,m=e,c=e.x):(b=e,p=e.x,m=c,c=c.x)):
-(a.y<b.y?(g=a,k=a.y,h=b,a=b.y):(g=b,k=b.y,h=a,a=a.y),c.y<e.y?(b=c,p=c.y,m=e,c=e.y):(b=e,p=e.y,m=c,c=c.y));return k<=p?a<p?[]:a===p?f?[]:[b]:a<=c?[b,h]:[b,m]:k>c?[]:k===c?f?[]:[g]:a<=c?[g,h]:[g,m]}function f(a,b,c,d){var e=b.x-a.x,f=b.y-a.y;b=c.x-a.x;c=c.y-a.y;var g=d.x-a.x;d=d.y-a.y;a=e*c-f*b;e=e*d-f*g;return Math.abs(a)>Number.EPSILON?(b=g*c-d*b,0<a?0<=e&&0<=b:0<=e||0<=b):0<e}c(a);b.forEach(c);var g,h,k,m,l,n={};k=a.concat();g=0;for(h=b.length;g<h;g++)Array.prototype.push.apply(k,b[g]);g=0;for(h=
-k.length;g<h;g++)l=k[g].x+":"+k[g].y,void 0!==n[l]&&console.warn("THREE.ShapeUtils: Duplicate point",l,g),n[l]=g;g=function(a,b){function c(a,b){var d=h.length-1,e=a-1;0>e&&(e=d);var g=a+1;g>d&&(g=0);d=f(h[a],h[e],h[g],k[b]);if(!d)return!1;d=k.length-1;e=b-1;0>e&&(e=d);g=b+1;g>d&&(g=0);return(d=f(k[b],k[e],k[g],h[a]))?!0:!1}function d(a,b){var c,f;for(c=0;c<h.length;c++)if(f=c+1,f%=h.length,f=e(a,b,h[c],h[f],!0),0<f.length)return!0;return!1}function g(a,c){var d,f,h,k;for(d=0;d<m.length;d++)for(f=
-b[m[d]],h=0;h<f.length;h++)if(k=h+1,k%=f.length,k=e(a,c,f[h],f[k],!0),0<k.length)return!0;return!1}var h=a.concat(),k,m=[],l,q,p,n,u,z=[],D,B,G,H=0;for(l=b.length;H<l;H++)m.push(H);D=0;for(var R=2*m.length;0<m.length;){R--;if(0>R){console.log("Infinite Loop! Holes left:"+m.length+", Probably Hole outside Shape!");break}for(q=D;q<h.length;q++){p=h[q];l=-1;for(H=0;H<m.length;H++)if(n=m[H],u=p.x+":"+p.y+":"+n,void 0===z[u]){k=b[n];for(B=0;B<k.length;B++)if(n=k[B],c(q,B)&&!d(p,n)&&!g(p,n)){l=B;m.splice(H,
-1);D=h.slice(0,q+1);n=h.slice(q);B=k.slice(l);G=k.slice(0,l+1);h=D.concat(B).concat(G).concat(n);D=q;break}if(0<=l)break;z[u]=!0}if(0<=l)break}}return h}(a,b);var p=Ga.triangulate(g,!1);g=0;for(h=p.length;g<h;g++)for(m=p[g],k=0;3>k;k++)l=m[k].x+":"+m[k].y,l=n[l],void 0!==l&&(m[k]=l);return p.concat()},isClockWise:function(a){return 0>Ga.area(a)}};cb.prototype=Object.create(J.prototype);cb.prototype.constructor=cb;La.prototype=Object.create(G.prototype);La.prototype.constructor=La;La.prototype.getArrays=
+a[e[h]],a[e[k]]]);f.push([e[g],e[h],e[k]]);g=h;for(k=h+1;k<c;g++,k++)e[g]=e[k];c--;m=2*c}}return b?f:d}}(),triangulateShape:function(a,b){function c(a){var b=a.length;2<b&&a[b-1].equals(a[0])&&a.pop()}function d(a,b,c){return a.x!==b.x?a.x<b.x?a.x<=c.x&&c.x<=b.x:b.x<=c.x&&c.x<=a.x:a.y<b.y?a.y<=c.y&&c.y<=b.y:b.y<=c.y&&c.y<=a.y}function e(a,b,c,e,f){var g=b.x-a.x,h=b.y-a.y,k=e.x-c.x,m=e.y-c.y,q=a.x-c.x,l=a.y-c.y,p=h*k-g*m,n=h*q-g*l;if(Math.abs(p)>Number.EPSILON){if(0<p){if(0>n||n>p)return[];k=m*q-k*
+l;if(0>k||k>p)return[]}else{if(0<n||n<p)return[];k=m*q-k*l;if(0<k||k<p)return[]}if(0===k)return!f||0!==n&&n!==p?[a]:[];if(k===p)return!f||0!==n&&n!==p?[b]:[];if(0===n)return[c];if(n===p)return[e];f=k/p;return[{x:a.x+f*g,y:a.y+f*h}]}if(0!==n||m*q!==k*l)return[];h=0===g&&0===h;k=0===k&&0===m;if(h&&k)return a.x!==c.x||a.y!==c.y?[]:[a];if(h)return d(c,e,a)?[a]:[];if(k)return d(a,b,c)?[c]:[];0!==g?(a.x<b.x?(g=a,k=a.x,h=b,a=b.x):(g=b,k=b.x,h=a,a=a.x),c.x<e.x?(b=c,p=c.x,m=e,c=e.x):(b=e,p=e.x,m=c,c=c.x)):
+(a.y<b.y?(g=a,k=a.y,h=b,a=b.y):(g=b,k=b.y,h=a,a=a.y),c.y<e.y?(b=c,p=c.y,m=e,c=e.y):(b=e,p=e.y,m=c,c=c.y));return k<=p?a<p?[]:a===p?f?[]:[b]:a<=c?[b,h]:[b,m]:k>c?[]:k===c?f?[]:[g]:a<=c?[g,h]:[g,m]}function f(a,b,c,d){var e=b.x-a.x,f=b.y-a.y;b=c.x-a.x;c=c.y-a.y;var g=d.x-a.x;d=d.y-a.y;a=e*c-f*b;e=e*d-f*g;return Math.abs(a)>Number.EPSILON?(b=g*c-d*b,0<a?0<=e&&0<=b:0<=e||0<=b):0<e}c(a);b.forEach(c);var g,h,k,m,q,l={};k=a.concat();g=0;for(h=b.length;g<h;g++)Array.prototype.push.apply(k,b[g]);g=0;for(h=
+k.length;g<h;g++)q=k[g].x+":"+k[g].y,void 0!==l[q]&&console.warn("THREE.ShapeUtils: Duplicate point",q,g),l[q]=g;g=function(a,b){function c(a,b){var d=h.length-1,e=a-1;0>e&&(e=d);var g=a+1;g>d&&(g=0);d=f(h[a],h[e],h[g],k[b]);if(!d)return!1;d=k.length-1;e=b-1;0>e&&(e=d);g=b+1;g>d&&(g=0);return(d=f(k[b],k[e],k[g],h[a]))?!0:!1}function d(a,b){var c,f;for(c=0;c<h.length;c++)if(f=c+1,f%=h.length,f=e(a,b,h[c],h[f],!0),0<f.length)return!0;return!1}function g(a,c){var d,f,h,k;for(d=0;d<m.length;d++)for(f=
+b[m[d]],h=0;h<f.length;h++)if(k=h+1,k%=f.length,k=e(a,c,f[h],f[k],!0),0<k.length)return!0;return!1}var h=a.concat(),k,m=[],q,l,p,n,u,z=[],D,B,G,H=0;for(q=b.length;H<q;H++)m.push(H);D=0;for(var R=2*m.length;0<m.length;){R--;if(0>R){console.log("Infinite Loop! Holes left:"+m.length+", Probably Hole outside Shape!");break}for(l=D;l<h.length;l++){p=h[l];q=-1;for(H=0;H<m.length;H++)if(n=m[H],u=p.x+":"+p.y+":"+n,void 0===z[u]){k=b[n];for(B=0;B<k.length;B++)if(n=k[B],c(l,B)&&!d(p,n)&&!g(p,n)){q=B;m.splice(H,
+1);D=h.slice(0,l+1);n=h.slice(l);B=k.slice(q);G=k.slice(0,q+1);h=D.concat(B).concat(G).concat(n);D=l;break}if(0<=q)break;z[u]=!0}if(0<=q)break}}return h}(a,b);var p=Ga.triangulate(g,!1);g=0;for(h=p.length;g<h;g++)for(m=p[g],k=0;3>k;k++)q=m[k].x+":"+m[k].y,q=l[q],void 0!==q&&(m[k]=q);return p.concat()},isClockWise:function(a){return 0>Ga.area(a)}};cb.prototype=Object.create(J.prototype);cb.prototype.constructor=cb;La.prototype=Object.create(G.prototype);La.prototype.constructor=La;La.prototype.getArrays=
 function(){var a=this.getAttribute("position"),a=a?Array.prototype.slice.call(a.array):[],b=this.getAttribute("uv"),b=b?Array.prototype.slice.call(b.array):[],c=this.index,c=c?Array.prototype.slice.call(c.array):[];return{position:a,uv:b,index:c}};La.prototype.addShapeList=function(a,b){var c=a.length;b.arrays=this.getArrays();for(var d=0;d<c;d++)this.addShape(a[d],b);this.setIndex(b.arrays.index);this.addAttribute("position",new B(b.arrays.position,3));this.addAttribute("uv",new B(b.arrays.uv,2))};
 La.prototype.addShape=function(a,b){function c(a,b,c){b||console.error("THREE.ExtrudeGeometry: vec does not exist");return b.clone().multiplyScalar(c).add(a)}function d(a,b,c){var d,e,f;e=a.x-b.x;f=a.y-b.y;d=c.x-a.x;var g=c.y-a.y,h=e*e+f*f;if(Math.abs(e*g-f*d)>Number.EPSILON){var k=Math.sqrt(h),m=Math.sqrt(d*d+g*g),h=b.x-f/k;b=b.y+e/k;g=((c.x-g/m-h)*g-(c.y+d/m-b)*d)/(e*g-f*d);d=h+e*g-a.x;e=b+f*g-a.y;f=d*d+e*e;if(2>=f)return new D(d,e);f=Math.sqrt(f/2)}else a=!1,e>Number.EPSILON?d>Number.EPSILON&&
-(a=!0):e<-Number.EPSILON?d<-Number.EPSILON&&(a=!0):Math.sign(f)===Math.sign(g)&&(a=!0),a?(d=-f,f=Math.sqrt(h)):(d=e,e=f,f=Math.sqrt(h/2));return new D(d/f,e/f)}function e(a,b){var c,d;for(O=a.length;0<=--O;){c=O;d=O-1;0>d&&(d=a.length-1);var e,f=E+2*y;for(e=0;e<f;e++){var g=Z*e,m=Z*(e+1),p=b+d+g,n=b+d+m,m=b+c+m;h(b+c+g);h(p);h(m);h(p);h(n);h(m);g=l.length/3;g=C.generateSideWallUV(Y,l,g-6,g-3,g-2,g-1);k(g[0]);k(g[1]);k(g[3]);k(g[1]);k(g[2]);k(g[3])}}}function f(a,b,c){r.push(a);r.push(b);r.push(c)}
-function g(a,b,c){h(a);h(b);h(c);a=l.length/3;a=C.generateTopUV(Y,l,a-3,a-2,a-1);k(a[0]);k(a[1]);k(a[2])}function h(a){u.push(l.length/3);l.push(r[3*a+0]);l.push(r[3*a+1]);l.push(r[3*a+2])}function k(a){p.push(a.x);p.push(a.y)}var m=b.arrays?b.arrays:this.getArrays(),l=m.position,u=m.index,p=m.uv,r=[],m=void 0!==b.amount?b.amount:100,z=void 0!==b.bevelThickness?b.bevelThickness:6,t=void 0!==b.bevelSize?b.bevelSize:z-2,y=void 0!==b.bevelSegments?b.bevelSegments:3,x=void 0!==b.bevelEnabled?b.bevelEnabled:
+(a=!0):e<-Number.EPSILON?d<-Number.EPSILON&&(a=!0):Math.sign(f)===Math.sign(g)&&(a=!0),a?(d=-f,f=Math.sqrt(h)):(d=e,e=f,f=Math.sqrt(h/2));return new D(d/f,e/f)}function e(a,b){var c,d;for(O=a.length;0<=--O;){c=O;d=O-1;0>d&&(d=a.length-1);var e,f=E+2*y;for(e=0;e<f;e++){var g=Z*e,m=Z*(e+1),l=b+d+g,p=b+d+m,m=b+c+m;h(b+c+g);h(l);h(m);h(l);h(p);h(m);g=q.length/3;g=C.generateSideWallUV(Y,q,g-6,g-3,g-2,g-1);k(g[0]);k(g[1]);k(g[3]);k(g[1]);k(g[2]);k(g[3])}}}function f(a,b,c){r.push(a);r.push(b);r.push(c)}
+function g(a,b,c){h(a);h(b);h(c);a=q.length/3;a=C.generateTopUV(Y,q,a-3,a-2,a-1);k(a[0]);k(a[1]);k(a[2])}function h(a){l.push(q.length/3);q.push(r[3*a+0]);q.push(r[3*a+1]);q.push(r[3*a+2])}function k(a){p.push(a.x);p.push(a.y)}var m=b.arrays?b.arrays:this.getArrays(),q=m.position,l=m.index,p=m.uv,r=[],m=void 0!==b.amount?b.amount:100,z=void 0!==b.bevelThickness?b.bevelThickness:6,t=void 0!==b.bevelSize?b.bevelSize:z-2,y=void 0!==b.bevelSegments?b.bevelSegments:3,x=void 0!==b.bevelEnabled?b.bevelEnabled:
 !0,v=void 0!==b.curveSegments?b.curveSegments:12,E=void 0!==b.steps?b.steps:1,w=b.extrudePath,M,G=!1,C=void 0!==b.UVGenerator?b.UVGenerator:cb.WorldUVGenerator,I,H,F,R;w&&(M=w.getSpacedPoints(E),G=!0,x=!1,I=void 0!==b.frames?b.frames:w.computeFrenetFrames(E,!1),H=new n,F=new n,R=new n);x||(t=z=y=0);var K,J,T,Y=this,w=a.extractPoints(v),v=w.shape,P=w.holes;if(!Ga.isClockWise(v))for(v=v.reverse(),J=0,T=P.length;J<T;J++)K=P[J],Ga.isClockWise(K)&&(P[J]=K.reverse());var L=Ga.triangulateShape(v,P),V=v;
 J=0;for(T=P.length;J<T;J++)K=P[J],v=v.concat(K);var aa,S,N,X,Q,Z=v.length,U,da=L.length,w=[],O=0;N=V.length;aa=N-1;for(S=O+1;O<N;O++,aa++,S++)aa===N&&(aa=0),S===N&&(S=0),w[O]=d(V[O],V[aa],V[S]);var ia=[],ga,ha=w.concat();J=0;for(T=P.length;J<T;J++){K=P[J];ga=[];O=0;N=K.length;aa=N-1;for(S=O+1;O<N;O++,aa++,S++)aa===N&&(aa=0),S===N&&(S=0),ga[O]=d(K[O],K[aa],K[S]);ia.push(ga);ha=ha.concat(ga)}for(aa=0;aa<y;aa++){N=aa/y;X=z*Math.cos(N*Math.PI/2);S=t*Math.sin(N*Math.PI/2);O=0;for(N=V.length;O<N;O++)Q=
 c(V[O],w[O],S),f(Q.x,Q.y,-X);J=0;for(T=P.length;J<T;J++)for(K=P[J],ga=ia[J],O=0,N=K.length;O<N;O++)Q=c(K[O],ga[O],S),f(Q.x,Q.y,-X)}S=t;for(O=0;O<Z;O++)Q=x?c(v[O],ha[O],S):v[O],G?(F.copy(I.normals[0]).multiplyScalar(Q.x),H.copy(I.binormals[0]).multiplyScalar(Q.y),R.copy(M[0]).add(F).add(H),f(R.x,R.y,R.z)):f(Q.x,Q.y,0);for(N=1;N<=E;N++)for(O=0;O<Z;O++)Q=x?c(v[O],ha[O],S):v[O],G?(F.copy(I.normals[N]).multiplyScalar(Q.x),H.copy(I.binormals[N]).multiplyScalar(Q.y),R.copy(M[N]).add(F).add(H),f(R.x,R.y,
-R.z)):f(Q.x,Q.y,m/E*N);for(aa=y-1;0<=aa;aa--){N=aa/y;X=z*Math.cos(N*Math.PI/2);S=t*Math.sin(N*Math.PI/2);O=0;for(N=V.length;O<N;O++)Q=c(V[O],w[O],S),f(Q.x,Q.y,m+X);J=0;for(T=P.length;J<T;J++)for(K=P[J],ga=ia[J],O=0,N=K.length;O<N;O++)Q=c(K[O],ga[O],S),G?f(Q.x,Q.y+M[E-1].y,M[E-1].x+X):f(Q.x,Q.y,m+X)}(function(){var a=l.length/3;if(x){var c=0*Z;for(O=0;O<da;O++)U=L[O],g(U[2]+c,U[1]+c,U[0]+c);c=Z*(E+2*y);for(O=0;O<da;O++)U=L[O],g(U[0]+c,U[1]+c,U[2]+c)}else{for(O=0;O<da;O++)U=L[O],g(U[2],U[1],U[0]);for(O=
-0;O<da;O++)U=L[O],g(U[0]+Z*E,U[1]+Z*E,U[2]+Z*E)}Y.addGroup(a,l.length/3-a,void 0!==b.material?b.material:0)})();(function(){var a=l.length/3,c=0;e(V,c);c+=V.length;J=0;for(T=P.length;J<T;J++)K=P[J],e(K,c),c+=K.length;Y.addGroup(a,l.length/3-a,void 0!==b.extrudeMaterial?b.extrudeMaterial:1)})();b.arrays||(this.setIndex(u),this.addAttribute("position",new B(l,3)),this.addAttribute("uv",new B(b.arrays.uv,2)))};cb.WorldUVGenerator={generateTopUV:function(a,b,c,d,e){a=b[3*d];d=b[3*d+1];var f=b[3*e];e=
+R.z)):f(Q.x,Q.y,m/E*N);for(aa=y-1;0<=aa;aa--){N=aa/y;X=z*Math.cos(N*Math.PI/2);S=t*Math.sin(N*Math.PI/2);O=0;for(N=V.length;O<N;O++)Q=c(V[O],w[O],S),f(Q.x,Q.y,m+X);J=0;for(T=P.length;J<T;J++)for(K=P[J],ga=ia[J],O=0,N=K.length;O<N;O++)Q=c(K[O],ga[O],S),G?f(Q.x,Q.y+M[E-1].y,M[E-1].x+X):f(Q.x,Q.y,m+X)}(function(){var a=q.length/3;if(x){var c=0*Z;for(O=0;O<da;O++)U=L[O],g(U[2]+c,U[1]+c,U[0]+c);c=Z*(E+2*y);for(O=0;O<da;O++)U=L[O],g(U[0]+c,U[1]+c,U[2]+c)}else{for(O=0;O<da;O++)U=L[O],g(U[2],U[1],U[0]);for(O=
+0;O<da;O++)U=L[O],g(U[0]+Z*E,U[1]+Z*E,U[2]+Z*E)}Y.addGroup(a,q.length/3-a,void 0!==b.material?b.material:0)})();(function(){var a=q.length/3,c=0;e(V,c);c+=V.length;J=0;for(T=P.length;J<T;J++)K=P[J],e(K,c),c+=K.length;Y.addGroup(a,q.length/3-a,void 0!==b.extrudeMaterial?b.extrudeMaterial:1)})();b.arrays||(this.setIndex(l),this.addAttribute("position",new B(q,3)),this.addAttribute("uv",new B(b.arrays.uv,2)))};cb.WorldUVGenerator={generateTopUV:function(a,b,c,d,e){a=b[3*d];d=b[3*d+1];var f=b[3*e];e=
 b[3*e+1];return[new D(b[3*c],b[3*c+1]),new D(a,d),new D(f,e)]},generateSideWallUV:function(a,b,c,d,e,f){a=b[3*c];var g=b[3*c+1];c=b[3*c+2];var h=b[3*d],k=b[3*d+1];d=b[3*d+2];var m=b[3*e],l=b[3*e+1];e=b[3*e+2];var n=b[3*f],p=b[3*f+1];b=b[3*f+2];return.01>Math.abs(g-k)?[new D(a,1-c),new D(h,1-d),new D(m,1-e),new D(n,1-b)]:[new D(g,1-c),new D(k,1-d),new D(l,1-e),new D(p,1-b)]}};Mc.prototype=Object.create(J.prototype);Mc.prototype.constructor=Mc;Vb.prototype=Object.create(La.prototype);Vb.prototype.constructor=
 Vb;Nc.prototype=Object.create(J.prototype);Nc.prototype.constructor=Nc;mb.prototype=Object.create(G.prototype);mb.prototype.constructor=mb;Oc.prototype=Object.create(J.prototype);Oc.prototype.constructor=Oc;Wb.prototype=Object.create(G.prototype);Wb.prototype.constructor=Wb;Pc.prototype=Object.create(J.prototype);Pc.prototype.constructor=Pc;Xb.prototype=Object.create(G.prototype);Xb.prototype.constructor=Xb;Yb.prototype=Object.create(J.prototype);Yb.prototype.constructor=Yb;Zb.prototype=Object.create(G.prototype);
 Zb.prototype.constructor=Zb;$b.prototype=Object.create(G.prototype);$b.prototype.constructor=$b;nb.prototype=Object.create(J.prototype);nb.prototype.constructor=nb;Va.prototype=Object.create(G.prototype);Va.prototype.constructor=Va;Qc.prototype=Object.create(nb.prototype);Qc.prototype.constructor=Qc;Rc.prototype=Object.create(Va.prototype);Rc.prototype.constructor=Rc;Sc.prototype=Object.create(J.prototype);Sc.prototype.constructor=Sc;ac.prototype=Object.create(G.prototype);ac.prototype.constructor=
@@ -724,8 +724,8 @@ p:z[0]});if(!n[0])return c(f);if(1<n.length){t=!1;h=[];e=0;for(f=n.length;e<f;e+
 100);void 0===c&&(c=4);var d=this.data;a=String(a).split("");var e=b/d.resolution,f=(d.boundingBox.yMax-d.boundingBox.yMin+d.underlineThickness)*e,g=0,h=0;b=[];for(var k=0;k<a.length;k++){var m=a[k];if("\n"===m)g=0,h-=f;else{var l;l=e;var n=g,p=h;if(m=d.glyphs[m]||d.glyphs["?"]){var r=new ce,z=[],t,y,x,v,B,w,D,G;if(m.o)for(var C=m._cachedOutline||(m._cachedOutline=m.o.split(" ")),I=0,H=C.length;I<H;)switch(C[I++]){case "m":t=C[I++]*l+n;y=C[I++]*l+p;r.moveTo(t,y);break;case "l":t=C[I++]*l+n;y=C[I++]*
 l+p;r.lineTo(t,y);break;case "q":t=C[I++]*l+n;y=C[I++]*l+p;B=C[I++]*l+n;w=C[I++]*l+p;r.quadraticCurveTo(B,w,t,y);if(v=z[z.length-1]){x=v.x;v=v.y;for(var F=1;F<=c;F++){var J=F/c;wb(J,x,B,t);wb(J,v,w,y)}}break;case "b":if(t=C[I++]*l+n,y=C[I++]*l+p,B=C[I++]*l+n,w=C[I++]*l+p,D=C[I++]*l+n,G=C[I++]*l+p,r.bezierCurveTo(B,w,D,G,t,y),v=z[z.length-1])for(x=v.x,v=v.y,F=1;F<=c;F++)J=F/c,xb(J,x,B,D,t),xb(J,v,w,G,y)}l={offsetX:m.ha*l,path:r}}else l=void 0;g+=l.offsetX;b.push(l.path)}}c=[];d=0;for(a=b.length;d<
 a;d++)Array.prototype.push.apply(c,b[d].toShapes());return c}});Object.assign(Se.prototype,{load:function(a,b,c,d){var e=this;(new sa(this.manager)).load(a,function(a){var c;try{c=JSON.parse(a)}catch(d){console.warn("THREE.FontLoader: typeface.js support is being deprecated. Use typeface.json instead."),c=JSON.parse(a.substring(65,a.length-2))}a=e.parse(c);b&&b(a)},c,d)},parse:function(a){return new de(a)}});var Nd,he={getContext:function(){void 0===Nd&&(Nd=new (window.AudioContext||window.webkitAudioContext));
-return Nd},setContext:function(a){Nd=a}};Object.assign(ee.prototype,{load:function(a,b,c,d){var e=new sa(this.manager);e.setResponseType("arraybuffer");e.load(a,function(a){he.getContext().decodeAudioData(a,function(a){b(a)})},c,d)}});Object.assign(Te.prototype,{update:function(){var a,b,c,d,e,f,g,h,k=new R,l=new R;return function(n){if(a!==this||b!==n.focus||c!==n.fov||d!==n.aspect*this.aspect||e!==n.near||f!==n.far||g!==n.zoom||h!==this.eyeSep){a=this;b=n.focus;c=n.fov;d=n.aspect*this.aspect;e=
-n.near;f=n.far;g=n.zoom;var u=n.projectionMatrix.clone();h=this.eyeSep/2;var p=h*e/b,r=e*Math.tan(X.DEG2RAD*c*.5)/g,z,t;l.elements[12]=-h;k.elements[12]=h;z=-r*d+p;t=r*d+p;u.elements[0]=2*e/(t-z);u.elements[8]=(t+z)/(t-z);this.cameraL.projectionMatrix.copy(u);z=-r*d-p;t=r*d-p;u.elements[0]=2*e/(t-z);u.elements[8]=(t+z)/(t-z);this.cameraR.projectionMatrix.copy(u)}this.cameraL.matrixWorld.copy(n.matrixWorld).multiply(l);this.cameraR.matrixWorld.copy(n.matrixWorld).multiply(k)}}()});Hd.prototype=Object.create(z.prototype);
+return Nd},setContext:function(a){Nd=a}};Object.assign(ee.prototype,{load:function(a,b,c,d){var e=new sa(this.manager);e.setResponseType("arraybuffer");e.load(a,function(a){he.getContext().decodeAudioData(a,function(a){b(a)})},c,d)}});Object.assign(Te.prototype,{update:function(){var a,b,c,d,e,f,g,h,k=new R,m=new R;return function(l){if(a!==this||b!==l.focus||c!==l.fov||d!==l.aspect*this.aspect||e!==l.near||f!==l.far||g!==l.zoom||h!==this.eyeSep){a=this;b=l.focus;c=l.fov;d=l.aspect*this.aspect;e=
+l.near;f=l.far;g=l.zoom;var n=l.projectionMatrix.clone();h=this.eyeSep/2;var p=h*e/b,r=e*Math.tan(X.DEG2RAD*c*.5)/g,z,t;m.elements[12]=-h;k.elements[12]=h;z=-r*d+p;t=r*d+p;n.elements[0]=2*e/(t-z);n.elements[8]=(t+z)/(t-z);this.cameraL.projectionMatrix.copy(n);z=-r*d-p;t=r*d-p;n.elements[0]=2*e/(t-z);n.elements[8]=(t+z)/(t-z);this.cameraR.projectionMatrix.copy(n)}this.cameraL.matrixWorld.copy(l.matrixWorld).multiply(m);this.cameraR.matrixWorld.copy(l.matrixWorld).multiply(k)}}()});Hd.prototype=Object.create(z.prototype);
 Hd.prototype.constructor=Hd;fe.prototype=Object.assign(Object.create(xa.prototype),{constructor:fe,isArrayCamera:!0});ge.prototype=Object.assign(Object.create(z.prototype),{constructor:ge,getInput:function(){return this.gain},removeFilter:function(){null!==this.filter&&(this.gain.disconnect(this.filter),this.filter.disconnect(this.context.destination),this.gain.connect(this.context.destination),this.filter=null)},getFilter:function(){return this.filter},setFilter:function(a){null!==this.filter?(this.gain.disconnect(this.filter),
 this.filter.disconnect(this.context.destination)):this.gain.disconnect(this.context.destination);this.filter=a;this.gain.connect(this.filter);this.filter.connect(this.context.destination)},getMasterVolume:function(){return this.gain.gain.value},setMasterVolume:function(a){this.gain.gain.value=a},updateMatrixWorld:function(){var a=new n,b=new pa,c=new n,d=new n;return function(e){z.prototype.updateMatrixWorld.call(this,e);e=this.context.listener;var f=this.up;this.matrixWorld.decompose(a,b,c);d.set(0,
 0,-1).applyQuaternion(b);e.positionX?(e.positionX.setValueAtTime(a.x,this.context.currentTime),e.positionY.setValueAtTime(a.y,this.context.currentTime),e.positionZ.setValueAtTime(a.z,this.context.currentTime),e.forwardX.setValueAtTime(d.x,this.context.currentTime),e.forwardY.setValueAtTime(d.y,this.context.currentTime),e.forwardZ.setValueAtTime(d.z,this.context.currentTime),e.upX.setValueAtTime(f.x,this.context.currentTime),e.upY.setValueAtTime(f.y,this.context.currentTime),e.upZ.setValueAtTime(f.z,

+ 43 - 37
build/three.module.js

@@ -21330,27 +21330,33 @@ function WebGLRenderer( parameters ) {
 
 		}
 
-		//
+		// render scene
 
-		var opaqueObjects = currentRenderList.opaque;
-		var transparentObjects = currentRenderList.transparent;
+		if ( camera.isArrayCamera ) {
 
-		if ( scene.overrideMaterial ) {
+			var cameras = camera.cameras;
 
-			var overrideMaterial = scene.overrideMaterial;
+			for ( var j = 0, jl = cameras.length; j < jl; j ++ ) {
 
-			if ( opaqueObjects.length ) renderObjects( opaqueObjects, scene, camera, overrideMaterial );
-			if ( transparentObjects.length ) renderObjects( transparentObjects, scene, camera, overrideMaterial );
+				var camera2 = cameras[ j ];
+				var bounds = camera2.bounds;
 
-		} else {
+				var x = bounds.x * _width;
+				var y = bounds.y * _height;
+				var width = bounds.z * _width;
+				var height = bounds.w * _height;
 
-			// opaque pass (front-to-back order)
+				_this.setViewport( x, y, width, height );
+				_this.setScissor( x, y, width, height );
+				_this.setScissorTest( true );
 
-			if ( opaqueObjects.length ) renderObjects( opaqueObjects, scene, camera );
+				renderScene( currentRenderList, scene, camera );
 
-			// transparent pass (back-to-front order)
+			}
 
-			if ( transparentObjects.length ) renderObjects( transparentObjects, scene, camera );
+		} else {
+
+			renderScene( currentRenderList, scene, camera );
 
 		}
 
@@ -21538,46 +21544,46 @@ function WebGLRenderer( parameters ) {
 
 	}
 
-	function renderObjects( renderList, scene, camera, overrideMaterial ) {
+	function renderScene( renderList, scene, camera ) {
 
-		for ( var i = 0, l = renderList.length; i < l; i ++ ) {
+		var opaqueObjects = renderList.opaque;
+		var transparentObjects = renderList.transparent;
 
-			var renderItem = renderList[ i ];
+		if ( scene.overrideMaterial ) {
 
-			var object = renderItem.object;
-			var geometry = renderItem.geometry;
-			var material = overrideMaterial === undefined ? renderItem.material : overrideMaterial;
-			var group = renderItem.group;
+			var overrideMaterial = scene.overrideMaterial;
 
-			object.onBeforeRender( _this, scene, camera, geometry, material, group );
+			if ( opaqueObjects.length ) renderObjects( opaqueObjects, scene, camera, overrideMaterial );
+			if ( transparentObjects.length ) renderObjects( transparentObjects, scene, camera, overrideMaterial );
+
+		} else {
 
-			if ( camera.isArrayCamera ) {
+			// opaque pass (front-to-back order)
 
-				var cameras = camera.cameras;
+			if ( opaqueObjects.length ) renderObjects( opaqueObjects, scene, camera );
 
-				for ( var j = 0, jl = cameras.length; j < jl; j ++ ) {
+			// transparent pass (back-to-front order)
+
+			if ( transparentObjects.length ) renderObjects( transparentObjects, scene, camera );
 
-					var camera2 = cameras[ j ];
-					var bounds = camera2.bounds;
+		}
 
-					var x = bounds.x * _width;
-					var y = bounds.y * _height;
-					var width = bounds.z * _width;
-					var height = bounds.w * _height;
+	}
 
-					_this.setViewport( x, y, width, height );
-					_this.setScissor( x, y, width, height );
-					_this.setScissorTest( true );
+	function renderObjects( renderItems, scene, camera, overrideMaterial ) {
 
-					renderObject( object, scene, camera2, geometry, material, group );
+		for ( var i = 0, l = renderItems.length; i < l; i ++ ) {
 
-				}
+			var renderItem = renderItems[ i ];
 
-			} else {
+			var object = renderItem.object;
+			var geometry = renderItem.geometry;
+			var material = overrideMaterial === undefined ? renderItem.material : overrideMaterial;
+			var group = renderItem.group;
 
-				renderObject( object, scene, camera, geometry, material, group );
+			object.onBeforeRender( _this, scene, camera, geometry, material, group );
 
-			}
+			renderObject( object, scene, camera, geometry, material, group );
 
 			object.onAfterRender( _this, scene, camera, geometry, material, group );