Ver código fonte

Updated builds.

Mr.doob 11 anos atrás
pai
commit
92e861bfa4
2 arquivos alterados com 58 adições e 58 exclusões
  1. 21 21
      build/three.js
  2. 37 37
      build/three.min.js

+ 21 - 21
build/three.js

@@ -9196,7 +9196,6 @@ THREE.Geometry = function () {
 	this.colorsNeedUpdate = false;
 	this.lineDistancesNeedUpdate = false;
 
-	this.buffersNeedUpdate = false;
 	this.groupsNeedUpdate = false;
 
 };
@@ -18192,6 +18191,7 @@ THREE.WebGLRenderer = function ( parameters ) {
 		if ( geometry.__webglLineBuffer !== undefined ) _gl.deleteBuffer( geometry.__webglLineBuffer );
 
 		if ( geometry.__webglLineDistanceBuffer !== undefined ) _gl.deleteBuffer( geometry.__webglLineDistanceBuffer );
+		
 		// custom attributes
 
 		if ( geometry.__webglCustomAttributesList !== undefined ) {
@@ -21182,11 +21182,11 @@ THREE.WebGLRenderer = function ( parameters ) {
 
 			} else if ( object instanceof THREE.Mesh ) {
 
-				initGeometryGroups(scene, object, geometry);
+				initGeometryGroups( scene, object, geometry );
 
 			} else if ( object instanceof THREE.Line ) {
 
-				if ( ! geometry.__webglVertexBuffer ) {
+				if ( geometry.__webglVertexBuffer === undefined ) {
 
 					createLineBuffers( geometry );
 					initLineBuffers( geometry, object );
@@ -21199,7 +21199,7 @@ THREE.WebGLRenderer = function ( parameters ) {
 
 			} else if ( object instanceof THREE.PointCloud ) {
 
-				if ( ! geometry.__webglVertexBuffer ) {
+				if ( geometry.__webglVertexBuffer === undefined ) {
 
 					createParticleBuffers( geometry );
 					initParticleBuffers( geometry, object );
@@ -21215,6 +21215,8 @@ THREE.WebGLRenderer = function ( parameters ) {
 
 		if ( object.__webglActive === undefined) {
 
+			object.__webglActive = true;
+
 			if ( object instanceof THREE.Mesh ) {
 
 				if ( geometry instanceof THREE.BufferGeometry ) {
@@ -21223,16 +21225,15 @@ THREE.WebGLRenderer = function ( parameters ) {
 
 				} else if ( geometry instanceof THREE.Geometry ) {
 
-					for ( var i = 0,l = geometry.geometryGroupsList.length; i<l;i++ ) {
+					for ( var i = 0,l = geometry.geometryGroupsList.length; i < l; i ++ ) {
 
-						var geometryGroup = geometry.geometryGroupsList[ i ];
-						addBuffer( _webglObjects, geometryGroup, object );
+						addBuffer( _webglObjects, geometry.geometryGroupsList[ i ], object );
 
 					}
+
 				}
 
-			} else if ( object instanceof THREE.Line ||
-						object instanceof THREE.PointCloud ) {
+			} else if ( object instanceof THREE.Line || object instanceof THREE.PointCloud ) {
 
 				addBuffer( _webglObjects, geometry, object );
 
@@ -21242,20 +21243,18 @@ THREE.WebGLRenderer = function ( parameters ) {
 
 			}
 
-			object.__webglActive = true;
-
 		}
 
 	};
 
 	function initGeometryGroups( scene, object, geometry ) {
 
-		var g, geometryGroup, material,addBuffers = false;
-		material = object.material;
+		var g, geometryGroup, material = object.material, addBuffers = false;
 
-		if ( geometry.geometryGroups === undefined || geometry.groupsNeedUpdate ) {
+		if ( geometry.geometryGroups === undefined || geometry.groupsNeedUpdate === true ) {
+
+			delete _webglObjects[ object.id ];
 
-			delete _webglObjects[object.id];
 			geometry.makeGroups( material instanceof THREE.MeshFaceMaterial, _glExtensionElementIndexUint ? 4294967296 : 65535  );
 			geometry.groupsNeedUpdate = false;
 
@@ -21269,7 +21268,7 @@ THREE.WebGLRenderer = function ( parameters ) {
 
 			// initialise VBO on the first access
 
-			if ( ! geometryGroup.__webglVertexBuffer ) {
+			if ( geometryGroup.__webglVertexBuffer === undefined ) {
 
 				createMeshBuffers( geometryGroup );
 				initMeshBuffers( geometryGroup, object );
@@ -21291,7 +21290,9 @@ THREE.WebGLRenderer = function ( parameters ) {
 			}
 
 			if ( addBuffers || object.__webglActive === undefined ) {
+
 				addBuffer( _webglObjects, geometryGroup, object );
+
 			}
 
 		}
@@ -21344,9 +21345,10 @@ THREE.WebGLRenderer = function ( parameters ) {
 		} else if ( object instanceof THREE.Mesh ) {
 
 			// check all geometry groups
-			if ( geometry.buffersNeedUpdate || geometry.groupsNeedUpdate ) {
 
-				initGeometryGroups(scene, object,geometry);
+			if ( geometry.groupsNeedUpdate === true ) {
+
+				initGeometryGroups( scene, object, geometry );
 
 			}
 
@@ -21356,7 +21358,7 @@ THREE.WebGLRenderer = function ( parameters ) {
 
 				material = getBufferMaterial( object, geometryGroup );
 
-				if ( geometry.buffersNeedUpdate || geometry.groupsNeedUpdate) {
+				if ( geometry.groupsNeedUpdate === true ) {
 
 					initMeshBuffers( geometryGroup, object );
 
@@ -21382,8 +21384,6 @@ THREE.WebGLRenderer = function ( parameters ) {
 			geometry.colorsNeedUpdate = false;
 			geometry.tangentsNeedUpdate = false;
 
-			geometry.buffersNeedUpdate = false;
-
 			material.attributes && clearCustomAttributes( material );
 
 		} else if ( object instanceof THREE.Line ) {

+ 37 - 37
build/three.min.js

@@ -197,8 +197,8 @@ p=0;6>p;p+=2)r=m[p+1],-1<r&&r<k.index&&(m[p+1]=-1);for(p=0;6>p;p+=2)s=m[p],r=m[p
 e&&(d[e]=new this.attributes[e].array.constructor(this.attributes[e].itemSize*c));for(var g=0;g<c;g++){var f=b[g];for(e in this.attributes)if("index"!=e)for(var h=this.attributes[e].array,k=this.attributes[e].itemSize,n=d[e],p=0;p<k;p++)n[g*k+p]=h[f*k+p]}this.attributes.index.array=a;for(e in this.attributes)"index"!=e&&(this.attributes[e].array=d[e],this.attributes[e].numItems=this.attributes[e].itemSize*c)},toJSON:function(){var a={metadata:{version:4,type:"BufferGeometry",generator:"BufferGeometryExporter"},
 uuid:this.uuid,type:this.type,data:{attributes:{}}},b=this.attributes,c=this.offsets,d=this.boundingSphere,e;for(e in b){for(var g=b[e],f=[],h=g.array,k=0,n=h.length;k<n;k++)f[k]=h[k];a.data.attributes[e]={itemSize:g.itemSize,type:g.array.constructor.name,array:f}}0<c.length&&(a.data.offsets=JSON.parse(JSON.stringify(c)));null!==d&&(a.data.boundingSphere={center:d.center.toArray(),radius:d.radius});return a},clone:function(){var a=new THREE.BufferGeometry,b;for(b in this.attributes)a.addAttribute(b,
 this.attributes[b].clone());b=0;for(var c=this.offsets.length;b<c;b++){var d=this.offsets[b];a.offsets.push({start:d.start,index:d.index,count:d.count})}return a},dispose:function(){this.dispatchEvent({type:"dispose"})}};THREE.EventDispatcher.prototype.apply(THREE.BufferGeometry.prototype);
-THREE.Geometry=function(){this.id=THREE.GeometryIdCount++;this.uuid=THREE.Math.generateUUID();this.name="";this.type="Geometry";this.vertices=[];this.colors=[];this.faces=[];this.faceVertexUvs=[[]];this.morphTargets=[];this.morphColors=[];this.morphNormals=[];this.skinWeights=[];this.skinIndices=[];this.lineDistances=[];this.boundingSphere=this.boundingBox=null;this.hasTangents=!1;this.dynamic=!0;this.groupsNeedUpdate=this.buffersNeedUpdate=this.lineDistancesNeedUpdate=this.colorsNeedUpdate=this.tangentsNeedUpdate=
-this.normalsNeedUpdate=this.uvsNeedUpdate=this.elementsNeedUpdate=this.verticesNeedUpdate=!1};
+THREE.Geometry=function(){this.id=THREE.GeometryIdCount++;this.uuid=THREE.Math.generateUUID();this.name="";this.type="Geometry";this.vertices=[];this.colors=[];this.faces=[];this.faceVertexUvs=[[]];this.morphTargets=[];this.morphColors=[];this.morphNormals=[];this.skinWeights=[];this.skinIndices=[];this.lineDistances=[];this.boundingSphere=this.boundingBox=null;this.hasTangents=!1;this.dynamic=!0;this.groupsNeedUpdate=this.lineDistancesNeedUpdate=this.colorsNeedUpdate=this.tangentsNeedUpdate=this.normalsNeedUpdate=
+this.uvsNeedUpdate=this.elementsNeedUpdate=this.verticesNeedUpdate=!1};
 THREE.Geometry.prototype={constructor:THREE.Geometry,applyMatrix:function(a){for(var b=(new THREE.Matrix3).getNormalMatrix(a),c=0,d=this.vertices.length;c<d;c++)this.vertices[c].applyMatrix4(a);c=0;for(d=this.faces.length;c<d;c++){a=this.faces[c];a.normal.applyMatrix3(b).normalize();for(var e=0,g=a.vertexNormals.length;e<g;e++)a.vertexNormals[e].applyMatrix3(b).normalize()}this.boundingBox instanceof THREE.Box3&&this.computeBoundingBox();this.boundingSphere instanceof THREE.Sphere&&this.computeBoundingSphere()},
 fromBufferGeometry:function(a){for(var b=this,c=a.attributes,d=c.position.array,e=void 0!==c.index?c.index.array:void 0,g=void 0!==c.normal?c.normal.array:void 0,f=void 0!==c.color?c.color.array:void 0,h=void 0!==c.uv?c.uv.array:void 0,k=[],n=[],p=c=0;c<d.length;c+=3,p+=2)b.vertices.push(new THREE.Vector3(d[c],d[c+1],d[c+2])),void 0!==g&&k.push(new THREE.Vector3(g[c],g[c+1],g[c+2])),void 0!==f&&b.colors.push(new THREE.Color(f[c],f[c+1],f[c+2])),void 0!==h&&n.push(new THREE.Vector2(h[p],h[p+1]));h=
 function(a,c,d){var e=void 0!==g?[k[a].clone(),k[c].clone(),k[d].clone()]:[],h=void 0!==f?[b.colors[a].clone(),b.colors[c].clone(),b.colors[d].clone()]:[];b.faces.push(new THREE.Face3(a,c,d,e,h));b.faceVertexUvs[0].push([n[a],n[c],n[d]])};if(void 0!==e)for(c=0;c<e.length;c+=3)h(e[c],e[c+1],e[c+2]);else for(c=0;c<d.length/3;c+=3)h(c,c+1,c+2);null!==a.boundingBox&&(this.boundingBox=a.boundingBox.clone());null!==a.boundingSphere&&(this.boundingSphere=a.boundingSphere.clone());return this},center:function(){this.computeBoundingBox();
@@ -435,41 +435,41 @@ f));c=null!==ub&&21845<g?Uint32Array:Uint16Array;a.__typeArray=c;a.__faceArray=n
 []);for(var m in e.attributes){var g=e.attributes[m],h={},n;for(n in g)h[n]=g[n];if(!h.__webglInitialized||h.createUniqueBuffers)h.__webglInitialized=!0,c=1,"v2"===h.type?c=2:"v3"===h.type?c=3:"v4"===h.type?c=4:"c"===h.type&&(c=3),h.size=c,h.array=new Float32Array(f*c),h.buffer=l.createBuffer(),h.buffer.belongsToAttribute=m,g.needsUpdate=!0,h.__original=g;a.__webglCustomAttributesList.push(h)}}a.__inittedArrays=!0}function d(a,b){return a.material instanceof THREE.MeshFaceMaterial?a.material.materials[b.materialIndex]:
 a.material}function e(a,b,c,d){c=c.attributes;var e=b.attributes;b=b.attributesKeys;for(var g=0,k=b.length;g<k;g++){var m=b[g],n=e[m];if(0<=n){var p=c[m];void 0!==p?(m=p.itemSize,l.bindBuffer(l.ARRAY_BUFFER,p.buffer),f(n),l.vertexAttribPointer(n,m,l.FLOAT,!1,0,d*m*4)):void 0!==a.defaultAttributeValues&&(2===a.defaultAttributeValues[m].length?l.vertexAttrib2fv(n,a.defaultAttributeValues[m]):3===a.defaultAttributeValues[m].length&&l.vertexAttrib3fv(n,a.defaultAttributeValues[m]))}}h()}function g(){for(var a=
 0,b=Mb.length;a<b;a++)Mb[a]=0}function f(a){Mb[a]=1;0===Gb[a]&&(l.enableVertexAttribArray(a),Gb[a]=1)}function h(){for(var a=0,b=Gb.length;a<b;a++)Gb[a]!==Mb[a]&&(l.disableVertexAttribArray(a),Gb[a]=0)}function k(a,b){return a.material.id!==b.material.id?b.material.id-a.material.id:a.z!==b.z?b.z-a.z:a.id-b.id}function n(a,b){return a.z!==b.z?a.z-b.z:a.id-b.id}function p(a,b){return b[0]-a[0]}function m(a,e){if(!1!==e.visible){e instanceof THREE.Light&&Da.push(e);if(!(e instanceof THREE.Scene||e instanceof
-THREE.Group)){void 0===e.__webglInit&&(e.__webglInit=!0,e._modelViewMatrix=new THREE.Matrix4,e._normalMatrix=new THREE.Matrix3,e.addEventListener("removed",Dc));var f=e.geometry;if(void 0!==f&&void 0===f.__webglInit&&(f.__webglInit=!0,f.addEventListener("dispose",Ec),!(f instanceof THREE.BufferGeometry)))if(e instanceof THREE.Mesh)v(a,e,f);else if(e instanceof THREE.Line){if(!f.__webglVertexBuffer){f.__webglVertexBuffer=l.createBuffer();f.__webglColorBuffer=l.createBuffer();f.__webglLineDistanceBuffer=
-l.createBuffer();J.info.memory.geometries++;var g=f.vertices.length;f.__vertexArray=new Float32Array(3*g);f.__colorArray=new Float32Array(3*g);f.__lineDistanceArray=new Float32Array(1*g);f.__webglLineCount=g;b(f,e);f.verticesNeedUpdate=!0;f.colorsNeedUpdate=!0;f.lineDistancesNeedUpdate=!0}}else if(e instanceof THREE.PointCloud&&!f.__webglVertexBuffer){f.__webglVertexBuffer=l.createBuffer();f.__webglColorBuffer=l.createBuffer();J.info.memory.geometries++;var h=f.vertices.length;f.__vertexArray=new Float32Array(3*
-h);f.__colorArray=new Float32Array(3*h);f.__sortArray=[];f.__webglParticleCount=h;b(f,e);f.verticesNeedUpdate=!0;f.colorsNeedUpdate=!0}if(void 0===e.__webglActive){if(e instanceof THREE.Mesh)if(f instanceof THREE.BufferGeometry)w(ab,f,e);else{if(f instanceof THREE.Geometry)for(var k=0,n=f.geometryGroupsList.length;k<n;k++)w(ab,f.geometryGroupsList[k],e)}else e instanceof THREE.Line||e instanceof THREE.PointCloud?w(ab,f,e):(e instanceof THREE.ImmediateRenderObject||e.immediateRenderCallback)&&Ha.push({id:null,
-object:e,opaque:null,transparent:null,z:0});e.__webglActive=!0}var s=ab[e.id];if(s&&(!1===e.frustumCulled||!0===zc.intersectsObject(e))){var q=e.geometry,t,r,x;if(q instanceof THREE.BufferGeometry)for(var y=q.attributes,B=q.attributesKeys,G=0,E=B.length;G<E;G++){var F=B[G],I=y[F];void 0===I.buffer&&(I.buffer=l.createBuffer(),I.needsUpdate=!0);if(!0===I.needsUpdate){var O="index"===F?l.ELEMENT_ARRAY_BUFFER:l.ARRAY_BUFFER;l.bindBuffer(O,I.buffer);l.bufferData(O,I.array,l.STATIC_DRAW);I.needsUpdate=
-!1}}else if(e instanceof THREE.Mesh){(q.buffersNeedUpdate||q.groupsNeedUpdate)&&v(a,e,q);for(var P=0,R=q.geometryGroupsList.length;P<R;P++)if(t=q.geometryGroupsList[P],x=d(e,t),(q.buffersNeedUpdate||q.groupsNeedUpdate)&&c(t,e),r=x.attributes&&u(x),q.verticesNeedUpdate||q.morphTargetsNeedUpdate||q.elementsNeedUpdate||q.uvsNeedUpdate||q.normalsNeedUpdate||q.colorsNeedUpdate||q.tangentsNeedUpdate||r){var C=t,N=e,la=l.DYNAMIC_DRAW,Q=!q.dynamic,V=x;if(C.__inittedArrays){var U=V&&void 0!==V.shading&&V.shading===
-THREE.SmoothShading,K=void 0,L=void 0,W=void 0,X=void 0,Ka=void 0,Y=void 0,sa=void 0,Wa=void 0,ga=void 0,ya=void 0,ua=void 0,Z=void 0,$=void 0,aa=void 0,xa=void 0,ka=void 0,Ja=void 0,qa=void 0,M=void 0,vb=void 0,oa=void 0,nc=void 0,na=void 0,oc=void 0,pc=void 0,qc=void 0,Ba=void 0,Fa=void 0,Ga=void 0,ja=void 0,Va=void 0,tb=void 0,wa=void 0,Ac=void 0,Oa=void 0,Vb=void 0,bb=void 0,pb=void 0,Hb=void 0,vc=void 0,kb=0,Xa=0,rc=0,sc=0,wb=0,Ya=0,Pa=0,cb=0,La=0,ha=0,ta=0,D=0,Ma=void 0,db=C.__vertexArray,Nb=
-C.__uvArray,xb=C.__uv2Array,eb=C.__normalArray,za=C.__tangentArray,Na=C.__colorArray,ra=C.__skinIndexArray,Ca=C.__skinWeightArray,fc=C.__morphTargetsArrays,lb=C.__morphNormalsArrays,yb=C.__webglCustomAttributesList,A=void 0,Za=C.__faceArray,Ra=C.__lineArray,Ia=N.geometry,fb=Ia.elementsNeedUpdate,zb=Ia.uvsNeedUpdate,gb=Ia.normalsNeedUpdate,Vc=Ia.tangentsNeedUpdate,Gb=Ia.colorsNeedUpdate,ea=Ia.morphTargetsNeedUpdate,Bc=Ia.vertices,H=C.faces3,ba=Ia.faces,ca=Ia.faceVertexUvs[0],Sa=Ia.faceVertexUvs[1],
-va=Ia.skinIndices,$b=Ia.skinWeights,ac=Ia.morphTargets,Fc=Ia.morphNormals;if(Ia.verticesNeedUpdate){K=0;for(L=H.length;K<L;K++)X=ba[H[K]],Z=Bc[X.a],$=Bc[X.b],aa=Bc[X.c],db[Xa]=Z.x,db[Xa+1]=Z.y,db[Xa+2]=Z.z,db[Xa+3]=$.x,db[Xa+4]=$.y,db[Xa+5]=$.z,db[Xa+6]=aa.x,db[Xa+7]=aa.y,db[Xa+8]=aa.z,Xa+=9;l.bindBuffer(l.ARRAY_BUFFER,C.__webglVertexBuffer);l.bufferData(l.ARRAY_BUFFER,db,la)}if(ea)for(Oa=0,Vb=ac.length;Oa<Vb;Oa++){K=ta=0;for(L=H.length;K<L;K++)Hb=H[K],X=ba[Hb],Z=ac[Oa].vertices[X.a],$=ac[Oa].vertices[X.b],
-aa=ac[Oa].vertices[X.c],bb=fc[Oa],bb[ta]=Z.x,bb[ta+1]=Z.y,bb[ta+2]=Z.z,bb[ta+3]=$.x,bb[ta+4]=$.y,bb[ta+5]=$.z,bb[ta+6]=aa.x,bb[ta+7]=aa.y,bb[ta+8]=aa.z,V.morphNormals&&(U?(vc=Fc[Oa].vertexNormals[Hb],qa=vc.a,M=vc.b,vb=vc.c):vb=M=qa=Fc[Oa].faceNormals[Hb],pb=lb[Oa],pb[ta]=qa.x,pb[ta+1]=qa.y,pb[ta+2]=qa.z,pb[ta+3]=M.x,pb[ta+4]=M.y,pb[ta+5]=M.z,pb[ta+6]=vb.x,pb[ta+7]=vb.y,pb[ta+8]=vb.z),ta+=9;l.bindBuffer(l.ARRAY_BUFFER,C.__webglMorphTargetsBuffers[Oa]);l.bufferData(l.ARRAY_BUFFER,fc[Oa],la);V.morphNormals&&
-(l.bindBuffer(l.ARRAY_BUFFER,C.__webglMorphNormalsBuffers[Oa]),l.bufferData(l.ARRAY_BUFFER,lb[Oa],la))}if($b.length){K=0;for(L=H.length;K<L;K++)X=ba[H[K]],oc=$b[X.a],pc=$b[X.b],qc=$b[X.c],Ca[ha]=oc.x,Ca[ha+1]=oc.y,Ca[ha+2]=oc.z,Ca[ha+3]=oc.w,Ca[ha+4]=pc.x,Ca[ha+5]=pc.y,Ca[ha+6]=pc.z,Ca[ha+7]=pc.w,Ca[ha+8]=qc.x,Ca[ha+9]=qc.y,Ca[ha+10]=qc.z,Ca[ha+11]=qc.w,Ba=va[X.a],Fa=va[X.b],Ga=va[X.c],ra[ha]=Ba.x,ra[ha+1]=Ba.y,ra[ha+2]=Ba.z,ra[ha+3]=Ba.w,ra[ha+4]=Fa.x,ra[ha+5]=Fa.y,ra[ha+6]=Fa.z,ra[ha+7]=Fa.w,ra[ha+
-8]=Ga.x,ra[ha+9]=Ga.y,ra[ha+10]=Ga.z,ra[ha+11]=Ga.w,ha+=12;0<ha&&(l.bindBuffer(l.ARRAY_BUFFER,C.__webglSkinIndicesBuffer),l.bufferData(l.ARRAY_BUFFER,ra,la),l.bindBuffer(l.ARRAY_BUFFER,C.__webglSkinWeightsBuffer),l.bufferData(l.ARRAY_BUFFER,Ca,la))}if(Gb){K=0;for(L=H.length;K<L;K++)X=ba[H[K]],sa=X.vertexColors,Wa=X.color,3===sa.length&&V.vertexColors===THREE.VertexColors?(oa=sa[0],nc=sa[1],na=sa[2]):na=nc=oa=Wa,Na[La]=oa.r,Na[La+1]=oa.g,Na[La+2]=oa.b,Na[La+3]=nc.r,Na[La+4]=nc.g,Na[La+5]=nc.b,Na[La+
-6]=na.r,Na[La+7]=na.g,Na[La+8]=na.b,La+=9;0<La&&(l.bindBuffer(l.ARRAY_BUFFER,C.__webglColorBuffer),l.bufferData(l.ARRAY_BUFFER,Na,la))}if(Vc&&Ia.hasTangents){K=0;for(L=H.length;K<L;K++)X=ba[H[K]],ga=X.vertexTangents,xa=ga[0],ka=ga[1],Ja=ga[2],za[Pa]=xa.x,za[Pa+1]=xa.y,za[Pa+2]=xa.z,za[Pa+3]=xa.w,za[Pa+4]=ka.x,za[Pa+5]=ka.y,za[Pa+6]=ka.z,za[Pa+7]=ka.w,za[Pa+8]=Ja.x,za[Pa+9]=Ja.y,za[Pa+10]=Ja.z,za[Pa+11]=Ja.w,Pa+=12;l.bindBuffer(l.ARRAY_BUFFER,C.__webglTangentBuffer);l.bufferData(l.ARRAY_BUFFER,za,
-la)}if(gb){K=0;for(L=H.length;K<L;K++)if(X=ba[H[K]],Ka=X.vertexNormals,Y=X.normal,3===Ka.length&&U)for(ja=0;3>ja;ja++)tb=Ka[ja],eb[Ya]=tb.x,eb[Ya+1]=tb.y,eb[Ya+2]=tb.z,Ya+=3;else for(ja=0;3>ja;ja++)eb[Ya]=Y.x,eb[Ya+1]=Y.y,eb[Ya+2]=Y.z,Ya+=3;l.bindBuffer(l.ARRAY_BUFFER,C.__webglNormalBuffer);l.bufferData(l.ARRAY_BUFFER,eb,la)}if(zb&&ca){K=0;for(L=H.length;K<L;K++)if(W=H[K],ya=ca[W],void 0!==ya)for(ja=0;3>ja;ja++)wa=ya[ja],Nb[rc]=wa.x,Nb[rc+1]=wa.y,rc+=2;0<rc&&(l.bindBuffer(l.ARRAY_BUFFER,C.__webglUVBuffer),
-l.bufferData(l.ARRAY_BUFFER,Nb,la))}if(zb&&Sa){K=0;for(L=H.length;K<L;K++)if(W=H[K],ua=Sa[W],void 0!==ua)for(ja=0;3>ja;ja++)Ac=ua[ja],xb[sc]=Ac.x,xb[sc+1]=Ac.y,sc+=2;0<sc&&(l.bindBuffer(l.ARRAY_BUFFER,C.__webglUV2Buffer),l.bufferData(l.ARRAY_BUFFER,xb,la))}if(fb){K=0;for(L=H.length;K<L;K++)Za[wb]=kb,Za[wb+1]=kb+1,Za[wb+2]=kb+2,wb+=3,Ra[cb]=kb,Ra[cb+1]=kb+1,Ra[cb+2]=kb,Ra[cb+3]=kb+2,Ra[cb+4]=kb+1,Ra[cb+5]=kb+2,cb+=6,kb+=3;l.bindBuffer(l.ELEMENT_ARRAY_BUFFER,C.__webglFaceBuffer);l.bufferData(l.ELEMENT_ARRAY_BUFFER,
-Za,la);l.bindBuffer(l.ELEMENT_ARRAY_BUFFER,C.__webglLineBuffer);l.bufferData(l.ELEMENT_ARRAY_BUFFER,Ra,la)}if(yb)for(ja=0,Va=yb.length;ja<Va;ja++)if(A=yb[ja],A.__original.needsUpdate){D=0;if(1===A.size)if(void 0===A.boundTo||"vertices"===A.boundTo)for(K=0,L=H.length;K<L;K++)X=ba[H[K]],A.array[D]=A.value[X.a],A.array[D+1]=A.value[X.b],A.array[D+2]=A.value[X.c],D+=3;else{if("faces"===A.boundTo)for(K=0,L=H.length;K<L;K++)Ma=A.value[H[K]],A.array[D]=Ma,A.array[D+1]=Ma,A.array[D+2]=Ma,D+=3}else if(2===
-A.size)if(void 0===A.boundTo||"vertices"===A.boundTo)for(K=0,L=H.length;K<L;K++)X=ba[H[K]],Z=A.value[X.a],$=A.value[X.b],aa=A.value[X.c],A.array[D]=Z.x,A.array[D+1]=Z.y,A.array[D+2]=$.x,A.array[D+3]=$.y,A.array[D+4]=aa.x,A.array[D+5]=aa.y,D+=6;else{if("faces"===A.boundTo)for(K=0,L=H.length;K<L;K++)aa=$=Z=Ma=A.value[H[K]],A.array[D]=Z.x,A.array[D+1]=Z.y,A.array[D+2]=$.x,A.array[D+3]=$.y,A.array[D+4]=aa.x,A.array[D+5]=aa.y,D+=6}else if(3===A.size){var ia;ia="c"===A.type?["r","g","b"]:["x","y","z"];
-if(void 0===A.boundTo||"vertices"===A.boundTo)for(K=0,L=H.length;K<L;K++)X=ba[H[K]],Z=A.value[X.a],$=A.value[X.b],aa=A.value[X.c],A.array[D]=Z[ia[0]],A.array[D+1]=Z[ia[1]],A.array[D+2]=Z[ia[2]],A.array[D+3]=$[ia[0]],A.array[D+4]=$[ia[1]],A.array[D+5]=$[ia[2]],A.array[D+6]=aa[ia[0]],A.array[D+7]=aa[ia[1]],A.array[D+8]=aa[ia[2]],D+=9;else if("faces"===A.boundTo)for(K=0,L=H.length;K<L;K++)aa=$=Z=Ma=A.value[H[K]],A.array[D]=Z[ia[0]],A.array[D+1]=Z[ia[1]],A.array[D+2]=Z[ia[2]],A.array[D+3]=$[ia[0]],A.array[D+
-4]=$[ia[1]],A.array[D+5]=$[ia[2]],A.array[D+6]=aa[ia[0]],A.array[D+7]=aa[ia[1]],A.array[D+8]=aa[ia[2]],D+=9;else if("faceVertices"===A.boundTo)for(K=0,L=H.length;K<L;K++)Ma=A.value[H[K]],Z=Ma[0],$=Ma[1],aa=Ma[2],A.array[D]=Z[ia[0]],A.array[D+1]=Z[ia[1]],A.array[D+2]=Z[ia[2]],A.array[D+3]=$[ia[0]],A.array[D+4]=$[ia[1]],A.array[D+5]=$[ia[2]],A.array[D+6]=aa[ia[0]],A.array[D+7]=aa[ia[1]],A.array[D+8]=aa[ia[2]],D+=9}else if(4===A.size)if(void 0===A.boundTo||"vertices"===A.boundTo)for(K=0,L=H.length;K<
-L;K++)X=ba[H[K]],Z=A.value[X.a],$=A.value[X.b],aa=A.value[X.c],A.array[D]=Z.x,A.array[D+1]=Z.y,A.array[D+2]=Z.z,A.array[D+3]=Z.w,A.array[D+4]=$.x,A.array[D+5]=$.y,A.array[D+6]=$.z,A.array[D+7]=$.w,A.array[D+8]=aa.x,A.array[D+9]=aa.y,A.array[D+10]=aa.z,A.array[D+11]=aa.w,D+=12;else if("faces"===A.boundTo)for(K=0,L=H.length;K<L;K++)aa=$=Z=Ma=A.value[H[K]],A.array[D]=Z.x,A.array[D+1]=Z.y,A.array[D+2]=Z.z,A.array[D+3]=Z.w,A.array[D+4]=$.x,A.array[D+5]=$.y,A.array[D+6]=$.z,A.array[D+7]=$.w,A.array[D+8]=
-aa.x,A.array[D+9]=aa.y,A.array[D+10]=aa.z,A.array[D+11]=aa.w,D+=12;else if("faceVertices"===A.boundTo)for(K=0,L=H.length;K<L;K++)Ma=A.value[H[K]],Z=Ma[0],$=Ma[1],aa=Ma[2],A.array[D]=Z.x,A.array[D+1]=Z.y,A.array[D+2]=Z.z,A.array[D+3]=Z.w,A.array[D+4]=$.x,A.array[D+5]=$.y,A.array[D+6]=$.z,A.array[D+7]=$.w,A.array[D+8]=aa.x,A.array[D+9]=aa.y,A.array[D+10]=aa.z,A.array[D+11]=aa.w,D+=12;l.bindBuffer(l.ARRAY_BUFFER,A.buffer);l.bufferData(l.ARRAY_BUFFER,A.array,la)}Q&&(delete C.__inittedArrays,delete C.__colorArray,
-delete C.__normalArray,delete C.__tangentArray,delete C.__uvArray,delete C.__uv2Array,delete C.__faceArray,delete C.__vertexArray,delete C.__lineArray,delete C.__skinIndexArray,delete C.__skinWeightArray)}}q.verticesNeedUpdate=!1;q.morphTargetsNeedUpdate=!1;q.elementsNeedUpdate=!1;q.uvsNeedUpdate=!1;q.normalsNeedUpdate=!1;q.colorsNeedUpdate=!1;q.tangentsNeedUpdate=!1;q.buffersNeedUpdate=!1;x.attributes&&z(x)}else if(e instanceof THREE.Line){x=d(e,q);r=x.attributes&&u(x);if(q.verticesNeedUpdate||q.colorsNeedUpdate||
-q.lineDistancesNeedUpdate||r){var Aa=l.DYNAMIC_DRAW,Ob,Pb,hb,Qb,fa,bc,Rb=q.vertices,Wb=q.colors,Zb=q.lineDistances,ub=Rb.length,Mb=Wb.length,Kb=Zb.length,mb=q.__vertexArray,nb=q.__colorArray,Fb=q.__lineDistanceArray,Yb=q.colorsNeedUpdate,mc=q.lineDistancesNeedUpdate,ob=q.__webglCustomAttributesList,ib,Lb,Ea,ic,Ta,pa;if(q.verticesNeedUpdate){for(Ob=0;Ob<ub;Ob++)Qb=Rb[Ob],fa=3*Ob,mb[fa]=Qb.x,mb[fa+1]=Qb.y,mb[fa+2]=Qb.z;l.bindBuffer(l.ARRAY_BUFFER,q.__webglVertexBuffer);l.bufferData(l.ARRAY_BUFFER,mb,
-Aa)}if(Yb){for(Pb=0;Pb<Mb;Pb++)bc=Wb[Pb],fa=3*Pb,nb[fa]=bc.r,nb[fa+1]=bc.g,nb[fa+2]=bc.b;l.bindBuffer(l.ARRAY_BUFFER,q.__webglColorBuffer);l.bufferData(l.ARRAY_BUFFER,nb,Aa)}if(mc){for(hb=0;hb<Kb;hb++)Fb[hb]=Zb[hb];l.bindBuffer(l.ARRAY_BUFFER,q.__webglLineDistanceBuffer);l.bufferData(l.ARRAY_BUFFER,Fb,Aa)}if(ob)for(ib=0,Lb=ob.length;ib<Lb;ib++)if(pa=ob[ib],pa.needsUpdate&&(void 0===pa.boundTo||"vertices"===pa.boundTo)){fa=0;ic=pa.value.length;if(1===pa.size)for(Ea=0;Ea<ic;Ea++)pa.array[Ea]=pa.value[Ea];
-else if(2===pa.size)for(Ea=0;Ea<ic;Ea++)Ta=pa.value[Ea],pa.array[fa]=Ta.x,pa.array[fa+1]=Ta.y,fa+=2;else if(3===pa.size)if("c"===pa.type)for(Ea=0;Ea<ic;Ea++)Ta=pa.value[Ea],pa.array[fa]=Ta.r,pa.array[fa+1]=Ta.g,pa.array[fa+2]=Ta.b,fa+=3;else for(Ea=0;Ea<ic;Ea++)Ta=pa.value[Ea],pa.array[fa]=Ta.x,pa.array[fa+1]=Ta.y,pa.array[fa+2]=Ta.z,fa+=3;else if(4===pa.size)for(Ea=0;Ea<ic;Ea++)Ta=pa.value[Ea],pa.array[fa]=Ta.x,pa.array[fa+1]=Ta.y,pa.array[fa+2]=Ta.z,pa.array[fa+3]=Ta.w,fa+=4;l.bindBuffer(l.ARRAY_BUFFER,
-pa.buffer);l.bufferData(l.ARRAY_BUFFER,pa.array,Aa)}}q.verticesNeedUpdate=!1;q.colorsNeedUpdate=!1;q.lineDistancesNeedUpdate=!1;x.attributes&&z(x)}else if(e instanceof THREE.PointCloud){x=d(e,q);r=x.attributes&&u(x);if(q.verticesNeedUpdate||q.colorsNeedUpdate||e.sortParticles||r){var sb=l.DYNAMIC_DRAW,Ua,Ab,Bb,T,Cb,Sb,wc=q.vertices,gc=wc.length,hc=q.colors,kc=hc.length,cc=q.__vertexArray,dc=q.__colorArray,Ib=q.__sortArray,lc=q.verticesNeedUpdate,Db=q.colorsNeedUpdate,Jb=q.__webglCustomAttributesList,
-qb,jc,da,rb,ma,S;if(e.sortParticles){Cc.copy(xc);Cc.multiply(e.matrixWorld);for(Ua=0;Ua<gc;Ua++)Bb=wc[Ua],Qa.copy(Bb),Qa.applyProjection(Cc),Ib[Ua]=[Qa.z,Ua];Ib.sort(p);for(Ua=0;Ua<gc;Ua++)Bb=wc[Ib[Ua][1]],T=3*Ua,cc[T]=Bb.x,cc[T+1]=Bb.y,cc[T+2]=Bb.z;for(Ab=0;Ab<kc;Ab++)T=3*Ab,Sb=hc[Ib[Ab][1]],dc[T]=Sb.r,dc[T+1]=Sb.g,dc[T+2]=Sb.b;if(Jb)for(qb=0,jc=Jb.length;qb<jc;qb++)if(S=Jb[qb],void 0===S.boundTo||"vertices"===S.boundTo)if(T=0,rb=S.value.length,1===S.size)for(da=0;da<rb;da++)Cb=Ib[da][1],S.array[da]=
-S.value[Cb];else if(2===S.size)for(da=0;da<rb;da++)Cb=Ib[da][1],ma=S.value[Cb],S.array[T]=ma.x,S.array[T+1]=ma.y,T+=2;else if(3===S.size)if("c"===S.type)for(da=0;da<rb;da++)Cb=Ib[da][1],ma=S.value[Cb],S.array[T]=ma.r,S.array[T+1]=ma.g,S.array[T+2]=ma.b,T+=3;else for(da=0;da<rb;da++)Cb=Ib[da][1],ma=S.value[Cb],S.array[T]=ma.x,S.array[T+1]=ma.y,S.array[T+2]=ma.z,T+=3;else if(4===S.size)for(da=0;da<rb;da++)Cb=Ib[da][1],ma=S.value[Cb],S.array[T]=ma.x,S.array[T+1]=ma.y,S.array[T+2]=ma.z,S.array[T+3]=ma.w,
-T+=4}else{if(lc)for(Ua=0;Ua<gc;Ua++)Bb=wc[Ua],T=3*Ua,cc[T]=Bb.x,cc[T+1]=Bb.y,cc[T+2]=Bb.z;if(Db)for(Ab=0;Ab<kc;Ab++)Sb=hc[Ab],T=3*Ab,dc[T]=Sb.r,dc[T+1]=Sb.g,dc[T+2]=Sb.b;if(Jb)for(qb=0,jc=Jb.length;qb<jc;qb++)if(S=Jb[qb],S.needsUpdate&&(void 0===S.boundTo||"vertices"===S.boundTo))if(rb=S.value.length,T=0,1===S.size)for(da=0;da<rb;da++)S.array[da]=S.value[da];else if(2===S.size)for(da=0;da<rb;da++)ma=S.value[da],S.array[T]=ma.x,S.array[T+1]=ma.y,T+=2;else if(3===S.size)if("c"===S.type)for(da=0;da<
-rb;da++)ma=S.value[da],S.array[T]=ma.r,S.array[T+1]=ma.g,S.array[T+2]=ma.b,T+=3;else for(da=0;da<rb;da++)ma=S.value[da],S.array[T]=ma.x,S.array[T+1]=ma.y,S.array[T+2]=ma.z,T+=3;else if(4===S.size)for(da=0;da<rb;da++)ma=S.value[da],S.array[T]=ma.x,S.array[T+1]=ma.y,S.array[T+2]=ma.z,S.array[T+3]=ma.w,T+=4}if(lc||e.sortParticles)l.bindBuffer(l.ARRAY_BUFFER,q.__webglVertexBuffer),l.bufferData(l.ARRAY_BUFFER,cc,sb);if(Db||e.sortParticles)l.bindBuffer(l.ARRAY_BUFFER,q.__webglColorBuffer),l.bufferData(l.ARRAY_BUFFER,
-dc,sb);if(Jb)for(qb=0,jc=Jb.length;qb<jc;qb++)if(S=Jb[qb],S.needsUpdate||e.sortParticles)l.bindBuffer(l.ARRAY_BUFFER,S.buffer),l.bufferData(l.ARRAY_BUFFER,S.array,sb)}q.verticesNeedUpdate=!1;q.colorsNeedUpdate=!1;x.attributes&&z(x)}for(var ec=0,Eb=s.length;ec<Eb;ec++){var yc=s[ec],Tb=yc,Xb=Tb.object,tc=Tb.buffer,uc=Xb.geometry,Ub=Xb.material;Ub instanceof THREE.MeshFaceMaterial?(Ub=Ub.materials[uc instanceof THREE.BufferGeometry?0:tc.materialIndex],Tb.material=Ub,Ub.transparent?jb.push(Tb):$a.push(Tb)):
-Ub&&(Tb.material=Ub,Ub.transparent?jb.push(Tb):$a.push(Tb));yc.render=!0;!0===J.sortObjects&&(null!==e.renderDepth?yc.z=e.renderDepth:(Qa.setFromMatrixPosition(e.matrixWorld),Qa.applyProjection(xc),yc.z=Qa.z))}}}ec=0;for(Eb=e.children.length;ec<Eb;ec++)m(a,e.children[ec])}}function q(a,b,c){if(0!==a.length)for(var d=0,e=a.length;d<e;d++)a[d].render(b,c,Gc,Hc)}function t(a,b,c,d,e,f){for(var g,h,k,l=a.length-1;-1!==l;l--){g=a[l];h=g.object;k=g.buffer;B(h,b);if(f)g=f;else{g=g.material;if(!g)continue;
-e&&J.setBlending(g.blending,g.blendEquation,g.blendSrc,g.blendDst);J.setDepthTest(g.depthTest);J.setDepthWrite(g.depthWrite);I(g.polygonOffset,g.polygonOffsetFactor,g.polygonOffsetUnits)}J.setMaterialFaces(g);k instanceof THREE.BufferGeometry?J.renderBufferDirect(b,c,d,g,k,h):J.renderBuffer(b,c,d,g,k,h)}}function s(a,b,c,d,e,f,g){for(var h,k,l=0,m=a.length;l<m;l++)if(h=a[l],k=h.object,k.visible){if(g)h=g;else{h=h[b];if(!h)continue;f&&J.setBlending(h.blending,h.blendEquation,h.blendSrc,h.blendDst);
-J.setDepthTest(h.depthTest);J.setDepthWrite(h.depthWrite);I(h.polygonOffset,h.polygonOffsetFactor,h.polygonOffsetUnits)}J.renderImmediateObject(c,d,e,h,k)}}function r(a){var b=a.object.material;b.transparent?(a.transparent=b,a.opaque=null):(a.opaque=b,a.transparent=null)}function v(a,b,d){var e=!1;a=b.material;if(void 0===d.geometryGroups||d.groupsNeedUpdate)delete ab[b.id],d.makeGroups(a instanceof THREE.MeshFaceMaterial,ub?4294967296:65535),d.groupsNeedUpdate=!1;for(var f=0,g=d.geometryGroupsList.length;f<
-g;f++){a=d.geometryGroupsList[f];if(a.__webglVertexBuffer)e=!1;else{e=a;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();var h=void 0,k=void 0;if(e.numMorphTargets)for(e.__webglMorphTargetsBuffers=
-[],h=0,k=e.numMorphTargets;h<k;h++)e.__webglMorphTargetsBuffers.push(l.createBuffer());if(e.numMorphNormals)for(e.__webglMorphNormalsBuffers=[],h=0,k=e.numMorphNormals;h<k;h++)e.__webglMorphNormalsBuffers.push(l.createBuffer());J.info.memory.geometries++;c(a,b);d.verticesNeedUpdate=!0;d.morphTargetsNeedUpdate=!0;d.elementsNeedUpdate=!0;d.uvsNeedUpdate=!0;d.normalsNeedUpdate=!0;d.tangentsNeedUpdate=!0;e=d.colorsNeedUpdate=!0}(e||void 0===b.__webglActive)&&w(ab,a,b)}b.__webglActive=!0}function w(a,
+THREE.Group)){void 0===e.__webglInit&&(e.__webglInit=!0,e._modelViewMatrix=new THREE.Matrix4,e._normalMatrix=new THREE.Matrix3,e.addEventListener("removed",Dc));var f=e.geometry;if(void 0!==f&&void 0===f.__webglInit&&(f.__webglInit=!0,f.addEventListener("dispose",Ec),!(f instanceof THREE.BufferGeometry)))if(e instanceof THREE.Mesh)v(a,e,f);else if(e instanceof THREE.Line){if(void 0===f.__webglVertexBuffer){f.__webglVertexBuffer=l.createBuffer();f.__webglColorBuffer=l.createBuffer();f.__webglLineDistanceBuffer=
+l.createBuffer();J.info.memory.geometries++;var g=f.vertices.length;f.__vertexArray=new Float32Array(3*g);f.__colorArray=new Float32Array(3*g);f.__lineDistanceArray=new Float32Array(1*g);f.__webglLineCount=g;b(f,e);f.verticesNeedUpdate=!0;f.colorsNeedUpdate=!0;f.lineDistancesNeedUpdate=!0}}else if(e instanceof THREE.PointCloud&&void 0===f.__webglVertexBuffer){f.__webglVertexBuffer=l.createBuffer();f.__webglColorBuffer=l.createBuffer();J.info.memory.geometries++;var h=f.vertices.length;f.__vertexArray=
+new Float32Array(3*h);f.__colorArray=new Float32Array(3*h);f.__sortArray=[];f.__webglParticleCount=h;b(f,e);f.verticesNeedUpdate=!0;f.colorsNeedUpdate=!0}if(void 0===e.__webglActive)if(e.__webglActive=!0,e instanceof THREE.Mesh)if(f instanceof THREE.BufferGeometry)w(ab,f,e);else{if(f instanceof THREE.Geometry)for(var k=0,n=f.geometryGroupsList.length;k<n;k++)w(ab,f.geometryGroupsList[k],e)}else e instanceof THREE.Line||e instanceof THREE.PointCloud?w(ab,f,e):(e instanceof THREE.ImmediateRenderObject||
+e.immediateRenderCallback)&&Ha.push({id:null,object:e,opaque:null,transparent:null,z:0});var s=ab[e.id];if(s&&(!1===e.frustumCulled||!0===zc.intersectsObject(e))){var q=e.geometry,t,r,x;if(q instanceof THREE.BufferGeometry)for(var y=q.attributes,B=q.attributesKeys,G=0,E=B.length;G<E;G++){var F=B[G],I=y[F];void 0===I.buffer&&(I.buffer=l.createBuffer(),I.needsUpdate=!0);if(!0===I.needsUpdate){var O="index"===F?l.ELEMENT_ARRAY_BUFFER:l.ARRAY_BUFFER;l.bindBuffer(O,I.buffer);l.bufferData(O,I.array,l.STATIC_DRAW);
+I.needsUpdate=!1}}else if(e instanceof THREE.Mesh){!0===q.groupsNeedUpdate&&v(a,e,q);for(var P=0,R=q.geometryGroupsList.length;P<R;P++)if(t=q.geometryGroupsList[P],x=d(e,t),!0===q.groupsNeedUpdate&&c(t,e),r=x.attributes&&u(x),q.verticesNeedUpdate||q.morphTargetsNeedUpdate||q.elementsNeedUpdate||q.uvsNeedUpdate||q.normalsNeedUpdate||q.colorsNeedUpdate||q.tangentsNeedUpdate||r){var C=t,N=e,la=l.DYNAMIC_DRAW,Q=!q.dynamic,V=x;if(C.__inittedArrays){var U=V&&void 0!==V.shading&&V.shading===THREE.SmoothShading,
+K=void 0,L=void 0,W=void 0,X=void 0,Ka=void 0,Y=void 0,sa=void 0,Wa=void 0,ga=void 0,ya=void 0,ua=void 0,Z=void 0,$=void 0,aa=void 0,xa=void 0,ka=void 0,Ja=void 0,qa=void 0,M=void 0,vb=void 0,oa=void 0,nc=void 0,na=void 0,oc=void 0,pc=void 0,qc=void 0,Ba=void 0,Fa=void 0,Ga=void 0,ja=void 0,Va=void 0,tb=void 0,wa=void 0,Ac=void 0,Oa=void 0,Vb=void 0,bb=void 0,pb=void 0,Hb=void 0,vc=void 0,kb=0,Xa=0,rc=0,sc=0,wb=0,Ya=0,Pa=0,cb=0,La=0,ha=0,ta=0,D=0,Ma=void 0,db=C.__vertexArray,Nb=C.__uvArray,xb=C.__uv2Array,
+eb=C.__normalArray,za=C.__tangentArray,Na=C.__colorArray,ra=C.__skinIndexArray,Ca=C.__skinWeightArray,fc=C.__morphTargetsArrays,lb=C.__morphNormalsArrays,yb=C.__webglCustomAttributesList,A=void 0,Za=C.__faceArray,Ra=C.__lineArray,Ia=N.geometry,fb=Ia.elementsNeedUpdate,zb=Ia.uvsNeedUpdate,gb=Ia.normalsNeedUpdate,Vc=Ia.tangentsNeedUpdate,Gb=Ia.colorsNeedUpdate,ea=Ia.morphTargetsNeedUpdate,Bc=Ia.vertices,H=C.faces3,ba=Ia.faces,ca=Ia.faceVertexUvs[0],Sa=Ia.faceVertexUvs[1],va=Ia.skinIndices,$b=Ia.skinWeights,
+ac=Ia.morphTargets,Fc=Ia.morphNormals;if(Ia.verticesNeedUpdate){K=0;for(L=H.length;K<L;K++)X=ba[H[K]],Z=Bc[X.a],$=Bc[X.b],aa=Bc[X.c],db[Xa]=Z.x,db[Xa+1]=Z.y,db[Xa+2]=Z.z,db[Xa+3]=$.x,db[Xa+4]=$.y,db[Xa+5]=$.z,db[Xa+6]=aa.x,db[Xa+7]=aa.y,db[Xa+8]=aa.z,Xa+=9;l.bindBuffer(l.ARRAY_BUFFER,C.__webglVertexBuffer);l.bufferData(l.ARRAY_BUFFER,db,la)}if(ea)for(Oa=0,Vb=ac.length;Oa<Vb;Oa++){K=ta=0;for(L=H.length;K<L;K++)Hb=H[K],X=ba[Hb],Z=ac[Oa].vertices[X.a],$=ac[Oa].vertices[X.b],aa=ac[Oa].vertices[X.c],bb=
+fc[Oa],bb[ta]=Z.x,bb[ta+1]=Z.y,bb[ta+2]=Z.z,bb[ta+3]=$.x,bb[ta+4]=$.y,bb[ta+5]=$.z,bb[ta+6]=aa.x,bb[ta+7]=aa.y,bb[ta+8]=aa.z,V.morphNormals&&(U?(vc=Fc[Oa].vertexNormals[Hb],qa=vc.a,M=vc.b,vb=vc.c):vb=M=qa=Fc[Oa].faceNormals[Hb],pb=lb[Oa],pb[ta]=qa.x,pb[ta+1]=qa.y,pb[ta+2]=qa.z,pb[ta+3]=M.x,pb[ta+4]=M.y,pb[ta+5]=M.z,pb[ta+6]=vb.x,pb[ta+7]=vb.y,pb[ta+8]=vb.z),ta+=9;l.bindBuffer(l.ARRAY_BUFFER,C.__webglMorphTargetsBuffers[Oa]);l.bufferData(l.ARRAY_BUFFER,fc[Oa],la);V.morphNormals&&(l.bindBuffer(l.ARRAY_BUFFER,
+C.__webglMorphNormalsBuffers[Oa]),l.bufferData(l.ARRAY_BUFFER,lb[Oa],la))}if($b.length){K=0;for(L=H.length;K<L;K++)X=ba[H[K]],oc=$b[X.a],pc=$b[X.b],qc=$b[X.c],Ca[ha]=oc.x,Ca[ha+1]=oc.y,Ca[ha+2]=oc.z,Ca[ha+3]=oc.w,Ca[ha+4]=pc.x,Ca[ha+5]=pc.y,Ca[ha+6]=pc.z,Ca[ha+7]=pc.w,Ca[ha+8]=qc.x,Ca[ha+9]=qc.y,Ca[ha+10]=qc.z,Ca[ha+11]=qc.w,Ba=va[X.a],Fa=va[X.b],Ga=va[X.c],ra[ha]=Ba.x,ra[ha+1]=Ba.y,ra[ha+2]=Ba.z,ra[ha+3]=Ba.w,ra[ha+4]=Fa.x,ra[ha+5]=Fa.y,ra[ha+6]=Fa.z,ra[ha+7]=Fa.w,ra[ha+8]=Ga.x,ra[ha+9]=Ga.y,ra[ha+
+10]=Ga.z,ra[ha+11]=Ga.w,ha+=12;0<ha&&(l.bindBuffer(l.ARRAY_BUFFER,C.__webglSkinIndicesBuffer),l.bufferData(l.ARRAY_BUFFER,ra,la),l.bindBuffer(l.ARRAY_BUFFER,C.__webglSkinWeightsBuffer),l.bufferData(l.ARRAY_BUFFER,Ca,la))}if(Gb){K=0;for(L=H.length;K<L;K++)X=ba[H[K]],sa=X.vertexColors,Wa=X.color,3===sa.length&&V.vertexColors===THREE.VertexColors?(oa=sa[0],nc=sa[1],na=sa[2]):na=nc=oa=Wa,Na[La]=oa.r,Na[La+1]=oa.g,Na[La+2]=oa.b,Na[La+3]=nc.r,Na[La+4]=nc.g,Na[La+5]=nc.b,Na[La+6]=na.r,Na[La+7]=na.g,Na[La+
+8]=na.b,La+=9;0<La&&(l.bindBuffer(l.ARRAY_BUFFER,C.__webglColorBuffer),l.bufferData(l.ARRAY_BUFFER,Na,la))}if(Vc&&Ia.hasTangents){K=0;for(L=H.length;K<L;K++)X=ba[H[K]],ga=X.vertexTangents,xa=ga[0],ka=ga[1],Ja=ga[2],za[Pa]=xa.x,za[Pa+1]=xa.y,za[Pa+2]=xa.z,za[Pa+3]=xa.w,za[Pa+4]=ka.x,za[Pa+5]=ka.y,za[Pa+6]=ka.z,za[Pa+7]=ka.w,za[Pa+8]=Ja.x,za[Pa+9]=Ja.y,za[Pa+10]=Ja.z,za[Pa+11]=Ja.w,Pa+=12;l.bindBuffer(l.ARRAY_BUFFER,C.__webglTangentBuffer);l.bufferData(l.ARRAY_BUFFER,za,la)}if(gb){K=0;for(L=H.length;K<
+L;K++)if(X=ba[H[K]],Ka=X.vertexNormals,Y=X.normal,3===Ka.length&&U)for(ja=0;3>ja;ja++)tb=Ka[ja],eb[Ya]=tb.x,eb[Ya+1]=tb.y,eb[Ya+2]=tb.z,Ya+=3;else for(ja=0;3>ja;ja++)eb[Ya]=Y.x,eb[Ya+1]=Y.y,eb[Ya+2]=Y.z,Ya+=3;l.bindBuffer(l.ARRAY_BUFFER,C.__webglNormalBuffer);l.bufferData(l.ARRAY_BUFFER,eb,la)}if(zb&&ca){K=0;for(L=H.length;K<L;K++)if(W=H[K],ya=ca[W],void 0!==ya)for(ja=0;3>ja;ja++)wa=ya[ja],Nb[rc]=wa.x,Nb[rc+1]=wa.y,rc+=2;0<rc&&(l.bindBuffer(l.ARRAY_BUFFER,C.__webglUVBuffer),l.bufferData(l.ARRAY_BUFFER,
+Nb,la))}if(zb&&Sa){K=0;for(L=H.length;K<L;K++)if(W=H[K],ua=Sa[W],void 0!==ua)for(ja=0;3>ja;ja++)Ac=ua[ja],xb[sc]=Ac.x,xb[sc+1]=Ac.y,sc+=2;0<sc&&(l.bindBuffer(l.ARRAY_BUFFER,C.__webglUV2Buffer),l.bufferData(l.ARRAY_BUFFER,xb,la))}if(fb){K=0;for(L=H.length;K<L;K++)Za[wb]=kb,Za[wb+1]=kb+1,Za[wb+2]=kb+2,wb+=3,Ra[cb]=kb,Ra[cb+1]=kb+1,Ra[cb+2]=kb,Ra[cb+3]=kb+2,Ra[cb+4]=kb+1,Ra[cb+5]=kb+2,cb+=6,kb+=3;l.bindBuffer(l.ELEMENT_ARRAY_BUFFER,C.__webglFaceBuffer);l.bufferData(l.ELEMENT_ARRAY_BUFFER,Za,la);l.bindBuffer(l.ELEMENT_ARRAY_BUFFER,
+C.__webglLineBuffer);l.bufferData(l.ELEMENT_ARRAY_BUFFER,Ra,la)}if(yb)for(ja=0,Va=yb.length;ja<Va;ja++)if(A=yb[ja],A.__original.needsUpdate){D=0;if(1===A.size)if(void 0===A.boundTo||"vertices"===A.boundTo)for(K=0,L=H.length;K<L;K++)X=ba[H[K]],A.array[D]=A.value[X.a],A.array[D+1]=A.value[X.b],A.array[D+2]=A.value[X.c],D+=3;else{if("faces"===A.boundTo)for(K=0,L=H.length;K<L;K++)Ma=A.value[H[K]],A.array[D]=Ma,A.array[D+1]=Ma,A.array[D+2]=Ma,D+=3}else if(2===A.size)if(void 0===A.boundTo||"vertices"===
+A.boundTo)for(K=0,L=H.length;K<L;K++)X=ba[H[K]],Z=A.value[X.a],$=A.value[X.b],aa=A.value[X.c],A.array[D]=Z.x,A.array[D+1]=Z.y,A.array[D+2]=$.x,A.array[D+3]=$.y,A.array[D+4]=aa.x,A.array[D+5]=aa.y,D+=6;else{if("faces"===A.boundTo)for(K=0,L=H.length;K<L;K++)aa=$=Z=Ma=A.value[H[K]],A.array[D]=Z.x,A.array[D+1]=Z.y,A.array[D+2]=$.x,A.array[D+3]=$.y,A.array[D+4]=aa.x,A.array[D+5]=aa.y,D+=6}else if(3===A.size){var ia;ia="c"===A.type?["r","g","b"]:["x","y","z"];if(void 0===A.boundTo||"vertices"===A.boundTo)for(K=
+0,L=H.length;K<L;K++)X=ba[H[K]],Z=A.value[X.a],$=A.value[X.b],aa=A.value[X.c],A.array[D]=Z[ia[0]],A.array[D+1]=Z[ia[1]],A.array[D+2]=Z[ia[2]],A.array[D+3]=$[ia[0]],A.array[D+4]=$[ia[1]],A.array[D+5]=$[ia[2]],A.array[D+6]=aa[ia[0]],A.array[D+7]=aa[ia[1]],A.array[D+8]=aa[ia[2]],D+=9;else if("faces"===A.boundTo)for(K=0,L=H.length;K<L;K++)aa=$=Z=Ma=A.value[H[K]],A.array[D]=Z[ia[0]],A.array[D+1]=Z[ia[1]],A.array[D+2]=Z[ia[2]],A.array[D+3]=$[ia[0]],A.array[D+4]=$[ia[1]],A.array[D+5]=$[ia[2]],A.array[D+
+6]=aa[ia[0]],A.array[D+7]=aa[ia[1]],A.array[D+8]=aa[ia[2]],D+=9;else if("faceVertices"===A.boundTo)for(K=0,L=H.length;K<L;K++)Ma=A.value[H[K]],Z=Ma[0],$=Ma[1],aa=Ma[2],A.array[D]=Z[ia[0]],A.array[D+1]=Z[ia[1]],A.array[D+2]=Z[ia[2]],A.array[D+3]=$[ia[0]],A.array[D+4]=$[ia[1]],A.array[D+5]=$[ia[2]],A.array[D+6]=aa[ia[0]],A.array[D+7]=aa[ia[1]],A.array[D+8]=aa[ia[2]],D+=9}else if(4===A.size)if(void 0===A.boundTo||"vertices"===A.boundTo)for(K=0,L=H.length;K<L;K++)X=ba[H[K]],Z=A.value[X.a],$=A.value[X.b],
+aa=A.value[X.c],A.array[D]=Z.x,A.array[D+1]=Z.y,A.array[D+2]=Z.z,A.array[D+3]=Z.w,A.array[D+4]=$.x,A.array[D+5]=$.y,A.array[D+6]=$.z,A.array[D+7]=$.w,A.array[D+8]=aa.x,A.array[D+9]=aa.y,A.array[D+10]=aa.z,A.array[D+11]=aa.w,D+=12;else if("faces"===A.boundTo)for(K=0,L=H.length;K<L;K++)aa=$=Z=Ma=A.value[H[K]],A.array[D]=Z.x,A.array[D+1]=Z.y,A.array[D+2]=Z.z,A.array[D+3]=Z.w,A.array[D+4]=$.x,A.array[D+5]=$.y,A.array[D+6]=$.z,A.array[D+7]=$.w,A.array[D+8]=aa.x,A.array[D+9]=aa.y,A.array[D+10]=aa.z,A.array[D+
+11]=aa.w,D+=12;else if("faceVertices"===A.boundTo)for(K=0,L=H.length;K<L;K++)Ma=A.value[H[K]],Z=Ma[0],$=Ma[1],aa=Ma[2],A.array[D]=Z.x,A.array[D+1]=Z.y,A.array[D+2]=Z.z,A.array[D+3]=Z.w,A.array[D+4]=$.x,A.array[D+5]=$.y,A.array[D+6]=$.z,A.array[D+7]=$.w,A.array[D+8]=aa.x,A.array[D+9]=aa.y,A.array[D+10]=aa.z,A.array[D+11]=aa.w,D+=12;l.bindBuffer(l.ARRAY_BUFFER,A.buffer);l.bufferData(l.ARRAY_BUFFER,A.array,la)}Q&&(delete C.__inittedArrays,delete C.__colorArray,delete C.__normalArray,delete C.__tangentArray,
+delete C.__uvArray,delete C.__uv2Array,delete C.__faceArray,delete C.__vertexArray,delete C.__lineArray,delete C.__skinIndexArray,delete C.__skinWeightArray)}}q.verticesNeedUpdate=!1;q.morphTargetsNeedUpdate=!1;q.elementsNeedUpdate=!1;q.uvsNeedUpdate=!1;q.normalsNeedUpdate=!1;q.colorsNeedUpdate=!1;q.tangentsNeedUpdate=!1;x.attributes&&z(x)}else if(e instanceof THREE.Line){x=d(e,q);r=x.attributes&&u(x);if(q.verticesNeedUpdate||q.colorsNeedUpdate||q.lineDistancesNeedUpdate||r){var Aa=l.DYNAMIC_DRAW,
+Ob,Pb,hb,Qb,fa,bc,Rb=q.vertices,Wb=q.colors,Zb=q.lineDistances,ub=Rb.length,Mb=Wb.length,Kb=Zb.length,mb=q.__vertexArray,nb=q.__colorArray,Fb=q.__lineDistanceArray,Yb=q.colorsNeedUpdate,mc=q.lineDistancesNeedUpdate,ob=q.__webglCustomAttributesList,ib,Lb,Ea,ic,Ta,pa;if(q.verticesNeedUpdate){for(Ob=0;Ob<ub;Ob++)Qb=Rb[Ob],fa=3*Ob,mb[fa]=Qb.x,mb[fa+1]=Qb.y,mb[fa+2]=Qb.z;l.bindBuffer(l.ARRAY_BUFFER,q.__webglVertexBuffer);l.bufferData(l.ARRAY_BUFFER,mb,Aa)}if(Yb){for(Pb=0;Pb<Mb;Pb++)bc=Wb[Pb],fa=3*Pb,nb[fa]=
+bc.r,nb[fa+1]=bc.g,nb[fa+2]=bc.b;l.bindBuffer(l.ARRAY_BUFFER,q.__webglColorBuffer);l.bufferData(l.ARRAY_BUFFER,nb,Aa)}if(mc){for(hb=0;hb<Kb;hb++)Fb[hb]=Zb[hb];l.bindBuffer(l.ARRAY_BUFFER,q.__webglLineDistanceBuffer);l.bufferData(l.ARRAY_BUFFER,Fb,Aa)}if(ob)for(ib=0,Lb=ob.length;ib<Lb;ib++)if(pa=ob[ib],pa.needsUpdate&&(void 0===pa.boundTo||"vertices"===pa.boundTo)){fa=0;ic=pa.value.length;if(1===pa.size)for(Ea=0;Ea<ic;Ea++)pa.array[Ea]=pa.value[Ea];else if(2===pa.size)for(Ea=0;Ea<ic;Ea++)Ta=pa.value[Ea],
+pa.array[fa]=Ta.x,pa.array[fa+1]=Ta.y,fa+=2;else if(3===pa.size)if("c"===pa.type)for(Ea=0;Ea<ic;Ea++)Ta=pa.value[Ea],pa.array[fa]=Ta.r,pa.array[fa+1]=Ta.g,pa.array[fa+2]=Ta.b,fa+=3;else for(Ea=0;Ea<ic;Ea++)Ta=pa.value[Ea],pa.array[fa]=Ta.x,pa.array[fa+1]=Ta.y,pa.array[fa+2]=Ta.z,fa+=3;else if(4===pa.size)for(Ea=0;Ea<ic;Ea++)Ta=pa.value[Ea],pa.array[fa]=Ta.x,pa.array[fa+1]=Ta.y,pa.array[fa+2]=Ta.z,pa.array[fa+3]=Ta.w,fa+=4;l.bindBuffer(l.ARRAY_BUFFER,pa.buffer);l.bufferData(l.ARRAY_BUFFER,pa.array,
+Aa)}}q.verticesNeedUpdate=!1;q.colorsNeedUpdate=!1;q.lineDistancesNeedUpdate=!1;x.attributes&&z(x)}else if(e instanceof THREE.PointCloud){x=d(e,q);r=x.attributes&&u(x);if(q.verticesNeedUpdate||q.colorsNeedUpdate||e.sortParticles||r){var sb=l.DYNAMIC_DRAW,Ua,Ab,Bb,T,Cb,Sb,wc=q.vertices,gc=wc.length,hc=q.colors,kc=hc.length,cc=q.__vertexArray,dc=q.__colorArray,Ib=q.__sortArray,lc=q.verticesNeedUpdate,Db=q.colorsNeedUpdate,Jb=q.__webglCustomAttributesList,qb,jc,da,rb,ma,S;if(e.sortParticles){Cc.copy(xc);
+Cc.multiply(e.matrixWorld);for(Ua=0;Ua<gc;Ua++)Bb=wc[Ua],Qa.copy(Bb),Qa.applyProjection(Cc),Ib[Ua]=[Qa.z,Ua];Ib.sort(p);for(Ua=0;Ua<gc;Ua++)Bb=wc[Ib[Ua][1]],T=3*Ua,cc[T]=Bb.x,cc[T+1]=Bb.y,cc[T+2]=Bb.z;for(Ab=0;Ab<kc;Ab++)T=3*Ab,Sb=hc[Ib[Ab][1]],dc[T]=Sb.r,dc[T+1]=Sb.g,dc[T+2]=Sb.b;if(Jb)for(qb=0,jc=Jb.length;qb<jc;qb++)if(S=Jb[qb],void 0===S.boundTo||"vertices"===S.boundTo)if(T=0,rb=S.value.length,1===S.size)for(da=0;da<rb;da++)Cb=Ib[da][1],S.array[da]=S.value[Cb];else if(2===S.size)for(da=0;da<rb;da++)Cb=
+Ib[da][1],ma=S.value[Cb],S.array[T]=ma.x,S.array[T+1]=ma.y,T+=2;else if(3===S.size)if("c"===S.type)for(da=0;da<rb;da++)Cb=Ib[da][1],ma=S.value[Cb],S.array[T]=ma.r,S.array[T+1]=ma.g,S.array[T+2]=ma.b,T+=3;else for(da=0;da<rb;da++)Cb=Ib[da][1],ma=S.value[Cb],S.array[T]=ma.x,S.array[T+1]=ma.y,S.array[T+2]=ma.z,T+=3;else if(4===S.size)for(da=0;da<rb;da++)Cb=Ib[da][1],ma=S.value[Cb],S.array[T]=ma.x,S.array[T+1]=ma.y,S.array[T+2]=ma.z,S.array[T+3]=ma.w,T+=4}else{if(lc)for(Ua=0;Ua<gc;Ua++)Bb=wc[Ua],T=3*
+Ua,cc[T]=Bb.x,cc[T+1]=Bb.y,cc[T+2]=Bb.z;if(Db)for(Ab=0;Ab<kc;Ab++)Sb=hc[Ab],T=3*Ab,dc[T]=Sb.r,dc[T+1]=Sb.g,dc[T+2]=Sb.b;if(Jb)for(qb=0,jc=Jb.length;qb<jc;qb++)if(S=Jb[qb],S.needsUpdate&&(void 0===S.boundTo||"vertices"===S.boundTo))if(rb=S.value.length,T=0,1===S.size)for(da=0;da<rb;da++)S.array[da]=S.value[da];else if(2===S.size)for(da=0;da<rb;da++)ma=S.value[da],S.array[T]=ma.x,S.array[T+1]=ma.y,T+=2;else if(3===S.size)if("c"===S.type)for(da=0;da<rb;da++)ma=S.value[da],S.array[T]=ma.r,S.array[T+1]=
+ma.g,S.array[T+2]=ma.b,T+=3;else for(da=0;da<rb;da++)ma=S.value[da],S.array[T]=ma.x,S.array[T+1]=ma.y,S.array[T+2]=ma.z,T+=3;else if(4===S.size)for(da=0;da<rb;da++)ma=S.value[da],S.array[T]=ma.x,S.array[T+1]=ma.y,S.array[T+2]=ma.z,S.array[T+3]=ma.w,T+=4}if(lc||e.sortParticles)l.bindBuffer(l.ARRAY_BUFFER,q.__webglVertexBuffer),l.bufferData(l.ARRAY_BUFFER,cc,sb);if(Db||e.sortParticles)l.bindBuffer(l.ARRAY_BUFFER,q.__webglColorBuffer),l.bufferData(l.ARRAY_BUFFER,dc,sb);if(Jb)for(qb=0,jc=Jb.length;qb<
+jc;qb++)if(S=Jb[qb],S.needsUpdate||e.sortParticles)l.bindBuffer(l.ARRAY_BUFFER,S.buffer),l.bufferData(l.ARRAY_BUFFER,S.array,sb)}q.verticesNeedUpdate=!1;q.colorsNeedUpdate=!1;x.attributes&&z(x)}for(var ec=0,Eb=s.length;ec<Eb;ec++){var yc=s[ec],Tb=yc,Xb=Tb.object,tc=Tb.buffer,uc=Xb.geometry,Ub=Xb.material;Ub instanceof THREE.MeshFaceMaterial?(Ub=Ub.materials[uc instanceof THREE.BufferGeometry?0:tc.materialIndex],Tb.material=Ub,Ub.transparent?jb.push(Tb):$a.push(Tb)):Ub&&(Tb.material=Ub,Ub.transparent?
+jb.push(Tb):$a.push(Tb));yc.render=!0;!0===J.sortObjects&&(null!==e.renderDepth?yc.z=e.renderDepth:(Qa.setFromMatrixPosition(e.matrixWorld),Qa.applyProjection(xc),yc.z=Qa.z))}}}ec=0;for(Eb=e.children.length;ec<Eb;ec++)m(a,e.children[ec])}}function q(a,b,c){if(0!==a.length)for(var d=0,e=a.length;d<e;d++)a[d].render(b,c,Gc,Hc)}function t(a,b,c,d,e,f){for(var g,h,k,l=a.length-1;-1!==l;l--){g=a[l];h=g.object;k=g.buffer;B(h,b);if(f)g=f;else{g=g.material;if(!g)continue;e&&J.setBlending(g.blending,g.blendEquation,
+g.blendSrc,g.blendDst);J.setDepthTest(g.depthTest);J.setDepthWrite(g.depthWrite);I(g.polygonOffset,g.polygonOffsetFactor,g.polygonOffsetUnits)}J.setMaterialFaces(g);k instanceof THREE.BufferGeometry?J.renderBufferDirect(b,c,d,g,k,h):J.renderBuffer(b,c,d,g,k,h)}}function s(a,b,c,d,e,f,g){for(var h,k,l=0,m=a.length;l<m;l++)if(h=a[l],k=h.object,k.visible){if(g)h=g;else{h=h[b];if(!h)continue;f&&J.setBlending(h.blending,h.blendEquation,h.blendSrc,h.blendDst);J.setDepthTest(h.depthTest);J.setDepthWrite(h.depthWrite);
+I(h.polygonOffset,h.polygonOffsetFactor,h.polygonOffsetUnits)}J.renderImmediateObject(c,d,e,h,k)}}function r(a){var b=a.object.material;b.transparent?(a.transparent=b,a.opaque=null):(a.opaque=b,a.transparent=null)}function v(a,b,d){a=b.material;var e=!1;if(void 0===d.geometryGroups||!0===d.groupsNeedUpdate)delete ab[b.id],d.makeGroups(a instanceof THREE.MeshFaceMaterial,ub?4294967296:65535),d.groupsNeedUpdate=!1;for(var f=0,g=d.geometryGroupsList.length;f<g;f++){a=d.geometryGroupsList[f];if(void 0===
+a.__webglVertexBuffer){e=a;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();var h=void 0,k=void 0;if(e.numMorphTargets)for(e.__webglMorphTargetsBuffers=[],h=0,k=
+e.numMorphTargets;h<k;h++)e.__webglMorphTargetsBuffers.push(l.createBuffer());if(e.numMorphNormals)for(e.__webglMorphNormalsBuffers=[],h=0,k=e.numMorphNormals;h<k;h++)e.__webglMorphNormalsBuffers.push(l.createBuffer());J.info.memory.geometries++;c(a,b);d.verticesNeedUpdate=!0;d.morphTargetsNeedUpdate=!0;d.elementsNeedUpdate=!0;d.uvsNeedUpdate=!0;d.normalsNeedUpdate=!0;d.tangentsNeedUpdate=!0;e=d.colorsNeedUpdate=!0}else e=!1;(e||void 0===b.__webglActive)&&w(ab,a,b)}b.__webglActive=!0}function w(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){for(var b in a.attributes)if(a.attributes[b].needsUpdate)return!0;return!1}function z(a){for(var b in a.attributes)a.attributes[b].needsUpdate=!1}function x(a,b,c,d,e){var f,g,h,k;fc=0;if(d.needsUpdate){d.program&&Ic(d);d.addEventListener("dispose",Jc);var m;d instanceof THREE.MeshDepthMaterial?m="depth":d instanceof THREE.MeshNormalMaterial?m="normal":d instanceof THREE.MeshBasicMaterial?m="basic":d instanceof
 THREE.MeshLambertMaterial?m="lambert":d instanceof THREE.MeshPhongMaterial?m="phong":d instanceof THREE.LineBasicMaterial?m="basic":d instanceof THREE.LineDashedMaterial?m="dashed":d instanceof THREE.PointCloudMaterial&&(m="particle_basic");if(m){var n=THREE.ShaderLib[m];d.__webglShader={uniforms:THREE.UniformsUtils.clone(n.uniforms),vertexShader:n.vertexShader,fragmentShader:n.fragmentShader}}else d.__webglShader={uniforms:d.uniforms,vertexShader:d.vertexShader,fragmentShader:d.fragmentShader};for(var p=
 0,q=0,s=0,t=0,r=0,u=b.length;r<u;r++){var w=b[r];w.onlyShadow||!1===w.visible||(w instanceof THREE.DirectionalLight&&p++,w instanceof THREE.PointLight&&q++,w instanceof THREE.SpotLight&&s++,w instanceof THREE.HemisphereLight&&t++)}f=p;g=q;h=s;k=t;for(var v,x=0,z=0,B=b.length;z<B;z++){var I=b[z];I.castShadow&&(I instanceof THREE.SpotLight&&x++,I instanceof THREE.DirectionalLight&&!I.shadowCascade&&x++)}v=x;var R;if(gc&&e&&e.skeleton&&e.skeleton.useVertexTexture)R=1024;else{var la=l.getParameter(l.MAX_VERTEX_UNIFORM_VECTORS),