Browse Source

Updated builds.

Mr.doob 10 years ago
parent
commit
d3be2c6443
2 changed files with 114 additions and 100 deletions
  1. 18 4
      build/three.js
  2. 96 96
      build/three.min.js

+ 18 - 4
build/three.js

@@ -151,6 +151,7 @@ THREE.UnsignedShortType = 1012;
 THREE.IntType = 1013;
 THREE.UnsignedIntType = 1014;
 THREE.FloatType = 1015;
+THREE.HalfFloatType = 1025;
 
 // Pixel types
 
@@ -17757,6 +17758,8 @@ THREE.WebGLRenderer = function ( parameters ) {
 
 	extensions.get( 'OES_texture_float' );
 	extensions.get( 'OES_texture_float_linear' );
+	extensions.get( 'OES_texture_half_float' );
+	extensions.get( 'OES_texture_half_float_linear' );
 	extensions.get( 'OES_standard_derivatives' );
 
 	if ( _logarithmicDepthBuffer ) {
@@ -17942,6 +17945,12 @@ THREE.WebGLRenderer = function ( parameters ) {
 
 	};
 
+	this.supportsHalfFloatTextures = function () {
+
+		return extensions.get( 'OES_texture_half_float' );
+
+	};
+
 	this.supportsStandardDerivatives = function () {
 
 		return extensions.get( 'OES_standard_derivatives' );
@@ -23174,7 +23183,7 @@ THREE.WebGLRenderer = function ( parameters ) {
 
 		extension = extensions.get( 'EXT_texture_filter_anisotropic' );
 
-		if ( extension && texture.type !== THREE.FloatType ) {
+		if ( extension && texture.type !== THREE.FloatType && texture.type !== THREE.HalfFloatType ) {
 
 			if ( texture.anisotropy > 1 || texture.__oldAnisotropy ) {
 
@@ -23759,6 +23768,14 @@ THREE.WebGLRenderer = function ( parameters ) {
 		if ( p === THREE.UnsignedIntType ) return _gl.UNSIGNED_INT;
 		if ( p === THREE.FloatType ) return _gl.FLOAT;
 
+		extension = extensions.get( 'OES_texture_half_float' );
+
+		if ( extension !== null ) {
+
+			if ( p === THREE.HalfFloatType ) return extension.HALF_FLOAT_OES;
+
+		}
+
 		if ( p === THREE.AlphaFormat ) return _gl.ALPHA;
 		if ( p === THREE.RGBFormat ) return _gl.RGB;
 		if ( p === THREE.RGBAFormat ) return _gl.RGBA;
@@ -27053,12 +27070,10 @@ THREE.Curve.prototype.getUtoTmapping = function ( u, distance ) {
 		if ( comparison < 0 ) {
 
 			low = i + 1;
-			continue;
 
 		} else if ( comparison > 0 ) {
 
 			high = i - 1;
-			continue;
 
 		} else {
 
@@ -27282,7 +27297,6 @@ THREE.CurvePath.prototype.getPoint = function( t ) {
 
 			return curve.getPointAt( u );
 
-			break;
 		}
 
 		i ++;

+ 96 - 96
build/three.min.js

@@ -2,8 +2,8 @@
 'use strict';var THREE={REVISION:"71dev"};"object"===typeof module&&(module.exports=THREE);void 0===Math.sign&&(Math.sign=function(a){return 0>a?-1:0<a?1:0});THREE.MOUSE={LEFT:0,MIDDLE:1,RIGHT:2};THREE.CullFaceNone=0;THREE.CullFaceBack=1;THREE.CullFaceFront=2;THREE.CullFaceFrontBack=3;THREE.FrontFaceDirectionCW=0;THREE.FrontFaceDirectionCCW=1;THREE.BasicShadowMap=0;THREE.PCFShadowMap=1;THREE.PCFSoftShadowMap=2;THREE.FrontSide=0;THREE.BackSide=1;THREE.DoubleSide=2;THREE.NoShading=0;
 THREE.FlatShading=1;THREE.SmoothShading=2;THREE.NoColors=0;THREE.FaceColors=1;THREE.VertexColors=2;THREE.NoBlending=0;THREE.NormalBlending=1;THREE.AdditiveBlending=2;THREE.SubtractiveBlending=3;THREE.MultiplyBlending=4;THREE.CustomBlending=5;THREE.AddEquation=100;THREE.SubtractEquation=101;THREE.ReverseSubtractEquation=102;THREE.MinEquation=103;THREE.MaxEquation=104;THREE.ZeroFactor=200;THREE.OneFactor=201;THREE.SrcColorFactor=202;THREE.OneMinusSrcColorFactor=203;THREE.SrcAlphaFactor=204;
 THREE.OneMinusSrcAlphaFactor=205;THREE.DstAlphaFactor=206;THREE.OneMinusDstAlphaFactor=207;THREE.DstColorFactor=208;THREE.OneMinusDstColorFactor=209;THREE.SrcAlphaSaturateFactor=210;THREE.MultiplyOperation=0;THREE.MixOperation=1;THREE.AddOperation=2;THREE.UVMapping=300;THREE.CubeReflectionMapping=301;THREE.CubeRefractionMapping=302;THREE.EquirectangularReflectionMapping=303;THREE.EquirectangularRefractionMapping=304;THREE.SphericalReflectionMapping=305;THREE.RepeatWrapping=1E3;
-THREE.ClampToEdgeWrapping=1001;THREE.MirroredRepeatWrapping=1002;THREE.NearestFilter=1003;THREE.NearestMipMapNearestFilter=1004;THREE.NearestMipMapLinearFilter=1005;THREE.LinearFilter=1006;THREE.LinearMipMapNearestFilter=1007;THREE.LinearMipMapLinearFilter=1008;THREE.UnsignedByteType=1009;THREE.ByteType=1010;THREE.ShortType=1011;THREE.UnsignedShortType=1012;THREE.IntType=1013;THREE.UnsignedIntType=1014;THREE.FloatType=1015;THREE.UnsignedShort4444Type=1016;THREE.UnsignedShort5551Type=1017;
-THREE.UnsignedShort565Type=1018;THREE.AlphaFormat=1019;THREE.RGBFormat=1020;THREE.RGBAFormat=1021;THREE.LuminanceFormat=1022;THREE.LuminanceAlphaFormat=1023;THREE.RGBEFormat=THREE.RGBAFormat;THREE.RGB_S3TC_DXT1_Format=2001;THREE.RGBA_S3TC_DXT1_Format=2002;THREE.RGBA_S3TC_DXT3_Format=2003;THREE.RGBA_S3TC_DXT5_Format=2004;THREE.RGB_PVRTC_4BPPV1_Format=2100;THREE.RGB_PVRTC_2BPPV1_Format=2101;THREE.RGBA_PVRTC_4BPPV1_Format=2102;THREE.RGBA_PVRTC_2BPPV1_Format=2103;
+THREE.ClampToEdgeWrapping=1001;THREE.MirroredRepeatWrapping=1002;THREE.NearestFilter=1003;THREE.NearestMipMapNearestFilter=1004;THREE.NearestMipMapLinearFilter=1005;THREE.LinearFilter=1006;THREE.LinearMipMapNearestFilter=1007;THREE.LinearMipMapLinearFilter=1008;THREE.UnsignedByteType=1009;THREE.ByteType=1010;THREE.ShortType=1011;THREE.UnsignedShortType=1012;THREE.IntType=1013;THREE.UnsignedIntType=1014;THREE.FloatType=1015;THREE.HalfFloatType=1025;THREE.UnsignedShort4444Type=1016;
+THREE.UnsignedShort5551Type=1017;THREE.UnsignedShort565Type=1018;THREE.AlphaFormat=1019;THREE.RGBFormat=1020;THREE.RGBAFormat=1021;THREE.LuminanceFormat=1022;THREE.LuminanceAlphaFormat=1023;THREE.RGBEFormat=THREE.RGBAFormat;THREE.RGB_S3TC_DXT1_Format=2001;THREE.RGBA_S3TC_DXT1_Format=2002;THREE.RGBA_S3TC_DXT3_Format=2003;THREE.RGBA_S3TC_DXT5_Format=2004;THREE.RGB_PVRTC_4BPPV1_Format=2100;THREE.RGB_PVRTC_2BPPV1_Format=2101;THREE.RGBA_PVRTC_4BPPV1_Format=2102;THREE.RGBA_PVRTC_2BPPV1_Format=2103;
 THREE.Projector=function(){console.error("THREE.Projector has been moved to /examples/js/renderers/Projector.js.");this.projectVector=function(a,b){console.warn("THREE.Projector: .projectVector() is now vector.project().");a.project(b)};this.unprojectVector=function(a,b){console.warn("THREE.Projector: .unprojectVector() is now vector.unproject().");a.unproject(b)};this.pickingRay=function(a,b){console.error("THREE.Projector: .pickingRay() is now raycaster.setFromCamera().")}};
 THREE.CanvasRenderer=function(){console.error("THREE.CanvasRenderer has been moved to /examples/js/renderers/CanvasRenderer.js");this.domElement=document.createElement("canvas");this.clear=function(){};this.render=function(){};this.setClearColor=function(){};this.setSize=function(){}};THREE.Color=function(a){return 3===arguments.length?this.setRGB(arguments[0],arguments[1],arguments[2]):this.set(a)};
 THREE.Color.prototype={constructor:THREE.Color,r:1,g:1,b:1,set:function(a){a instanceof THREE.Color?this.copy(a):"number"===typeof a?this.setHex(a):"string"===typeof a&&this.setStyle(a);return this},setHex:function(a){a=Math.floor(a);this.r=(a>>16&255)/255;this.g=(a>>8&255)/255;this.b=(a&255)/255;return this},setRGB:function(a,b,c){this.r=a;this.g=b;this.b=c;return this},setHSL:function(a,b,c){if(0===b)this.r=this.g=this.b=c;else{var d=function(a,b,c){0>c&&(c+=1);1<c&&(c-=1);return c<1/6?a+6*(b-a)*
@@ -435,61 +435,61 @@ THREE.ShaderChunk.logdepthbuf_vertex,"}"].join("\n"),fragmentShader:["uniform sa
 THREE.ShaderChunk.logdepthbuf_fragment,"\t#ifdef USE_LOGDEPTHBUF_EXT\n\t\tgl_FragData[ 0 ] = pack_depth( gl_FragDepthEXT );\n\t#else\n\t\tgl_FragData[ 0 ] = pack_depth( gl_FragCoord.z );\n\t#endif\n}"].join("\n")}};
 THREE.WebGLRenderer=function(a){function b(a){var b=a.geometry;a=a.material;var c=b.vertices.length;if(a.attributes){void 0===b.__webglCustomAttributesList&&(b.__webglCustomAttributesList=[]);for(var d in a.attributes){var e=a.attributes[d];if(!e.__webglInitialized||e.createUniqueBuffers){e.__webglInitialized=!0;var f=1;"v2"===e.type?f=2:"v3"===e.type?f=3:"v4"===e.type?f=4:"c"===e.type&&(f=3);e.size=f;e.array=new Float32Array(c*f);e.buffer=l.createBuffer();e.buffer.belongsToAttribute=d;e.needsUpdate=
 !0}b.__webglCustomAttributesList.push(e)}}}function c(a,b){return a.material instanceof THREE.MeshFaceMaterial?a.material.materials[b.materialIndex]:a.material}function d(a,b,c,d){c=c.attributes;var e=b.attributes;b=b.attributesKeys;for(var h=0,k=b.length;h<k;h++){var m=b[h],p=e[m];if(0<=p){var n=c[m];void 0!==n?(m=n.itemSize,l.bindBuffer(l.ARRAY_BUFFER,n.buffer),f(p),l.vertexAttribPointer(p,m,l.FLOAT,!1,0,d*m*4)):void 0!==a.defaultAttributeValues&&(2===a.defaultAttributeValues[m].length?l.vertexAttrib2fv(p,
-a.defaultAttributeValues[m]):3===a.defaultAttributeValues[m].length&&l.vertexAttrib3fv(p,a.defaultAttributeValues[m]))}}g()}function e(){for(var a=0,b=ub.length;a<b;a++)ub[a]=0}function f(a){ub[a]=1;0===Qa[a]&&(l.enableVertexAttribArray(a),Qa[a]=1)}function g(){for(var a=0,b=Qa.length;a<b;a++)Qa[a]!==ub[a]&&(l.disableVertexAttribArray(a),Qa[a]=0)}function h(a,b){return 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 k(a,b){return a.z!==b.z?b.z-a.z:a.id-
+a.defaultAttributeValues[m]):3===a.defaultAttributeValues[m].length&&l.vertexAttrib3fv(p,a.defaultAttributeValues[m]))}}g()}function e(){for(var a=0,b=ub.length;a<b;a++)ub[a]=0}function f(a){ub[a]=1;0===Ra[a]&&(l.enableVertexAttribArray(a),Ra[a]=1)}function g(){for(var a=0,b=Ra.length;a<b;a++)Ra[a]!==ub[a]&&(l.disableVertexAttribArray(a),Ra[a]=0)}function h(a,b){return 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 k(a,b){return a.z!==b.z?b.z-a.z:a.id-
 b.id}function p(a,b){return b[0]-a[0]}function n(a){if(!1!==a.visible){if(!(a instanceof THREE.Scene||a instanceof THREE.Group)){void 0===a.__webglInit&&(a.__webglInit=!0,a._modelViewMatrix=new THREE.Matrix4,a._normalMatrix=new THREE.Matrix3,a.addEventListener("removed",kc));var c=a.geometry;if(void 0!==c&&void 0===c.__webglInit)if(c.__webglInit=!0,c.addEventListener("dispose",lc),c instanceof THREE.BufferGeometry)B.info.memory.geometries++;else if(a instanceof THREE.Mesh)t(a,c);else if(a instanceof
 THREE.Line){if(void 0===c.__webglVertexBuffer){c.__webglVertexBuffer=l.createBuffer();c.__webglColorBuffer=l.createBuffer();c.__webglLineDistanceBuffer=l.createBuffer();B.info.memory.geometries++;var d=c.vertices.length;c.__vertexArray=new Float32Array(3*d);c.__colorArray=new Float32Array(3*d);c.__lineDistanceArray=new Float32Array(1*d);c.__webglLineCount=d;b(a);c.verticesNeedUpdate=!0;c.colorsNeedUpdate=!0;c.lineDistancesNeedUpdate=!0}}else a instanceof THREE.PointCloud&&void 0===c.__webglVertexBuffer&&
 (c.__webglVertexBuffer=l.createBuffer(),c.__webglColorBuffer=l.createBuffer(),B.info.memory.geometries++,d=c.vertices.length,c.__vertexArray=new Float32Array(3*d),c.__colorArray=new Float32Array(3*d),c.__sortArray=[],c.__webglParticleCount=d,b(a),c.verticesNeedUpdate=!0,c.colorsNeedUpdate=!0);if(void 0===a.__webglActive)if(a.__webglActive=!0,a instanceof THREE.Mesh)if(c instanceof THREE.BufferGeometry)r(za,c,a);else{if(c instanceof THREE.Geometry)for(var c=ib[c.id],d=0,e=c.length;d<e;d++)r(za,c[d],
-a)}else a instanceof THREE.Line||a instanceof THREE.PointCloud?r(za,c,a):(a instanceof THREE.ImmediateRenderObject||a.immediateRenderCallback)&&La.push({id:null,object:a,opaque:null,transparent:null,z:0});if(a instanceof THREE.Light)ya.push(a);else if(a instanceof THREE.Sprite)Ea.push(a);else if(a instanceof THREE.LensFlare)qb.push(a);else if((c=za[a.id])&&(!1===a.frustumCulled||!0===vb.intersectsObject(a)))for(d=0,e=c.length;d<e;d++){var f=c[d],g=f,h=g.object,k=g.buffer,m=h.geometry,h=h.material;
-h instanceof THREE.MeshFaceMaterial?(h=h.materials[m instanceof THREE.BufferGeometry?0:k.materialIndex],g.material=h,h.transparent?Ra.push(g):Sa.push(g)):h&&(g.material=h,h.transparent?Ra.push(g):Sa.push(g));f.render=!0;!0===B.sortObjects&&(Ca.setFromMatrixPosition(a.matrixWorld),Ca.applyProjection(wb),f.z=Ca.z)}}d=0;for(e=a.children.length;d<e;d++)n(a.children[d])}}function q(a,b,c,d,e,f){for(var g,h=0,l=a.length;h<l;h++){g=a[h];var k=g.object,m=g.buffer;A(k,b);if(f)g=f;else{g=g.material;if(!g)continue;
+a)}else a instanceof THREE.Line||a instanceof THREE.PointCloud?r(za,c,a):(a instanceof THREE.ImmediateRenderObject||a.immediateRenderCallback)&&Ma.push({id:null,object:a,opaque:null,transparent:null,z:0});if(a instanceof THREE.Light)ya.push(a);else if(a instanceof THREE.Sprite)Ea.push(a);else if(a instanceof THREE.LensFlare)qb.push(a);else if((c=za[a.id])&&(!1===a.frustumCulled||!0===vb.intersectsObject(a)))for(d=0,e=c.length;d<e;d++){var f=c[d],g=f,h=g.object,k=g.buffer,m=h.geometry,h=h.material;
+h instanceof THREE.MeshFaceMaterial?(h=h.materials[m instanceof THREE.BufferGeometry?0:k.materialIndex],g.material=h,h.transparent?Sa.push(g):Fa.push(g)):h&&(g.material=h,h.transparent?Sa.push(g):Fa.push(g));f.render=!0;!0===B.sortObjects&&(Ca.setFromMatrixPosition(a.matrixWorld),Ca.applyProjection(wb),f.z=Ca.z)}}d=0;for(e=a.children.length;d<e;d++)n(a.children[d])}}function q(a,b,c,d,e,f){for(var g,h=0,l=a.length;h<l;h++){g=a[h];var k=g.object,m=g.buffer;A(k,b);if(f)g=f;else{g=g.material;if(!g)continue;
 e&&B.setBlending(g.blending,g.blendEquation,g.blendSrc,g.blendDst,g.blendEquationAlpha,g.blendSrcAlpha,g.blendDstAlpha);B.setDepthTest(g.depthTest);B.setDepthWrite(g.depthWrite);E(g.polygonOffset,g.polygonOffsetFactor,g.polygonOffsetUnits)}B.setMaterialFaces(g);m instanceof THREE.BufferGeometry?B.renderBufferDirect(b,c,d,g,m,k):B.renderBuffer(b,c,d,g,m,k)}}function m(a,b,c,d,e,f,g){for(var h,l=0,k=a.length;l<k;l++){h=a[l];var m=h.object;if(m.visible){if(g)h=g;else{h=h[b];if(!h)continue;f&&B.setBlending(h.blending,
 h.blendEquation,h.blendSrc,h.blendDst,h.blendEquationAlpha,h.blendSrcAlpha,h.blendDstAlpha);B.setDepthTest(h.depthTest);B.setDepthWrite(h.depthWrite);E(h.polygonOffset,h.polygonOffsetFactor,h.polygonOffsetUnits)}B.renderImmediateObject(c,d,e,h,m)}}}function s(a){var b=a.object.material;b.transparent?(a.transparent=b,a.opaque=null):(a.opaque=b,a.transparent=null)}function t(a,b){var d=a.material,e=!1;if(void 0===ib[b.id]||!0===b.groupsNeedUpdate){delete za[a.id];for(var f=ib,g=b.id,d=d instanceof THREE.MeshFaceMaterial,
-h=aa.get("OES_element_index_uint")?4294967296:65535,k,e={},m=b.morphTargets.length,p=b.morphNormals.length,n,q={},s=[],t=0,u=b.faces.length;t<u;t++){k=b.faces[t];var v=d?k.materialIndex:0;v in e||(e[v]={hash:v,counter:0});k=e[v].hash+"_"+e[v].counter;k in q||(n={id:mc++,faces3:[],materialIndex:v,vertices:0,numMorphTargets:m,numMorphNormals:p},q[k]=n,s.push(n));q[k].vertices+3>h&&(e[v].counter+=1,k=e[v].hash+"_"+e[v].counter,k in q||(n={id:mc++,faces3:[],materialIndex:v,vertices:0,numMorphTargets:m,
+h=$.get("OES_element_index_uint")?4294967296:65535,k,e={},m=b.morphTargets.length,p=b.morphNormals.length,n,q={},s=[],t=0,u=b.faces.length;t<u;t++){k=b.faces[t];var v=d?k.materialIndex:0;v in e||(e[v]={hash:v,counter:0});k=e[v].hash+"_"+e[v].counter;k in q||(n={id:mc++,faces3:[],materialIndex:v,vertices:0,numMorphTargets:m,numMorphNormals:p},q[k]=n,s.push(n));q[k].vertices+3>h&&(e[v].counter+=1,k=e[v].hash+"_"+e[v].counter,k in q||(n={id:mc++,faces3:[],materialIndex:v,vertices:0,numMorphTargets:m,
 numMorphNormals:p},q[k]=n,s.push(n)));q[k].faces3.push(t);q[k].vertices+=3}f[g]=s;b.groupsNeedUpdate=!1}f=ib[b.id];g=0;for(d=f.length;g<d;g++){h=f[g];if(void 0===h.__webglVertexBuffer){e=h;e.__webglVertexBuffer=l.createBuffer();e.__webglNormalBuffer=l.createBuffer();e.__webglTangentBuffer=l.createBuffer();e.__webglColorBuffer=l.createBuffer();e.__webglUVBuffer=l.createBuffer();e.__webglUV2Buffer=l.createBuffer();e.__webglSkinIndicesBuffer=l.createBuffer();e.__webglSkinWeightsBuffer=l.createBuffer();
 e.__webglFaceBuffer=l.createBuffer();e.__webglLineBuffer=l.createBuffer();if(p=e.numMorphTargets)for(e.__webglMorphTargetsBuffers=[],m=0;m<p;m++)e.__webglMorphTargetsBuffers.push(l.createBuffer());if(p=e.numMorphNormals)for(e.__webglMorphNormalsBuffers=[],m=0;m<p;m++)e.__webglMorphNormalsBuffers.push(l.createBuffer());B.info.memory.geometries++;e=h;t=a;u=t.geometry;p=e.faces3;m=3*p.length;q=1*p.length;s=3*p.length;p=c(t,e);e.__vertexArray=new Float32Array(3*m);e.__normalArray=new Float32Array(3*m);
-e.__colorArray=new Float32Array(3*m);e.__uvArray=new Float32Array(2*m);1<u.faceVertexUvs.length&&(e.__uv2Array=new Float32Array(2*m));u.hasTangents&&(e.__tangentArray=new Float32Array(4*m));t.geometry.skinWeights.length&&t.geometry.skinIndices.length&&(e.__skinIndexArray=new Float32Array(4*m),e.__skinWeightArray=new Float32Array(4*m));t=null!==aa.get("OES_element_index_uint")&&21845<q?Uint32Array:Uint16Array;e.__typeArray=t;e.__faceArray=new t(3*q);e.__lineArray=new t(2*s);if(u=e.numMorphTargets)for(e.__morphTargetsArrays=
+e.__colorArray=new Float32Array(3*m);e.__uvArray=new Float32Array(2*m);1<u.faceVertexUvs.length&&(e.__uv2Array=new Float32Array(2*m));u.hasTangents&&(e.__tangentArray=new Float32Array(4*m));t.geometry.skinWeights.length&&t.geometry.skinIndices.length&&(e.__skinIndexArray=new Float32Array(4*m),e.__skinWeightArray=new Float32Array(4*m));t=null!==$.get("OES_element_index_uint")&&21845<q?Uint32Array:Uint16Array;e.__typeArray=t;e.__faceArray=new t(3*q);e.__lineArray=new t(2*s);if(u=e.numMorphTargets)for(e.__morphTargetsArrays=
 [],t=0;t<u;t++)e.__morphTargetsArrays.push(new Float32Array(3*m));if(u=e.numMorphNormals)for(e.__morphNormalsArrays=[],t=0;t<u;t++)e.__morphNormalsArrays.push(new Float32Array(3*m));e.__webglFaceCount=3*q;e.__webglLineCount=2*s;if(p.attributes)for(q in void 0===e.__webglCustomAttributesList&&(e.__webglCustomAttributesList=[]),q=void 0,p.attributes){var s=p.attributes[q],t={},w;for(w in s)t[w]=s[w];if(!t.__webglInitialized||t.createUniqueBuffers)t.__webglInitialized=!0,u=1,"v2"===t.type?u=2:"v3"===
 t.type?u=3:"v4"===t.type?u=4:"c"===t.type&&(u=3),t.size=u,t.array=new Float32Array(m*u),t.buffer=l.createBuffer(),t.buffer.belongsToAttribute=q,s.needsUpdate=!0,t.__original=s;e.__webglCustomAttributesList.push(t)}e.__inittedArrays=!0;b.verticesNeedUpdate=!0;b.morphTargetsNeedUpdate=!0;b.elementsNeedUpdate=!0;b.uvsNeedUpdate=!0;b.normalsNeedUpdate=!0;b.tangentsNeedUpdate=!0;e=b.colorsNeedUpdate=!0}else e=!1;(e||void 0===a.__webglActive)&&r(za,h,a)}a.__webglActive=!0}function r(a,b,c){var d=c.id;a[d]=
 a[d]||[];a[d].push({id:d,buffer:b,object:c,material:null,z:0})}function u(a){var b=a.geometry;if(b instanceof THREE.BufferGeometry)for(var d=b.attributes,e=b.attributesKeys,f=0,g=e.length;f<g;f++){var h=e[f],k=d[h],m="index"===h?l.ELEMENT_ARRAY_BUFFER:l.ARRAY_BUFFER;void 0===k.buffer?(k.buffer=l.createBuffer(),l.bindBuffer(m,k.buffer),l.bufferData(m,k.array,k instanceof THREE.DynamicBufferAttribute?l.DYNAMIC_DRAW:l.STATIC_DRAW),k.needsUpdate=!1):!0===k.needsUpdate&&(l.bindBuffer(m,k.buffer),void 0===
 k.updateRange||-1===k.updateRange.count?l.bufferSubData(m,0,k.array):0===k.updateRange.count?console.error("THREE.WebGLRenderer.updateObject: using updateRange for THREE.DynamicBufferAttribute and marked as needsUpdate but count is 0, ensure you are using set methods or updating manually."):(l.bufferSubData(m,k.updateRange.offset*k.array.BYTES_PER_ELEMENT,k.array.subarray(k.updateRange.offset,k.updateRange.offset+k.updateRange.count)),k.updateRange.count=0),k.needsUpdate=!1)}else if(a instanceof THREE.Mesh){!0===
 b.groupsNeedUpdate&&t(a,b);for(var p=ib[b.id],f=0,n=p.length;f<n;f++){var q=p[f],r=c(a,q),s=r.attributes&&v(r);if(b.verticesNeedUpdate||b.morphTargetsNeedUpdate||b.elementsNeedUpdate||b.uvsNeedUpdate||b.normalsNeedUpdate||b.colorsNeedUpdate||b.tangentsNeedUpdate||s){var u=q,w=a,C=l.DYNAMIC_DRAW,A=!b.dynamic,F=r;if(u.__inittedArrays){var G=F&&void 0!==F.shading&&F.shading===THREE.SmoothShading,y=void 0,z=void 0,E=void 0,B=void 0,M=void 0,Q=void 0,P=void 0,L=void 0,K=void 0,T=void 0,R=void 0,J=void 0,
-I=void 0,N=void 0,U=void 0,wa=void 0,za=void 0,La=void 0,ya=void 0,Sa=void 0,aa=void 0,ca=void 0,Ea=void 0,Ra=void 0,ga=void 0,S=void 0,ma=void 0,fa=void 0,ja=void 0,V=void 0,qb=void 0,ra=void 0,na=void 0,cb=void 0,Fa=void 0,Ca=void 0,Ga=void 0,Xa=void 0,ka=void 0,sa=void 0,Ta=0,Ua=0,rb=0,xa=0,Ka=0,Ya=0,Da=0,jb=0,Ma=0,ha=0,oa=0,H=0,Aa=void 0,Za=u.__vertexArray,Qa=u.__uvArray,sb=u.__uv2Array,Va=u.__normalArray,pa=u.__tangentArray,Ha=u.__colorArray,Ia=u.__skinIndexArray,Ja=u.__skinWeightArray,nc=u.__morphTargetsArrays,
-Cb=u.__morphNormalsArrays,tb=u.__webglCustomAttributesList,D=void 0,ab=u.__faceArray,$a=u.__lineArray,$=w.geometry,kb=$.elementsNeedUpdate,Bb=$.uvsNeedUpdate,Fb=$.normalsNeedUpdate,xb=$.tangentsNeedUpdate,Pb=$.colorsNeedUpdate,ub=$.morphTargetsNeedUpdate,bb=$.vertices,Y=u.faces3,qa=$.faces,lb=$.faceVertexUvs[0],Wa=$.faceVertexUvs[1],yb=$.skinIndices,Hb=$.skinWeights,X=$.morphTargets,Qb=$.morphNormals;if($.verticesNeedUpdate){y=0;for(z=Y.length;y<z;y++)B=qa[Y[y]],J=bb[B.a],I=bb[B.b],N=bb[B.c],Za[Ua]=
-J.x,Za[Ua+1]=J.y,Za[Ua+2]=J.z,Za[Ua+3]=I.x,Za[Ua+4]=I.y,Za[Ua+5]=I.z,Za[Ua+6]=N.x,Za[Ua+7]=N.y,Za[Ua+8]=N.z,Ua+=9;l.bindBuffer(l.ARRAY_BUFFER,u.__webglVertexBuffer);l.bufferData(l.ARRAY_BUFFER,Za,C)}if(ub)for(Fa=0,Ca=X.length;Fa<Ca;Fa++){y=oa=0;for(z=Y.length;y<z;y++)ka=Y[y],B=qa[ka],J=X[Fa].vertices[B.a],I=X[Fa].vertices[B.b],N=X[Fa].vertices[B.c],Ga=nc[Fa],Ga[oa]=J.x,Ga[oa+1]=J.y,Ga[oa+2]=J.z,Ga[oa+3]=I.x,Ga[oa+4]=I.y,Ga[oa+5]=I.z,Ga[oa+6]=N.x,Ga[oa+7]=N.y,Ga[oa+8]=N.z,F.morphNormals&&(G?(sa=Qb[Fa].vertexNormals[ka],
-La=sa.a,ya=sa.b,Sa=sa.c):Sa=ya=La=Qb[Fa].faceNormals[ka],Xa=Cb[Fa],Xa[oa]=La.x,Xa[oa+1]=La.y,Xa[oa+2]=La.z,Xa[oa+3]=ya.x,Xa[oa+4]=ya.y,Xa[oa+5]=ya.z,Xa[oa+6]=Sa.x,Xa[oa+7]=Sa.y,Xa[oa+8]=Sa.z),oa+=9;l.bindBuffer(l.ARRAY_BUFFER,u.__webglMorphTargetsBuffers[Fa]);l.bufferData(l.ARRAY_BUFFER,nc[Fa],C);F.morphNormals&&(l.bindBuffer(l.ARRAY_BUFFER,u.__webglMorphNormalsBuffers[Fa]),l.bufferData(l.ARRAY_BUFFER,Cb[Fa],C))}if(Hb.length){y=0;for(z=Y.length;y<z;y++)B=qa[Y[y]],Ra=Hb[B.a],ga=Hb[B.b],S=Hb[B.c],Ja[ha]=
-Ra.x,Ja[ha+1]=Ra.y,Ja[ha+2]=Ra.z,Ja[ha+3]=Ra.w,Ja[ha+4]=ga.x,Ja[ha+5]=ga.y,Ja[ha+6]=ga.z,Ja[ha+7]=ga.w,Ja[ha+8]=S.x,Ja[ha+9]=S.y,Ja[ha+10]=S.z,Ja[ha+11]=S.w,ma=yb[B.a],fa=yb[B.b],ja=yb[B.c],Ia[ha]=ma.x,Ia[ha+1]=ma.y,Ia[ha+2]=ma.z,Ia[ha+3]=ma.w,Ia[ha+4]=fa.x,Ia[ha+5]=fa.y,Ia[ha+6]=fa.z,Ia[ha+7]=fa.w,Ia[ha+8]=ja.x,Ia[ha+9]=ja.y,Ia[ha+10]=ja.z,Ia[ha+11]=ja.w,ha+=12;0<ha&&(l.bindBuffer(l.ARRAY_BUFFER,u.__webglSkinIndicesBuffer),l.bufferData(l.ARRAY_BUFFER,Ia,C),l.bindBuffer(l.ARRAY_BUFFER,u.__webglSkinWeightsBuffer),
-l.bufferData(l.ARRAY_BUFFER,Ja,C))}if(Pb){y=0;for(z=Y.length;y<z;y++)B=qa[Y[y]],P=B.vertexColors,L=B.color,3===P.length&&F.vertexColors===THREE.VertexColors?(aa=P[0],ca=P[1],Ea=P[2]):Ea=ca=aa=L,Ha[Ma]=aa.r,Ha[Ma+1]=aa.g,Ha[Ma+2]=aa.b,Ha[Ma+3]=ca.r,Ha[Ma+4]=ca.g,Ha[Ma+5]=ca.b,Ha[Ma+6]=Ea.r,Ha[Ma+7]=Ea.g,Ha[Ma+8]=Ea.b,Ma+=9;0<Ma&&(l.bindBuffer(l.ARRAY_BUFFER,u.__webglColorBuffer),l.bufferData(l.ARRAY_BUFFER,Ha,C))}if(xb&&$.hasTangents){y=0;for(z=Y.length;y<z;y++)B=qa[Y[y]],K=B.vertexTangents,U=K[0],
-wa=K[1],za=K[2],pa[Da]=U.x,pa[Da+1]=U.y,pa[Da+2]=U.z,pa[Da+3]=U.w,pa[Da+4]=wa.x,pa[Da+5]=wa.y,pa[Da+6]=wa.z,pa[Da+7]=wa.w,pa[Da+8]=za.x,pa[Da+9]=za.y,pa[Da+10]=za.z,pa[Da+11]=za.w,Da+=12;l.bindBuffer(l.ARRAY_BUFFER,u.__webglTangentBuffer);l.bufferData(l.ARRAY_BUFFER,pa,C)}if(Fb){y=0;for(z=Y.length;y<z;y++)if(B=qa[Y[y]],M=B.vertexNormals,Q=B.normal,3===M.length&&G)for(V=0;3>V;V++)ra=M[V],Va[Ya]=ra.x,Va[Ya+1]=ra.y,Va[Ya+2]=ra.z,Ya+=3;else for(V=0;3>V;V++)Va[Ya]=Q.x,Va[Ya+1]=Q.y,Va[Ya+2]=Q.z,Ya+=3;l.bindBuffer(l.ARRAY_BUFFER,
-u.__webglNormalBuffer);l.bufferData(l.ARRAY_BUFFER,Va,C)}if(Bb&&lb){y=0;for(z=Y.length;y<z;y++)if(E=Y[y],T=lb[E],void 0!==T)for(V=0;3>V;V++)na=T[V],Qa[rb]=na.x,Qa[rb+1]=na.y,rb+=2;0<rb&&(l.bindBuffer(l.ARRAY_BUFFER,u.__webglUVBuffer),l.bufferData(l.ARRAY_BUFFER,Qa,C))}if(Bb&&Wa){y=0;for(z=Y.length;y<z;y++)if(E=Y[y],R=Wa[E],void 0!==R)for(V=0;3>V;V++)cb=R[V],sb[xa]=cb.x,sb[xa+1]=cb.y,xa+=2;0<xa&&(l.bindBuffer(l.ARRAY_BUFFER,u.__webglUV2Buffer),l.bufferData(l.ARRAY_BUFFER,sb,C))}if(kb){y=0;for(z=Y.length;y<
-z;y++)ab[Ka]=Ta,ab[Ka+1]=Ta+1,ab[Ka+2]=Ta+2,Ka+=3,$a[jb]=Ta,$a[jb+1]=Ta+1,$a[jb+2]=Ta,$a[jb+3]=Ta+2,$a[jb+4]=Ta+1,$a[jb+5]=Ta+2,jb+=6,Ta+=3;l.bindBuffer(l.ELEMENT_ARRAY_BUFFER,u.__webglFaceBuffer);l.bufferData(l.ELEMENT_ARRAY_BUFFER,ab,C);l.bindBuffer(l.ELEMENT_ARRAY_BUFFER,u.__webglLineBuffer);l.bufferData(l.ELEMENT_ARRAY_BUFFER,$a,C)}if(tb)for(V=0,qb=tb.length;V<qb;V++)if(D=tb[V],D.__original.needsUpdate){H=0;if(1===D.size)if(void 0===D.boundTo||"vertices"===D.boundTo)for(y=0,z=Y.length;y<z;y++)B=
-qa[Y[y]],D.array[H]=D.value[B.a],D.array[H+1]=D.value[B.b],D.array[H+2]=D.value[B.c],H+=3;else{if("faces"===D.boundTo)for(y=0,z=Y.length;y<z;y++)Aa=D.value[Y[y]],D.array[H]=Aa,D.array[H+1]=Aa,D.array[H+2]=Aa,H+=3}else if(2===D.size)if(void 0===D.boundTo||"vertices"===D.boundTo)for(y=0,z=Y.length;y<z;y++)B=qa[Y[y]],J=D.value[B.a],I=D.value[B.b],N=D.value[B.c],D.array[H]=J.x,D.array[H+1]=J.y,D.array[H+2]=I.x,D.array[H+3]=I.y,D.array[H+4]=N.x,D.array[H+5]=N.y,H+=6;else{if("faces"===D.boundTo)for(y=0,
-z=Y.length;y<z;y++)N=I=J=Aa=D.value[Y[y]],D.array[H]=J.x,D.array[H+1]=J.y,D.array[H+2]=I.x,D.array[H+3]=I.y,D.array[H+4]=N.x,D.array[H+5]=N.y,H+=6}else if(3===D.size){var O;O="c"===D.type?["r","g","b"]:["x","y","z"];if(void 0===D.boundTo||"vertices"===D.boundTo)for(y=0,z=Y.length;y<z;y++)B=qa[Y[y]],J=D.value[B.a],I=D.value[B.b],N=D.value[B.c],D.array[H]=J[O[0]],D.array[H+1]=J[O[1]],D.array[H+2]=J[O[2]],D.array[H+3]=I[O[0]],D.array[H+4]=I[O[1]],D.array[H+5]=I[O[2]],D.array[H+6]=N[O[0]],D.array[H+7]=
-N[O[1]],D.array[H+8]=N[O[2]],H+=9;else if("faces"===D.boundTo)for(y=0,z=Y.length;y<z;y++)N=I=J=Aa=D.value[Y[y]],D.array[H]=J[O[0]],D.array[H+1]=J[O[1]],D.array[H+2]=J[O[2]],D.array[H+3]=I[O[0]],D.array[H+4]=I[O[1]],D.array[H+5]=I[O[2]],D.array[H+6]=N[O[0]],D.array[H+7]=N[O[1]],D.array[H+8]=N[O[2]],H+=9;else if("faceVertices"===D.boundTo)for(y=0,z=Y.length;y<z;y++)Aa=D.value[Y[y]],J=Aa[0],I=Aa[1],N=Aa[2],D.array[H]=J[O[0]],D.array[H+1]=J[O[1]],D.array[H+2]=J[O[2]],D.array[H+3]=I[O[0]],D.array[H+4]=
-I[O[1]],D.array[H+5]=I[O[2]],D.array[H+6]=N[O[0]],D.array[H+7]=N[O[1]],D.array[H+8]=N[O[2]],H+=9}else if(4===D.size)if(void 0===D.boundTo||"vertices"===D.boundTo)for(y=0,z=Y.length;y<z;y++)B=qa[Y[y]],J=D.value[B.a],I=D.value[B.b],N=D.value[B.c],D.array[H]=J.x,D.array[H+1]=J.y,D.array[H+2]=J.z,D.array[H+3]=J.w,D.array[H+4]=I.x,D.array[H+5]=I.y,D.array[H+6]=I.z,D.array[H+7]=I.w,D.array[H+8]=N.x,D.array[H+9]=N.y,D.array[H+10]=N.z,D.array[H+11]=N.w,H+=12;else if("faces"===D.boundTo)for(y=0,z=Y.length;y<
-z;y++)N=I=J=Aa=D.value[Y[y]],D.array[H]=J.x,D.array[H+1]=J.y,D.array[H+2]=J.z,D.array[H+3]=J.w,D.array[H+4]=I.x,D.array[H+5]=I.y,D.array[H+6]=I.z,D.array[H+7]=I.w,D.array[H+8]=N.x,D.array[H+9]=N.y,D.array[H+10]=N.z,D.array[H+11]=N.w,H+=12;else if("faceVertices"===D.boundTo)for(y=0,z=Y.length;y<z;y++)Aa=D.value[Y[y]],J=Aa[0],I=Aa[1],N=Aa[2],D.array[H]=J.x,D.array[H+1]=J.y,D.array[H+2]=J.z,D.array[H+3]=J.w,D.array[H+4]=I.x,D.array[H+5]=I.y,D.array[H+6]=I.z,D.array[H+7]=I.w,D.array[H+8]=N.x,D.array[H+
-9]=N.y,D.array[H+10]=N.z,D.array[H+11]=N.w,H+=12;l.bindBuffer(l.ARRAY_BUFFER,D.buffer);l.bufferData(l.ARRAY_BUFFER,D.array,C)}A&&(delete u.__inittedArrays,delete u.__colorArray,delete u.__normalArray,delete u.__tangentArray,delete u.__uvArray,delete u.__uv2Array,delete u.__faceArray,delete u.__vertexArray,delete u.__lineArray,delete u.__skinIndexArray,delete u.__skinWeightArray)}}}b.verticesNeedUpdate=!1;b.morphTargetsNeedUpdate=!1;b.elementsNeedUpdate=!1;b.uvsNeedUpdate=!1;b.normalsNeedUpdate=!1;
-b.colorsNeedUpdate=!1;b.tangentsNeedUpdate=!1;r.attributes&&x(r)}else if(a instanceof THREE.Line){r=c(a,b);s=r.attributes&&v(r);if(b.verticesNeedUpdate||b.colorsNeedUpdate||b.lineDistancesNeedUpdate||s){var Z=l.DYNAMIC_DRAW,W,Ba,la,Db,ba,zb,mb=b.vertices,ta=b.colors,Rb=b.lineDistances,Kb=mb.length,nb=ta.length,Sb=Rb.length,fb=b.__vertexArray,Eb=b.__colorArray,Ab=b.__lineDistanceArray,Mb=b.colorsNeedUpdate,ob=b.lineDistancesNeedUpdate,gb=b.__webglCustomAttributesList,db,hb,ua,Ib,Na,da;if(b.verticesNeedUpdate){for(W=
+I=void 0,N=void 0,U=void 0,wa=void 0,za=void 0,Ma=void 0,ya=void 0,$=void 0,Fa=void 0,ca=void 0,Ea=void 0,Sa=void 0,ga=void 0,S=void 0,ma=void 0,fa=void 0,ja=void 0,V=void 0,qb=void 0,ra=void 0,na=void 0,cb=void 0,Ga=void 0,Ca=void 0,Ha=void 0,Xa=void 0,ka=void 0,sa=void 0,Ta=0,Ua=0,rb=0,xa=0,La=0,Ya=0,Da=0,jb=0,Na=0,ha=0,oa=0,H=0,Aa=void 0,Za=u.__vertexArray,Ra=u.__uvArray,sb=u.__uv2Array,Va=u.__normalArray,pa=u.__tangentArray,Ia=u.__colorArray,Ja=u.__skinIndexArray,Ka=u.__skinWeightArray,nc=u.__morphTargetsArrays,
+Cb=u.__morphNormalsArrays,tb=u.__webglCustomAttributesList,D=void 0,ab=u.__faceArray,$a=u.__lineArray,aa=w.geometry,kb=aa.elementsNeedUpdate,Bb=aa.uvsNeedUpdate,Fb=aa.normalsNeedUpdate,xb=aa.tangentsNeedUpdate,Pb=aa.colorsNeedUpdate,ub=aa.morphTargetsNeedUpdate,bb=aa.vertices,Y=u.faces3,qa=aa.faces,lb=aa.faceVertexUvs[0],Wa=aa.faceVertexUvs[1],yb=aa.skinIndices,Hb=aa.skinWeights,X=aa.morphTargets,Qb=aa.morphNormals;if(aa.verticesNeedUpdate){y=0;for(z=Y.length;y<z;y++)B=qa[Y[y]],J=bb[B.a],I=bb[B.b],
+N=bb[B.c],Za[Ua]=J.x,Za[Ua+1]=J.y,Za[Ua+2]=J.z,Za[Ua+3]=I.x,Za[Ua+4]=I.y,Za[Ua+5]=I.z,Za[Ua+6]=N.x,Za[Ua+7]=N.y,Za[Ua+8]=N.z,Ua+=9;l.bindBuffer(l.ARRAY_BUFFER,u.__webglVertexBuffer);l.bufferData(l.ARRAY_BUFFER,Za,C)}if(ub)for(Ga=0,Ca=X.length;Ga<Ca;Ga++){y=oa=0;for(z=Y.length;y<z;y++)ka=Y[y],B=qa[ka],J=X[Ga].vertices[B.a],I=X[Ga].vertices[B.b],N=X[Ga].vertices[B.c],Ha=nc[Ga],Ha[oa]=J.x,Ha[oa+1]=J.y,Ha[oa+2]=J.z,Ha[oa+3]=I.x,Ha[oa+4]=I.y,Ha[oa+5]=I.z,Ha[oa+6]=N.x,Ha[oa+7]=N.y,Ha[oa+8]=N.z,F.morphNormals&&
+(G?(sa=Qb[Ga].vertexNormals[ka],Ma=sa.a,ya=sa.b,$=sa.c):$=ya=Ma=Qb[Ga].faceNormals[ka],Xa=Cb[Ga],Xa[oa]=Ma.x,Xa[oa+1]=Ma.y,Xa[oa+2]=Ma.z,Xa[oa+3]=ya.x,Xa[oa+4]=ya.y,Xa[oa+5]=ya.z,Xa[oa+6]=$.x,Xa[oa+7]=$.y,Xa[oa+8]=$.z),oa+=9;l.bindBuffer(l.ARRAY_BUFFER,u.__webglMorphTargetsBuffers[Ga]);l.bufferData(l.ARRAY_BUFFER,nc[Ga],C);F.morphNormals&&(l.bindBuffer(l.ARRAY_BUFFER,u.__webglMorphNormalsBuffers[Ga]),l.bufferData(l.ARRAY_BUFFER,Cb[Ga],C))}if(Hb.length){y=0;for(z=Y.length;y<z;y++)B=qa[Y[y]],Sa=Hb[B.a],
+ga=Hb[B.b],S=Hb[B.c],Ka[ha]=Sa.x,Ka[ha+1]=Sa.y,Ka[ha+2]=Sa.z,Ka[ha+3]=Sa.w,Ka[ha+4]=ga.x,Ka[ha+5]=ga.y,Ka[ha+6]=ga.z,Ka[ha+7]=ga.w,Ka[ha+8]=S.x,Ka[ha+9]=S.y,Ka[ha+10]=S.z,Ka[ha+11]=S.w,ma=yb[B.a],fa=yb[B.b],ja=yb[B.c],Ja[ha]=ma.x,Ja[ha+1]=ma.y,Ja[ha+2]=ma.z,Ja[ha+3]=ma.w,Ja[ha+4]=fa.x,Ja[ha+5]=fa.y,Ja[ha+6]=fa.z,Ja[ha+7]=fa.w,Ja[ha+8]=ja.x,Ja[ha+9]=ja.y,Ja[ha+10]=ja.z,Ja[ha+11]=ja.w,ha+=12;0<ha&&(l.bindBuffer(l.ARRAY_BUFFER,u.__webglSkinIndicesBuffer),l.bufferData(l.ARRAY_BUFFER,Ja,C),l.bindBuffer(l.ARRAY_BUFFER,
+u.__webglSkinWeightsBuffer),l.bufferData(l.ARRAY_BUFFER,Ka,C))}if(Pb){y=0;for(z=Y.length;y<z;y++)B=qa[Y[y]],P=B.vertexColors,L=B.color,3===P.length&&F.vertexColors===THREE.VertexColors?(Fa=P[0],ca=P[1],Ea=P[2]):Ea=ca=Fa=L,Ia[Na]=Fa.r,Ia[Na+1]=Fa.g,Ia[Na+2]=Fa.b,Ia[Na+3]=ca.r,Ia[Na+4]=ca.g,Ia[Na+5]=ca.b,Ia[Na+6]=Ea.r,Ia[Na+7]=Ea.g,Ia[Na+8]=Ea.b,Na+=9;0<Na&&(l.bindBuffer(l.ARRAY_BUFFER,u.__webglColorBuffer),l.bufferData(l.ARRAY_BUFFER,Ia,C))}if(xb&&aa.hasTangents){y=0;for(z=Y.length;y<z;y++)B=qa[Y[y]],
+K=B.vertexTangents,U=K[0],wa=K[1],za=K[2],pa[Da]=U.x,pa[Da+1]=U.y,pa[Da+2]=U.z,pa[Da+3]=U.w,pa[Da+4]=wa.x,pa[Da+5]=wa.y,pa[Da+6]=wa.z,pa[Da+7]=wa.w,pa[Da+8]=za.x,pa[Da+9]=za.y,pa[Da+10]=za.z,pa[Da+11]=za.w,Da+=12;l.bindBuffer(l.ARRAY_BUFFER,u.__webglTangentBuffer);l.bufferData(l.ARRAY_BUFFER,pa,C)}if(Fb){y=0;for(z=Y.length;y<z;y++)if(B=qa[Y[y]],M=B.vertexNormals,Q=B.normal,3===M.length&&G)for(V=0;3>V;V++)ra=M[V],Va[Ya]=ra.x,Va[Ya+1]=ra.y,Va[Ya+2]=ra.z,Ya+=3;else for(V=0;3>V;V++)Va[Ya]=Q.x,Va[Ya+1]=
+Q.y,Va[Ya+2]=Q.z,Ya+=3;l.bindBuffer(l.ARRAY_BUFFER,u.__webglNormalBuffer);l.bufferData(l.ARRAY_BUFFER,Va,C)}if(Bb&&lb){y=0;for(z=Y.length;y<z;y++)if(E=Y[y],T=lb[E],void 0!==T)for(V=0;3>V;V++)na=T[V],Ra[rb]=na.x,Ra[rb+1]=na.y,rb+=2;0<rb&&(l.bindBuffer(l.ARRAY_BUFFER,u.__webglUVBuffer),l.bufferData(l.ARRAY_BUFFER,Ra,C))}if(Bb&&Wa){y=0;for(z=Y.length;y<z;y++)if(E=Y[y],R=Wa[E],void 0!==R)for(V=0;3>V;V++)cb=R[V],sb[xa]=cb.x,sb[xa+1]=cb.y,xa+=2;0<xa&&(l.bindBuffer(l.ARRAY_BUFFER,u.__webglUV2Buffer),l.bufferData(l.ARRAY_BUFFER,
+sb,C))}if(kb){y=0;for(z=Y.length;y<z;y++)ab[La]=Ta,ab[La+1]=Ta+1,ab[La+2]=Ta+2,La+=3,$a[jb]=Ta,$a[jb+1]=Ta+1,$a[jb+2]=Ta,$a[jb+3]=Ta+2,$a[jb+4]=Ta+1,$a[jb+5]=Ta+2,jb+=6,Ta+=3;l.bindBuffer(l.ELEMENT_ARRAY_BUFFER,u.__webglFaceBuffer);l.bufferData(l.ELEMENT_ARRAY_BUFFER,ab,C);l.bindBuffer(l.ELEMENT_ARRAY_BUFFER,u.__webglLineBuffer);l.bufferData(l.ELEMENT_ARRAY_BUFFER,$a,C)}if(tb)for(V=0,qb=tb.length;V<qb;V++)if(D=tb[V],D.__original.needsUpdate){H=0;if(1===D.size)if(void 0===D.boundTo||"vertices"===D.boundTo)for(y=
+0,z=Y.length;y<z;y++)B=qa[Y[y]],D.array[H]=D.value[B.a],D.array[H+1]=D.value[B.b],D.array[H+2]=D.value[B.c],H+=3;else{if("faces"===D.boundTo)for(y=0,z=Y.length;y<z;y++)Aa=D.value[Y[y]],D.array[H]=Aa,D.array[H+1]=Aa,D.array[H+2]=Aa,H+=3}else if(2===D.size)if(void 0===D.boundTo||"vertices"===D.boundTo)for(y=0,z=Y.length;y<z;y++)B=qa[Y[y]],J=D.value[B.a],I=D.value[B.b],N=D.value[B.c],D.array[H]=J.x,D.array[H+1]=J.y,D.array[H+2]=I.x,D.array[H+3]=I.y,D.array[H+4]=N.x,D.array[H+5]=N.y,H+=6;else{if("faces"===
+D.boundTo)for(y=0,z=Y.length;y<z;y++)N=I=J=Aa=D.value[Y[y]],D.array[H]=J.x,D.array[H+1]=J.y,D.array[H+2]=I.x,D.array[H+3]=I.y,D.array[H+4]=N.x,D.array[H+5]=N.y,H+=6}else if(3===D.size){var O;O="c"===D.type?["r","g","b"]:["x","y","z"];if(void 0===D.boundTo||"vertices"===D.boundTo)for(y=0,z=Y.length;y<z;y++)B=qa[Y[y]],J=D.value[B.a],I=D.value[B.b],N=D.value[B.c],D.array[H]=J[O[0]],D.array[H+1]=J[O[1]],D.array[H+2]=J[O[2]],D.array[H+3]=I[O[0]],D.array[H+4]=I[O[1]],D.array[H+5]=I[O[2]],D.array[H+6]=N[O[0]],
+D.array[H+7]=N[O[1]],D.array[H+8]=N[O[2]],H+=9;else if("faces"===D.boundTo)for(y=0,z=Y.length;y<z;y++)N=I=J=Aa=D.value[Y[y]],D.array[H]=J[O[0]],D.array[H+1]=J[O[1]],D.array[H+2]=J[O[2]],D.array[H+3]=I[O[0]],D.array[H+4]=I[O[1]],D.array[H+5]=I[O[2]],D.array[H+6]=N[O[0]],D.array[H+7]=N[O[1]],D.array[H+8]=N[O[2]],H+=9;else if("faceVertices"===D.boundTo)for(y=0,z=Y.length;y<z;y++)Aa=D.value[Y[y]],J=Aa[0],I=Aa[1],N=Aa[2],D.array[H]=J[O[0]],D.array[H+1]=J[O[1]],D.array[H+2]=J[O[2]],D.array[H+3]=I[O[0]],
+D.array[H+4]=I[O[1]],D.array[H+5]=I[O[2]],D.array[H+6]=N[O[0]],D.array[H+7]=N[O[1]],D.array[H+8]=N[O[2]],H+=9}else if(4===D.size)if(void 0===D.boundTo||"vertices"===D.boundTo)for(y=0,z=Y.length;y<z;y++)B=qa[Y[y]],J=D.value[B.a],I=D.value[B.b],N=D.value[B.c],D.array[H]=J.x,D.array[H+1]=J.y,D.array[H+2]=J.z,D.array[H+3]=J.w,D.array[H+4]=I.x,D.array[H+5]=I.y,D.array[H+6]=I.z,D.array[H+7]=I.w,D.array[H+8]=N.x,D.array[H+9]=N.y,D.array[H+10]=N.z,D.array[H+11]=N.w,H+=12;else if("faces"===D.boundTo)for(y=
+0,z=Y.length;y<z;y++)N=I=J=Aa=D.value[Y[y]],D.array[H]=J.x,D.array[H+1]=J.y,D.array[H+2]=J.z,D.array[H+3]=J.w,D.array[H+4]=I.x,D.array[H+5]=I.y,D.array[H+6]=I.z,D.array[H+7]=I.w,D.array[H+8]=N.x,D.array[H+9]=N.y,D.array[H+10]=N.z,D.array[H+11]=N.w,H+=12;else if("faceVertices"===D.boundTo)for(y=0,z=Y.length;y<z;y++)Aa=D.value[Y[y]],J=Aa[0],I=Aa[1],N=Aa[2],D.array[H]=J.x,D.array[H+1]=J.y,D.array[H+2]=J.z,D.array[H+3]=J.w,D.array[H+4]=I.x,D.array[H+5]=I.y,D.array[H+6]=I.z,D.array[H+7]=I.w,D.array[H+
+8]=N.x,D.array[H+9]=N.y,D.array[H+10]=N.z,D.array[H+11]=N.w,H+=12;l.bindBuffer(l.ARRAY_BUFFER,D.buffer);l.bufferData(l.ARRAY_BUFFER,D.array,C)}A&&(delete u.__inittedArrays,delete u.__colorArray,delete u.__normalArray,delete u.__tangentArray,delete u.__uvArray,delete u.__uv2Array,delete u.__faceArray,delete u.__vertexArray,delete u.__lineArray,delete u.__skinIndexArray,delete u.__skinWeightArray)}}}b.verticesNeedUpdate=!1;b.morphTargetsNeedUpdate=!1;b.elementsNeedUpdate=!1;b.uvsNeedUpdate=!1;b.normalsNeedUpdate=
+!1;b.colorsNeedUpdate=!1;b.tangentsNeedUpdate=!1;r.attributes&&x(r)}else if(a instanceof THREE.Line){r=c(a,b);s=r.attributes&&v(r);if(b.verticesNeedUpdate||b.colorsNeedUpdate||b.lineDistancesNeedUpdate||s){var Z=l.DYNAMIC_DRAW,W,Ba,la,Db,ba,zb,mb=b.vertices,ta=b.colors,Rb=b.lineDistances,Kb=mb.length,nb=ta.length,Sb=Rb.length,fb=b.__vertexArray,Eb=b.__colorArray,Ab=b.__lineDistanceArray,Mb=b.colorsNeedUpdate,ob=b.lineDistancesNeedUpdate,gb=b.__webglCustomAttributesList,db,hb,ua,Ib,Oa,da;if(b.verticesNeedUpdate){for(W=
 0;W<Kb;W++)Db=mb[W],ba=3*W,fb[ba]=Db.x,fb[ba+1]=Db.y,fb[ba+2]=Db.z;l.bindBuffer(l.ARRAY_BUFFER,b.__webglVertexBuffer);l.bufferData(l.ARRAY_BUFFER,fb,Z)}if(Mb){for(Ba=0;Ba<nb;Ba++)zb=ta[Ba],ba=3*Ba,Eb[ba]=zb.r,Eb[ba+1]=zb.g,Eb[ba+2]=zb.b;l.bindBuffer(l.ARRAY_BUFFER,b.__webglColorBuffer);l.bufferData(l.ARRAY_BUFFER,Eb,Z)}if(ob){for(la=0;la<Sb;la++)Ab[la]=Rb[la];l.bindBuffer(l.ARRAY_BUFFER,b.__webglLineDistanceBuffer);l.bufferData(l.ARRAY_BUFFER,Ab,Z)}if(gb)for(db=0,hb=gb.length;db<hb;db++)if(da=gb[db],
-da.needsUpdate&&(void 0===da.boundTo||"vertices"===da.boundTo)){ba=0;Ib=da.value.length;if(1===da.size)for(ua=0;ua<Ib;ua++)da.array[ua]=da.value[ua];else if(2===da.size)for(ua=0;ua<Ib;ua++)Na=da.value[ua],da.array[ba]=Na.x,da.array[ba+1]=Na.y,ba+=2;else if(3===da.size)if("c"===da.type)for(ua=0;ua<Ib;ua++)Na=da.value[ua],da.array[ba]=Na.r,da.array[ba+1]=Na.g,da.array[ba+2]=Na.b,ba+=3;else for(ua=0;ua<Ib;ua++)Na=da.value[ua],da.array[ba]=Na.x,da.array[ba+1]=Na.y,da.array[ba+2]=Na.z,ba+=3;else if(4===
-da.size)for(ua=0;ua<Ib;ua++)Na=da.value[ua],da.array[ba]=Na.x,da.array[ba+1]=Na.y,da.array[ba+2]=Na.z,da.array[ba+3]=Na.w,ba+=4;l.bindBuffer(l.ARRAY_BUFFER,da.buffer);l.bufferData(l.ARRAY_BUFFER,da.array,Z);da.needsUpdate=!1}}b.verticesNeedUpdate=!1;b.colorsNeedUpdate=!1;b.lineDistancesNeedUpdate=!1;r.attributes&&x(r)}else if(a instanceof THREE.PointCloud){r=c(a,b);s=r.attributes&&v(r);if(b.verticesNeedUpdate||b.colorsNeedUpdate||s){var Pa=l.DYNAMIC_DRAW,Tb,Ub,$b,ia,ac,vb=b.vertices,wb=vb.length,
-Lb=b.colors,Vb=Lb.length,bc=b.__vertexArray,cc=b.__colorArray,Wb=b.colorsNeedUpdate,Gb=b.__webglCustomAttributesList,dc,pb,va,Jb,Oa,ea;if(b.verticesNeedUpdate){for(Tb=0;Tb<wb;Tb++)$b=vb[Tb],ia=3*Tb,bc[ia]=$b.x,bc[ia+1]=$b.y,bc[ia+2]=$b.z;l.bindBuffer(l.ARRAY_BUFFER,b.__webglVertexBuffer);l.bufferData(l.ARRAY_BUFFER,bc,Pa)}if(Wb){for(Ub=0;Ub<Vb;Ub++)ac=Lb[Ub],ia=3*Ub,cc[ia]=ac.r,cc[ia+1]=ac.g,cc[ia+2]=ac.b;l.bindBuffer(l.ARRAY_BUFFER,b.__webglColorBuffer);l.bufferData(l.ARRAY_BUFFER,cc,Pa)}if(Gb)for(dc=
-0,pb=Gb.length;dc<pb;dc++){ea=Gb[dc];if(ea.needsUpdate&&(void 0===ea.boundTo||"vertices"===ea.boundTo))if(Jb=ea.value.length,ia=0,1===ea.size)for(va=0;va<Jb;va++)ea.array[va]=ea.value[va];else if(2===ea.size)for(va=0;va<Jb;va++)Oa=ea.value[va],ea.array[ia]=Oa.x,ea.array[ia+1]=Oa.y,ia+=2;else if(3===ea.size)if("c"===ea.type)for(va=0;va<Jb;va++)Oa=ea.value[va],ea.array[ia]=Oa.r,ea.array[ia+1]=Oa.g,ea.array[ia+2]=Oa.b,ia+=3;else for(va=0;va<Jb;va++)Oa=ea.value[va],ea.array[ia]=Oa.x,ea.array[ia+1]=Oa.y,
-ea.array[ia+2]=Oa.z,ia+=3;else if(4===ea.size)for(va=0;va<Jb;va++)Oa=ea.value[va],ea.array[ia]=Oa.x,ea.array[ia+1]=Oa.y,ea.array[ia+2]=Oa.z,ea.array[ia+3]=Oa.w,ia+=4;l.bindBuffer(l.ARRAY_BUFFER,ea.buffer);l.bufferData(l.ARRAY_BUFFER,ea.array,Pa);ea.needsUpdate=!1}}b.verticesNeedUpdate=!1;b.colorsNeedUpdate=!1;r.attributes&&x(r)}}function v(a){for(var b in a.attributes)if(a.attributes[b].needsUpdate)return!0;return!1}function x(a){for(var b in a.attributes)a.attributes[b].needsUpdate=!1}function C(a,
+da.needsUpdate&&(void 0===da.boundTo||"vertices"===da.boundTo)){ba=0;Ib=da.value.length;if(1===da.size)for(ua=0;ua<Ib;ua++)da.array[ua]=da.value[ua];else if(2===da.size)for(ua=0;ua<Ib;ua++)Oa=da.value[ua],da.array[ba]=Oa.x,da.array[ba+1]=Oa.y,ba+=2;else if(3===da.size)if("c"===da.type)for(ua=0;ua<Ib;ua++)Oa=da.value[ua],da.array[ba]=Oa.r,da.array[ba+1]=Oa.g,da.array[ba+2]=Oa.b,ba+=3;else for(ua=0;ua<Ib;ua++)Oa=da.value[ua],da.array[ba]=Oa.x,da.array[ba+1]=Oa.y,da.array[ba+2]=Oa.z,ba+=3;else if(4===
+da.size)for(ua=0;ua<Ib;ua++)Oa=da.value[ua],da.array[ba]=Oa.x,da.array[ba+1]=Oa.y,da.array[ba+2]=Oa.z,da.array[ba+3]=Oa.w,ba+=4;l.bindBuffer(l.ARRAY_BUFFER,da.buffer);l.bufferData(l.ARRAY_BUFFER,da.array,Z);da.needsUpdate=!1}}b.verticesNeedUpdate=!1;b.colorsNeedUpdate=!1;b.lineDistancesNeedUpdate=!1;r.attributes&&x(r)}else if(a instanceof THREE.PointCloud){r=c(a,b);s=r.attributes&&v(r);if(b.verticesNeedUpdate||b.colorsNeedUpdate||s){var Qa=l.DYNAMIC_DRAW,Tb,Ub,$b,ia,ac,vb=b.vertices,wb=vb.length,
+Lb=b.colors,Vb=Lb.length,bc=b.__vertexArray,cc=b.__colorArray,Wb=b.colorsNeedUpdate,Gb=b.__webglCustomAttributesList,dc,pb,va,Jb,Pa,ea;if(b.verticesNeedUpdate){for(Tb=0;Tb<wb;Tb++)$b=vb[Tb],ia=3*Tb,bc[ia]=$b.x,bc[ia+1]=$b.y,bc[ia+2]=$b.z;l.bindBuffer(l.ARRAY_BUFFER,b.__webglVertexBuffer);l.bufferData(l.ARRAY_BUFFER,bc,Qa)}if(Wb){for(Ub=0;Ub<Vb;Ub++)ac=Lb[Ub],ia=3*Ub,cc[ia]=ac.r,cc[ia+1]=ac.g,cc[ia+2]=ac.b;l.bindBuffer(l.ARRAY_BUFFER,b.__webglColorBuffer);l.bufferData(l.ARRAY_BUFFER,cc,Qa)}if(Gb)for(dc=
+0,pb=Gb.length;dc<pb;dc++){ea=Gb[dc];if(ea.needsUpdate&&(void 0===ea.boundTo||"vertices"===ea.boundTo))if(Jb=ea.value.length,ia=0,1===ea.size)for(va=0;va<Jb;va++)ea.array[va]=ea.value[va];else if(2===ea.size)for(va=0;va<Jb;va++)Pa=ea.value[va],ea.array[ia]=Pa.x,ea.array[ia+1]=Pa.y,ia+=2;else if(3===ea.size)if("c"===ea.type)for(va=0;va<Jb;va++)Pa=ea.value[va],ea.array[ia]=Pa.r,ea.array[ia+1]=Pa.g,ea.array[ia+2]=Pa.b,ia+=3;else for(va=0;va<Jb;va++)Pa=ea.value[va],ea.array[ia]=Pa.x,ea.array[ia+1]=Pa.y,
+ea.array[ia+2]=Pa.z,ia+=3;else if(4===ea.size)for(va=0;va<Jb;va++)Pa=ea.value[va],ea.array[ia]=Pa.x,ea.array[ia+1]=Pa.y,ea.array[ia+2]=Pa.z,ea.array[ia+3]=Pa.w,ia+=4;l.bindBuffer(l.ARRAY_BUFFER,ea.buffer);l.bufferData(l.ARRAY_BUFFER,ea.array,Qa);ea.needsUpdate=!1}}b.verticesNeedUpdate=!1;b.colorsNeedUpdate=!1;r.attributes&&x(r)}}function v(a){for(var b in a.attributes)if(a.attributes[b].needsUpdate)return!0;return!1}function x(a){for(var b in a.attributes)a.attributes[b].needsUpdate=!1}function C(a,
 b,c,d,e){var f,g,h,k;Kb=0;if(d.needsUpdate){d.program&&oc(d);d.addEventListener("dispose",pc);var m=Fc[d.type];if(m){var p=THREE.ShaderLib[m];d.__webglShader={uniforms:THREE.UniformsUtils.clone(p.uniforms),vertexShader:p.vertexShader,fragmentShader:p.fragmentShader}}else d.__webglShader={uniforms:d.uniforms,vertexShader:d.vertexShader,fragmentShader:d.fragmentShader};for(var n=0,q=0,r=0,t=0,s=0,u=b.length;s<u;s++){var v=b[s];v.onlyShadow||!1===v.visible||(v instanceof THREE.DirectionalLight&&n++,
 v instanceof THREE.PointLight&&q++,v instanceof THREE.SpotLight&&r++,v instanceof THREE.HemisphereLight&&t++)}f=n;g=q;h=r;k=t;for(var x,C=0,A=0,G=b.length;A<G;A++){var E=b[A];E.castShadow&&(E instanceof THREE.SpotLight&&C++,E instanceof THREE.DirectionalLight&&!E.shadowCascade&&C++)}x=C;var J;if(Lb&&e&&e.skeleton&&e.skeleton.useVertexTexture)J=1024;else{var I=l.getParameter(l.MAX_VERTEX_UNIFORM_VECTORS),N=Math.floor((I-20)/4);void 0!==e&&e instanceof THREE.SkinnedMesh&&(N=Math.min(e.skeleton.bones.length,
 N),N<e.skeleton.bones.length&&console.warn("WebGLRenderer: too many bones - "+e.skeleton.bones.length+", this GPU supports just "+N+" (try OpenGL instead of ANGLE)"));J=N}var Q={precision:U,supportsVertexTextures:Vb,map:!!d.map,envMap:!!d.envMap,envMapMode:d.envMap&&d.envMap.mapping,lightMap:!!d.lightMap,bumpMap:!!d.bumpMap,normalMap:!!d.normalMap,specularMap:!!d.specularMap,alphaMap:!!d.alphaMap,combine:d.combine,vertexColors:d.vertexColors,fog:c,useFog:d.fog,fogExp:c instanceof THREE.FogExp2,sizeAttenuation:d.sizeAttenuation,
 logarithmicDepthBuffer:ra,skinning:d.skinning,maxBones:J,useVertexTexture:Lb&&e&&e.skeleton&&e.skeleton.useVertexTexture,morphTargets:d.morphTargets,morphNormals:d.morphNormals,maxMorphTargets:B.maxMorphTargets,maxMorphNormals:B.maxMorphNormals,maxDirLights:f,maxPointLights:g,maxSpotLights:h,maxHemiLights:k,maxShadows:x,shadowMapEnabled:B.shadowMapEnabled&&e.receiveShadow&&0<x,shadowMapType:B.shadowMapType,shadowMapDebug:B.shadowMapDebug,shadowMapCascade:B.shadowMapCascade,alphaTest:d.alphaTest,metal:d.metal,
-wrapAround:d.wrapAround,doubleSided:d.side===THREE.DoubleSide,flipSided:d.side===THREE.BackSide},K=[];m?K.push(m):(K.push(d.fragmentShader),K.push(d.vertexShader));if(void 0!==d.defines)for(var L in d.defines)K.push(L),K.push(d.defines[L]);for(L in Q)K.push(L),K.push(Q[L]);for(var R=K.join(),wa,za=0,La=cb.length;za<La;za++){var ya=cb[za];if(ya.code===R){wa=ya;wa.usedTimes++;break}}void 0===wa&&(wa=new THREE.WebGLProgram(B,R,d,Q),cb.push(wa),B.info.memory.programs=cb.length);d.program=wa;var Sa=wa.attributes;
-if(d.morphTargets){d.numSupportedMorphTargets=0;for(var aa,ca="morphTarget",Ea=0;Ea<B.maxMorphTargets;Ea++)aa=ca+Ea,0<=Sa[aa]&&d.numSupportedMorphTargets++}if(d.morphNormals)for(d.numSupportedMorphNormals=0,ca="morphNormal",Ea=0;Ea<B.maxMorphNormals;Ea++)aa=ca+Ea,0<=Sa[aa]&&d.numSupportedMorphNormals++;d.uniformsList=[];for(var Ra in d.__webglShader.uniforms){var ja=d.program.uniforms[Ra];ja&&d.uniformsList.push([d.__webglShader.uniforms[Ra],ja])}d.needsUpdate=!1}d.morphTargets&&!e.__webglMorphTargetInfluences&&
+wrapAround:d.wrapAround,doubleSided:d.side===THREE.DoubleSide,flipSided:d.side===THREE.BackSide},K=[];m?K.push(m):(K.push(d.fragmentShader),K.push(d.vertexShader));if(void 0!==d.defines)for(var L in d.defines)K.push(L),K.push(d.defines[L]);for(L in Q)K.push(L),K.push(Q[L]);for(var R=K.join(),wa,za=0,Ma=cb.length;za<Ma;za++){var ya=cb[za];if(ya.code===R){wa=ya;wa.usedTimes++;break}}void 0===wa&&(wa=new THREE.WebGLProgram(B,R,d,Q),cb.push(wa),B.info.memory.programs=cb.length);d.program=wa;var $=wa.attributes;
+if(d.morphTargets){d.numSupportedMorphTargets=0;for(var Fa,ca="morphTarget",Ea=0;Ea<B.maxMorphTargets;Ea++)Fa=ca+Ea,0<=$[Fa]&&d.numSupportedMorphTargets++}if(d.morphNormals)for(d.numSupportedMorphNormals=0,ca="morphNormal",Ea=0;Ea<B.maxMorphNormals;Ea++)Fa=ca+Ea,0<=$[Fa]&&d.numSupportedMorphNormals++;d.uniformsList=[];for(var Sa in d.__webglShader.uniforms){var ja=d.program.uniforms[Sa];ja&&d.uniformsList.push([d.__webglShader.uniforms[Sa],ja])}d.needsUpdate=!1}d.morphTargets&&!e.__webglMorphTargetInfluences&&
 (e.__webglMorphTargetInfluences=new Float32Array(B.maxMorphTargets));var qb=!1,na=!1,sa=!1,xa=d.program,ga=xa.uniforms,S=d.__webglShader.uniforms;xa.id!==Wb&&(l.useProgram(xa.program),Wb=xa.id,sa=na=qb=!0);d.id!==Bb&&(-1===Bb&&(sa=!0),Bb=d.id,na=!0);if(qb||a!==Fb)l.uniformMatrix4fv(ga.projectionMatrix,!1,a.projectionMatrix.elements),ra&&l.uniform1f(ga.logDepthBufFC,2/(Math.log(a.far+1)/Math.LN2)),a!==Fb&&(Fb=a),(d instanceof THREE.ShaderMaterial||d instanceof THREE.MeshPhongMaterial||d.envMap)&&null!==
 ga.cameraPosition&&(Ca.setFromMatrixPosition(a.matrixWorld),l.uniform3f(ga.cameraPosition,Ca.x,Ca.y,Ca.z)),(d instanceof THREE.MeshPhongMaterial||d instanceof THREE.MeshLambertMaterial||d instanceof THREE.MeshBasicMaterial||d instanceof THREE.ShaderMaterial||d.skinning)&&null!==ga.viewMatrix&&l.uniformMatrix4fv(ga.viewMatrix,!1,a.matrixWorldInverse.elements);if(d.skinning)if(e.bindMatrix&&null!==ga.bindMatrix&&l.uniformMatrix4fv(ga.bindMatrix,!1,e.bindMatrix.elements),e.bindMatrixInverse&&null!==
-ga.bindMatrixInverse&&l.uniformMatrix4fv(ga.bindMatrixInverse,!1,e.bindMatrixInverse.elements),Lb&&e.skeleton&&e.skeleton.useVertexTexture){if(null!==ga.boneTexture){var Ka=y();l.uniform1i(ga.boneTexture,Ka);B.setTexture(e.skeleton.boneTexture,Ka)}null!==ga.boneTextureWidth&&l.uniform1i(ga.boneTextureWidth,e.skeleton.boneTextureWidth);null!==ga.boneTextureHeight&&l.uniform1i(ga.boneTextureHeight,e.skeleton.boneTextureHeight)}else e.skeleton&&e.skeleton.boneMatrices&&null!==ga.boneGlobalMatrices&&
-l.uniformMatrix4fv(ga.boneGlobalMatrices,!1,e.skeleton.boneMatrices);if(na){c&&d.fog&&(S.fogColor.value=c.color,c instanceof THREE.Fog?(S.fogNear.value=c.near,S.fogFar.value=c.far):c instanceof THREE.FogExp2&&(S.fogDensity.value=c.density));if(d instanceof THREE.MeshPhongMaterial||d instanceof THREE.MeshLambertMaterial||d.lights){if(Mb){var sa=!0,fa,eb,V,Qa=0,db=0,gb=0,Pa,Fa,ib,Ga,Xa,ka=qc,hb=ka.directional.colors,Ta=ka.directional.positions,Ua=ka.point.colors,rb=ka.point.positions,ub=ka.point.distances,
-vb=ka.point.decays,Ya=ka.spot.colors,Da=ka.spot.positions,jb=ka.spot.distances,Ma=ka.spot.directions,ha=ka.spot.anglesCos,oa=ka.spot.exponents,H=ka.spot.decays,Aa=ka.hemi.skyColors,Za=ka.hemi.groundColors,ob=ka.hemi.positions,sb=0,Va=0,pa=0,Ha=0,Ia=0,Ja=0,pb=0,Cb=0,tb=0,D=0,ab=0,$a=0;fa=0;for(eb=b.length;fa<eb;fa++)V=b[fa],V.onlyShadow||(Pa=V.color,Ga=V.intensity,Xa=V.distance,V instanceof THREE.AmbientLight?V.visible&&(Qa+=Pa.r,db+=Pa.g,gb+=Pa.b):V instanceof THREE.DirectionalLight?(Ia+=1,V.visible&&
-(ma.setFromMatrixPosition(V.matrixWorld),Ca.setFromMatrixPosition(V.target.matrixWorld),ma.sub(Ca),ma.normalize(),tb=3*sb,Ta[tb]=ma.x,Ta[tb+1]=ma.y,Ta[tb+2]=ma.z,F(hb,tb,Pa,Ga),sb+=1)):V instanceof THREE.PointLight?(Ja+=1,V.visible&&(D=3*Va,F(Ua,D,Pa,Ga),Ca.setFromMatrixPosition(V.matrixWorld),rb[D]=Ca.x,rb[D+1]=Ca.y,rb[D+2]=Ca.z,ub[Va]=Xa,vb[Va]=0===V.distance?0:V.decay,Va+=1)):V instanceof THREE.SpotLight?(pb+=1,V.visible&&(ab=3*pa,F(Ya,ab,Pa,Ga),ma.setFromMatrixPosition(V.matrixWorld),Da[ab]=ma.x,
-Da[ab+1]=ma.y,Da[ab+2]=ma.z,jb[pa]=Xa,Ca.setFromMatrixPosition(V.target.matrixWorld),ma.sub(Ca),ma.normalize(),Ma[ab]=ma.x,Ma[ab+1]=ma.y,Ma[ab+2]=ma.z,ha[pa]=Math.cos(V.angle),oa[pa]=V.exponent,H[pa]=0===V.distance?0:V.decay,pa+=1)):V instanceof THREE.HemisphereLight&&(Cb+=1,V.visible&&(ma.setFromMatrixPosition(V.matrixWorld),ma.normalize(),$a=3*Ha,ob[$a]=ma.x,ob[$a+1]=ma.y,ob[$a+2]=ma.z,Fa=V.color,ib=V.groundColor,F(Aa,$a,Fa,Ga),F(Za,$a,ib,Ga),Ha+=1)));fa=3*sb;for(eb=Math.max(hb.length,3*Ia);fa<
-eb;fa++)hb[fa]=0;fa=3*Va;for(eb=Math.max(Ua.length,3*Ja);fa<eb;fa++)Ua[fa]=0;fa=3*pa;for(eb=Math.max(Ya.length,3*pb);fa<eb;fa++)Ya[fa]=0;fa=3*Ha;for(eb=Math.max(Aa.length,3*Cb);fa<eb;fa++)Aa[fa]=0;fa=3*Ha;for(eb=Math.max(Za.length,3*Cb);fa<eb;fa++)Za[fa]=0;ka.directional.length=sb;ka.point.length=Va;ka.spot.length=pa;ka.hemi.length=Ha;ka.ambient[0]=Qa;ka.ambient[1]=db;ka.ambient[2]=gb;Mb=!1}if(sa){var $=qc;S.ambientLightColor.value=$.ambient;S.directionalLightColor.value=$.directional.colors;S.directionalLightDirection.value=
-$.directional.positions;S.pointLightColor.value=$.point.colors;S.pointLightPosition.value=$.point.positions;S.pointLightDistance.value=$.point.distances;S.pointLightDecay.value=$.point.decays;S.spotLightColor.value=$.spot.colors;S.spotLightPosition.value=$.spot.positions;S.spotLightDistance.value=$.spot.distances;S.spotLightDirection.value=$.spot.directions;S.spotLightAngleCos.value=$.spot.anglesCos;S.spotLightExponent.value=$.spot.exponents;S.spotLightDecay.value=$.spot.decays;S.hemisphereLightSkyColor.value=
-$.hemi.skyColors;S.hemisphereLightGroundColor.value=$.hemi.groundColors;S.hemisphereLightDirection.value=$.hemi.positions;w(S,!0)}else w(S,!1)}if(d instanceof THREE.MeshBasicMaterial||d instanceof THREE.MeshLambertMaterial||d instanceof THREE.MeshPhongMaterial){S.opacity.value=d.opacity;S.diffuse.value=d.color;S.map.value=d.map;S.lightMap.value=d.lightMap;S.specularMap.value=d.specularMap;S.alphaMap.value=d.alphaMap;d.bumpMap&&(S.bumpMap.value=d.bumpMap,S.bumpScale.value=d.bumpScale);d.normalMap&&
+ga.bindMatrixInverse&&l.uniformMatrix4fv(ga.bindMatrixInverse,!1,e.bindMatrixInverse.elements),Lb&&e.skeleton&&e.skeleton.useVertexTexture){if(null!==ga.boneTexture){var La=y();l.uniform1i(ga.boneTexture,La);B.setTexture(e.skeleton.boneTexture,La)}null!==ga.boneTextureWidth&&l.uniform1i(ga.boneTextureWidth,e.skeleton.boneTextureWidth);null!==ga.boneTextureHeight&&l.uniform1i(ga.boneTextureHeight,e.skeleton.boneTextureHeight)}else e.skeleton&&e.skeleton.boneMatrices&&null!==ga.boneGlobalMatrices&&
+l.uniformMatrix4fv(ga.boneGlobalMatrices,!1,e.skeleton.boneMatrices);if(na){c&&d.fog&&(S.fogColor.value=c.color,c instanceof THREE.Fog?(S.fogNear.value=c.near,S.fogFar.value=c.far):c instanceof THREE.FogExp2&&(S.fogDensity.value=c.density));if(d instanceof THREE.MeshPhongMaterial||d instanceof THREE.MeshLambertMaterial||d.lights){if(Mb){var sa=!0,fa,eb,V,Ra=0,db=0,gb=0,Qa,Ga,ib,Ha,Xa,ka=qc,hb=ka.directional.colors,Ta=ka.directional.positions,Ua=ka.point.colors,rb=ka.point.positions,ub=ka.point.distances,
+vb=ka.point.decays,Ya=ka.spot.colors,Da=ka.spot.positions,jb=ka.spot.distances,Na=ka.spot.directions,ha=ka.spot.anglesCos,oa=ka.spot.exponents,H=ka.spot.decays,Aa=ka.hemi.skyColors,Za=ka.hemi.groundColors,ob=ka.hemi.positions,sb=0,Va=0,pa=0,Ia=0,Ja=0,Ka=0,pb=0,Cb=0,tb=0,D=0,ab=0,$a=0;fa=0;for(eb=b.length;fa<eb;fa++)V=b[fa],V.onlyShadow||(Qa=V.color,Ha=V.intensity,Xa=V.distance,V instanceof THREE.AmbientLight?V.visible&&(Ra+=Qa.r,db+=Qa.g,gb+=Qa.b):V instanceof THREE.DirectionalLight?(Ja+=1,V.visible&&
+(ma.setFromMatrixPosition(V.matrixWorld),Ca.setFromMatrixPosition(V.target.matrixWorld),ma.sub(Ca),ma.normalize(),tb=3*sb,Ta[tb]=ma.x,Ta[tb+1]=ma.y,Ta[tb+2]=ma.z,F(hb,tb,Qa,Ha),sb+=1)):V instanceof THREE.PointLight?(Ka+=1,V.visible&&(D=3*Va,F(Ua,D,Qa,Ha),Ca.setFromMatrixPosition(V.matrixWorld),rb[D]=Ca.x,rb[D+1]=Ca.y,rb[D+2]=Ca.z,ub[Va]=Xa,vb[Va]=0===V.distance?0:V.decay,Va+=1)):V instanceof THREE.SpotLight?(pb+=1,V.visible&&(ab=3*pa,F(Ya,ab,Qa,Ha),ma.setFromMatrixPosition(V.matrixWorld),Da[ab]=ma.x,
+Da[ab+1]=ma.y,Da[ab+2]=ma.z,jb[pa]=Xa,Ca.setFromMatrixPosition(V.target.matrixWorld),ma.sub(Ca),ma.normalize(),Na[ab]=ma.x,Na[ab+1]=ma.y,Na[ab+2]=ma.z,ha[pa]=Math.cos(V.angle),oa[pa]=V.exponent,H[pa]=0===V.distance?0:V.decay,pa+=1)):V instanceof THREE.HemisphereLight&&(Cb+=1,V.visible&&(ma.setFromMatrixPosition(V.matrixWorld),ma.normalize(),$a=3*Ia,ob[$a]=ma.x,ob[$a+1]=ma.y,ob[$a+2]=ma.z,Ga=V.color,ib=V.groundColor,F(Aa,$a,Ga,Ha),F(Za,$a,ib,Ha),Ia+=1)));fa=3*sb;for(eb=Math.max(hb.length,3*Ja);fa<
+eb;fa++)hb[fa]=0;fa=3*Va;for(eb=Math.max(Ua.length,3*Ka);fa<eb;fa++)Ua[fa]=0;fa=3*pa;for(eb=Math.max(Ya.length,3*pb);fa<eb;fa++)Ya[fa]=0;fa=3*Ia;for(eb=Math.max(Aa.length,3*Cb);fa<eb;fa++)Aa[fa]=0;fa=3*Ia;for(eb=Math.max(Za.length,3*Cb);fa<eb;fa++)Za[fa]=0;ka.directional.length=sb;ka.point.length=Va;ka.spot.length=pa;ka.hemi.length=Ia;ka.ambient[0]=Ra;ka.ambient[1]=db;ka.ambient[2]=gb;Mb=!1}if(sa){var aa=qc;S.ambientLightColor.value=aa.ambient;S.directionalLightColor.value=aa.directional.colors;S.directionalLightDirection.value=
+aa.directional.positions;S.pointLightColor.value=aa.point.colors;S.pointLightPosition.value=aa.point.positions;S.pointLightDistance.value=aa.point.distances;S.pointLightDecay.value=aa.point.decays;S.spotLightColor.value=aa.spot.colors;S.spotLightPosition.value=aa.spot.positions;S.spotLightDistance.value=aa.spot.distances;S.spotLightDirection.value=aa.spot.directions;S.spotLightAngleCos.value=aa.spot.anglesCos;S.spotLightExponent.value=aa.spot.exponents;S.spotLightDecay.value=aa.spot.decays;S.hemisphereLightSkyColor.value=
+aa.hemi.skyColors;S.hemisphereLightGroundColor.value=aa.hemi.groundColors;S.hemisphereLightDirection.value=aa.hemi.positions;w(S,!0)}else w(S,!1)}if(d instanceof THREE.MeshBasicMaterial||d instanceof THREE.MeshLambertMaterial||d instanceof THREE.MeshPhongMaterial){S.opacity.value=d.opacity;S.diffuse.value=d.color;S.map.value=d.map;S.lightMap.value=d.lightMap;S.specularMap.value=d.specularMap;S.alphaMap.value=d.alphaMap;d.bumpMap&&(S.bumpMap.value=d.bumpMap,S.bumpScale.value=d.bumpScale);d.normalMap&&
 (S.normalMap.value=d.normalMap,S.normalScale.value.copy(d.normalScale));var kb;d.map?kb=d.map:d.specularMap?kb=d.specularMap:d.normalMap?kb=d.normalMap:d.bumpMap?kb=d.bumpMap:d.alphaMap&&(kb=d.alphaMap);if(void 0!==kb){var wb=kb.offset,Nb=kb.repeat;S.offsetRepeat.value.set(wb.x,wb.y,Nb.x,Nb.y)}S.envMap.value=d.envMap;S.flipEnvMap.value=d.envMap instanceof THREE.WebGLRenderTargetCube?1:-1;S.reflectivity.value=d.reflectivity;S.refractionRatio.value=d.refractionRatio}d instanceof THREE.LineBasicMaterial?
 (S.diffuse.value=d.color,S.opacity.value=d.opacity):d instanceof THREE.LineDashedMaterial?(S.diffuse.value=d.color,S.opacity.value=d.opacity,S.dashSize.value=d.dashSize,S.totalSize.value=d.dashSize+d.gapSize,S.scale.value=d.scale):d instanceof THREE.PointCloudMaterial?(S.psColor.value=d.color,S.opacity.value=d.opacity,S.size.value=d.size,S.scale.value=P.height/2,S.map.value=d.map):d instanceof THREE.MeshPhongMaterial?(S.shininess.value=d.shininess,S.emissive.value=d.emissive,S.specular.value=d.specular,
 d.wrapAround&&S.wrapRGB.value.copy(d.wrapRGB)):d instanceof THREE.MeshLambertMaterial?(S.emissive.value=d.emissive,d.wrapAround&&S.wrapRGB.value.copy(d.wrapRGB)):d instanceof THREE.MeshDepthMaterial?(S.mNear.value=a.near,S.mFar.value=a.far,S.opacity.value=d.opacity):d instanceof THREE.MeshNormalMaterial&&(S.opacity.value=d.opacity);if(e.receiveShadow&&!d._shadowPass&&S.shadowMatrix)for(var xb=0,Pb=0,Xb=b.length;Pb<Xb;Pb++){var bb=b[Pb];bb.castShadow&&(bb instanceof THREE.SpotLight||bb instanceof THREE.DirectionalLight&&
@@ -506,67 +506,67 @@ return xa}function w(a,b){a.ambientLightColor.needsUpdate=b;a.directionalLightCo
 b;a.hemisphereLightSkyColor.needsUpdate=b;a.hemisphereLightGroundColor.needsUpdate=b;a.hemisphereLightDirection.needsUpdate=b}function y(){var a=Kb;a>=sc&&console.warn("WebGLRenderer: trying to use "+a+" texture units while this GPU supports only "+sc);Kb+=1;return a}function A(a,b){a._modelViewMatrix.multiplyMatrices(b.matrixWorldInverse,a.matrixWorld);a._normalMatrix.getNormalMatrix(a._modelViewMatrix)}function F(a,b,c,d){a[b]=c.r*d;a[b+1]=c.g*d;a[b+2]=c.b*d}function G(a){a*=Q;a!==tc&&(l.lineWidth(a),
 tc=a)}function E(a,b,c){uc!==a&&(a?l.enable(l.POLYGON_OFFSET_FILL):l.disable(l.POLYGON_OFFSET_FILL),uc=a);!a||vc===b&&wc===c||(l.polygonOffset(b,c),vc=b,wc=c)}function z(a,b,c){c?(l.texParameteri(a,l.TEXTURE_WRAP_S,T(b.wrapS)),l.texParameteri(a,l.TEXTURE_WRAP_T,T(b.wrapT)),l.texParameteri(a,l.TEXTURE_MAG_FILTER,T(b.magFilter)),l.texParameteri(a,l.TEXTURE_MIN_FILTER,T(b.minFilter))):(l.texParameteri(a,l.TEXTURE_WRAP_S,l.CLAMP_TO_EDGE),l.texParameteri(a,l.TEXTURE_WRAP_T,l.CLAMP_TO_EDGE),b.wrapS===THREE.ClampToEdgeWrapping&&
 b.wrapT===THREE.ClampToEdgeWrapping||console.warn("THREE.WebGLRenderer: Texture is not power of two. Texture.wrapS and Texture.wrapT is set to THREE.ClampToEdgeWrapping. ( "+b.sourceFile+" )"),l.texParameteri(a,l.TEXTURE_MAG_FILTER,L(b.magFilter)),l.texParameteri(a,l.TEXTURE_MIN_FILTER,L(b.minFilter)),b.minFilter!==THREE.NearestFilter&&b.minFilter!==THREE.LinearFilter&&console.warn("THREE.WebGLRenderer: Texture is not power of two. Texture.minFilter is set to THREE.LinearFilter or THREE.NearestFilter. ( "+
-b.sourceFile+" )"));(c=aa.get("EXT_texture_filter_anisotropic"))&&b.type!==THREE.FloatType&&(1<b.anisotropy||b.__oldAnisotropy)&&(l.texParameterf(a,c.TEXTURE_MAX_ANISOTROPY_EXT,Math.min(b.anisotropy,B.getMaxAnisotropy())),b.__oldAnisotropy=b.anisotropy)}function M(a,b){if(a.width>b||a.height>b){var c=b/Math.max(a.width,a.height),d=document.createElement("canvas");d.width=Math.floor(a.width*c);d.height=Math.floor(a.height*c);d.getContext("2d").drawImage(a,0,0,a.width,a.height,0,0,d.width,d.height);
-console.log("THREE.WebGLRenderer:",a,"is too big ("+a.width+"x"+a.height+"). Resized to "+d.width+"x"+d.height+".");return d}return a}function J(a,b){l.bindRenderbuffer(l.RENDERBUFFER,a);b.depthBuffer&&!b.stencilBuffer?(l.renderbufferStorage(l.RENDERBUFFER,l.DEPTH_COMPONENT16,b.width,b.height),l.framebufferRenderbuffer(l.FRAMEBUFFER,l.DEPTH_ATTACHMENT,l.RENDERBUFFER,a)):b.depthBuffer&&b.stencilBuffer?(l.renderbufferStorage(l.RENDERBUFFER,l.DEPTH_STENCIL,b.width,b.height),l.framebufferRenderbuffer(l.FRAMEBUFFER,
+b.sourceFile+" )"));(c=$.get("EXT_texture_filter_anisotropic"))&&b.type!==THREE.FloatType&&b.type!==THREE.HalfFloatType&&(1<b.anisotropy||b.__oldAnisotropy)&&(l.texParameterf(a,c.TEXTURE_MAX_ANISOTROPY_EXT,Math.min(b.anisotropy,B.getMaxAnisotropy())),b.__oldAnisotropy=b.anisotropy)}function M(a,b){if(a.width>b||a.height>b){var c=b/Math.max(a.width,a.height),d=document.createElement("canvas");d.width=Math.floor(a.width*c);d.height=Math.floor(a.height*c);d.getContext("2d").drawImage(a,0,0,a.width,a.height,
+0,0,d.width,d.height);console.log("THREE.WebGLRenderer:",a,"is too big ("+a.width+"x"+a.height+"). Resized to "+d.width+"x"+d.height+".");return d}return a}function J(a,b){l.bindRenderbuffer(l.RENDERBUFFER,a);b.depthBuffer&&!b.stencilBuffer?(l.renderbufferStorage(l.RENDERBUFFER,l.DEPTH_COMPONENT16,b.width,b.height),l.framebufferRenderbuffer(l.FRAMEBUFFER,l.DEPTH_ATTACHMENT,l.RENDERBUFFER,a)):b.depthBuffer&&b.stencilBuffer?(l.renderbufferStorage(l.RENDERBUFFER,l.DEPTH_STENCIL,b.width,b.height),l.framebufferRenderbuffer(l.FRAMEBUFFER,
 l.DEPTH_STENCIL_ATTACHMENT,l.RENDERBUFFER,a)):l.renderbufferStorage(l.RENDERBUFFER,l.RGBA4,b.width,b.height)}function K(a){a instanceof THREE.WebGLRenderTargetCube?(l.bindTexture(l.TEXTURE_CUBE_MAP,a.__webglTexture),l.generateMipmap(l.TEXTURE_CUBE_MAP),l.bindTexture(l.TEXTURE_CUBE_MAP,null)):(l.bindTexture(l.TEXTURE_2D,a.__webglTexture),l.generateMipmap(l.TEXTURE_2D),l.bindTexture(l.TEXTURE_2D,null))}function L(a){return a===THREE.NearestFilter||a===THREE.NearestMipMapNearestFilter||a===THREE.NearestMipMapLinearFilter?
 l.NEAREST:l.LINEAR}function T(a){var b;if(a===THREE.RepeatWrapping)return l.REPEAT;if(a===THREE.ClampToEdgeWrapping)return l.CLAMP_TO_EDGE;if(a===THREE.MirroredRepeatWrapping)return l.MIRRORED_REPEAT;if(a===THREE.NearestFilter)return l.NEAREST;if(a===THREE.NearestMipMapNearestFilter)return l.NEAREST_MIPMAP_NEAREST;if(a===THREE.NearestMipMapLinearFilter)return l.NEAREST_MIPMAP_LINEAR;if(a===THREE.LinearFilter)return l.LINEAR;if(a===THREE.LinearMipMapNearestFilter)return l.LINEAR_MIPMAP_NEAREST;if(a===
 THREE.LinearMipMapLinearFilter)return l.LINEAR_MIPMAP_LINEAR;if(a===THREE.UnsignedByteType)return l.UNSIGNED_BYTE;if(a===THREE.UnsignedShort4444Type)return l.UNSIGNED_SHORT_4_4_4_4;if(a===THREE.UnsignedShort5551Type)return l.UNSIGNED_SHORT_5_5_5_1;if(a===THREE.UnsignedShort565Type)return l.UNSIGNED_SHORT_5_6_5;if(a===THREE.ByteType)return l.BYTE;if(a===THREE.ShortType)return l.SHORT;if(a===THREE.UnsignedShortType)return l.UNSIGNED_SHORT;if(a===THREE.IntType)return l.INT;if(a===THREE.UnsignedIntType)return l.UNSIGNED_INT;
-if(a===THREE.FloatType)return l.FLOAT;if(a===THREE.AlphaFormat)return l.ALPHA;if(a===THREE.RGBFormat)return l.RGB;if(a===THREE.RGBAFormat)return l.RGBA;if(a===THREE.LuminanceFormat)return l.LUMINANCE;if(a===THREE.LuminanceAlphaFormat)return l.LUMINANCE_ALPHA;if(a===THREE.AddEquation)return l.FUNC_ADD;if(a===THREE.SubtractEquation)return l.FUNC_SUBTRACT;if(a===THREE.ReverseSubtractEquation)return l.FUNC_REVERSE_SUBTRACT;if(a===THREE.ZeroFactor)return l.ZERO;if(a===THREE.OneFactor)return l.ONE;if(a===
-THREE.SrcColorFactor)return l.SRC_COLOR;if(a===THREE.OneMinusSrcColorFactor)return l.ONE_MINUS_SRC_COLOR;if(a===THREE.SrcAlphaFactor)return l.SRC_ALPHA;if(a===THREE.OneMinusSrcAlphaFactor)return l.ONE_MINUS_SRC_ALPHA;if(a===THREE.DstAlphaFactor)return l.DST_ALPHA;if(a===THREE.OneMinusDstAlphaFactor)return l.ONE_MINUS_DST_ALPHA;if(a===THREE.DstColorFactor)return l.DST_COLOR;if(a===THREE.OneMinusDstColorFactor)return l.ONE_MINUS_DST_COLOR;if(a===THREE.SrcAlphaSaturateFactor)return l.SRC_ALPHA_SATURATE;
-b=aa.get("WEBGL_compressed_texture_s3tc");if(null!==b){if(a===THREE.RGB_S3TC_DXT1_Format)return b.COMPRESSED_RGB_S3TC_DXT1_EXT;if(a===THREE.RGBA_S3TC_DXT1_Format)return b.COMPRESSED_RGBA_S3TC_DXT1_EXT;if(a===THREE.RGBA_S3TC_DXT3_Format)return b.COMPRESSED_RGBA_S3TC_DXT3_EXT;if(a===THREE.RGBA_S3TC_DXT5_Format)return b.COMPRESSED_RGBA_S3TC_DXT5_EXT}b=aa.get("WEBGL_compressed_texture_pvrtc");if(null!==b){if(a===THREE.RGB_PVRTC_4BPPV1_Format)return b.COMPRESSED_RGB_PVRTC_4BPPV1_IMG;if(a===THREE.RGB_PVRTC_2BPPV1_Format)return b.COMPRESSED_RGB_PVRTC_2BPPV1_IMG;
-if(a===THREE.RGBA_PVRTC_4BPPV1_Format)return b.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;if(a===THREE.RGBA_PVRTC_2BPPV1_Format)return b.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG}b=aa.get("EXT_blend_minmax");if(null!==b){if(a===THREE.MinEquation)return b.MIN_EXT;if(a===THREE.MaxEquation)return b.MAX_EXT}return 0}console.log("THREE.WebGLRenderer",THREE.REVISION);a=a||{};var P=void 0!==a.canvas?a.canvas:document.createElement("canvas"),N=void 0!==a.context?a.context:null,Q=1,U=void 0!==a.precision?a.precision:"highp",
-I=void 0!==a.alpha?a.alpha:!1,na=void 0!==a.depth?a.depth:!0,ca=void 0!==a.stencil?a.stencil:!0,sa=void 0!==a.antialias?a.antialias:!1,R=void 0!==a.premultipliedAlpha?a.premultipliedAlpha:!0,xa=void 0!==a.preserveDrawingBuffer?a.preserveDrawingBuffer:!1,ra=void 0!==a.logarithmicDepthBuffer?a.logarithmicDepthBuffer:!1,ja=new THREE.Color(0),wa=0,ya=[],za={},La=[],Sa=[],Ra=[],Ea=[],qb=[];this.domElement=P;this.context=null;this.sortObjects=this.autoClearStencil=this.autoClearDepth=this.autoClearColor=
-this.autoClear=!0;this.gammaFactor=2;this.shadowMapEnabled=this.gammaOutput=this.gammaInput=!1;this.shadowMapType=THREE.PCFShadowMap;this.shadowMapCullFace=THREE.CullFaceFront;this.shadowMapCascade=this.shadowMapDebug=!1;this.maxMorphTargets=8;this.maxMorphNormals=4;this.autoScaleCubemaps=!0;this.info={memory:{programs:0,geometries:0,textures:0},render:{calls:0,vertices:0,faces:0,points:0}};var B=this,cb=[],Wb=null,ob=null,Bb=-1,Ka="",Fb=null,Kb=0,pb=-1,Nb=-1,Xb=-1,Ob=-1,Yb=-1,Zb=-1,ec=-1,fc=-1,gc=
--1,hc=-1,ic=-1,uc=null,vc=null,wc=null,tc=null,gb=0,db=0,hb=P.width,Pa=P.height,xc=0,yc=0,ub=new Uint8Array(16),Qa=new Uint8Array(16),vb=new THREE.Frustum,wb=new THREE.Matrix4;new THREE.Matrix4;var Ca=new THREE.Vector3,ma=new THREE.Vector3,Mb=!0,qc={ambient:[0,0,0],directional:{length:0,colors:[],positions:[]},point:{length:0,colors:[],positions:[],distances:[],decays:[]},spot:{length:0,colors:[],positions:[],distances:[],directions:[],anglesCos:[],exponents:[],decays:[]},hemi:{length:0,skyColors:[],
-groundColors:[],positions:[]}},l;try{var zc={alpha:I,depth:na,stencil:ca,antialias:sa,premultipliedAlpha:R,preserveDrawingBuffer:xa};l=N||P.getContext("webgl",zc)||P.getContext("experimental-webgl",zc);if(null===l){if(null!==P.getContext("webgl"))throw"Error creating WebGL context with your selected attributes.";throw"Error creating WebGL context.";}P.addEventListener("webglcontextlost",function(a){a.preventDefault();Ac();Bc();za={}},!1)}catch(Hc){console.error(Hc)}void 0===l.getShaderPrecisionFormat&&
-(l.getShaderPrecisionFormat=function(){return{rangeMin:1,rangeMax:1,precision:1}});var aa=new THREE.WebGLExtensions(l);aa.get("OES_texture_float");aa.get("OES_texture_float_linear");aa.get("OES_standard_derivatives");ra&&aa.get("EXT_frag_depth");var jc=function(a,b,c,d){!0===R&&(a*=d,b*=d,c*=d);l.clearColor(a,b,c,d)},Bc=function(){l.clearColor(0,0,0,1);l.clearDepth(1);l.clearStencil(0);l.enable(l.DEPTH_TEST);l.depthFunc(l.LEQUAL);l.frontFace(l.CCW);l.cullFace(l.BACK);l.enable(l.CULL_FACE);l.enable(l.BLEND);
-l.blendEquation(l.FUNC_ADD);l.blendFunc(l.SRC_ALPHA,l.ONE_MINUS_SRC_ALPHA);l.viewport(gb,db,hb,Pa);jc(ja.r,ja.g,ja.b,wa)},Ac=function(){Fb=Wb=null;Nb=pb=ic=hc=Xb=-1;Ka="";Bb=-1;Mb=!0;for(var a=0;a<Qa.length;a++)Qa[a]=0};Bc();this.context=l;var sc=l.getParameter(l.MAX_TEXTURE_IMAGE_UNITS),Ic=l.getParameter(l.MAX_VERTEX_TEXTURE_IMAGE_UNITS),Jc=l.getParameter(l.MAX_TEXTURE_SIZE),Gc=l.getParameter(l.MAX_CUBE_MAP_TEXTURE_SIZE),Vb=0<Ic,Lb=Vb&&aa.get("OES_texture_float"),Kc=l.getShaderPrecisionFormat(l.VERTEX_SHADER,
-l.HIGH_FLOAT),Lc=l.getShaderPrecisionFormat(l.VERTEX_SHADER,l.MEDIUM_FLOAT);l.getShaderPrecisionFormat(l.VERTEX_SHADER,l.LOW_FLOAT);var Mc=l.getShaderPrecisionFormat(l.FRAGMENT_SHADER,l.HIGH_FLOAT),Nc=l.getShaderPrecisionFormat(l.FRAGMENT_SHADER,l.MEDIUM_FLOAT);l.getShaderPrecisionFormat(l.FRAGMENT_SHADER,l.LOW_FLOAT);var rc=function(){var a;return function(){if(void 0!==a)return a;a=[];if(aa.get("WEBGL_compressed_texture_pvrtc")||aa.get("WEBGL_compressed_texture_s3tc"))for(var b=l.getParameter(l.COMPRESSED_TEXTURE_FORMATS),
-c=0;c<b.length;c++)a.push(b[c]);return a}}(),Oc=0<Kc.precision&&0<Mc.precision,Cc=0<Lc.precision&&0<Nc.precision;"highp"!==U||Oc||(Cc?(U="mediump",console.warn("THREE.WebGLRenderer: highp not supported, using mediump.")):(U="lowp",console.warn("THREE.WebGLRenderer: highp and mediump not supported, using lowp.")));"mediump"!==U||Cc||(U="lowp",console.warn("THREE.WebGLRenderer: mediump not supported, using lowp."));var Pc=new THREE.ShadowMapPlugin(this,ya,za,La),Qc=new THREE.SpritePlugin(this,Ea),Rc=
-new THREE.LensFlarePlugin(this,qb);this.getContext=function(){return l};this.forceContextLoss=function(){aa.get("WEBGL_lose_context").loseContext()};this.supportsVertexTextures=function(){return Vb};this.supportsFloatTextures=function(){return aa.get("OES_texture_float")};this.supportsStandardDerivatives=function(){return aa.get("OES_standard_derivatives")};this.supportsCompressedTextureS3TC=function(){return aa.get("WEBGL_compressed_texture_s3tc")};this.supportsCompressedTexturePVRTC=function(){return aa.get("WEBGL_compressed_texture_pvrtc")};
-this.supportsBlendMinMax=function(){return aa.get("EXT_blend_minmax")};this.getMaxAnisotropy=function(){var a;return function(){if(void 0!==a)return a;var b=aa.get("EXT_texture_filter_anisotropic");return a=null!==b?l.getParameter(b.MAX_TEXTURE_MAX_ANISOTROPY_EXT):0}}();this.getPrecision=function(){return U};this.getPixelRatio=function(){return Q};this.setPixelRatio=function(a){Q=a};this.setSize=function(a,b,c){P.width=a*Q;P.height=b*Q;!1!==c&&(P.style.width=a+"px",P.style.height=b+"px");this.setViewport(0,
-0,a,b)};this.setViewport=function(a,b,c,d){gb=a*Q;db=b*Q;hb=c*Q;Pa=d*Q;l.viewport(gb,db,hb,Pa)};this.setScissor=function(a,b,c,d){l.scissor(a*Q,b*Q,c*Q,d*Q)};this.enableScissorTest=function(a){a?l.enable(l.SCISSOR_TEST):l.disable(l.SCISSOR_TEST)};this.getClearColor=function(){return ja};this.setClearColor=function(a,b){ja.set(a);wa=void 0!==b?b:1;jc(ja.r,ja.g,ja.b,wa)};this.getClearAlpha=function(){return wa};this.setClearAlpha=function(a){wa=a;jc(ja.r,ja.g,ja.b,wa)};this.clear=function(a,b,c){var d=
-0;if(void 0===a||a)d|=l.COLOR_BUFFER_BIT;if(void 0===b||b)d|=l.DEPTH_BUFFER_BIT;if(void 0===c||c)d|=l.STENCIL_BUFFER_BIT;l.clear(d)};this.clearColor=function(){l.clear(l.COLOR_BUFFER_BIT)};this.clearDepth=function(){l.clear(l.DEPTH_BUFFER_BIT)};this.clearStencil=function(){l.clear(l.STENCIL_BUFFER_BIT)};this.clearTarget=function(a,b,c,d){this.setRenderTarget(a);this.clear(b,c,d)};this.resetGLState=Ac;var kc=function(a){a.target.traverse(function(a){a.removeEventListener("remove",kc);if(a instanceof
-THREE.Mesh||a instanceof THREE.PointCloud||a instanceof THREE.Line)delete za[a.id];else if(a instanceof THREE.ImmediateRenderObject||a.immediateRenderCallback)for(var b=La,c=b.length-1;0<=c;c--)b[c].object===a&&b.splice(c,1);delete a.__webglInit;delete a._modelViewMatrix;delete a._normalMatrix;delete a.__webglActive})},lc=function(a){a=a.target;a.removeEventListener("dispose",lc);delete a.__webglInit;if(a instanceof THREE.BufferGeometry){for(var b in a.attributes){var c=a.attributes[b];void 0!==c.buffer&&
-(l.deleteBuffer(c.buffer),delete c.buffer)}B.info.memory.geometries--}else if(b=ib[a.id],void 0!==b){for(var c=0,d=b.length;c<d;c++){var e=b[c];if(void 0!==e.numMorphTargets){for(var f=0,g=e.numMorphTargets;f<g;f++)l.deleteBuffer(e.__webglMorphTargetsBuffers[f]);delete e.__webglMorphTargetsBuffers}if(void 0!==e.numMorphNormals){f=0;for(g=e.numMorphNormals;f<g;f++)l.deleteBuffer(e.__webglMorphNormalsBuffers[f]);delete e.__webglMorphNormalsBuffers}Dc(e)}delete ib[a.id]}else Dc(a);Ka=""},Gb=function(a){a=
-a.target;a.removeEventListener("dispose",Gb);a.image&&a.image.__webglTextureCube?(l.deleteTexture(a.image.__webglTextureCube),delete a.image.__webglTextureCube):void 0!==a.__webglInit&&(l.deleteTexture(a.__webglTexture),delete a.__webglTexture,delete a.__webglInit);B.info.memory.textures--},Ec=function(a){a=a.target;a.removeEventListener("dispose",Ec);if(a&&void 0!==a.__webglTexture){l.deleteTexture(a.__webglTexture);delete a.__webglTexture;if(a instanceof THREE.WebGLRenderTargetCube)for(var b=0;6>
-b;b++)l.deleteFramebuffer(a.__webglFramebuffer[b]),l.deleteRenderbuffer(a.__webglRenderbuffer[b]);else l.deleteFramebuffer(a.__webglFramebuffer),l.deleteRenderbuffer(a.__webglRenderbuffer);delete a.__webglFramebuffer;delete a.__webglRenderbuffer}B.info.memory.textures--},pc=function(a){a=a.target;a.removeEventListener("dispose",pc);oc(a)},Dc=function(a){for(var b="__webglVertexBuffer __webglNormalBuffer __webglTangentBuffer __webglColorBuffer __webglUVBuffer __webglUV2Buffer __webglSkinIndicesBuffer __webglSkinWeightsBuffer __webglFaceBuffer __webglLineBuffer __webglLineDistanceBuffer".split(" "),
-c=0,d=b.length;c<d;c++){var e=b[c];void 0!==a[e]&&(l.deleteBuffer(a[e]),delete a[e])}if(void 0!==a.__webglCustomAttributesList){for(e in a.__webglCustomAttributesList)l.deleteBuffer(a.__webglCustomAttributesList[e].buffer);delete a.__webglCustomAttributesList}B.info.memory.geometries--},oc=function(a){var b=a.program.program;if(void 0!==b){a.program=void 0;var c,d,e=!1;a=0;for(c=cb.length;a<c;a++)if(d=cb[a],d.program===b){d.usedTimes--;0===d.usedTimes&&(e=!0);break}if(!0===e){e=[];a=0;for(c=cb.length;a<
-c;a++)d=cb[a],d.program!==b&&e.push(d);cb=e;l.deleteProgram(b);B.info.memory.programs--}}};this.renderBufferImmediate=function(a,b,c){e();a.hasPositions&&!a.__webglVertexBuffer&&(a.__webglVertexBuffer=l.createBuffer());a.hasNormals&&!a.__webglNormalBuffer&&(a.__webglNormalBuffer=l.createBuffer());a.hasUvs&&!a.__webglUvBuffer&&(a.__webglUvBuffer=l.createBuffer());a.hasColors&&!a.__webglColorBuffer&&(a.__webglColorBuffer=l.createBuffer());a.hasPositions&&(l.bindBuffer(l.ARRAY_BUFFER,a.__webglVertexBuffer),
-l.bufferData(l.ARRAY_BUFFER,a.positionArray,l.DYNAMIC_DRAW),f(b.attributes.position),l.vertexAttribPointer(b.attributes.position,3,l.FLOAT,!1,0,0));if(a.hasNormals){l.bindBuffer(l.ARRAY_BUFFER,a.__webglNormalBuffer);if(c.shading===THREE.FlatShading){var d,h,k,m,p,n,q,r,t,s,u,v=3*a.count;for(u=0;u<v;u+=9)s=a.normalArray,d=s[u],h=s[u+1],k=s[u+2],m=s[u+3],n=s[u+4],r=s[u+5],p=s[u+6],q=s[u+7],t=s[u+8],d=(d+m+p)/3,h=(h+n+q)/3,k=(k+r+t)/3,s[u]=d,s[u+1]=h,s[u+2]=k,s[u+3]=d,s[u+4]=h,s[u+5]=k,s[u+6]=d,s[u+
-7]=h,s[u+8]=k}l.bufferData(l.ARRAY_BUFFER,a.normalArray,l.DYNAMIC_DRAW);f(b.attributes.normal);l.vertexAttribPointer(b.attributes.normal,3,l.FLOAT,!1,0,0)}a.hasUvs&&c.map&&(l.bindBuffer(l.ARRAY_BUFFER,a.__webglUvBuffer),l.bufferData(l.ARRAY_BUFFER,a.uvArray,l.DYNAMIC_DRAW),f(b.attributes.uv),l.vertexAttribPointer(b.attributes.uv,2,l.FLOAT,!1,0,0));a.hasColors&&c.vertexColors!==THREE.NoColors&&(l.bindBuffer(l.ARRAY_BUFFER,a.__webglColorBuffer),l.bufferData(l.ARRAY_BUFFER,a.colorArray,l.DYNAMIC_DRAW),
-f(b.attributes.color),l.vertexAttribPointer(b.attributes.color,3,l.FLOAT,!1,0,0));g();l.drawArrays(l.TRIANGLES,0,a.count);a.count=0};this.renderBufferDirect=function(a,b,c,f,g,h){if(!1!==f.visible)if(u(h),a=C(a,b,c,f,h),b=!1,c="direct_"+g.id+"_"+a.id+"_"+(f.wireframe?1:0),c!==Ka&&(Ka=c,b=!0),b&&e(),h instanceof THREE.Mesh){h=!0===f.wireframe?l.LINES:l.TRIANGLES;var k=g.attributes.index;if(k){var m,p;k.array instanceof Uint32Array&&aa.get("OES_element_index_uint")?(m=l.UNSIGNED_INT,p=4):(m=l.UNSIGNED_SHORT,
-p=2);c=g.offsets;if(0===c.length)b&&(d(f,a,g,0),l.bindBuffer(l.ELEMENT_ARRAY_BUFFER,k.buffer)),l.drawElements(h,k.array.length,m,0),B.info.render.calls++,B.info.render.vertices+=k.array.length,B.info.render.faces+=k.array.length/3;else{b=!0;for(var n=0,q=c.length;n<q;n++){var s=c[n].index;b&&(d(f,a,g,s),l.bindBuffer(l.ELEMENT_ARRAY_BUFFER,k.buffer));l.drawElements(h,c[n].count,m,c[n].start*p);B.info.render.calls++;B.info.render.vertices+=c[n].count;B.info.render.faces+=c[n].count/3}}}else b&&d(f,
-a,g,0),f=g.attributes.position,l.drawArrays(h,0,f.array.length/f.itemSize),B.info.render.calls++,B.info.render.vertices+=f.array.length/f.itemSize,B.info.render.faces+=f.array.length/(3*f.itemsize)}else if(h instanceof THREE.PointCloud)if(h=l.POINTS,k=g.attributes.index)if(k.array instanceof Uint32Array&&aa.get("OES_element_index_uint")?(m=l.UNSIGNED_INT,p=4):(m=l.UNSIGNED_SHORT,p=2),c=g.offsets,0===c.length)b&&(d(f,a,g,0),l.bindBuffer(l.ELEMENT_ARRAY_BUFFER,k.buffer)),l.drawElements(h,k.array.length,
-m,0),B.info.render.calls++,B.info.render.points+=k.array.length;else for(1<c.length&&(b=!0),n=0,q=c.length;n<q;n++)s=c[n].index,b&&(d(f,a,g,s),l.bindBuffer(l.ELEMENT_ARRAY_BUFFER,k.buffer)),l.drawElements(h,c[n].count,m,c[n].start*p),B.info.render.calls++,B.info.render.points+=c[n].count;else if(b&&d(f,a,g,0),f=g.attributes.position,c=g.offsets,0===c.length)l.drawArrays(h,0,f.array.length/3),B.info.render.calls++,B.info.render.points+=f.array.length/3;else for(n=0,q=c.length;n<q;n++)l.drawArrays(h,
-c[n].index,c[n].count),B.info.render.calls++,B.info.render.points+=c[n].count;else if(h instanceof THREE.Line)if(h=h.mode===THREE.LineStrip?l.LINE_STRIP:l.LINES,G(f.linewidth),k=g.attributes.index)if(k.array instanceof Uint32Array?(m=l.UNSIGNED_INT,p=4):(m=l.UNSIGNED_SHORT,p=2),c=g.offsets,0===c.length)b&&(d(f,a,g,0),l.bindBuffer(l.ELEMENT_ARRAY_BUFFER,k.buffer)),l.drawElements(h,k.array.length,m,0),B.info.render.calls++,B.info.render.vertices+=k.array.length;else for(1<c.length&&(b=!0),n=0,q=c.length;n<
-q;n++)s=c[n].index,b&&(d(f,a,g,s),l.bindBuffer(l.ELEMENT_ARRAY_BUFFER,k.buffer)),l.drawElements(h,c[n].count,m,c[n].start*p),B.info.render.calls++,B.info.render.vertices+=c[n].count;else if(b&&d(f,a,g,0),f=g.attributes.position,c=g.offsets,0===c.length)l.drawArrays(h,0,f.array.length/3),B.info.render.calls++,B.info.render.vertices+=f.array.length/3;else for(n=0,q=c.length;n<q;n++)l.drawArrays(h,c[n].index,c[n].count),B.info.render.calls++,B.info.render.vertices+=c[n].count};this.renderBuffer=function(a,
-b,c,d,h,k){if(!1!==d.visible){u(k);c=C(a,b,c,d,k);b=c.attributes;a=!1;c=h.id+"_"+c.id+"_"+(d.wireframe?1:0);c!==Ka&&(Ka=c,a=!0);a&&e();if(!d.morphTargets&&0<=b.position)a&&(l.bindBuffer(l.ARRAY_BUFFER,h.__webglVertexBuffer),f(b.position),l.vertexAttribPointer(b.position,3,l.FLOAT,!1,0,0));else if(k.morphTargetBase){c=d.program.attributes;-1!==k.morphTargetBase&&0<=c.position?(l.bindBuffer(l.ARRAY_BUFFER,h.__webglMorphTargetsBuffers[k.morphTargetBase]),f(c.position),l.vertexAttribPointer(c.position,
-3,l.FLOAT,!1,0,0)):0<=c.position&&(l.bindBuffer(l.ARRAY_BUFFER,h.__webglVertexBuffer),f(c.position),l.vertexAttribPointer(c.position,3,l.FLOAT,!1,0,0));if(k.morphTargetForcedOrder.length)for(var m=0,n=k.morphTargetForcedOrder,q=k.morphTargetInfluences,s;m<d.numSupportedMorphTargets&&m<n.length;)s=c["morphTarget"+m],0<=s&&(l.bindBuffer(l.ARRAY_BUFFER,h.__webglMorphTargetsBuffers[n[m]]),f(s),l.vertexAttribPointer(s,3,l.FLOAT,!1,0,0)),s=c["morphNormal"+m],0<=s&&d.morphNormals&&(l.bindBuffer(l.ARRAY_BUFFER,
-h.__webglMorphNormalsBuffers[n[m]]),f(s),l.vertexAttribPointer(s,3,l.FLOAT,!1,0,0)),k.__webglMorphTargetInfluences[m]=q[n[m]],m++;else{n=[];q=k.morphTargetInfluences;m=k.geometry.morphTargets;q.length>m.length&&(console.warn("THREE.WebGLRenderer: Influences array is bigger than morphTargets array."),q.length=m.length);m=0;for(s=q.length;m<s;m++)n.push([q[m],m]);n.length>d.numSupportedMorphTargets?(n.sort(p),n.length=d.numSupportedMorphTargets):n.length>d.numSupportedMorphNormals?n.sort(p):0===n.length&&
-n.push([0,0]);for(var m=0,r=d.numSupportedMorphTargets;m<r;m++)if(n[m]){var t=n[m][1];s=c["morphTarget"+m];0<=s&&(l.bindBuffer(l.ARRAY_BUFFER,h.__webglMorphTargetsBuffers[t]),f(s),l.vertexAttribPointer(s,3,l.FLOAT,!1,0,0));s=c["morphNormal"+m];0<=s&&d.morphNormals&&(l.bindBuffer(l.ARRAY_BUFFER,h.__webglMorphNormalsBuffers[t]),f(s),l.vertexAttribPointer(s,3,l.FLOAT,!1,0,0));k.__webglMorphTargetInfluences[m]=q[t]}else k.__webglMorphTargetInfluences[m]=0}null!==d.program.uniforms.morphTargetInfluences&&
-l.uniform1fv(d.program.uniforms.morphTargetInfluences,k.__webglMorphTargetInfluences)}if(a){if(h.__webglCustomAttributesList)for(c=0,q=h.__webglCustomAttributesList.length;c<q;c++)n=h.__webglCustomAttributesList[c],0<=b[n.buffer.belongsToAttribute]&&(l.bindBuffer(l.ARRAY_BUFFER,n.buffer),f(b[n.buffer.belongsToAttribute]),l.vertexAttribPointer(b[n.buffer.belongsToAttribute],n.size,l.FLOAT,!1,0,0));0<=b.color&&(0<k.geometry.colors.length||0<k.geometry.faces.length?(l.bindBuffer(l.ARRAY_BUFFER,h.__webglColorBuffer),
-f(b.color),l.vertexAttribPointer(b.color,3,l.FLOAT,!1,0,0)):void 0!==d.defaultAttributeValues&&l.vertexAttrib3fv(b.color,d.defaultAttributeValues.color));0<=b.normal&&(l.bindBuffer(l.ARRAY_BUFFER,h.__webglNormalBuffer),f(b.normal),l.vertexAttribPointer(b.normal,3,l.FLOAT,!1,0,0));0<=b.tangent&&(l.bindBuffer(l.ARRAY_BUFFER,h.__webglTangentBuffer),f(b.tangent),l.vertexAttribPointer(b.tangent,4,l.FLOAT,!1,0,0));0<=b.uv&&(k.geometry.faceVertexUvs[0]?(l.bindBuffer(l.ARRAY_BUFFER,h.__webglUVBuffer),f(b.uv),
-l.vertexAttribPointer(b.uv,2,l.FLOAT,!1,0,0)):void 0!==d.defaultAttributeValues&&l.vertexAttrib2fv(b.uv,d.defaultAttributeValues.uv));0<=b.uv2&&(k.geometry.faceVertexUvs[1]?(l.bindBuffer(l.ARRAY_BUFFER,h.__webglUV2Buffer),f(b.uv2),l.vertexAttribPointer(b.uv2,2,l.FLOAT,!1,0,0)):void 0!==d.defaultAttributeValues&&l.vertexAttrib2fv(b.uv2,d.defaultAttributeValues.uv2));d.skinning&&0<=b.skinIndex&&0<=b.skinWeight&&(l.bindBuffer(l.ARRAY_BUFFER,h.__webglSkinIndicesBuffer),f(b.skinIndex),l.vertexAttribPointer(b.skinIndex,
-4,l.FLOAT,!1,0,0),l.bindBuffer(l.ARRAY_BUFFER,h.__webglSkinWeightsBuffer),f(b.skinWeight),l.vertexAttribPointer(b.skinWeight,4,l.FLOAT,!1,0,0));0<=b.lineDistance&&(l.bindBuffer(l.ARRAY_BUFFER,h.__webglLineDistanceBuffer),f(b.lineDistance),l.vertexAttribPointer(b.lineDistance,1,l.FLOAT,!1,0,0))}g();k instanceof THREE.Mesh?(k=h.__typeArray===Uint32Array?l.UNSIGNED_INT:l.UNSIGNED_SHORT,d.wireframe?(G(d.wireframeLinewidth),a&&l.bindBuffer(l.ELEMENT_ARRAY_BUFFER,h.__webglLineBuffer),l.drawElements(l.LINES,
-h.__webglLineCount,k,0)):(a&&l.bindBuffer(l.ELEMENT_ARRAY_BUFFER,h.__webglFaceBuffer),l.drawElements(l.TRIANGLES,h.__webglFaceCount,k,0)),B.info.render.calls++,B.info.render.vertices+=h.__webglFaceCount,B.info.render.faces+=h.__webglFaceCount/3):k instanceof THREE.Line?(k=k.mode===THREE.LineStrip?l.LINE_STRIP:l.LINES,G(d.linewidth),l.drawArrays(k,0,h.__webglLineCount),B.info.render.calls++):k instanceof THREE.PointCloud&&(l.drawArrays(l.POINTS,0,h.__webglParticleCount),B.info.render.calls++,B.info.render.points+=
-h.__webglParticleCount)}};this.render=function(a,b,c,d){if(!1===b instanceof THREE.Camera)console.error("THREE.WebGLRenderer.render: camera is not an instance of THREE.Camera.");else{var e=a.fog;Ka="";Bb=-1;Fb=null;Mb=!0;!0===a.autoUpdate&&a.updateMatrixWorld();void 0===b.parent&&b.updateMatrixWorld();a.traverse(function(a){a instanceof THREE.SkinnedMesh&&a.skeleton.update()});b.matrixWorldInverse.getInverse(b.matrixWorld);wb.multiplyMatrices(b.projectionMatrix,b.matrixWorldInverse);vb.setFromMatrix(wb);
-ya.length=0;Sa.length=0;Ra.length=0;Ea.length=0;qb.length=0;n(a);!0===B.sortObjects&&(Sa.sort(h),Ra.sort(k));Pc.render(a,b);B.info.render.calls=0;B.info.render.vertices=0;B.info.render.faces=0;B.info.render.points=0;this.setRenderTarget(c);(this.autoClear||d)&&this.clear(this.autoClearColor,this.autoClearDepth,this.autoClearStencil);d=0;for(var f=La.length;d<f;d++){var g=La[d],l=g.object;l.visible&&(A(l,b),s(g))}a.overrideMaterial?(d=a.overrideMaterial,this.setBlending(d.blending,d.blendEquation,
-d.blendSrc,d.blendDst,d.blendEquationAlpha,d.blendSrcAlpha,d.blendDstAlpha),this.setDepthTest(d.depthTest),this.setDepthWrite(d.depthWrite),E(d.polygonOffset,d.polygonOffsetFactor,d.polygonOffsetUnits),q(Sa,b,ya,e,!0,d),q(Ra,b,ya,e,!0,d),m(La,"",b,ya,e,!1,d)):(d=null,this.setBlending(THREE.NoBlending),q(Sa,b,ya,e,!1,d),m(La,"opaque",b,ya,e,!1,d),q(Ra,b,ya,e,!0,d),m(La,"transparent",b,ya,e,!0,d));Qc.render(a,b);Rc.render(a,b,xc,yc);c&&c.generateMipmaps&&c.minFilter!==THREE.NearestFilter&&c.minFilter!==
-THREE.LinearFilter&&K(c);this.setDepthTest(!0);this.setDepthWrite(!0)}};this.renderImmediateObject=function(a,b,c,d,e){var f=C(a,b,c,d,e);Ka="";B.setMaterialFaces(d);e.immediateRenderCallback?e.immediateRenderCallback(f,l,vb):e.render(function(a){B.renderBufferImmediate(a,f,d)})};var ib={},mc=0,Fc={MeshDepthMaterial:"depth",MeshNormalMaterial:"normal",MeshBasicMaterial:"basic",MeshLambertMaterial:"lambert",MeshPhongMaterial:"phong",LineBasicMaterial:"basic",LineDashedMaterial:"dashed",PointCloudMaterial:"particle_basic"};
-this.setFaceCulling=function(a,b){a===THREE.CullFaceNone?l.disable(l.CULL_FACE):(b===THREE.FrontFaceDirectionCW?l.frontFace(l.CW):l.frontFace(l.CCW),a===THREE.CullFaceBack?l.cullFace(l.BACK):a===THREE.CullFaceFront?l.cullFace(l.FRONT):l.cullFace(l.FRONT_AND_BACK),l.enable(l.CULL_FACE))};this.setMaterialFaces=function(a){var b=a.side===THREE.DoubleSide;a=a.side===THREE.BackSide;pb!==b&&(b?l.disable(l.CULL_FACE):l.enable(l.CULL_FACE),pb=b);Nb!==a&&(a?l.frontFace(l.CW):l.frontFace(l.CCW),Nb=a)};this.setDepthTest=
-function(a){hc!==a&&(a?l.enable(l.DEPTH_TEST):l.disable(l.DEPTH_TEST),hc=a)};this.setDepthWrite=function(a){ic!==a&&(l.depthMask(a),ic=a)};this.setBlending=function(a,b,c,d,e,f,g){a!==Xb&&(a===THREE.NoBlending?l.disable(l.BLEND):a===THREE.AdditiveBlending?(l.enable(l.BLEND),l.blendEquation(l.FUNC_ADD),l.blendFunc(l.SRC_ALPHA,l.ONE)):a===THREE.SubtractiveBlending?(l.enable(l.BLEND),l.blendEquation(l.FUNC_ADD),l.blendFunc(l.ZERO,l.ONE_MINUS_SRC_COLOR)):a===THREE.MultiplyBlending?(l.enable(l.BLEND),
-l.blendEquation(l.FUNC_ADD),l.blendFunc(l.ZERO,l.SRC_COLOR)):a===THREE.CustomBlending?l.enable(l.BLEND):(l.enable(l.BLEND),l.blendEquationSeparate(l.FUNC_ADD,l.FUNC_ADD),l.blendFuncSeparate(l.SRC_ALPHA,l.ONE_MINUS_SRC_ALPHA,l.ONE,l.ONE_MINUS_SRC_ALPHA)),Xb=a);if(a===THREE.CustomBlending){e=e||b;f=f||c;g=g||d;if(b!==Ob||e!==ec)l.blendEquationSeparate(T(b),T(e)),Ob=b,ec=e;if(c!==Yb||d!==Zb||f!==fc||g!==gc)l.blendFuncSeparate(T(c),T(d),T(f),T(g)),Yb=c,Zb=d,fc=f,gc=g}else gc=fc=ec=Zb=Yb=Ob=null};this.uploadTexture=
-function(a){void 0===a.__webglInit&&(a.__webglInit=!0,a.addEventListener("dispose",Gb),a.__webglTexture=l.createTexture(),B.info.memory.textures++);l.bindTexture(l.TEXTURE_2D,a.__webglTexture);l.pixelStorei(l.UNPACK_FLIP_Y_WEBGL,a.flipY);l.pixelStorei(l.UNPACK_PREMULTIPLY_ALPHA_WEBGL,a.premultiplyAlpha);l.pixelStorei(l.UNPACK_ALIGNMENT,a.unpackAlignment);a.image=M(a.image,Jc);var b=a.image,c=THREE.Math.isPowerOfTwo(b.width)&&THREE.Math.isPowerOfTwo(b.height),d=T(a.format),e=T(a.type);z(l.TEXTURE_2D,
-a,c);var f=a.mipmaps;if(a instanceof THREE.DataTexture)if(0<f.length&&c){for(var g=0,h=f.length;g<h;g++)b=f[g],l.texImage2D(l.TEXTURE_2D,g,d,b.width,b.height,0,d,e,b.data);a.generateMipmaps=!1}else l.texImage2D(l.TEXTURE_2D,0,d,b.width,b.height,0,d,e,b.data);else if(a instanceof THREE.CompressedTexture)for(g=0,h=f.length;g<h;g++)b=f[g],a.format!==THREE.RGBAFormat&&a.format!==THREE.RGBFormat?-1<rc().indexOf(d)?l.compressedTexImage2D(l.TEXTURE_2D,g,d,b.width,b.height,0,b.data):console.warn("Attempt to load unsupported compressed texture format"):
-l.texImage2D(l.TEXTURE_2D,g,d,b.width,b.height,0,d,e,b.data);else if(0<f.length&&c){g=0;for(h=f.length;g<h;g++)b=f[g],l.texImage2D(l.TEXTURE_2D,g,d,d,e,b);a.generateMipmaps=!1}else l.texImage2D(l.TEXTURE_2D,0,d,d,e,a.image);a.generateMipmaps&&c&&l.generateMipmap(l.TEXTURE_2D);a.needsUpdate=!1;if(a.onUpdate)a.onUpdate()};this.setTexture=function(a,b){l.activeTexture(l.TEXTURE0+b);a.needsUpdate?B.uploadTexture(a):l.bindTexture(l.TEXTURE_2D,a.__webglTexture)};this.setRenderTarget=function(a){var b=a instanceof
-THREE.WebGLRenderTargetCube;if(a&&void 0===a.__webglFramebuffer){void 0===a.depthBuffer&&(a.depthBuffer=!0);void 0===a.stencilBuffer&&(a.stencilBuffer=!0);a.addEventListener("dispose",Ec);a.__webglTexture=l.createTexture();B.info.memory.textures++;var c=THREE.Math.isPowerOfTwo(a.width)&&THREE.Math.isPowerOfTwo(a.height),d=T(a.format),e=T(a.type);if(b){a.__webglFramebuffer=[];a.__webglRenderbuffer=[];l.bindTexture(l.TEXTURE_CUBE_MAP,a.__webglTexture);z(l.TEXTURE_CUBE_MAP,a,c);for(var f=0;6>f;f++){a.__webglFramebuffer[f]=
-l.createFramebuffer();a.__webglRenderbuffer[f]=l.createRenderbuffer();l.texImage2D(l.TEXTURE_CUBE_MAP_POSITIVE_X+f,0,d,a.width,a.height,0,d,e,null);var g=a,h=l.TEXTURE_CUBE_MAP_POSITIVE_X+f;l.bindFramebuffer(l.FRAMEBUFFER,a.__webglFramebuffer[f]);l.framebufferTexture2D(l.FRAMEBUFFER,l.COLOR_ATTACHMENT0,h,g.__webglTexture,0);J(a.__webglRenderbuffer[f],a)}c&&l.generateMipmap(l.TEXTURE_CUBE_MAP)}else a.__webglFramebuffer=l.createFramebuffer(),a.__webglRenderbuffer=a.shareDepthFrom?a.shareDepthFrom.__webglRenderbuffer:
-l.createRenderbuffer(),l.bindTexture(l.TEXTURE_2D,a.__webglTexture),z(l.TEXTURE_2D,a,c),l.texImage2D(l.TEXTURE_2D,0,d,a.width,a.height,0,d,e,null),d=l.TEXTURE_2D,l.bindFramebuffer(l.FRAMEBUFFER,a.__webglFramebuffer),l.framebufferTexture2D(l.FRAMEBUFFER,l.COLOR_ATTACHMENT0,d,a.__webglTexture,0),a.shareDepthFrom?a.depthBuffer&&!a.stencilBuffer?l.framebufferRenderbuffer(l.FRAMEBUFFER,l.DEPTH_ATTACHMENT,l.RENDERBUFFER,a.__webglRenderbuffer):a.depthBuffer&&a.stencilBuffer&&l.framebufferRenderbuffer(l.FRAMEBUFFER,
-l.DEPTH_STENCIL_ATTACHMENT,l.RENDERBUFFER,a.__webglRenderbuffer):J(a.__webglRenderbuffer,a),c&&l.generateMipmap(l.TEXTURE_2D);b?l.bindTexture(l.TEXTURE_CUBE_MAP,null):l.bindTexture(l.TEXTURE_2D,null);l.bindRenderbuffer(l.RENDERBUFFER,null);l.bindFramebuffer(l.FRAMEBUFFER,null)}a?(b=b?a.__webglFramebuffer[a.activeCubeFace]:a.__webglFramebuffer,c=a.width,a=a.height,e=d=0):(b=null,c=hb,a=Pa,d=gb,e=db);b!==ob&&(l.bindFramebuffer(l.FRAMEBUFFER,b),l.viewport(d,e,c,a),ob=b);xc=c;yc=a};this.readRenderTargetPixels=
-function(a,b,c,d,e,f){if(!(a instanceof THREE.WebGLRenderTarget))console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.");else if(a.__webglFramebuffer)if(a.format!==THREE.RGBAFormat)console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA format. readPixels can read only RGBA format.");else{var g=!1;a.__webglFramebuffer!==ob&&(l.bindFramebuffer(l.FRAMEBUFFER,a.__webglFramebuffer),g=!0);l.checkFramebufferStatus(l.FRAMEBUFFER)===
-l.FRAMEBUFFER_COMPLETE?l.readPixels(b,c,d,e,l.RGBA,l.UNSIGNED_BYTE,f):console.error("THREE.WebGLRenderer.readRenderTargetPixels: readPixels from renderTarget failed. Framebuffer not complete.");g&&l.bindFramebuffer(l.FRAMEBUFFER,ob)}};this.initMaterial=function(){console.warn("THREE.WebGLRenderer: .initMaterial() has been removed.")};this.addPrePlugin=function(){console.warn("THREE.WebGLRenderer: .addPrePlugin() has been removed.")};this.addPostPlugin=function(){console.warn("THREE.WebGLRenderer: .addPostPlugin() has been removed.")};
-this.updateShadowMap=function(){console.warn("THREE.WebGLRenderer: .updateShadowMap() has been removed.")}};
+if(a===THREE.FloatType)return l.FLOAT;b=$.get("OES_texture_half_float");if(null!==b&&a===THREE.HalfFloatType)return b.HALF_FLOAT_OES;if(a===THREE.AlphaFormat)return l.ALPHA;if(a===THREE.RGBFormat)return l.RGB;if(a===THREE.RGBAFormat)return l.RGBA;if(a===THREE.LuminanceFormat)return l.LUMINANCE;if(a===THREE.LuminanceAlphaFormat)return l.LUMINANCE_ALPHA;if(a===THREE.AddEquation)return l.FUNC_ADD;if(a===THREE.SubtractEquation)return l.FUNC_SUBTRACT;if(a===THREE.ReverseSubtractEquation)return l.FUNC_REVERSE_SUBTRACT;
+if(a===THREE.ZeroFactor)return l.ZERO;if(a===THREE.OneFactor)return l.ONE;if(a===THREE.SrcColorFactor)return l.SRC_COLOR;if(a===THREE.OneMinusSrcColorFactor)return l.ONE_MINUS_SRC_COLOR;if(a===THREE.SrcAlphaFactor)return l.SRC_ALPHA;if(a===THREE.OneMinusSrcAlphaFactor)return l.ONE_MINUS_SRC_ALPHA;if(a===THREE.DstAlphaFactor)return l.DST_ALPHA;if(a===THREE.OneMinusDstAlphaFactor)return l.ONE_MINUS_DST_ALPHA;if(a===THREE.DstColorFactor)return l.DST_COLOR;if(a===THREE.OneMinusDstColorFactor)return l.ONE_MINUS_DST_COLOR;
+if(a===THREE.SrcAlphaSaturateFactor)return l.SRC_ALPHA_SATURATE;b=$.get("WEBGL_compressed_texture_s3tc");if(null!==b){if(a===THREE.RGB_S3TC_DXT1_Format)return b.COMPRESSED_RGB_S3TC_DXT1_EXT;if(a===THREE.RGBA_S3TC_DXT1_Format)return b.COMPRESSED_RGBA_S3TC_DXT1_EXT;if(a===THREE.RGBA_S3TC_DXT3_Format)return b.COMPRESSED_RGBA_S3TC_DXT3_EXT;if(a===THREE.RGBA_S3TC_DXT5_Format)return b.COMPRESSED_RGBA_S3TC_DXT5_EXT}b=$.get("WEBGL_compressed_texture_pvrtc");if(null!==b){if(a===THREE.RGB_PVRTC_4BPPV1_Format)return b.COMPRESSED_RGB_PVRTC_4BPPV1_IMG;
+if(a===THREE.RGB_PVRTC_2BPPV1_Format)return b.COMPRESSED_RGB_PVRTC_2BPPV1_IMG;if(a===THREE.RGBA_PVRTC_4BPPV1_Format)return b.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;if(a===THREE.RGBA_PVRTC_2BPPV1_Format)return b.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG}b=$.get("EXT_blend_minmax");if(null!==b){if(a===THREE.MinEquation)return b.MIN_EXT;if(a===THREE.MaxEquation)return b.MAX_EXT}return 0}console.log("THREE.WebGLRenderer",THREE.REVISION);a=a||{};var P=void 0!==a.canvas?a.canvas:document.createElement("canvas"),N=void 0!==
+a.context?a.context:null,Q=1,U=void 0!==a.precision?a.precision:"highp",I=void 0!==a.alpha?a.alpha:!1,na=void 0!==a.depth?a.depth:!0,ca=void 0!==a.stencil?a.stencil:!0,sa=void 0!==a.antialias?a.antialias:!1,R=void 0!==a.premultipliedAlpha?a.premultipliedAlpha:!0,xa=void 0!==a.preserveDrawingBuffer?a.preserveDrawingBuffer:!1,ra=void 0!==a.logarithmicDepthBuffer?a.logarithmicDepthBuffer:!1,ja=new THREE.Color(0),wa=0,ya=[],za={},Ma=[],Fa=[],Sa=[],Ea=[],qb=[];this.domElement=P;this.context=null;this.sortObjects=
+this.autoClearStencil=this.autoClearDepth=this.autoClearColor=this.autoClear=!0;this.gammaFactor=2;this.shadowMapEnabled=this.gammaOutput=this.gammaInput=!1;this.shadowMapType=THREE.PCFShadowMap;this.shadowMapCullFace=THREE.CullFaceFront;this.shadowMapCascade=this.shadowMapDebug=!1;this.maxMorphTargets=8;this.maxMorphNormals=4;this.autoScaleCubemaps=!0;this.info={memory:{programs:0,geometries:0,textures:0},render:{calls:0,vertices:0,faces:0,points:0}};var B=this,cb=[],Wb=null,ob=null,Bb=-1,La="",
+Fb=null,Kb=0,pb=-1,Nb=-1,Xb=-1,Ob=-1,Yb=-1,Zb=-1,ec=-1,fc=-1,gc=-1,hc=-1,ic=-1,uc=null,vc=null,wc=null,tc=null,gb=0,db=0,hb=P.width,Qa=P.height,xc=0,yc=0,ub=new Uint8Array(16),Ra=new Uint8Array(16),vb=new THREE.Frustum,wb=new THREE.Matrix4;new THREE.Matrix4;var Ca=new THREE.Vector3,ma=new THREE.Vector3,Mb=!0,qc={ambient:[0,0,0],directional:{length:0,colors:[],positions:[]},point:{length:0,colors:[],positions:[],distances:[],decays:[]},spot:{length:0,colors:[],positions:[],distances:[],directions:[],
+anglesCos:[],exponents:[],decays:[]},hemi:{length:0,skyColors:[],groundColors:[],positions:[]}},l;try{var zc={alpha:I,depth:na,stencil:ca,antialias:sa,premultipliedAlpha:R,preserveDrawingBuffer:xa};l=N||P.getContext("webgl",zc)||P.getContext("experimental-webgl",zc);if(null===l){if(null!==P.getContext("webgl"))throw"Error creating WebGL context with your selected attributes.";throw"Error creating WebGL context.";}P.addEventListener("webglcontextlost",function(a){a.preventDefault();Ac();Bc();za={}},
+!1)}catch(Hc){console.error(Hc)}void 0===l.getShaderPrecisionFormat&&(l.getShaderPrecisionFormat=function(){return{rangeMin:1,rangeMax:1,precision:1}});var $=new THREE.WebGLExtensions(l);$.get("OES_texture_float");$.get("OES_texture_float_linear");$.get("OES_texture_half_float");$.get("OES_texture_half_float_linear");$.get("OES_standard_derivatives");ra&&$.get("EXT_frag_depth");var jc=function(a,b,c,d){!0===R&&(a*=d,b*=d,c*=d);l.clearColor(a,b,c,d)},Bc=function(){l.clearColor(0,0,0,1);l.clearDepth(1);
+l.clearStencil(0);l.enable(l.DEPTH_TEST);l.depthFunc(l.LEQUAL);l.frontFace(l.CCW);l.cullFace(l.BACK);l.enable(l.CULL_FACE);l.enable(l.BLEND);l.blendEquation(l.FUNC_ADD);l.blendFunc(l.SRC_ALPHA,l.ONE_MINUS_SRC_ALPHA);l.viewport(gb,db,hb,Qa);jc(ja.r,ja.g,ja.b,wa)},Ac=function(){Fb=Wb=null;Nb=pb=ic=hc=Xb=-1;La="";Bb=-1;Mb=!0;for(var a=0;a<Ra.length;a++)Ra[a]=0};Bc();this.context=l;var sc=l.getParameter(l.MAX_TEXTURE_IMAGE_UNITS),Ic=l.getParameter(l.MAX_VERTEX_TEXTURE_IMAGE_UNITS),Jc=l.getParameter(l.MAX_TEXTURE_SIZE),
+Gc=l.getParameter(l.MAX_CUBE_MAP_TEXTURE_SIZE),Vb=0<Ic,Lb=Vb&&$.get("OES_texture_float"),Kc=l.getShaderPrecisionFormat(l.VERTEX_SHADER,l.HIGH_FLOAT),Lc=l.getShaderPrecisionFormat(l.VERTEX_SHADER,l.MEDIUM_FLOAT);l.getShaderPrecisionFormat(l.VERTEX_SHADER,l.LOW_FLOAT);var Mc=l.getShaderPrecisionFormat(l.FRAGMENT_SHADER,l.HIGH_FLOAT),Nc=l.getShaderPrecisionFormat(l.FRAGMENT_SHADER,l.MEDIUM_FLOAT);l.getShaderPrecisionFormat(l.FRAGMENT_SHADER,l.LOW_FLOAT);var rc=function(){var a;return function(){if(void 0!==
+a)return a;a=[];if($.get("WEBGL_compressed_texture_pvrtc")||$.get("WEBGL_compressed_texture_s3tc"))for(var b=l.getParameter(l.COMPRESSED_TEXTURE_FORMATS),c=0;c<b.length;c++)a.push(b[c]);return a}}(),Oc=0<Kc.precision&&0<Mc.precision,Cc=0<Lc.precision&&0<Nc.precision;"highp"!==U||Oc||(Cc?(U="mediump",console.warn("THREE.WebGLRenderer: highp not supported, using mediump.")):(U="lowp",console.warn("THREE.WebGLRenderer: highp and mediump not supported, using lowp.")));"mediump"!==U||Cc||(U="lowp",console.warn("THREE.WebGLRenderer: mediump not supported, using lowp."));
+var Pc=new THREE.ShadowMapPlugin(this,ya,za,Ma),Qc=new THREE.SpritePlugin(this,Ea),Rc=new THREE.LensFlarePlugin(this,qb);this.getContext=function(){return l};this.forceContextLoss=function(){$.get("WEBGL_lose_context").loseContext()};this.supportsVertexTextures=function(){return Vb};this.supportsFloatTextures=function(){return $.get("OES_texture_float")};this.supportsHalfFloatTextures=function(){return $.get("OES_texture_half_float")};this.supportsStandardDerivatives=function(){return $.get("OES_standard_derivatives")};
+this.supportsCompressedTextureS3TC=function(){return $.get("WEBGL_compressed_texture_s3tc")};this.supportsCompressedTexturePVRTC=function(){return $.get("WEBGL_compressed_texture_pvrtc")};this.supportsBlendMinMax=function(){return $.get("EXT_blend_minmax")};this.getMaxAnisotropy=function(){var a;return function(){if(void 0!==a)return a;var b=$.get("EXT_texture_filter_anisotropic");return a=null!==b?l.getParameter(b.MAX_TEXTURE_MAX_ANISOTROPY_EXT):0}}();this.getPrecision=function(){return U};this.getPixelRatio=
+function(){return Q};this.setPixelRatio=function(a){Q=a};this.setSize=function(a,b,c){P.width=a*Q;P.height=b*Q;!1!==c&&(P.style.width=a+"px",P.style.height=b+"px");this.setViewport(0,0,a,b)};this.setViewport=function(a,b,c,d){gb=a*Q;db=b*Q;hb=c*Q;Qa=d*Q;l.viewport(gb,db,hb,Qa)};this.setScissor=function(a,b,c,d){l.scissor(a*Q,b*Q,c*Q,d*Q)};this.enableScissorTest=function(a){a?l.enable(l.SCISSOR_TEST):l.disable(l.SCISSOR_TEST)};this.getClearColor=function(){return ja};this.setClearColor=function(a,
+b){ja.set(a);wa=void 0!==b?b:1;jc(ja.r,ja.g,ja.b,wa)};this.getClearAlpha=function(){return wa};this.setClearAlpha=function(a){wa=a;jc(ja.r,ja.g,ja.b,wa)};this.clear=function(a,b,c){var d=0;if(void 0===a||a)d|=l.COLOR_BUFFER_BIT;if(void 0===b||b)d|=l.DEPTH_BUFFER_BIT;if(void 0===c||c)d|=l.STENCIL_BUFFER_BIT;l.clear(d)};this.clearColor=function(){l.clear(l.COLOR_BUFFER_BIT)};this.clearDepth=function(){l.clear(l.DEPTH_BUFFER_BIT)};this.clearStencil=function(){l.clear(l.STENCIL_BUFFER_BIT)};this.clearTarget=
+function(a,b,c,d){this.setRenderTarget(a);this.clear(b,c,d)};this.resetGLState=Ac;var kc=function(a){a.target.traverse(function(a){a.removeEventListener("remove",kc);if(a instanceof THREE.Mesh||a instanceof THREE.PointCloud||a instanceof THREE.Line)delete za[a.id];else if(a instanceof THREE.ImmediateRenderObject||a.immediateRenderCallback)for(var b=Ma,c=b.length-1;0<=c;c--)b[c].object===a&&b.splice(c,1);delete a.__webglInit;delete a._modelViewMatrix;delete a._normalMatrix;delete a.__webglActive})},
+lc=function(a){a=a.target;a.removeEventListener("dispose",lc);delete a.__webglInit;if(a instanceof THREE.BufferGeometry){for(var b in a.attributes){var c=a.attributes[b];void 0!==c.buffer&&(l.deleteBuffer(c.buffer),delete c.buffer)}B.info.memory.geometries--}else if(b=ib[a.id],void 0!==b){for(var c=0,d=b.length;c<d;c++){var e=b[c];if(void 0!==e.numMorphTargets){for(var f=0,g=e.numMorphTargets;f<g;f++)l.deleteBuffer(e.__webglMorphTargetsBuffers[f]);delete e.__webglMorphTargetsBuffers}if(void 0!==e.numMorphNormals){f=
+0;for(g=e.numMorphNormals;f<g;f++)l.deleteBuffer(e.__webglMorphNormalsBuffers[f]);delete e.__webglMorphNormalsBuffers}Dc(e)}delete ib[a.id]}else Dc(a);La=""},Gb=function(a){a=a.target;a.removeEventListener("dispose",Gb);a.image&&a.image.__webglTextureCube?(l.deleteTexture(a.image.__webglTextureCube),delete a.image.__webglTextureCube):void 0!==a.__webglInit&&(l.deleteTexture(a.__webglTexture),delete a.__webglTexture,delete a.__webglInit);B.info.memory.textures--},Ec=function(a){a=a.target;a.removeEventListener("dispose",
+Ec);if(a&&void 0!==a.__webglTexture){l.deleteTexture(a.__webglTexture);delete a.__webglTexture;if(a instanceof THREE.WebGLRenderTargetCube)for(var b=0;6>b;b++)l.deleteFramebuffer(a.__webglFramebuffer[b]),l.deleteRenderbuffer(a.__webglRenderbuffer[b]);else l.deleteFramebuffer(a.__webglFramebuffer),l.deleteRenderbuffer(a.__webglRenderbuffer);delete a.__webglFramebuffer;delete a.__webglRenderbuffer}B.info.memory.textures--},pc=function(a){a=a.target;a.removeEventListener("dispose",pc);oc(a)},Dc=function(a){for(var b=
+"__webglVertexBuffer __webglNormalBuffer __webglTangentBuffer __webglColorBuffer __webglUVBuffer __webglUV2Buffer __webglSkinIndicesBuffer __webglSkinWeightsBuffer __webglFaceBuffer __webglLineBuffer __webglLineDistanceBuffer".split(" "),c=0,d=b.length;c<d;c++){var e=b[c];void 0!==a[e]&&(l.deleteBuffer(a[e]),delete a[e])}if(void 0!==a.__webglCustomAttributesList){for(e in a.__webglCustomAttributesList)l.deleteBuffer(a.__webglCustomAttributesList[e].buffer);delete a.__webglCustomAttributesList}B.info.memory.geometries--},
+oc=function(a){var b=a.program.program;if(void 0!==b){a.program=void 0;var c,d,e=!1;a=0;for(c=cb.length;a<c;a++)if(d=cb[a],d.program===b){d.usedTimes--;0===d.usedTimes&&(e=!0);break}if(!0===e){e=[];a=0;for(c=cb.length;a<c;a++)d=cb[a],d.program!==b&&e.push(d);cb=e;l.deleteProgram(b);B.info.memory.programs--}}};this.renderBufferImmediate=function(a,b,c){e();a.hasPositions&&!a.__webglVertexBuffer&&(a.__webglVertexBuffer=l.createBuffer());a.hasNormals&&!a.__webglNormalBuffer&&(a.__webglNormalBuffer=l.createBuffer());
+a.hasUvs&&!a.__webglUvBuffer&&(a.__webglUvBuffer=l.createBuffer());a.hasColors&&!a.__webglColorBuffer&&(a.__webglColorBuffer=l.createBuffer());a.hasPositions&&(l.bindBuffer(l.ARRAY_BUFFER,a.__webglVertexBuffer),l.bufferData(l.ARRAY_BUFFER,a.positionArray,l.DYNAMIC_DRAW),f(b.attributes.position),l.vertexAttribPointer(b.attributes.position,3,l.FLOAT,!1,0,0));if(a.hasNormals){l.bindBuffer(l.ARRAY_BUFFER,a.__webglNormalBuffer);if(c.shading===THREE.FlatShading){var d,h,k,m,p,n,q,r,t,s,u,v=3*a.count;for(u=
+0;u<v;u+=9)s=a.normalArray,d=s[u],h=s[u+1],k=s[u+2],m=s[u+3],n=s[u+4],r=s[u+5],p=s[u+6],q=s[u+7],t=s[u+8],d=(d+m+p)/3,h=(h+n+q)/3,k=(k+r+t)/3,s[u]=d,s[u+1]=h,s[u+2]=k,s[u+3]=d,s[u+4]=h,s[u+5]=k,s[u+6]=d,s[u+7]=h,s[u+8]=k}l.bufferData(l.ARRAY_BUFFER,a.normalArray,l.DYNAMIC_DRAW);f(b.attributes.normal);l.vertexAttribPointer(b.attributes.normal,3,l.FLOAT,!1,0,0)}a.hasUvs&&c.map&&(l.bindBuffer(l.ARRAY_BUFFER,a.__webglUvBuffer),l.bufferData(l.ARRAY_BUFFER,a.uvArray,l.DYNAMIC_DRAW),f(b.attributes.uv),l.vertexAttribPointer(b.attributes.uv,
+2,l.FLOAT,!1,0,0));a.hasColors&&c.vertexColors!==THREE.NoColors&&(l.bindBuffer(l.ARRAY_BUFFER,a.__webglColorBuffer),l.bufferData(l.ARRAY_BUFFER,a.colorArray,l.DYNAMIC_DRAW),f(b.attributes.color),l.vertexAttribPointer(b.attributes.color,3,l.FLOAT,!1,0,0));g();l.drawArrays(l.TRIANGLES,0,a.count);a.count=0};this.renderBufferDirect=function(a,b,c,f,g,h){if(!1!==f.visible)if(u(h),a=C(a,b,c,f,h),b=!1,c="direct_"+g.id+"_"+a.id+"_"+(f.wireframe?1:0),c!==La&&(La=c,b=!0),b&&e(),h instanceof THREE.Mesh){h=!0===
+f.wireframe?l.LINES:l.TRIANGLES;var k=g.attributes.index;if(k){var m,p;k.array instanceof Uint32Array&&$.get("OES_element_index_uint")?(m=l.UNSIGNED_INT,p=4):(m=l.UNSIGNED_SHORT,p=2);c=g.offsets;if(0===c.length)b&&(d(f,a,g,0),l.bindBuffer(l.ELEMENT_ARRAY_BUFFER,k.buffer)),l.drawElements(h,k.array.length,m,0),B.info.render.calls++,B.info.render.vertices+=k.array.length,B.info.render.faces+=k.array.length/3;else{b=!0;for(var n=0,q=c.length;n<q;n++){var s=c[n].index;b&&(d(f,a,g,s),l.bindBuffer(l.ELEMENT_ARRAY_BUFFER,
+k.buffer));l.drawElements(h,c[n].count,m,c[n].start*p);B.info.render.calls++;B.info.render.vertices+=c[n].count;B.info.render.faces+=c[n].count/3}}}else b&&d(f,a,g,0),f=g.attributes.position,l.drawArrays(h,0,f.array.length/f.itemSize),B.info.render.calls++,B.info.render.vertices+=f.array.length/f.itemSize,B.info.render.faces+=f.array.length/(3*f.itemsize)}else if(h instanceof THREE.PointCloud)if(h=l.POINTS,k=g.attributes.index)if(k.array instanceof Uint32Array&&$.get("OES_element_index_uint")?(m=
+l.UNSIGNED_INT,p=4):(m=l.UNSIGNED_SHORT,p=2),c=g.offsets,0===c.length)b&&(d(f,a,g,0),l.bindBuffer(l.ELEMENT_ARRAY_BUFFER,k.buffer)),l.drawElements(h,k.array.length,m,0),B.info.render.calls++,B.info.render.points+=k.array.length;else for(1<c.length&&(b=!0),n=0,q=c.length;n<q;n++)s=c[n].index,b&&(d(f,a,g,s),l.bindBuffer(l.ELEMENT_ARRAY_BUFFER,k.buffer)),l.drawElements(h,c[n].count,m,c[n].start*p),B.info.render.calls++,B.info.render.points+=c[n].count;else if(b&&d(f,a,g,0),f=g.attributes.position,c=
+g.offsets,0===c.length)l.drawArrays(h,0,f.array.length/3),B.info.render.calls++,B.info.render.points+=f.array.length/3;else for(n=0,q=c.length;n<q;n++)l.drawArrays(h,c[n].index,c[n].count),B.info.render.calls++,B.info.render.points+=c[n].count;else if(h instanceof THREE.Line)if(h=h.mode===THREE.LineStrip?l.LINE_STRIP:l.LINES,G(f.linewidth),k=g.attributes.index)if(k.array instanceof Uint32Array?(m=l.UNSIGNED_INT,p=4):(m=l.UNSIGNED_SHORT,p=2),c=g.offsets,0===c.length)b&&(d(f,a,g,0),l.bindBuffer(l.ELEMENT_ARRAY_BUFFER,
+k.buffer)),l.drawElements(h,k.array.length,m,0),B.info.render.calls++,B.info.render.vertices+=k.array.length;else for(1<c.length&&(b=!0),n=0,q=c.length;n<q;n++)s=c[n].index,b&&(d(f,a,g,s),l.bindBuffer(l.ELEMENT_ARRAY_BUFFER,k.buffer)),l.drawElements(h,c[n].count,m,c[n].start*p),B.info.render.calls++,B.info.render.vertices+=c[n].count;else if(b&&d(f,a,g,0),f=g.attributes.position,c=g.offsets,0===c.length)l.drawArrays(h,0,f.array.length/3),B.info.render.calls++,B.info.render.vertices+=f.array.length/
+3;else for(n=0,q=c.length;n<q;n++)l.drawArrays(h,c[n].index,c[n].count),B.info.render.calls++,B.info.render.vertices+=c[n].count};this.renderBuffer=function(a,b,c,d,h,k){if(!1!==d.visible){u(k);c=C(a,b,c,d,k);b=c.attributes;a=!1;c=h.id+"_"+c.id+"_"+(d.wireframe?1:0);c!==La&&(La=c,a=!0);a&&e();if(!d.morphTargets&&0<=b.position)a&&(l.bindBuffer(l.ARRAY_BUFFER,h.__webglVertexBuffer),f(b.position),l.vertexAttribPointer(b.position,3,l.FLOAT,!1,0,0));else if(k.morphTargetBase){c=d.program.attributes;-1!==
+k.morphTargetBase&&0<=c.position?(l.bindBuffer(l.ARRAY_BUFFER,h.__webglMorphTargetsBuffers[k.morphTargetBase]),f(c.position),l.vertexAttribPointer(c.position,3,l.FLOAT,!1,0,0)):0<=c.position&&(l.bindBuffer(l.ARRAY_BUFFER,h.__webglVertexBuffer),f(c.position),l.vertexAttribPointer(c.position,3,l.FLOAT,!1,0,0));if(k.morphTargetForcedOrder.length)for(var m=0,n=k.morphTargetForcedOrder,q=k.morphTargetInfluences,s;m<d.numSupportedMorphTargets&&m<n.length;)s=c["morphTarget"+m],0<=s&&(l.bindBuffer(l.ARRAY_BUFFER,
+h.__webglMorphTargetsBuffers[n[m]]),f(s),l.vertexAttribPointer(s,3,l.FLOAT,!1,0,0)),s=c["morphNormal"+m],0<=s&&d.morphNormals&&(l.bindBuffer(l.ARRAY_BUFFER,h.__webglMorphNormalsBuffers[n[m]]),f(s),l.vertexAttribPointer(s,3,l.FLOAT,!1,0,0)),k.__webglMorphTargetInfluences[m]=q[n[m]],m++;else{n=[];q=k.morphTargetInfluences;m=k.geometry.morphTargets;q.length>m.length&&(console.warn("THREE.WebGLRenderer: Influences array is bigger than morphTargets array."),q.length=m.length);m=0;for(s=q.length;m<s;m++)n.push([q[m],
+m]);n.length>d.numSupportedMorphTargets?(n.sort(p),n.length=d.numSupportedMorphTargets):n.length>d.numSupportedMorphNormals?n.sort(p):0===n.length&&n.push([0,0]);for(var m=0,r=d.numSupportedMorphTargets;m<r;m++)if(n[m]){var t=n[m][1];s=c["morphTarget"+m];0<=s&&(l.bindBuffer(l.ARRAY_BUFFER,h.__webglMorphTargetsBuffers[t]),f(s),l.vertexAttribPointer(s,3,l.FLOAT,!1,0,0));s=c["morphNormal"+m];0<=s&&d.morphNormals&&(l.bindBuffer(l.ARRAY_BUFFER,h.__webglMorphNormalsBuffers[t]),f(s),l.vertexAttribPointer(s,
+3,l.FLOAT,!1,0,0));k.__webglMorphTargetInfluences[m]=q[t]}else k.__webglMorphTargetInfluences[m]=0}null!==d.program.uniforms.morphTargetInfluences&&l.uniform1fv(d.program.uniforms.morphTargetInfluences,k.__webglMorphTargetInfluences)}if(a){if(h.__webglCustomAttributesList)for(c=0,q=h.__webglCustomAttributesList.length;c<q;c++)n=h.__webglCustomAttributesList[c],0<=b[n.buffer.belongsToAttribute]&&(l.bindBuffer(l.ARRAY_BUFFER,n.buffer),f(b[n.buffer.belongsToAttribute]),l.vertexAttribPointer(b[n.buffer.belongsToAttribute],
+n.size,l.FLOAT,!1,0,0));0<=b.color&&(0<k.geometry.colors.length||0<k.geometry.faces.length?(l.bindBuffer(l.ARRAY_BUFFER,h.__webglColorBuffer),f(b.color),l.vertexAttribPointer(b.color,3,l.FLOAT,!1,0,0)):void 0!==d.defaultAttributeValues&&l.vertexAttrib3fv(b.color,d.defaultAttributeValues.color));0<=b.normal&&(l.bindBuffer(l.ARRAY_BUFFER,h.__webglNormalBuffer),f(b.normal),l.vertexAttribPointer(b.normal,3,l.FLOAT,!1,0,0));0<=b.tangent&&(l.bindBuffer(l.ARRAY_BUFFER,h.__webglTangentBuffer),f(b.tangent),
+l.vertexAttribPointer(b.tangent,4,l.FLOAT,!1,0,0));0<=b.uv&&(k.geometry.faceVertexUvs[0]?(l.bindBuffer(l.ARRAY_BUFFER,h.__webglUVBuffer),f(b.uv),l.vertexAttribPointer(b.uv,2,l.FLOAT,!1,0,0)):void 0!==d.defaultAttributeValues&&l.vertexAttrib2fv(b.uv,d.defaultAttributeValues.uv));0<=b.uv2&&(k.geometry.faceVertexUvs[1]?(l.bindBuffer(l.ARRAY_BUFFER,h.__webglUV2Buffer),f(b.uv2),l.vertexAttribPointer(b.uv2,2,l.FLOAT,!1,0,0)):void 0!==d.defaultAttributeValues&&l.vertexAttrib2fv(b.uv2,d.defaultAttributeValues.uv2));
+d.skinning&&0<=b.skinIndex&&0<=b.skinWeight&&(l.bindBuffer(l.ARRAY_BUFFER,h.__webglSkinIndicesBuffer),f(b.skinIndex),l.vertexAttribPointer(b.skinIndex,4,l.FLOAT,!1,0,0),l.bindBuffer(l.ARRAY_BUFFER,h.__webglSkinWeightsBuffer),f(b.skinWeight),l.vertexAttribPointer(b.skinWeight,4,l.FLOAT,!1,0,0));0<=b.lineDistance&&(l.bindBuffer(l.ARRAY_BUFFER,h.__webglLineDistanceBuffer),f(b.lineDistance),l.vertexAttribPointer(b.lineDistance,1,l.FLOAT,!1,0,0))}g();k instanceof THREE.Mesh?(k=h.__typeArray===Uint32Array?
+l.UNSIGNED_INT:l.UNSIGNED_SHORT,d.wireframe?(G(d.wireframeLinewidth),a&&l.bindBuffer(l.ELEMENT_ARRAY_BUFFER,h.__webglLineBuffer),l.drawElements(l.LINES,h.__webglLineCount,k,0)):(a&&l.bindBuffer(l.ELEMENT_ARRAY_BUFFER,h.__webglFaceBuffer),l.drawElements(l.TRIANGLES,h.__webglFaceCount,k,0)),B.info.render.calls++,B.info.render.vertices+=h.__webglFaceCount,B.info.render.faces+=h.__webglFaceCount/3):k instanceof THREE.Line?(k=k.mode===THREE.LineStrip?l.LINE_STRIP:l.LINES,G(d.linewidth),l.drawArrays(k,
+0,h.__webglLineCount),B.info.render.calls++):k instanceof THREE.PointCloud&&(l.drawArrays(l.POINTS,0,h.__webglParticleCount),B.info.render.calls++,B.info.render.points+=h.__webglParticleCount)}};this.render=function(a,b,c,d){if(!1===b instanceof THREE.Camera)console.error("THREE.WebGLRenderer.render: camera is not an instance of THREE.Camera.");else{var e=a.fog;La="";Bb=-1;Fb=null;Mb=!0;!0===a.autoUpdate&&a.updateMatrixWorld();void 0===b.parent&&b.updateMatrixWorld();a.traverse(function(a){a instanceof
+THREE.SkinnedMesh&&a.skeleton.update()});b.matrixWorldInverse.getInverse(b.matrixWorld);wb.multiplyMatrices(b.projectionMatrix,b.matrixWorldInverse);vb.setFromMatrix(wb);ya.length=0;Fa.length=0;Sa.length=0;Ea.length=0;qb.length=0;n(a);!0===B.sortObjects&&(Fa.sort(h),Sa.sort(k));Pc.render(a,b);B.info.render.calls=0;B.info.render.vertices=0;B.info.render.faces=0;B.info.render.points=0;this.setRenderTarget(c);(this.autoClear||d)&&this.clear(this.autoClearColor,this.autoClearDepth,this.autoClearStencil);
+d=0;for(var f=Ma.length;d<f;d++){var g=Ma[d],l=g.object;l.visible&&(A(l,b),s(g))}a.overrideMaterial?(d=a.overrideMaterial,this.setBlending(d.blending,d.blendEquation,d.blendSrc,d.blendDst,d.blendEquationAlpha,d.blendSrcAlpha,d.blendDstAlpha),this.setDepthTest(d.depthTest),this.setDepthWrite(d.depthWrite),E(d.polygonOffset,d.polygonOffsetFactor,d.polygonOffsetUnits),q(Fa,b,ya,e,!0,d),q(Sa,b,ya,e,!0,d),m(Ma,"",b,ya,e,!1,d)):(d=null,this.setBlending(THREE.NoBlending),q(Fa,b,ya,e,!1,d),m(Ma,"opaque",
+b,ya,e,!1,d),q(Sa,b,ya,e,!0,d),m(Ma,"transparent",b,ya,e,!0,d));Qc.render(a,b);Rc.render(a,b,xc,yc);c&&c.generateMipmaps&&c.minFilter!==THREE.NearestFilter&&c.minFilter!==THREE.LinearFilter&&K(c);this.setDepthTest(!0);this.setDepthWrite(!0)}};this.renderImmediateObject=function(a,b,c,d,e){var f=C(a,b,c,d,e);La="";B.setMaterialFaces(d);e.immediateRenderCallback?e.immediateRenderCallback(f,l,vb):e.render(function(a){B.renderBufferImmediate(a,f,d)})};var ib={},mc=0,Fc={MeshDepthMaterial:"depth",MeshNormalMaterial:"normal",
+MeshBasicMaterial:"basic",MeshLambertMaterial:"lambert",MeshPhongMaterial:"phong",LineBasicMaterial:"basic",LineDashedMaterial:"dashed",PointCloudMaterial:"particle_basic"};this.setFaceCulling=function(a,b){a===THREE.CullFaceNone?l.disable(l.CULL_FACE):(b===THREE.FrontFaceDirectionCW?l.frontFace(l.CW):l.frontFace(l.CCW),a===THREE.CullFaceBack?l.cullFace(l.BACK):a===THREE.CullFaceFront?l.cullFace(l.FRONT):l.cullFace(l.FRONT_AND_BACK),l.enable(l.CULL_FACE))};this.setMaterialFaces=function(a){var b=
+a.side===THREE.DoubleSide;a=a.side===THREE.BackSide;pb!==b&&(b?l.disable(l.CULL_FACE):l.enable(l.CULL_FACE),pb=b);Nb!==a&&(a?l.frontFace(l.CW):l.frontFace(l.CCW),Nb=a)};this.setDepthTest=function(a){hc!==a&&(a?l.enable(l.DEPTH_TEST):l.disable(l.DEPTH_TEST),hc=a)};this.setDepthWrite=function(a){ic!==a&&(l.depthMask(a),ic=a)};this.setBlending=function(a,b,c,d,e,f,g){a!==Xb&&(a===THREE.NoBlending?l.disable(l.BLEND):a===THREE.AdditiveBlending?(l.enable(l.BLEND),l.blendEquation(l.FUNC_ADD),l.blendFunc(l.SRC_ALPHA,
+l.ONE)):a===THREE.SubtractiveBlending?(l.enable(l.BLEND),l.blendEquation(l.FUNC_ADD),l.blendFunc(l.ZERO,l.ONE_MINUS_SRC_COLOR)):a===THREE.MultiplyBlending?(l.enable(l.BLEND),l.blendEquation(l.FUNC_ADD),l.blendFunc(l.ZERO,l.SRC_COLOR)):a===THREE.CustomBlending?l.enable(l.BLEND):(l.enable(l.BLEND),l.blendEquationSeparate(l.FUNC_ADD,l.FUNC_ADD),l.blendFuncSeparate(l.SRC_ALPHA,l.ONE_MINUS_SRC_ALPHA,l.ONE,l.ONE_MINUS_SRC_ALPHA)),Xb=a);if(a===THREE.CustomBlending){e=e||b;f=f||c;g=g||d;if(b!==Ob||e!==ec)l.blendEquationSeparate(T(b),
+T(e)),Ob=b,ec=e;if(c!==Yb||d!==Zb||f!==fc||g!==gc)l.blendFuncSeparate(T(c),T(d),T(f),T(g)),Yb=c,Zb=d,fc=f,gc=g}else gc=fc=ec=Zb=Yb=Ob=null};this.uploadTexture=function(a){void 0===a.__webglInit&&(a.__webglInit=!0,a.addEventListener("dispose",Gb),a.__webglTexture=l.createTexture(),B.info.memory.textures++);l.bindTexture(l.TEXTURE_2D,a.__webglTexture);l.pixelStorei(l.UNPACK_FLIP_Y_WEBGL,a.flipY);l.pixelStorei(l.UNPACK_PREMULTIPLY_ALPHA_WEBGL,a.premultiplyAlpha);l.pixelStorei(l.UNPACK_ALIGNMENT,a.unpackAlignment);
+a.image=M(a.image,Jc);var b=a.image,c=THREE.Math.isPowerOfTwo(b.width)&&THREE.Math.isPowerOfTwo(b.height),d=T(a.format),e=T(a.type);z(l.TEXTURE_2D,a,c);var f=a.mipmaps;if(a instanceof THREE.DataTexture)if(0<f.length&&c){for(var g=0,h=f.length;g<h;g++)b=f[g],l.texImage2D(l.TEXTURE_2D,g,d,b.width,b.height,0,d,e,b.data);a.generateMipmaps=!1}else l.texImage2D(l.TEXTURE_2D,0,d,b.width,b.height,0,d,e,b.data);else if(a instanceof THREE.CompressedTexture)for(g=0,h=f.length;g<h;g++)b=f[g],a.format!==THREE.RGBAFormat&&
+a.format!==THREE.RGBFormat?-1<rc().indexOf(d)?l.compressedTexImage2D(l.TEXTURE_2D,g,d,b.width,b.height,0,b.data):console.warn("Attempt to load unsupported compressed texture format"):l.texImage2D(l.TEXTURE_2D,g,d,b.width,b.height,0,d,e,b.data);else if(0<f.length&&c){g=0;for(h=f.length;g<h;g++)b=f[g],l.texImage2D(l.TEXTURE_2D,g,d,d,e,b);a.generateMipmaps=!1}else l.texImage2D(l.TEXTURE_2D,0,d,d,e,a.image);a.generateMipmaps&&c&&l.generateMipmap(l.TEXTURE_2D);a.needsUpdate=!1;if(a.onUpdate)a.onUpdate()};
+this.setTexture=function(a,b){l.activeTexture(l.TEXTURE0+b);a.needsUpdate?B.uploadTexture(a):l.bindTexture(l.TEXTURE_2D,a.__webglTexture)};this.setRenderTarget=function(a){var b=a instanceof THREE.WebGLRenderTargetCube;if(a&&void 0===a.__webglFramebuffer){void 0===a.depthBuffer&&(a.depthBuffer=!0);void 0===a.stencilBuffer&&(a.stencilBuffer=!0);a.addEventListener("dispose",Ec);a.__webglTexture=l.createTexture();B.info.memory.textures++;var c=THREE.Math.isPowerOfTwo(a.width)&&THREE.Math.isPowerOfTwo(a.height),
+d=T(a.format),e=T(a.type);if(b){a.__webglFramebuffer=[];a.__webglRenderbuffer=[];l.bindTexture(l.TEXTURE_CUBE_MAP,a.__webglTexture);z(l.TEXTURE_CUBE_MAP,a,c);for(var f=0;6>f;f++){a.__webglFramebuffer[f]=l.createFramebuffer();a.__webglRenderbuffer[f]=l.createRenderbuffer();l.texImage2D(l.TEXTURE_CUBE_MAP_POSITIVE_X+f,0,d,a.width,a.height,0,d,e,null);var g=a,h=l.TEXTURE_CUBE_MAP_POSITIVE_X+f;l.bindFramebuffer(l.FRAMEBUFFER,a.__webglFramebuffer[f]);l.framebufferTexture2D(l.FRAMEBUFFER,l.COLOR_ATTACHMENT0,
+h,g.__webglTexture,0);J(a.__webglRenderbuffer[f],a)}c&&l.generateMipmap(l.TEXTURE_CUBE_MAP)}else a.__webglFramebuffer=l.createFramebuffer(),a.__webglRenderbuffer=a.shareDepthFrom?a.shareDepthFrom.__webglRenderbuffer:l.createRenderbuffer(),l.bindTexture(l.TEXTURE_2D,a.__webglTexture),z(l.TEXTURE_2D,a,c),l.texImage2D(l.TEXTURE_2D,0,d,a.width,a.height,0,d,e,null),d=l.TEXTURE_2D,l.bindFramebuffer(l.FRAMEBUFFER,a.__webglFramebuffer),l.framebufferTexture2D(l.FRAMEBUFFER,l.COLOR_ATTACHMENT0,d,a.__webglTexture,
+0),a.shareDepthFrom?a.depthBuffer&&!a.stencilBuffer?l.framebufferRenderbuffer(l.FRAMEBUFFER,l.DEPTH_ATTACHMENT,l.RENDERBUFFER,a.__webglRenderbuffer):a.depthBuffer&&a.stencilBuffer&&l.framebufferRenderbuffer(l.FRAMEBUFFER,l.DEPTH_STENCIL_ATTACHMENT,l.RENDERBUFFER,a.__webglRenderbuffer):J(a.__webglRenderbuffer,a),c&&l.generateMipmap(l.TEXTURE_2D);b?l.bindTexture(l.TEXTURE_CUBE_MAP,null):l.bindTexture(l.TEXTURE_2D,null);l.bindRenderbuffer(l.RENDERBUFFER,null);l.bindFramebuffer(l.FRAMEBUFFER,null)}a?
+(b=b?a.__webglFramebuffer[a.activeCubeFace]:a.__webglFramebuffer,c=a.width,a=a.height,e=d=0):(b=null,c=hb,a=Qa,d=gb,e=db);b!==ob&&(l.bindFramebuffer(l.FRAMEBUFFER,b),l.viewport(d,e,c,a),ob=b);xc=c;yc=a};this.readRenderTargetPixels=function(a,b,c,d,e,f){if(!(a instanceof THREE.WebGLRenderTarget))console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.");else if(a.__webglFramebuffer)if(a.format!==THREE.RGBAFormat)console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA format. readPixels can read only RGBA format.");
+else{var g=!1;a.__webglFramebuffer!==ob&&(l.bindFramebuffer(l.FRAMEBUFFER,a.__webglFramebuffer),g=!0);l.checkFramebufferStatus(l.FRAMEBUFFER)===l.FRAMEBUFFER_COMPLETE?l.readPixels(b,c,d,e,l.RGBA,l.UNSIGNED_BYTE,f):console.error("THREE.WebGLRenderer.readRenderTargetPixels: readPixels from renderTarget failed. Framebuffer not complete.");g&&l.bindFramebuffer(l.FRAMEBUFFER,ob)}};this.initMaterial=function(){console.warn("THREE.WebGLRenderer: .initMaterial() has been removed.")};this.addPrePlugin=function(){console.warn("THREE.WebGLRenderer: .addPrePlugin() has been removed.")};
+this.addPostPlugin=function(){console.warn("THREE.WebGLRenderer: .addPostPlugin() has been removed.")};this.updateShadowMap=function(){console.warn("THREE.WebGLRenderer: .updateShadowMap() has been removed.")}};
 THREE.WebGLRenderTarget=function(a,b,c){this.width=a;this.height=b;c=c||{};this.wrapS=void 0!==c.wrapS?c.wrapS:THREE.ClampToEdgeWrapping;this.wrapT=void 0!==c.wrapT?c.wrapT:THREE.ClampToEdgeWrapping;this.magFilter=void 0!==c.magFilter?c.magFilter:THREE.LinearFilter;this.minFilter=void 0!==c.minFilter?c.minFilter:THREE.LinearMipMapLinearFilter;this.anisotropy=void 0!==c.anisotropy?c.anisotropy:1;this.offset=new THREE.Vector2(0,0);this.repeat=new THREE.Vector2(1,1);this.format=void 0!==c.format?c.format:
 THREE.RGBAFormat;this.type=void 0!==c.type?c.type:THREE.UnsignedByteType;this.depthBuffer=void 0!==c.depthBuffer?c.depthBuffer:!0;this.stencilBuffer=void 0!==c.stencilBuffer?c.stencilBuffer:!0;this.generateMipmaps=!0;this.shareDepthFrom=void 0!==c.shareDepthFrom?c.shareDepthFrom:null};
 THREE.WebGLRenderTarget.prototype={constructor:THREE.WebGLRenderTarget,setSize:function(a,b){this.width=a;this.height=b},clone:function(){var a=new THREE.WebGLRenderTarget(this.width,this.height);a.wrapS=this.wrapS;a.wrapT=this.wrapT;a.magFilter=this.magFilter;a.minFilter=this.minFilter;a.anisotropy=this.anisotropy;a.offset.copy(this.offset);a.repeat.copy(this.repeat);a.format=this.format;a.type=this.type;a.depthBuffer=this.depthBuffer;a.stencilBuffer=this.stencilBuffer;a.generateMipmaps=this.generateMipmaps;