Browse Source

Updated builds.

Mr.doob 14 years ago
parent
commit
3343729ad0
2 changed files with 61 additions and 61 deletions
  1. 45 45
      build/Three.js
  2. 16 16
      build/custom/ThreeWebGL.js

+ 45 - 45
build/Three.js

@@ -291,51 +291,51 @@ e.shadowMapSoft?"#define SHADOWMAP_SOFT":"",e.shadowMapSoft?"#define SHADOWMAP_W
 o.getError()+"]");H.uniforms={};H.attributes={};var y,f=["viewMatrix","modelViewMatrix","projectionMatrix","normalMatrix","objectMatrix","cameraPosition","cameraInverseMatrix","boneGlobalMatrices","morphTargetInfluences"];for(y in p)f.push(y);y=f;f=0;for(p=y.length;f<p;f++)t=y[f],H.uniforms[t]=o.getUniformLocation(H,t);f=["position","normal","uv","uv2","tangent","color","skinVertexA","skinVertexB","skinIndex","skinWeight"];for(y=0;y<e.maxMorphTargets;y++)f.push("morphTarget"+y);for(v in c)f.push(v);
 v=f;y=0;for(c=v.length;y<c;y++)e=v[y],H.attributes[e]=o.getAttribLocation(H,e);H.id=$.length;$.push({program:H,code:n});W.info.memory.programs=$.length;v=H}b.program=v;v=b.program.attributes;v.position>=0&&o.enableVertexAttribArray(v.position);v.color>=0&&o.enableVertexAttribArray(v.color);v.normal>=0&&o.enableVertexAttribArray(v.normal);v.tangent>=0&&o.enableVertexAttribArray(v.tangent);b.skinning&&v.skinVertexA>=0&&v.skinVertexB>=0&&v.skinIndex>=0&&v.skinWeight>=0&&(o.enableVertexAttribArray(v.skinVertexA),
 o.enableVertexAttribArray(v.skinVertexB),o.enableVertexAttribArray(v.skinIndex),o.enableVertexAttribArray(v.skinWeight));if(b.attributes)for(k in b.attributes)v[k]!==void 0&&v[k]>=0&&o.enableVertexAttribArray(v[k]);if(b.morphTargets)for(k=b.numSupportedMorphTargets=0;k<this.maxMorphTargets;k++)y="morphTarget"+k,v[y]>=0&&(o.enableVertexAttribArray(v[y]),b.numSupportedMorphTargets++);b.uniformsList=[];for(h in b.uniforms)b.uniformsList.push([b.uniforms[h],h])};this.clearTarget=function(b,c,e,f){U(b);
-this.clear(c,e,f)};this.render=function(b,c,p,H){var ea,Z,F,D,G,ka,B,ma,K=b.lights,ga=b.fog;fa=-1;this.shadowMapEnabled&&y(b,c);W.info.render.calls=0;W.info.render.vertices=0;W.info.render.faces=0;c.matrixAutoUpdate&&c.update(void 0,!0);b.update(void 0,!1,c);c.matrixWorldInverse.flattenToArray(Ea);c.projectionMatrix.flattenToArray(Fa);Ca.multiply(c.projectionMatrix,c.matrixWorldInverse);u(Ca);this.initWebGLObjects(b);U(p);(this.autoClear||H)&&this.clear(this.autoClearColor,this.autoClearDepth,this.autoClearStencil);
-G=b.__webglObjects.length;for(H=0;H<G;H++)if(ea=b.__webglObjects[H],B=ea.object,B.visible)if(!(B instanceof THREE.Mesh)||!B.frustumCulled||v(B)){if(B.matrixWorld.flattenToArray(B._objectMatrixArray),E(B,c,!0),w(ea),ea.render=!0,this.sortObjects)ea.object.renderDepth?ea.z=ea.object.renderDepth:(Da.copy(B.position),Ca.multiplyVector3(Da),ea.z=Da.z)}else ea.render=!1;else ea.render=!1;this.sortObjects&&b.__webglObjects.sort(z);ka=b.__webglObjectsImmediate.length;for(H=0;H<ka;H++)ea=b.__webglObjectsImmediate[H],
-B=ea.object,B.visible&&(B.matrixAutoUpdate&&B.matrixWorld.flattenToArray(B._objectMatrixArray),E(B,c,!0),x(ea));if(b.overrideMaterial){m(b.overrideMaterial.depthTest);L(b.overrideMaterial.blending);for(H=0;H<G;H++)if(ea=b.__webglObjects[H],ea.render)B=ea.object,ma=ea.buffer,k(B),f(c,K,ga,b.overrideMaterial,ma,B);for(H=0;H<ka;H++)ea=b.__webglObjectsImmediate[H],B=ea.object,B.visible&&(oa=-1,k(B),Z=e(c,K,ga,b.overrideMaterial,B),B.immediateRenderCallback?B.immediateRenderCallback(Z,o,wa):B.render(function(c){h(c,
-Z,b.overrideMaterial.shading)}))}else{L(THREE.NormalBlending);for(H=G-1;H>=0;H--)if(ea=b.__webglObjects[H],ea.render){B=ea.object;ma=ea.buffer;F=ea.opaque;k(B);for(ea=0;ea<F.count;ea++)D=F.list[ea],m(D.depthTest),n(D.depthWrite),t(D.polygonOffset,D.polygonOffsetFactor,D.polygonOffsetUnits),f(c,K,ga,D,ma,B)}for(H=0;H<ka;H++)if(ea=b.__webglObjectsImmediate[H],B=ea.object,B.visible){oa=-1;F=ea.opaque;k(B);for(ea=0;ea<F.count;ea++)D=F.list[ea],m(D.depthTest),n(D.depthWrite),t(D.polygonOffset,D.polygonOffsetFactor,
-D.polygonOffsetUnits),Z=e(c,K,ga,D,B),B.immediateRenderCallback?B.immediateRenderCallback(Z,o,wa):B.render(function(b){h(b,Z,D.shading)})}for(H=0;H<G;H++)if(ea=b.__webglObjects[H],ea.render){B=ea.object;ma=ea.buffer;F=ea.transparent;k(B);for(ea=0;ea<F.count;ea++)D=F.list[ea],L(D.blending),m(D.depthTest),n(D.depthWrite),t(D.polygonOffset,D.polygonOffsetFactor,D.polygonOffsetUnits),f(c,K,ga,D,ma,B)}for(H=0;H<ka;H++)if(ea=b.__webglObjectsImmediate[H],B=ea.object,B.visible){oa=-1;F=ea.transparent;k(B);
-for(ea=0;ea<F.count;ea++)D=F.list[ea],L(D.blending),m(D.depthTest),n(D.depthWrite),t(D.polygonOffset,D.polygonOffsetFactor,D.polygonOffsetUnits),Z=e(c,K,ga,D,B),B.immediateRenderCallback?B.immediateRenderCallback(Z,o,wa):B.render(function(b){h(b,Z,D.shading)})}}b.__webglSprites.length&&A(b,c);p&&p.minFilter!==THREE.NearestFilter&&p.minFilter!==THREE.LinearFilter&&I(p)};this.initWebGLObjects=function(b){if(!b.__webglObjects)b.__webglObjects=[],b.__webglObjectsImmediate=[],b.__webglSprites=[];for(;b.__objectsAdded.length;){var e=
-b.__objectsAdded[0],f=b,h=void 0,k=void 0,m=void 0;if(!e.__webglInit)if(e.__webglInit=!0,e._modelViewMatrix=new THREE.Matrix4,e._normalMatrixArray=new Float32Array(9),e._modelViewMatrixArray=new Float32Array(16),e._objectMatrixArray=new Float32Array(16),e.matrixWorld.flattenToArray(e._objectMatrixArray),e instanceof THREE.Mesh)for(h in k=e.geometry,k.geometryGroups==void 0&&K(k),k.geometryGroups){if(m=k.geometryGroups[h],!m.__webglVertexBuffer){var n=m;n.__webglVertexBuffer=o.createBuffer();n.__webglNormalBuffer=
-o.createBuffer();n.__webglTangentBuffer=o.createBuffer();n.__webglColorBuffer=o.createBuffer();n.__webglUVBuffer=o.createBuffer();n.__webglUV2Buffer=o.createBuffer();n.__webglSkinVertexABuffer=o.createBuffer();n.__webglSkinVertexBBuffer=o.createBuffer();n.__webglSkinIndicesBuffer=o.createBuffer();n.__webglSkinWeightsBuffer=o.createBuffer();n.__webglFaceBuffer=o.createBuffer();n.__webglLineBuffer=o.createBuffer();if(n.numMorphTargets){var p=void 0,t=void 0;n.__webglMorphTargetsBuffers=[];p=0;for(t=
-n.numMorphTargets;p<t;p++)n.__webglMorphTargetsBuffers.push(o.createBuffer())}W.info.memory.geometries++;for(var n=e,w=void 0,u=void 0,x=void 0,v=x=void 0,H=void 0,y=void 0,z=y=p=0,A=x=u=void 0,x=t=A=u=w=void 0,v=n.geometry,H=v.faces,A=m.faces,w=0,u=A.length;w<u;w++)x=A[w],x=H[x],x instanceof THREE.Face3?(p+=3,y+=1,z+=3):x instanceof THREE.Face4&&(p+=4,y+=2,z+=4);for(var w=m,u=n,ea=A=H=void 0,Z=void 0,ea=void 0,x=[],H=0,A=u.materials.length;H<A;H++)if(ea=u.materials[H],ea instanceof THREE.MeshFaceMaterial){ea=
-0;for(l=w.materials.length;ea<l;ea++)(Z=w.materials[ea])&&x.push(Z)}else(Z=ea)&&x.push(Z);w=x;m.__materials=w;a:{H=u=void 0;A=w.length;for(u=0;u<A;u++)if(H=w[u],H.map||H.lightMap||H instanceof THREE.ShaderMaterial){u=!0;break a}u=!1}a:{A=H=void 0;x=w.length;for(H=0;H<x;H++)if(A=w[H],!(A instanceof THREE.MeshBasicMaterial&&!A.envMap||A instanceof THREE.MeshDepthMaterial)){A=A&&A.shading!=void 0&&A.shading==THREE.SmoothShading?THREE.SmoothShading:THREE.FlatShading;break a}A=!1}a:{x=H=void 0;ea=w.length;
-for(H=0;H<ea;H++)if(x=w[H],x.vertexColors){x=x.vertexColors;break a}x=!1}m.__vertexArray=new Float32Array(p*3);if(A)m.__normalArray=new Float32Array(p*3);if(v.hasTangents)m.__tangentArray=new Float32Array(p*4);if(x)m.__colorArray=new Float32Array(p*3);if(u){if(v.faceUvs.length>0||v.faceVertexUvs.length>0)m.__uvArray=new Float32Array(p*2);if(v.faceUvs.length>1||v.faceVertexUvs.length>1)m.__uv2Array=new Float32Array(p*2)}if(n.geometry.skinWeights.length&&n.geometry.skinIndices.length)m.__skinVertexAArray=
-new Float32Array(p*4),m.__skinVertexBArray=new Float32Array(p*4),m.__skinIndexArray=new Float32Array(p*4),m.__skinWeightArray=new Float32Array(p*4);m.__faceArray=new Uint16Array(y*3+(n.geometry.edgeFaces?n.geometry.edgeFaces.length*6:0));m.__lineArray=new Uint16Array(z*2);if(m.numMorphTargets){m.__morphTargetsArrays=[];v=0;for(H=m.numMorphTargets;v<H;v++)m.__morphTargetsArrays.push(new Float32Array(p*3))}m.__needsSmoothNormals=A==THREE.SmoothShading;m.__uvType=u;m.__vertexColorType=x;m.__normalType=
-A;m.__webglFaceCount=y*3+(n.geometry.edgeFaces?n.geometry.edgeFaces.length*6:0);m.__webglLineCount=z*2;v=0;for(H=w.length;v<H;v++)if(u=w[v],u.attributes){if(m.__webglCustomAttributes===void 0)m.__webglCustomAttributes={};for(a in u.attributes){x=u.attributes[a];A={};for(t in x)A[t]=x[t];if(!A.__webglInitialized||A.createUniqueBuffers)A.__webglInitialized=!0,y=1,A.type==="v2"?y=2:A.type==="v3"?y=3:A.type==="v4"?y=4:A.type==="c"&&(y=3),A.size=y,A.array=new Float32Array(p*y),A.buffer=o.createBuffer(),
-A.buffer.belongsToAttribute=a,x.needsUpdate=!0,A.__original=x;m.__webglCustomAttributes[a]=A}}m.__inittedArrays=!0;k.__dirtyVertices=!0;k.__dirtyMorphTargets=!0;k.__dirtyElements=!0;k.__dirtyUvs=!0;k.__dirtyNormals=!0;k.__dirtyTangents=!0;k.__dirtyColors=!0}}else if(e instanceof THREE.Ribbon){if(k=e.geometry,!k.__webglVertexBuffer)m=k,m.__webglVertexBuffer=o.createBuffer(),m.__webglColorBuffer=o.createBuffer(),W.info.memory.geometries++,m=k,n=m.vertices.length,m.__vertexArray=new Float32Array(n*3),
-m.__colorArray=new Float32Array(n*3),m.__webglVertexCount=n,k.__dirtyVertices=!0,k.__dirtyColors=!0}else if(e instanceof THREE.Line){if(k=e.geometry,!k.__webglVertexBuffer)m=k,m.__webglVertexBuffer=o.createBuffer(),m.__webglColorBuffer=o.createBuffer(),W.info.memory.geometries++,m=k,n=m.vertices.length,m.__vertexArray=new Float32Array(n*3),m.__colorArray=new Float32Array(n*3),m.__webglLineCount=n,k.__dirtyVertices=!0,k.__dirtyColors=!0}else if(e instanceof THREE.ParticleSystem&&(k=e.geometry,!k.__webglVertexBuffer)){m=
-k;m.__webglVertexBuffer=o.createBuffer();m.__webglColorBuffer=o.createBuffer();W.info.geometries++;m=k;n=e;p=m.vertices.length;m.__vertexArray=new Float32Array(p*3);m.__colorArray=new Float32Array(p*3);m.__sortArray=[];m.__webglParticleCount=p;m.__materials=n.materials;z=y=t=void 0;t=0;for(y=n.materials.length;t<y;t++)if(z=n.materials[t],z.attributes){if(m.__webglCustomAttributes===void 0)m.__webglCustomAttributes={};for(a in z.attributes){originalAttribute=z.attributes[a];attribute={};for(property in originalAttribute)attribute[property]=
-originalAttribute[property];if(!attribute.__webglInitialized||attribute.createUniqueBuffers)attribute.__webglInitialized=!0,size=1,attribute.type==="v2"?size=2:attribute.type==="v3"?size=3:attribute.type==="v4"?size=4:attribute.type==="c"&&(size=3),attribute.size=size,attribute.array=new Float32Array(p*size),attribute.buffer=o.createBuffer(),attribute.buffer.belongsToAttribute=a,originalAttribute.needsUpdate=!0,attribute.__original=originalAttribute;m.__webglCustomAttributes[a]=attribute}}k.__dirtyVertices=
-!0;k.__dirtyColors=!0}if(!e.__webglActive){if(e instanceof THREE.Mesh)for(h in k=e.geometry,k.geometryGroups)m=k.geometryGroups[h],N(f.__webglObjects,m,e);else e instanceof THREE.Ribbon||e instanceof THREE.Line||e instanceof THREE.ParticleSystem?(k=e.geometry,N(f.__webglObjects,k,e)):THREE.MarchingCubes!==void 0&&e instanceof THREE.MarchingCubes||e.immediateRenderCallback?f.__webglObjectsImmediate.push({object:e,opaque:{list:[],count:0},transparent:{list:[],count:0}}):e instanceof THREE.Sprite&&f.__webglSprites.push(e);
-e.__webglActive=!0}b.__objectsAdded.splice(0,1)}for(;b.__objectsRemoved.length;){e=b.__objectsRemoved[0];f=b;if(e instanceof THREE.Mesh||e instanceof THREE.ParticleSystem||e instanceof THREE.Ribbon||e instanceof THREE.Line)G(f.__webglObjects,e);else if(e instanceof THREE.Sprite){f=f.__webglSprites;h=e;k=void 0;for(k=f.length-1;k>=0;k--)f[k]==h&&f.splice(k,1)}else(e instanceof THREE.MarchingCubes||e.immediateRenderCallback)&&G(f.__webglObjectsImmediate,e);e.__webglActive=!1;b.__objectsRemoved.splice(0,
-1)}e=0;for(f=b.__webglObjects.length;e<f;e++)if(k=b.__webglObjects[e].object,t=m=h=void 0,k instanceof THREE.Mesh){h=k.geometry;n=0;for(p=h.geometryGroupsList.length;n<p;n++)if(m=h.geometryGroupsList[n],t=F(m),h.__dirtyVertices||h.__dirtyMorphTargets||h.__dirtyElements||h.__dirtyUvs||h.__dirtyNormals||h.__dirtyColors||h.__dirtyTangents||t)if(t=m,y=o.DYNAMIC_DRAW,z=!h.dynamic,t.__inittedArrays){var E=w=v=void 0,B=void 0,ka=E=void 0,ma=void 0,L=void 0,ga=void 0,I=Z=ea=x=A=H=u=void 0,M=void 0,va=void 0,
-J=B=ga=B=L=ma=void 0,C=void 0,O=C=J=ma=void 0,Q=void 0,X=O=C=J=E=E=ka=ga=B=O=C=J=Q=O=C=J=Q=O=C=J=void 0,na=0,V=0,S=0,qa=0,ua=0,U=0,R=0,Y=0,T=0,P=0,aa=0,O=J=0,O=void 0,pa=t.__vertexArray,wa=t.__uvArray,oa=t.__uv2Array,za=t.__normalArray,$=t.__tangentArray,fa=t.__colorArray,ca=t.__skinVertexAArray,ia=t.__skinVertexBArray,da=t.__skinIndexArray,ha=t.__skinWeightArray,la=t.__morphTargetsArrays,ja=t.__webglCustomAttributes,C=void 0,ra=t.__faceArray,Aa=t.__lineArray,Ha=t.__needsSmoothNormals,H=t.__vertexColorType,
-u=t.__uvType,A=t.__normalType,sa=k.geometry,Ca=sa.__dirtyVertices,Fa=sa.__dirtyElements,Ea=sa.__dirtyUvs,Da=sa.__dirtyNormals,ya=sa.__dirtyTangents,Ia=sa.__dirtyColors,Ga=sa.__dirtyMorphTargets,Ka=sa.vertices,cb=t.faces,fb=sa.faces,db=sa.faceVertexUvs[0],eb=sa.faceVertexUvs[1],Sa=sa.skinVerticesA,Ta=sa.skinVerticesB,Ua=sa.skinIndices,Ma=sa.skinWeights,La=sa.morphTargets;if(ja)for(X in ja)ja[X].offset=0,ja[X].offsetSrc=0;v=0;for(w=cb.length;v<w;v++)if(E=cb[v],B=fb[E],db&&(x=db[E]),eb&&(ea=eb[E]),E=
-B.vertexNormals,ka=B.normal,ma=B.vertexColors,L=B.color,ga=B.vertexTangents,B instanceof THREE.Face3){if(Ca)Z=Ka[B.a].position,I=Ka[B.b].position,M=Ka[B.c].position,pa[V]=Z.x,pa[V+1]=Z.y,pa[V+2]=Z.z,pa[V+3]=I.x,pa[V+4]=I.y,pa[V+5]=I.z,pa[V+6]=M.x,pa[V+7]=M.y,pa[V+8]=M.z,V+=9;if(ja)for(X in ja)if(C=ja[X],C.__original.needsUpdate)J=C.offset,O=C.offsetSrc,C.size===1?(C.boundTo===void 0||C.boundTo==="vertices"?(C.array[J]=C.value[B.a],C.array[J+1]=C.value[B.b],C.array[J+2]=C.value[B.c]):C.boundTo==="faces"?
-(O=C.value[O],C.array[J]=O,C.array[J+1]=O,C.array[J+2]=O,C.offsetSrc++):C.boundTo==="faceVertices"&&(C.array[J]=C.value[O],C.array[J+1]=C.value[O+1],C.array[J+2]=C.value[O+2],C.offsetSrc+=3),C.offset+=3):(C.boundTo===void 0||C.boundTo==="vertices"?(Z=C.value[B.a],I=C.value[B.b],M=C.value[B.c]):C.boundTo==="faces"?(M=I=Z=O=C.value[O],C.offsetSrc++):C.boundTo==="faceVertices"&&(Z=C.value[O],I=C.value[O+1],M=C.value[O+2],C.offsetSrc+=3),C.size===2?(C.array[J]=Z.x,C.array[J+1]=Z.y,C.array[J+2]=I.x,C.array[J+
-3]=I.y,C.array[J+4]=M.x,C.array[J+5]=M.y,C.offset+=6):C.size===3?(C.type==="c"?(C.array[J]=Z.r,C.array[J+1]=Z.g,C.array[J+2]=Z.b,C.array[J+3]=I.r,C.array[J+4]=I.g,C.array[J+5]=I.b,C.array[J+6]=M.r,C.array[J+7]=M.g,C.array[J+8]=M.b):(C.array[J]=Z.x,C.array[J+1]=Z.y,C.array[J+2]=Z.z,C.array[J+3]=I.x,C.array[J+4]=I.y,C.array[J+5]=I.z,C.array[J+6]=M.x,C.array[J+7]=M.y,C.array[J+8]=M.z),C.offset+=9):(C.array[J]=Z.x,C.array[J+1]=Z.y,C.array[J+2]=Z.z,C.array[J+3]=Z.w,C.array[J+4]=I.x,C.array[J+5]=I.y,C.array[J+
-6]=I.z,C.array[J+7]=I.w,C.array[J+8]=M.x,C.array[J+9]=M.y,C.array[J+10]=M.z,C.array[J+11]=M.w,C.offset+=12));if(Ga){J=0;for(C=La.length;J<C;J++)Z=La[J].vertices[B.a].position,I=La[J].vertices[B.b].position,M=La[J].vertices[B.c].position,O=la[J],O[aa]=Z.x,O[aa+1]=Z.y,O[aa+2]=Z.z,O[aa+3]=I.x,O[aa+4]=I.y,O[aa+5]=I.z,O[aa+6]=M.x,O[aa+7]=M.y,O[aa+8]=M.z;aa+=9}if(Ma.length)J=Ma[B.a],C=Ma[B.b],O=Ma[B.c],ha[P]=J.x,ha[P+1]=J.y,ha[P+2]=J.z,ha[P+3]=J.w,ha[P+4]=C.x,ha[P+5]=C.y,ha[P+6]=C.z,ha[P+7]=C.w,ha[P+8]=
-O.x,ha[P+9]=O.y,ha[P+10]=O.z,ha[P+11]=O.w,J=Ua[B.a],C=Ua[B.b],O=Ua[B.c],da[P]=J.x,da[P+1]=J.y,da[P+2]=J.z,da[P+3]=J.w,da[P+4]=C.x,da[P+5]=C.y,da[P+6]=C.z,da[P+7]=C.w,da[P+8]=O.x,da[P+9]=O.y,da[P+10]=O.z,da[P+11]=O.w,J=Sa[B.a],C=Sa[B.b],O=Sa[B.c],ca[P]=J.x,ca[P+1]=J.y,ca[P+2]=J.z,ca[P+3]=1,ca[P+4]=C.x,ca[P+5]=C.y,ca[P+6]=C.z,ca[P+7]=1,ca[P+8]=O.x,ca[P+9]=O.y,ca[P+10]=O.z,ca[P+11]=1,J=Ta[B.a],C=Ta[B.b],O=Ta[B.c],ia[P]=J.x,ia[P+1]=J.y,ia[P+2]=J.z,ia[P+3]=1,ia[P+4]=C.x,ia[P+5]=C.y,ia[P+6]=C.z,ia[P+7]=
-1,ia[P+8]=O.x,ia[P+9]=O.y,ia[P+10]=O.z,ia[P+11]=1,P+=12;if(Ia&&H)ma.length==3&&H==THREE.VertexColors?(B=ma[0],J=ma[1],C=ma[2]):C=J=B=L,fa[T]=B.r,fa[T+1]=B.g,fa[T+2]=B.b,fa[T+3]=J.r,fa[T+4]=J.g,fa[T+5]=J.b,fa[T+6]=C.r,fa[T+7]=C.g,fa[T+8]=C.b,T+=9;if(ya&&sa.hasTangents)ma=ga[0],L=ga[1],B=ga[2],$[R]=ma.x,$[R+1]=ma.y,$[R+2]=ma.z,$[R+3]=ma.w,$[R+4]=L.x,$[R+5]=L.y,$[R+6]=L.z,$[R+7]=L.w,$[R+8]=B.x,$[R+9]=B.y,$[R+10]=B.z,$[R+11]=B.w,R+=12;if(Da&&A)if(E.length==3&&Ha)for(ga=0;ga<3;ga++)ka=E[ga],za[U]=ka.x,
-za[U+1]=ka.y,za[U+2]=ka.z,U+=3;else for(ga=0;ga<3;ga++)za[U]=ka.x,za[U+1]=ka.y,za[U+2]=ka.z,U+=3;if(Ea&&x!==void 0&&u)for(ga=0;ga<3;ga++)E=x[ga],wa[S]=E.u,wa[S+1]=E.v,S+=2;if(Ea&&ea!==void 0&&u)for(ga=0;ga<3;ga++)E=ea[ga],oa[qa]=E.u,oa[qa+1]=E.v,qa+=2;Fa&&(ra[ua]=na,ra[ua+1]=na+1,ra[ua+2]=na+2,ua+=3,Aa[Y]=na,Aa[Y+1]=na+1,Aa[Y+2]=na,Aa[Y+3]=na+2,Aa[Y+4]=na+1,Aa[Y+5]=na+2,Y+=6,na+=3)}else if(B instanceof THREE.Face4){if(Ca)Z=Ka[B.a].position,I=Ka[B.b].position,M=Ka[B.c].position,va=Ka[B.d].position,
-pa[V]=Z.x,pa[V+1]=Z.y,pa[V+2]=Z.z,pa[V+3]=I.x,pa[V+4]=I.y,pa[V+5]=I.z,pa[V+6]=M.x,pa[V+7]=M.y,pa[V+8]=M.z,pa[V+9]=va.x,pa[V+10]=va.y,pa[V+11]=va.z,V+=12;if(ja)for(X in ja)if(C=ja[X],C.__original.needsUpdate)J=C.offset,O=C.offsetSrc,C.size===1?(C.boundTo===void 0||C.boundTo==="vertices"?(C.array[J]=C.value[B.a],C.array[J+1]=C.value[B.b],C.array[J+2]=C.value[B.c],C.array[J+3]=C.value[B.d]):C.boundTo==="faces"?(O=C.value[O],C.array[J]=O,C.array[J+1]=O,C.array[J+2]=O,C.array[J+3]=O,C.offsetSrc++):C.boundTo===
-"faceVertices"&&(C.array[J]=C.value[O],C.array[J+1]=C.value[O+1],C.array[J+2]=C.value[O+2],C.array[J+3]=C.value[O+3],C.offsetSrc+=4),C.offset+=4):(C.boundTo===void 0||C.boundTo==="vertices"?(Z=C.value[B.a],I=C.value[B.b],M=C.value[B.c],va=C.value[B.d]):C.boundTo==="faces"?(va=M=I=Z=O=C.value[O],C.offsetSrc++):C.boundTo==="faceVertices"&&(Z=C.value[O],I=C.value[O+1],M=C.value[O+2],va=C.value[O+3],C.offsetSrc+=4),C.size===2?(C.array[J]=Z.x,C.array[J+1]=Z.y,C.array[J+2]=I.x,C.array[J+3]=I.y,C.array[J+
-4]=M.x,C.array[J+5]=M.y,C.array[J+6]=va.x,C.array[J+7]=va.y,C.offset+=8):C.size===3?(C.type==="c"?(C.array[J]=Z.r,C.array[J+1]=Z.g,C.array[J+2]=Z.b,C.array[J+3]=I.r,C.array[J+4]=I.g,C.array[J+5]=I.b,C.array[J+6]=M.r,C.array[J+7]=M.g,C.array[J+8]=M.b,C.array[J+9]=va.r,C.array[J+10]=va.g,C.array[J+11]=va.b):(C.array[J]=Z.x,C.array[J+1]=Z.y,C.array[J+2]=Z.z,C.array[J+3]=I.x,C.array[J+4]=I.y,C.array[J+5]=I.z,C.array[J+6]=M.x,C.array[J+7]=M.y,C.array[J+8]=M.z,C.array[J+9]=va.x,C.array[J+10]=va.y,C.array[J+
-11]=va.z),C.offset+=12):(C.array[J]=Z.x,C.array[J+1]=Z.y,C.array[J+2]=Z.z,C.array[J+3]=Z.w,C.array[J+4]=I.x,C.array[J+5]=I.y,C.array[J+6]=I.z,C.array[J+7]=I.w,C.array[J+8]=M.x,C.array[J+9]=M.y,C.array[J+10]=M.z,C.array[J+11]=M.w,C.array[J+12]=va.x,C.array[J+13]=va.y,C.array[J+14]=va.z,C.array[J+15]=va.w,C.offset+=16));if(Ga){J=0;for(C=La.length;J<C;J++)Z=La[J].vertices[B.a].position,I=La[J].vertices[B.b].position,M=La[J].vertices[B.c].position,va=La[J].vertices[B.d].position,O=la[J],O[aa]=Z.x,O[aa+
-1]=Z.y,O[aa+2]=Z.z,O[aa+3]=I.x,O[aa+4]=I.y,O[aa+5]=I.z,O[aa+6]=M.x,O[aa+7]=M.y,O[aa+8]=M.z,O[aa+9]=va.x,O[aa+10]=va.y,O[aa+11]=va.z;aa+=12}if(Ma.length)J=Ma[B.a],C=Ma[B.b],O=Ma[B.c],Q=Ma[B.d],ha[P]=J.x,ha[P+1]=J.y,ha[P+2]=J.z,ha[P+3]=J.w,ha[P+4]=C.x,ha[P+5]=C.y,ha[P+6]=C.z,ha[P+7]=C.w,ha[P+8]=O.x,ha[P+9]=O.y,ha[P+10]=O.z,ha[P+11]=O.w,ha[P+12]=Q.x,ha[P+13]=Q.y,ha[P+14]=Q.z,ha[P+15]=Q.w,J=Ua[B.a],C=Ua[B.b],O=Ua[B.c],Q=Ua[B.d],da[P]=J.x,da[P+1]=J.y,da[P+2]=J.z,da[P+3]=J.w,da[P+4]=C.x,da[P+5]=C.y,da[P+
-6]=C.z,da[P+7]=C.w,da[P+8]=O.x,da[P+9]=O.y,da[P+10]=O.z,da[P+11]=O.w,da[P+12]=Q.x,da[P+13]=Q.y,da[P+14]=Q.z,da[P+15]=Q.w,J=Sa[B.a],C=Sa[B.b],O=Sa[B.c],Q=Sa[B.d],ca[P]=J.x,ca[P+1]=J.y,ca[P+2]=J.z,ca[P+3]=1,ca[P+4]=C.x,ca[P+5]=C.y,ca[P+6]=C.z,ca[P+7]=1,ca[P+8]=O.x,ca[P+9]=O.y,ca[P+10]=O.z,ca[P+11]=1,ca[P+12]=Q.x,ca[P+13]=Q.y,ca[P+14]=Q.z,ca[P+15]=1,J=Ta[B.a],C=Ta[B.b],O=Ta[B.c],B=Ta[B.d],ia[P]=J.x,ia[P+1]=J.y,ia[P+2]=J.z,ia[P+3]=1,ia[P+4]=C.x,ia[P+5]=C.y,ia[P+6]=C.z,ia[P+7]=1,ia[P+8]=O.x,ia[P+9]=O.y,
-ia[P+10]=O.z,ia[P+11]=1,ia[P+12]=B.x,ia[P+13]=B.y,ia[P+14]=B.z,ia[P+15]=1,P+=16;if(Ia&&H)ma.length==4&&H==THREE.VertexColors?(B=ma[0],J=ma[1],C=ma[2],ma=ma[3]):ma=C=J=B=L,fa[T]=B.r,fa[T+1]=B.g,fa[T+2]=B.b,fa[T+3]=J.r,fa[T+4]=J.g,fa[T+5]=J.b,fa[T+6]=C.r,fa[T+7]=C.g,fa[T+8]=C.b,fa[T+9]=ma.r,fa[T+10]=ma.g,fa[T+11]=ma.b,T+=12;if(ya&&sa.hasTangents)ma=ga[0],L=ga[1],B=ga[2],ga=ga[3],$[R]=ma.x,$[R+1]=ma.y,$[R+2]=ma.z,$[R+3]=ma.w,$[R+4]=L.x,$[R+5]=L.y,$[R+6]=L.z,$[R+7]=L.w,$[R+8]=B.x,$[R+9]=B.y,$[R+10]=B.z,
-$[R+11]=B.w,$[R+12]=ga.x,$[R+13]=ga.y,$[R+14]=ga.z,$[R+15]=ga.w,R+=16;if(Da&&A)if(E.length==4&&Ha)for(ga=0;ga<4;ga++)ka=E[ga],za[U]=ka.x,za[U+1]=ka.y,za[U+2]=ka.z,U+=3;else for(ga=0;ga<4;ga++)za[U]=ka.x,za[U+1]=ka.y,za[U+2]=ka.z,U+=3;if(Ea&&x!==void 0&&u)for(ga=0;ga<4;ga++)E=x[ga],wa[S]=E.u,wa[S+1]=E.v,S+=2;if(Ea&&ea!==void 0&&u)for(ga=0;ga<4;ga++)E=ea[ga],oa[qa]=E.u,oa[qa+1]=E.v,qa+=2;Fa&&(ra[ua]=na,ra[ua+1]=na+1,ra[ua+2]=na+3,ra[ua+3]=na+1,ra[ua+4]=na+2,ra[ua+5]=na+3,ua+=6,Aa[Y]=na,Aa[Y+1]=na+1,
-Aa[Y+2]=na,Aa[Y+3]=na+3,Aa[Y+4]=na+1,Aa[Y+5]=na+2,Aa[Y+6]=na+2,Aa[Y+7]=na+3,Y+=8,na+=4)}Ca&&(o.bindBuffer(o.ARRAY_BUFFER,t.__webglVertexBuffer),o.bufferData(o.ARRAY_BUFFER,pa,y));if(ja)for(X in ja)C=ja[X],C.__original.needsUpdate&&(o.bindBuffer(o.ARRAY_BUFFER,C.buffer),o.bufferData(o.ARRAY_BUFFER,C.array,y));if(Ga){J=0;for(C=La.length;J<C;J++)o.bindBuffer(o.ARRAY_BUFFER,t.__webglMorphTargetsBuffers[J]),o.bufferData(o.ARRAY_BUFFER,la[J],y)}Ia&&T>0&&(o.bindBuffer(o.ARRAY_BUFFER,t.__webglColorBuffer),
-o.bufferData(o.ARRAY_BUFFER,fa,y));Da&&(o.bindBuffer(o.ARRAY_BUFFER,t.__webglNormalBuffer),o.bufferData(o.ARRAY_BUFFER,za,y));ya&&sa.hasTangents&&(o.bindBuffer(o.ARRAY_BUFFER,t.__webglTangentBuffer),o.bufferData(o.ARRAY_BUFFER,$,y));Ea&&S>0&&(o.bindBuffer(o.ARRAY_BUFFER,t.__webglUVBuffer),o.bufferData(o.ARRAY_BUFFER,wa,y));Ea&&qa>0&&(o.bindBuffer(o.ARRAY_BUFFER,t.__webglUV2Buffer),o.bufferData(o.ARRAY_BUFFER,oa,y));Fa&&(o.bindBuffer(o.ELEMENT_ARRAY_BUFFER,t.__webglFaceBuffer),o.bufferData(o.ELEMENT_ARRAY_BUFFER,
-ra,y),o.bindBuffer(o.ELEMENT_ARRAY_BUFFER,t.__webglLineBuffer),o.bufferData(o.ELEMENT_ARRAY_BUFFER,Aa,y));P>0&&(o.bindBuffer(o.ARRAY_BUFFER,t.__webglSkinVertexABuffer),o.bufferData(o.ARRAY_BUFFER,ca,y),o.bindBuffer(o.ARRAY_BUFFER,t.__webglSkinVertexBBuffer),o.bufferData(o.ARRAY_BUFFER,ia,y),o.bindBuffer(o.ARRAY_BUFFER,t.__webglSkinIndicesBuffer),o.bufferData(o.ARRAY_BUFFER,da,y),o.bindBuffer(o.ARRAY_BUFFER,t.__webglSkinWeightsBuffer),o.bufferData(o.ARRAY_BUFFER,ha,y));z&&(delete t.__inittedArrays,
-delete t.__colorArray,delete t.__normalArray,delete t.__tangentArray,delete t.__uvArray,delete t.__uv2Array,delete t.__faceArray,delete t.__vertexArray,delete t.__lineArray,delete t.__skinVertexAArray,delete t.__skinVertexBArray,delete t.__skinIndexArray,delete t.__skinWeightArray)}h.__dirtyVertices=!1;h.__dirtyMorphTargets=!1;h.__dirtyElements=!1;h.__dirtyUvs=!1;h.__dirtyNormals=!1;h.__dirtyTangents=!1;h.__dirtyColors=!1;D(m)}else if(k instanceof THREE.Ribbon){h=k.geometry;if(h.__dirtyVertices||
-h.__dirtyColors){k=h;m=o.DYNAMIC_DRAW;n=v=z=z=void 0;w=k.vertices;p=k.colors;u=w.length;t=p.length;H=k.__vertexArray;y=k.__colorArray;A=k.__dirtyColors;if(k.__dirtyVertices){for(z=0;z<u;z++)v=w[z].position,n=z*3,H[n]=v.x,H[n+1]=v.y,H[n+2]=v.z;o.bindBuffer(o.ARRAY_BUFFER,k.__webglVertexBuffer);o.bufferData(o.ARRAY_BUFFER,H,m)}if(A){for(z=0;z<t;z++)color=p[z],n=z*3,y[n]=color.r,y[n+1]=color.g,y[n+2]=color.b;o.bindBuffer(o.ARRAY_BUFFER,k.__webglColorBuffer);o.bufferData(o.ARRAY_BUFFER,y,m)}}h.__dirtyVertices=
-!1;h.__dirtyColors=!1}else if(k instanceof THREE.Line){h=k.geometry;if(h.__dirtyVertices||h.__dirtyColors){k=h;m=o.DYNAMIC_DRAW;n=v=z=z=void 0;w=k.vertices;p=k.colors;u=w.length;t=p.length;H=k.__vertexArray;y=k.__colorArray;A=k.__dirtyColors;if(k.__dirtyVertices){for(z=0;z<u;z++)v=w[z].position,n=z*3,H[n]=v.x,H[n+1]=v.y,H[n+2]=v.z;o.bindBuffer(o.ARRAY_BUFFER,k.__webglVertexBuffer);o.bufferData(o.ARRAY_BUFFER,H,m)}if(A){for(z=0;z<t;z++)color=p[z],n=z*3,y[n]=color.r,y[n+1]=color.g,y[n+2]=color.b;o.bindBuffer(o.ARRAY_BUFFER,
-k.__webglColorBuffer);o.bufferData(o.ARRAY_BUFFER,y,m)}}h.__dirtyVertices=!1;h.__dirtyColors=!1}else if(k instanceof THREE.ParticleSystem)h=k.geometry,t=F(h),(h.__dirtyVertices||h.__dirtyColors||k.sortParticles||t)&&c(h,o.DYNAMIC_DRAW,k),h.__dirtyVertices=!1,h.__dirtyColors=!1,D(h)};this.setFaceCulling=function(b,e){b?(!e||e=="ccw"?o.frontFace(o.CCW):o.frontFace(o.CW),b=="back"?o.cullFace(o.BACK):b=="front"?o.cullFace(o.FRONT):o.cullFace(o.FRONT_AND_BACK),o.enable(o.CULL_FACE)):o.disable(o.CULL_FACE)};
-this.supportsVertexTextures=function(){return Ia}};
+this.clear(c,e,f)};this.render=function(b,c,p,H){var ea,Z,F,D,G,ka,B,ma,K=b.lights,ga=b.fog;fa=-1;this.shadowMapEnabled&&y(b,c);W.info.render.calls=0;W.info.render.vertices=0;W.info.render.faces=0;if(c.matrixAutoUpdate){for(G=c;G.parent;)G=G.parent;G.update(void 0,!0)}b.update(void 0,!1,c);c.matrixWorldInverse.flattenToArray(Ea);c.projectionMatrix.flattenToArray(Fa);Ca.multiply(c.projectionMatrix,c.matrixWorldInverse);u(Ca);this.initWebGLObjects(b);U(p);(this.autoClear||H)&&this.clear(this.autoClearColor,
+this.autoClearDepth,this.autoClearStencil);G=b.__webglObjects.length;for(H=0;H<G;H++)if(ea=b.__webglObjects[H],B=ea.object,B.visible)if(!(B instanceof THREE.Mesh)||!B.frustumCulled||v(B)){if(B.matrixWorld.flattenToArray(B._objectMatrixArray),E(B,c,!0),w(ea),ea.render=!0,this.sortObjects)ea.object.renderDepth?ea.z=ea.object.renderDepth:(Da.copy(B.position),Ca.multiplyVector3(Da),ea.z=Da.z)}else ea.render=!1;else ea.render=!1;this.sortObjects&&b.__webglObjects.sort(z);ka=b.__webglObjectsImmediate.length;
+for(H=0;H<ka;H++)ea=b.__webglObjectsImmediate[H],B=ea.object,B.visible&&(B.matrixAutoUpdate&&B.matrixWorld.flattenToArray(B._objectMatrixArray),E(B,c,!0),x(ea));if(b.overrideMaterial){m(b.overrideMaterial.depthTest);L(b.overrideMaterial.blending);for(H=0;H<G;H++)if(ea=b.__webglObjects[H],ea.render)B=ea.object,ma=ea.buffer,k(B),f(c,K,ga,b.overrideMaterial,ma,B);for(H=0;H<ka;H++)ea=b.__webglObjectsImmediate[H],B=ea.object,B.visible&&(oa=-1,k(B),Z=e(c,K,ga,b.overrideMaterial,B),B.immediateRenderCallback?
+B.immediateRenderCallback(Z,o,wa):B.render(function(c){h(c,Z,b.overrideMaterial.shading)}))}else{L(THREE.NormalBlending);for(H=G-1;H>=0;H--)if(ea=b.__webglObjects[H],ea.render){B=ea.object;ma=ea.buffer;F=ea.opaque;k(B);for(ea=0;ea<F.count;ea++)D=F.list[ea],m(D.depthTest),n(D.depthWrite),t(D.polygonOffset,D.polygonOffsetFactor,D.polygonOffsetUnits),f(c,K,ga,D,ma,B)}for(H=0;H<ka;H++)if(ea=b.__webglObjectsImmediate[H],B=ea.object,B.visible){oa=-1;F=ea.opaque;k(B);for(ea=0;ea<F.count;ea++)D=F.list[ea],
+m(D.depthTest),n(D.depthWrite),t(D.polygonOffset,D.polygonOffsetFactor,D.polygonOffsetUnits),Z=e(c,K,ga,D,B),B.immediateRenderCallback?B.immediateRenderCallback(Z,o,wa):B.render(function(b){h(b,Z,D.shading)})}for(H=0;H<G;H++)if(ea=b.__webglObjects[H],ea.render){B=ea.object;ma=ea.buffer;F=ea.transparent;k(B);for(ea=0;ea<F.count;ea++)D=F.list[ea],L(D.blending),m(D.depthTest),n(D.depthWrite),t(D.polygonOffset,D.polygonOffsetFactor,D.polygonOffsetUnits),f(c,K,ga,D,ma,B)}for(H=0;H<ka;H++)if(ea=b.__webglObjectsImmediate[H],
+B=ea.object,B.visible){oa=-1;F=ea.transparent;k(B);for(ea=0;ea<F.count;ea++)D=F.list[ea],L(D.blending),m(D.depthTest),n(D.depthWrite),t(D.polygonOffset,D.polygonOffsetFactor,D.polygonOffsetUnits),Z=e(c,K,ga,D,B),B.immediateRenderCallback?B.immediateRenderCallback(Z,o,wa):B.render(function(b){h(b,Z,D.shading)})}}b.__webglSprites.length&&A(b,c);p&&p.minFilter!==THREE.NearestFilter&&p.minFilter!==THREE.LinearFilter&&I(p)};this.initWebGLObjects=function(b){if(!b.__webglObjects)b.__webglObjects=[],b.__webglObjectsImmediate=
+[],b.__webglSprites=[];for(;b.__objectsAdded.length;){var e=b.__objectsAdded[0],f=b,h=void 0,k=void 0,m=void 0;if(!e.__webglInit)if(e.__webglInit=!0,e._modelViewMatrix=new THREE.Matrix4,e._normalMatrixArray=new Float32Array(9),e._modelViewMatrixArray=new Float32Array(16),e._objectMatrixArray=new Float32Array(16),e.matrixWorld.flattenToArray(e._objectMatrixArray),e instanceof THREE.Mesh)for(h in k=e.geometry,k.geometryGroups==void 0&&K(k),k.geometryGroups){if(m=k.geometryGroups[h],!m.__webglVertexBuffer){var n=
+m;n.__webglVertexBuffer=o.createBuffer();n.__webglNormalBuffer=o.createBuffer();n.__webglTangentBuffer=o.createBuffer();n.__webglColorBuffer=o.createBuffer();n.__webglUVBuffer=o.createBuffer();n.__webglUV2Buffer=o.createBuffer();n.__webglSkinVertexABuffer=o.createBuffer();n.__webglSkinVertexBBuffer=o.createBuffer();n.__webglSkinIndicesBuffer=o.createBuffer();n.__webglSkinWeightsBuffer=o.createBuffer();n.__webglFaceBuffer=o.createBuffer();n.__webglLineBuffer=o.createBuffer();if(n.numMorphTargets){var p=
+void 0,t=void 0;n.__webglMorphTargetsBuffers=[];p=0;for(t=n.numMorphTargets;p<t;p++)n.__webglMorphTargetsBuffers.push(o.createBuffer())}W.info.memory.geometries++;for(var n=e,w=void 0,u=void 0,x=void 0,v=x=void 0,H=void 0,y=void 0,z=y=p=0,A=x=u=void 0,x=t=A=u=w=void 0,v=n.geometry,H=v.faces,A=m.faces,w=0,u=A.length;w<u;w++)x=A[w],x=H[x],x instanceof THREE.Face3?(p+=3,y+=1,z+=3):x instanceof THREE.Face4&&(p+=4,y+=2,z+=4);for(var w=m,u=n,ea=A=H=void 0,Z=void 0,ea=void 0,x=[],H=0,A=u.materials.length;H<
+A;H++)if(ea=u.materials[H],ea instanceof THREE.MeshFaceMaterial){ea=0;for(l=w.materials.length;ea<l;ea++)(Z=w.materials[ea])&&x.push(Z)}else(Z=ea)&&x.push(Z);w=x;m.__materials=w;a:{H=u=void 0;A=w.length;for(u=0;u<A;u++)if(H=w[u],H.map||H.lightMap||H instanceof THREE.ShaderMaterial){u=!0;break a}u=!1}a:{A=H=void 0;x=w.length;for(H=0;H<x;H++)if(A=w[H],!(A instanceof THREE.MeshBasicMaterial&&!A.envMap||A instanceof THREE.MeshDepthMaterial)){A=A&&A.shading!=void 0&&A.shading==THREE.SmoothShading?THREE.SmoothShading:
+THREE.FlatShading;break a}A=!1}a:{x=H=void 0;ea=w.length;for(H=0;H<ea;H++)if(x=w[H],x.vertexColors){x=x.vertexColors;break a}x=!1}m.__vertexArray=new Float32Array(p*3);if(A)m.__normalArray=new Float32Array(p*3);if(v.hasTangents)m.__tangentArray=new Float32Array(p*4);if(x)m.__colorArray=new Float32Array(p*3);if(u){if(v.faceUvs.length>0||v.faceVertexUvs.length>0)m.__uvArray=new Float32Array(p*2);if(v.faceUvs.length>1||v.faceVertexUvs.length>1)m.__uv2Array=new Float32Array(p*2)}if(n.geometry.skinWeights.length&&
+n.geometry.skinIndices.length)m.__skinVertexAArray=new Float32Array(p*4),m.__skinVertexBArray=new Float32Array(p*4),m.__skinIndexArray=new Float32Array(p*4),m.__skinWeightArray=new Float32Array(p*4);m.__faceArray=new Uint16Array(y*3+(n.geometry.edgeFaces?n.geometry.edgeFaces.length*6:0));m.__lineArray=new Uint16Array(z*2);if(m.numMorphTargets){m.__morphTargetsArrays=[];v=0;for(H=m.numMorphTargets;v<H;v++)m.__morphTargetsArrays.push(new Float32Array(p*3))}m.__needsSmoothNormals=A==THREE.SmoothShading;
+m.__uvType=u;m.__vertexColorType=x;m.__normalType=A;m.__webglFaceCount=y*3+(n.geometry.edgeFaces?n.geometry.edgeFaces.length*6:0);m.__webglLineCount=z*2;v=0;for(H=w.length;v<H;v++)if(u=w[v],u.attributes){if(m.__webglCustomAttributes===void 0)m.__webglCustomAttributes={};for(a in u.attributes){x=u.attributes[a];A={};for(t in x)A[t]=x[t];if(!A.__webglInitialized||A.createUniqueBuffers)A.__webglInitialized=!0,y=1,A.type==="v2"?y=2:A.type==="v3"?y=3:A.type==="v4"?y=4:A.type==="c"&&(y=3),A.size=y,A.array=
+new Float32Array(p*y),A.buffer=o.createBuffer(),A.buffer.belongsToAttribute=a,x.needsUpdate=!0,A.__original=x;m.__webglCustomAttributes[a]=A}}m.__inittedArrays=!0;k.__dirtyVertices=!0;k.__dirtyMorphTargets=!0;k.__dirtyElements=!0;k.__dirtyUvs=!0;k.__dirtyNormals=!0;k.__dirtyTangents=!0;k.__dirtyColors=!0}}else if(e instanceof THREE.Ribbon){if(k=e.geometry,!k.__webglVertexBuffer)m=k,m.__webglVertexBuffer=o.createBuffer(),m.__webglColorBuffer=o.createBuffer(),W.info.memory.geometries++,m=k,n=m.vertices.length,
+m.__vertexArray=new Float32Array(n*3),m.__colorArray=new Float32Array(n*3),m.__webglVertexCount=n,k.__dirtyVertices=!0,k.__dirtyColors=!0}else if(e instanceof THREE.Line){if(k=e.geometry,!k.__webglVertexBuffer)m=k,m.__webglVertexBuffer=o.createBuffer(),m.__webglColorBuffer=o.createBuffer(),W.info.memory.geometries++,m=k,n=m.vertices.length,m.__vertexArray=new Float32Array(n*3),m.__colorArray=new Float32Array(n*3),m.__webglLineCount=n,k.__dirtyVertices=!0,k.__dirtyColors=!0}else if(e instanceof THREE.ParticleSystem&&
+(k=e.geometry,!k.__webglVertexBuffer)){m=k;m.__webglVertexBuffer=o.createBuffer();m.__webglColorBuffer=o.createBuffer();W.info.geometries++;m=k;n=e;p=m.vertices.length;m.__vertexArray=new Float32Array(p*3);m.__colorArray=new Float32Array(p*3);m.__sortArray=[];m.__webglParticleCount=p;m.__materials=n.materials;z=y=t=void 0;t=0;for(y=n.materials.length;t<y;t++)if(z=n.materials[t],z.attributes){if(m.__webglCustomAttributes===void 0)m.__webglCustomAttributes={};for(a in z.attributes){originalAttribute=
+z.attributes[a];attribute={};for(property in originalAttribute)attribute[property]=originalAttribute[property];if(!attribute.__webglInitialized||attribute.createUniqueBuffers)attribute.__webglInitialized=!0,size=1,attribute.type==="v2"?size=2:attribute.type==="v3"?size=3:attribute.type==="v4"?size=4:attribute.type==="c"&&(size=3),attribute.size=size,attribute.array=new Float32Array(p*size),attribute.buffer=o.createBuffer(),attribute.buffer.belongsToAttribute=a,originalAttribute.needsUpdate=!0,attribute.__original=
+originalAttribute;m.__webglCustomAttributes[a]=attribute}}k.__dirtyVertices=!0;k.__dirtyColors=!0}if(!e.__webglActive){if(e instanceof THREE.Mesh)for(h in k=e.geometry,k.geometryGroups)m=k.geometryGroups[h],N(f.__webglObjects,m,e);else e instanceof THREE.Ribbon||e instanceof THREE.Line||e instanceof THREE.ParticleSystem?(k=e.geometry,N(f.__webglObjects,k,e)):THREE.MarchingCubes!==void 0&&e instanceof THREE.MarchingCubes||e.immediateRenderCallback?f.__webglObjectsImmediate.push({object:e,opaque:{list:[],
+count:0},transparent:{list:[],count:0}}):e instanceof THREE.Sprite&&f.__webglSprites.push(e);e.__webglActive=!0}b.__objectsAdded.splice(0,1)}for(;b.__objectsRemoved.length;){e=b.__objectsRemoved[0];f=b;if(e instanceof THREE.Mesh||e instanceof THREE.ParticleSystem||e instanceof THREE.Ribbon||e instanceof THREE.Line)G(f.__webglObjects,e);else if(e instanceof THREE.Sprite){f=f.__webglSprites;h=e;k=void 0;for(k=f.length-1;k>=0;k--)f[k]==h&&f.splice(k,1)}else(e instanceof THREE.MarchingCubes||e.immediateRenderCallback)&&
+G(f.__webglObjectsImmediate,e);e.__webglActive=!1;b.__objectsRemoved.splice(0,1)}e=0;for(f=b.__webglObjects.length;e<f;e++)if(k=b.__webglObjects[e].object,t=m=h=void 0,k instanceof THREE.Mesh){h=k.geometry;n=0;for(p=h.geometryGroupsList.length;n<p;n++)if(m=h.geometryGroupsList[n],t=F(m),h.__dirtyVertices||h.__dirtyMorphTargets||h.__dirtyElements||h.__dirtyUvs||h.__dirtyNormals||h.__dirtyColors||h.__dirtyTangents||t)if(t=m,y=o.DYNAMIC_DRAW,z=!h.dynamic,t.__inittedArrays){var E=w=v=void 0,B=void 0,
+ka=E=void 0,ma=void 0,L=void 0,ga=void 0,I=Z=ea=x=A=H=u=void 0,M=void 0,va=void 0,J=B=ga=B=L=ma=void 0,C=void 0,O=C=J=ma=void 0,Q=void 0,X=O=C=J=E=E=ka=ga=B=O=C=J=Q=O=C=J=Q=O=C=J=void 0,na=0,V=0,S=0,qa=0,ua=0,U=0,R=0,Y=0,T=0,P=0,aa=0,O=J=0,O=void 0,pa=t.__vertexArray,wa=t.__uvArray,oa=t.__uv2Array,za=t.__normalArray,$=t.__tangentArray,fa=t.__colorArray,ca=t.__skinVertexAArray,ia=t.__skinVertexBArray,da=t.__skinIndexArray,ha=t.__skinWeightArray,la=t.__morphTargetsArrays,ja=t.__webglCustomAttributes,
+C=void 0,ra=t.__faceArray,Aa=t.__lineArray,Ha=t.__needsSmoothNormals,H=t.__vertexColorType,u=t.__uvType,A=t.__normalType,sa=k.geometry,Ca=sa.__dirtyVertices,Fa=sa.__dirtyElements,Ea=sa.__dirtyUvs,Da=sa.__dirtyNormals,ya=sa.__dirtyTangents,Ia=sa.__dirtyColors,Ga=sa.__dirtyMorphTargets,Ka=sa.vertices,cb=t.faces,fb=sa.faces,db=sa.faceVertexUvs[0],eb=sa.faceVertexUvs[1],Sa=sa.skinVerticesA,Ta=sa.skinVerticesB,Ua=sa.skinIndices,Ma=sa.skinWeights,La=sa.morphTargets;if(ja)for(X in ja)ja[X].offset=0,ja[X].offsetSrc=
+0;v=0;for(w=cb.length;v<w;v++)if(E=cb[v],B=fb[E],db&&(x=db[E]),eb&&(ea=eb[E]),E=B.vertexNormals,ka=B.normal,ma=B.vertexColors,L=B.color,ga=B.vertexTangents,B instanceof THREE.Face3){if(Ca)Z=Ka[B.a].position,I=Ka[B.b].position,M=Ka[B.c].position,pa[V]=Z.x,pa[V+1]=Z.y,pa[V+2]=Z.z,pa[V+3]=I.x,pa[V+4]=I.y,pa[V+5]=I.z,pa[V+6]=M.x,pa[V+7]=M.y,pa[V+8]=M.z,V+=9;if(ja)for(X in ja)if(C=ja[X],C.__original.needsUpdate)J=C.offset,O=C.offsetSrc,C.size===1?(C.boundTo===void 0||C.boundTo==="vertices"?(C.array[J]=
+C.value[B.a],C.array[J+1]=C.value[B.b],C.array[J+2]=C.value[B.c]):C.boundTo==="faces"?(O=C.value[O],C.array[J]=O,C.array[J+1]=O,C.array[J+2]=O,C.offsetSrc++):C.boundTo==="faceVertices"&&(C.array[J]=C.value[O],C.array[J+1]=C.value[O+1],C.array[J+2]=C.value[O+2],C.offsetSrc+=3),C.offset+=3):(C.boundTo===void 0||C.boundTo==="vertices"?(Z=C.value[B.a],I=C.value[B.b],M=C.value[B.c]):C.boundTo==="faces"?(M=I=Z=O=C.value[O],C.offsetSrc++):C.boundTo==="faceVertices"&&(Z=C.value[O],I=C.value[O+1],M=C.value[O+
+2],C.offsetSrc+=3),C.size===2?(C.array[J]=Z.x,C.array[J+1]=Z.y,C.array[J+2]=I.x,C.array[J+3]=I.y,C.array[J+4]=M.x,C.array[J+5]=M.y,C.offset+=6):C.size===3?(C.type==="c"?(C.array[J]=Z.r,C.array[J+1]=Z.g,C.array[J+2]=Z.b,C.array[J+3]=I.r,C.array[J+4]=I.g,C.array[J+5]=I.b,C.array[J+6]=M.r,C.array[J+7]=M.g,C.array[J+8]=M.b):(C.array[J]=Z.x,C.array[J+1]=Z.y,C.array[J+2]=Z.z,C.array[J+3]=I.x,C.array[J+4]=I.y,C.array[J+5]=I.z,C.array[J+6]=M.x,C.array[J+7]=M.y,C.array[J+8]=M.z),C.offset+=9):(C.array[J]=Z.x,
+C.array[J+1]=Z.y,C.array[J+2]=Z.z,C.array[J+3]=Z.w,C.array[J+4]=I.x,C.array[J+5]=I.y,C.array[J+6]=I.z,C.array[J+7]=I.w,C.array[J+8]=M.x,C.array[J+9]=M.y,C.array[J+10]=M.z,C.array[J+11]=M.w,C.offset+=12));if(Ga){J=0;for(C=La.length;J<C;J++)Z=La[J].vertices[B.a].position,I=La[J].vertices[B.b].position,M=La[J].vertices[B.c].position,O=la[J],O[aa]=Z.x,O[aa+1]=Z.y,O[aa+2]=Z.z,O[aa+3]=I.x,O[aa+4]=I.y,O[aa+5]=I.z,O[aa+6]=M.x,O[aa+7]=M.y,O[aa+8]=M.z;aa+=9}if(Ma.length)J=Ma[B.a],C=Ma[B.b],O=Ma[B.c],ha[P]=
+J.x,ha[P+1]=J.y,ha[P+2]=J.z,ha[P+3]=J.w,ha[P+4]=C.x,ha[P+5]=C.y,ha[P+6]=C.z,ha[P+7]=C.w,ha[P+8]=O.x,ha[P+9]=O.y,ha[P+10]=O.z,ha[P+11]=O.w,J=Ua[B.a],C=Ua[B.b],O=Ua[B.c],da[P]=J.x,da[P+1]=J.y,da[P+2]=J.z,da[P+3]=J.w,da[P+4]=C.x,da[P+5]=C.y,da[P+6]=C.z,da[P+7]=C.w,da[P+8]=O.x,da[P+9]=O.y,da[P+10]=O.z,da[P+11]=O.w,J=Sa[B.a],C=Sa[B.b],O=Sa[B.c],ca[P]=J.x,ca[P+1]=J.y,ca[P+2]=J.z,ca[P+3]=1,ca[P+4]=C.x,ca[P+5]=C.y,ca[P+6]=C.z,ca[P+7]=1,ca[P+8]=O.x,ca[P+9]=O.y,ca[P+10]=O.z,ca[P+11]=1,J=Ta[B.a],C=Ta[B.b],O=
+Ta[B.c],ia[P]=J.x,ia[P+1]=J.y,ia[P+2]=J.z,ia[P+3]=1,ia[P+4]=C.x,ia[P+5]=C.y,ia[P+6]=C.z,ia[P+7]=1,ia[P+8]=O.x,ia[P+9]=O.y,ia[P+10]=O.z,ia[P+11]=1,P+=12;if(Ia&&H)ma.length==3&&H==THREE.VertexColors?(B=ma[0],J=ma[1],C=ma[2]):C=J=B=L,fa[T]=B.r,fa[T+1]=B.g,fa[T+2]=B.b,fa[T+3]=J.r,fa[T+4]=J.g,fa[T+5]=J.b,fa[T+6]=C.r,fa[T+7]=C.g,fa[T+8]=C.b,T+=9;if(ya&&sa.hasTangents)ma=ga[0],L=ga[1],B=ga[2],$[R]=ma.x,$[R+1]=ma.y,$[R+2]=ma.z,$[R+3]=ma.w,$[R+4]=L.x,$[R+5]=L.y,$[R+6]=L.z,$[R+7]=L.w,$[R+8]=B.x,$[R+9]=B.y,
+$[R+10]=B.z,$[R+11]=B.w,R+=12;if(Da&&A)if(E.length==3&&Ha)for(ga=0;ga<3;ga++)ka=E[ga],za[U]=ka.x,za[U+1]=ka.y,za[U+2]=ka.z,U+=3;else for(ga=0;ga<3;ga++)za[U]=ka.x,za[U+1]=ka.y,za[U+2]=ka.z,U+=3;if(Ea&&x!==void 0&&u)for(ga=0;ga<3;ga++)E=x[ga],wa[S]=E.u,wa[S+1]=E.v,S+=2;if(Ea&&ea!==void 0&&u)for(ga=0;ga<3;ga++)E=ea[ga],oa[qa]=E.u,oa[qa+1]=E.v,qa+=2;Fa&&(ra[ua]=na,ra[ua+1]=na+1,ra[ua+2]=na+2,ua+=3,Aa[Y]=na,Aa[Y+1]=na+1,Aa[Y+2]=na,Aa[Y+3]=na+2,Aa[Y+4]=na+1,Aa[Y+5]=na+2,Y+=6,na+=3)}else if(B instanceof
+THREE.Face4){if(Ca)Z=Ka[B.a].position,I=Ka[B.b].position,M=Ka[B.c].position,va=Ka[B.d].position,pa[V]=Z.x,pa[V+1]=Z.y,pa[V+2]=Z.z,pa[V+3]=I.x,pa[V+4]=I.y,pa[V+5]=I.z,pa[V+6]=M.x,pa[V+7]=M.y,pa[V+8]=M.z,pa[V+9]=va.x,pa[V+10]=va.y,pa[V+11]=va.z,V+=12;if(ja)for(X in ja)if(C=ja[X],C.__original.needsUpdate)J=C.offset,O=C.offsetSrc,C.size===1?(C.boundTo===void 0||C.boundTo==="vertices"?(C.array[J]=C.value[B.a],C.array[J+1]=C.value[B.b],C.array[J+2]=C.value[B.c],C.array[J+3]=C.value[B.d]):C.boundTo==="faces"?
+(O=C.value[O],C.array[J]=O,C.array[J+1]=O,C.array[J+2]=O,C.array[J+3]=O,C.offsetSrc++):C.boundTo==="faceVertices"&&(C.array[J]=C.value[O],C.array[J+1]=C.value[O+1],C.array[J+2]=C.value[O+2],C.array[J+3]=C.value[O+3],C.offsetSrc+=4),C.offset+=4):(C.boundTo===void 0||C.boundTo==="vertices"?(Z=C.value[B.a],I=C.value[B.b],M=C.value[B.c],va=C.value[B.d]):C.boundTo==="faces"?(va=M=I=Z=O=C.value[O],C.offsetSrc++):C.boundTo==="faceVertices"&&(Z=C.value[O],I=C.value[O+1],M=C.value[O+2],va=C.value[O+3],C.offsetSrc+=
+4),C.size===2?(C.array[J]=Z.x,C.array[J+1]=Z.y,C.array[J+2]=I.x,C.array[J+3]=I.y,C.array[J+4]=M.x,C.array[J+5]=M.y,C.array[J+6]=va.x,C.array[J+7]=va.y,C.offset+=8):C.size===3?(C.type==="c"?(C.array[J]=Z.r,C.array[J+1]=Z.g,C.array[J+2]=Z.b,C.array[J+3]=I.r,C.array[J+4]=I.g,C.array[J+5]=I.b,C.array[J+6]=M.r,C.array[J+7]=M.g,C.array[J+8]=M.b,C.array[J+9]=va.r,C.array[J+10]=va.g,C.array[J+11]=va.b):(C.array[J]=Z.x,C.array[J+1]=Z.y,C.array[J+2]=Z.z,C.array[J+3]=I.x,C.array[J+4]=I.y,C.array[J+5]=I.z,C.array[J+
+6]=M.x,C.array[J+7]=M.y,C.array[J+8]=M.z,C.array[J+9]=va.x,C.array[J+10]=va.y,C.array[J+11]=va.z),C.offset+=12):(C.array[J]=Z.x,C.array[J+1]=Z.y,C.array[J+2]=Z.z,C.array[J+3]=Z.w,C.array[J+4]=I.x,C.array[J+5]=I.y,C.array[J+6]=I.z,C.array[J+7]=I.w,C.array[J+8]=M.x,C.array[J+9]=M.y,C.array[J+10]=M.z,C.array[J+11]=M.w,C.array[J+12]=va.x,C.array[J+13]=va.y,C.array[J+14]=va.z,C.array[J+15]=va.w,C.offset+=16));if(Ga){J=0;for(C=La.length;J<C;J++)Z=La[J].vertices[B.a].position,I=La[J].vertices[B.b].position,
+M=La[J].vertices[B.c].position,va=La[J].vertices[B.d].position,O=la[J],O[aa]=Z.x,O[aa+1]=Z.y,O[aa+2]=Z.z,O[aa+3]=I.x,O[aa+4]=I.y,O[aa+5]=I.z,O[aa+6]=M.x,O[aa+7]=M.y,O[aa+8]=M.z,O[aa+9]=va.x,O[aa+10]=va.y,O[aa+11]=va.z;aa+=12}if(Ma.length)J=Ma[B.a],C=Ma[B.b],O=Ma[B.c],Q=Ma[B.d],ha[P]=J.x,ha[P+1]=J.y,ha[P+2]=J.z,ha[P+3]=J.w,ha[P+4]=C.x,ha[P+5]=C.y,ha[P+6]=C.z,ha[P+7]=C.w,ha[P+8]=O.x,ha[P+9]=O.y,ha[P+10]=O.z,ha[P+11]=O.w,ha[P+12]=Q.x,ha[P+13]=Q.y,ha[P+14]=Q.z,ha[P+15]=Q.w,J=Ua[B.a],C=Ua[B.b],O=Ua[B.c],
+Q=Ua[B.d],da[P]=J.x,da[P+1]=J.y,da[P+2]=J.z,da[P+3]=J.w,da[P+4]=C.x,da[P+5]=C.y,da[P+6]=C.z,da[P+7]=C.w,da[P+8]=O.x,da[P+9]=O.y,da[P+10]=O.z,da[P+11]=O.w,da[P+12]=Q.x,da[P+13]=Q.y,da[P+14]=Q.z,da[P+15]=Q.w,J=Sa[B.a],C=Sa[B.b],O=Sa[B.c],Q=Sa[B.d],ca[P]=J.x,ca[P+1]=J.y,ca[P+2]=J.z,ca[P+3]=1,ca[P+4]=C.x,ca[P+5]=C.y,ca[P+6]=C.z,ca[P+7]=1,ca[P+8]=O.x,ca[P+9]=O.y,ca[P+10]=O.z,ca[P+11]=1,ca[P+12]=Q.x,ca[P+13]=Q.y,ca[P+14]=Q.z,ca[P+15]=1,J=Ta[B.a],C=Ta[B.b],O=Ta[B.c],B=Ta[B.d],ia[P]=J.x,ia[P+1]=J.y,ia[P+
+2]=J.z,ia[P+3]=1,ia[P+4]=C.x,ia[P+5]=C.y,ia[P+6]=C.z,ia[P+7]=1,ia[P+8]=O.x,ia[P+9]=O.y,ia[P+10]=O.z,ia[P+11]=1,ia[P+12]=B.x,ia[P+13]=B.y,ia[P+14]=B.z,ia[P+15]=1,P+=16;if(Ia&&H)ma.length==4&&H==THREE.VertexColors?(B=ma[0],J=ma[1],C=ma[2],ma=ma[3]):ma=C=J=B=L,fa[T]=B.r,fa[T+1]=B.g,fa[T+2]=B.b,fa[T+3]=J.r,fa[T+4]=J.g,fa[T+5]=J.b,fa[T+6]=C.r,fa[T+7]=C.g,fa[T+8]=C.b,fa[T+9]=ma.r,fa[T+10]=ma.g,fa[T+11]=ma.b,T+=12;if(ya&&sa.hasTangents)ma=ga[0],L=ga[1],B=ga[2],ga=ga[3],$[R]=ma.x,$[R+1]=ma.y,$[R+2]=ma.z,
+$[R+3]=ma.w,$[R+4]=L.x,$[R+5]=L.y,$[R+6]=L.z,$[R+7]=L.w,$[R+8]=B.x,$[R+9]=B.y,$[R+10]=B.z,$[R+11]=B.w,$[R+12]=ga.x,$[R+13]=ga.y,$[R+14]=ga.z,$[R+15]=ga.w,R+=16;if(Da&&A)if(E.length==4&&Ha)for(ga=0;ga<4;ga++)ka=E[ga],za[U]=ka.x,za[U+1]=ka.y,za[U+2]=ka.z,U+=3;else for(ga=0;ga<4;ga++)za[U]=ka.x,za[U+1]=ka.y,za[U+2]=ka.z,U+=3;if(Ea&&x!==void 0&&u)for(ga=0;ga<4;ga++)E=x[ga],wa[S]=E.u,wa[S+1]=E.v,S+=2;if(Ea&&ea!==void 0&&u)for(ga=0;ga<4;ga++)E=ea[ga],oa[qa]=E.u,oa[qa+1]=E.v,qa+=2;Fa&&(ra[ua]=na,ra[ua+1]=
+na+1,ra[ua+2]=na+3,ra[ua+3]=na+1,ra[ua+4]=na+2,ra[ua+5]=na+3,ua+=6,Aa[Y]=na,Aa[Y+1]=na+1,Aa[Y+2]=na,Aa[Y+3]=na+3,Aa[Y+4]=na+1,Aa[Y+5]=na+2,Aa[Y+6]=na+2,Aa[Y+7]=na+3,Y+=8,na+=4)}Ca&&(o.bindBuffer(o.ARRAY_BUFFER,t.__webglVertexBuffer),o.bufferData(o.ARRAY_BUFFER,pa,y));if(ja)for(X in ja)C=ja[X],C.__original.needsUpdate&&(o.bindBuffer(o.ARRAY_BUFFER,C.buffer),o.bufferData(o.ARRAY_BUFFER,C.array,y));if(Ga){J=0;for(C=La.length;J<C;J++)o.bindBuffer(o.ARRAY_BUFFER,t.__webglMorphTargetsBuffers[J]),o.bufferData(o.ARRAY_BUFFER,
+la[J],y)}Ia&&T>0&&(o.bindBuffer(o.ARRAY_BUFFER,t.__webglColorBuffer),o.bufferData(o.ARRAY_BUFFER,fa,y));Da&&(o.bindBuffer(o.ARRAY_BUFFER,t.__webglNormalBuffer),o.bufferData(o.ARRAY_BUFFER,za,y));ya&&sa.hasTangents&&(o.bindBuffer(o.ARRAY_BUFFER,t.__webglTangentBuffer),o.bufferData(o.ARRAY_BUFFER,$,y));Ea&&S>0&&(o.bindBuffer(o.ARRAY_BUFFER,t.__webglUVBuffer),o.bufferData(o.ARRAY_BUFFER,wa,y));Ea&&qa>0&&(o.bindBuffer(o.ARRAY_BUFFER,t.__webglUV2Buffer),o.bufferData(o.ARRAY_BUFFER,oa,y));Fa&&(o.bindBuffer(o.ELEMENT_ARRAY_BUFFER,
+t.__webglFaceBuffer),o.bufferData(o.ELEMENT_ARRAY_BUFFER,ra,y),o.bindBuffer(o.ELEMENT_ARRAY_BUFFER,t.__webglLineBuffer),o.bufferData(o.ELEMENT_ARRAY_BUFFER,Aa,y));P>0&&(o.bindBuffer(o.ARRAY_BUFFER,t.__webglSkinVertexABuffer),o.bufferData(o.ARRAY_BUFFER,ca,y),o.bindBuffer(o.ARRAY_BUFFER,t.__webglSkinVertexBBuffer),o.bufferData(o.ARRAY_BUFFER,ia,y),o.bindBuffer(o.ARRAY_BUFFER,t.__webglSkinIndicesBuffer),o.bufferData(o.ARRAY_BUFFER,da,y),o.bindBuffer(o.ARRAY_BUFFER,t.__webglSkinWeightsBuffer),o.bufferData(o.ARRAY_BUFFER,
+ha,y));z&&(delete t.__inittedArrays,delete t.__colorArray,delete t.__normalArray,delete t.__tangentArray,delete t.__uvArray,delete t.__uv2Array,delete t.__faceArray,delete t.__vertexArray,delete t.__lineArray,delete t.__skinVertexAArray,delete t.__skinVertexBArray,delete t.__skinIndexArray,delete t.__skinWeightArray)}h.__dirtyVertices=!1;h.__dirtyMorphTargets=!1;h.__dirtyElements=!1;h.__dirtyUvs=!1;h.__dirtyNormals=!1;h.__dirtyTangents=!1;h.__dirtyColors=!1;D(m)}else if(k instanceof THREE.Ribbon){h=
+k.geometry;if(h.__dirtyVertices||h.__dirtyColors){k=h;m=o.DYNAMIC_DRAW;n=v=z=z=void 0;w=k.vertices;p=k.colors;u=w.length;t=p.length;H=k.__vertexArray;y=k.__colorArray;A=k.__dirtyColors;if(k.__dirtyVertices){for(z=0;z<u;z++)v=w[z].position,n=z*3,H[n]=v.x,H[n+1]=v.y,H[n+2]=v.z;o.bindBuffer(o.ARRAY_BUFFER,k.__webglVertexBuffer);o.bufferData(o.ARRAY_BUFFER,H,m)}if(A){for(z=0;z<t;z++)color=p[z],n=z*3,y[n]=color.r,y[n+1]=color.g,y[n+2]=color.b;o.bindBuffer(o.ARRAY_BUFFER,k.__webglColorBuffer);o.bufferData(o.ARRAY_BUFFER,
+y,m)}}h.__dirtyVertices=!1;h.__dirtyColors=!1}else if(k instanceof THREE.Line){h=k.geometry;if(h.__dirtyVertices||h.__dirtyColors){k=h;m=o.DYNAMIC_DRAW;n=v=z=z=void 0;w=k.vertices;p=k.colors;u=w.length;t=p.length;H=k.__vertexArray;y=k.__colorArray;A=k.__dirtyColors;if(k.__dirtyVertices){for(z=0;z<u;z++)v=w[z].position,n=z*3,H[n]=v.x,H[n+1]=v.y,H[n+2]=v.z;o.bindBuffer(o.ARRAY_BUFFER,k.__webglVertexBuffer);o.bufferData(o.ARRAY_BUFFER,H,m)}if(A){for(z=0;z<t;z++)color=p[z],n=z*3,y[n]=color.r,y[n+1]=color.g,
+y[n+2]=color.b;o.bindBuffer(o.ARRAY_BUFFER,k.__webglColorBuffer);o.bufferData(o.ARRAY_BUFFER,y,m)}}h.__dirtyVertices=!1;h.__dirtyColors=!1}else if(k instanceof THREE.ParticleSystem)h=k.geometry,t=F(h),(h.__dirtyVertices||h.__dirtyColors||k.sortParticles||t)&&c(h,o.DYNAMIC_DRAW,k),h.__dirtyVertices=!1,h.__dirtyColors=!1,D(h)};this.setFaceCulling=function(b,e){b?(!e||e=="ccw"?o.frontFace(o.CCW):o.frontFace(o.CW),b=="back"?o.cullFace(o.BACK):b=="front"?o.cullFace(o.FRONT):o.cullFace(o.FRONT_AND_BACK),
+o.enable(o.CULL_FACE)):o.disable(o.CULL_FACE)};this.supportsVertexTextures=function(){return Ia}};
 THREE.WebGLRenderTarget=function(b,c,e){this.width=b;this.height=c;e=e||{};this.wrapS=e.wrapS!==void 0?e.wrapS:THREE.ClampToEdgeWrapping;this.wrapT=e.wrapT!==void 0?e.wrapT:THREE.ClampToEdgeWrapping;this.magFilter=e.magFilter!==void 0?e.magFilter:THREE.LinearFilter;this.minFilter=e.minFilter!==void 0?e.minFilter:THREE.LinearMipMapLinearFilter;this.offset=new THREE.Vector2(0,0);this.repeat=new THREE.Vector2(1,1);this.format=e.format!==void 0?e.format:THREE.RGBAFormat;this.type=e.type!==void 0?e.type:
 THREE.UnsignedByteType;this.depthBuffer=e.depthBuffer!==void 0?e.depthBuffer:!0;this.stencilBuffer=e.stencilBuffer!==void 0?e.stencilBuffer:!0};
 THREE.WebGLRenderTarget.prototype.clone=function(){var b=new THREE.WebGLRenderTarget(this.width,this.height);b.wrapS=this.wrapS;b.wrapT=this.wrapT;b.magFilter=this.magFilter;b.minFilter=this.minFilter;b.offset.copy(this.offset);b.repeat.copy(this.repeat);b.format=this.format;b.type=this.type;b.depthBuffer=this.depthBuffer;b.stencilBuffer=this.stencilBuffer;return b};THREE.WebGLRenderTargetCube=function(b,c,e){THREE.WebGLRenderTarget.call(this,b,c,e);this.activeCubeFace=0};

+ 16 - 16
build/custom/ThreeWebGL.js

@@ -247,22 +247,22 @@ d.shadowMapSoft?"#define SHADOWMAP_SOFT":"",d.shadowMapSoft?"#define SHADOWMAP_W
 f.getError()+"]");r.uniforms={};r.attributes={};var u,e=["viewMatrix","modelViewMatrix","projectionMatrix","normalMatrix","objectMatrix","cameraPosition","cameraInverseMatrix","boneGlobalMatrices","morphTargetInfluences"];for(u in n)e.push(u);u=e;e=0;for(n=u.length;e<n;e++)m=u[e],r.uniforms[m]=f.getUniformLocation(r,m);e=["position","normal","uv","uv2","tangent","color","skinVertexA","skinVertexB","skinIndex","skinWeight"];for(u=0;u<d.maxMorphTargets;u++)e.push("morphTarget"+u);for(C in c)e.push(C);
 C=e;u=0;for(c=C.length;u<c;u++)d=C[u],r.attributes[d]=f.getAttribLocation(r,d);r.id=ua.length;ua.push({program:r,code:k});M.info.memory.programs=ua.length;C=r}b.program=C;C=b.program.attributes;C.position>=0&&f.enableVertexAttribArray(C.position);C.color>=0&&f.enableVertexAttribArray(C.color);C.normal>=0&&f.enableVertexAttribArray(C.normal);C.tangent>=0&&f.enableVertexAttribArray(C.tangent);b.skinning&&C.skinVertexA>=0&&C.skinVertexB>=0&&C.skinIndex>=0&&C.skinWeight>=0&&(f.enableVertexAttribArray(C.skinVertexA),
 f.enableVertexAttribArray(C.skinVertexB),f.enableVertexAttribArray(C.skinIndex),f.enableVertexAttribArray(C.skinWeight));if(b.attributes)for(i in b.attributes)C[i]!==void 0&&C[i]>=0&&f.enableVertexAttribArray(C[i]);if(b.morphTargets)for(i=b.numSupportedMorphTargets=0;i<this.maxMorphTargets;i++)u="morphTarget"+i,C[u]>=0&&(f.enableVertexAttribArray(C[u]),b.numSupportedMorphTargets++);b.uniformsList=[];for(h in b.uniforms)b.uniformsList.push([b.uniforms[h],h])};this.clearTarget=function(b,c,d,f){L(b);
-this.clear(c,d,f)};this.render=function(b,c,m,u){var I,Ja,v,T,x,J,D,Qa,Ra=b.lights,C=b.fog;V=-1;this.shadowMapEnabled&&y(b,c);M.info.render.calls=0;M.info.render.vertices=0;M.info.render.faces=0;c.matrixAutoUpdate&&c.update(void 0,!0);b.update(void 0,!1,c);c.matrixWorldInverse.flattenToArray(Va);c.projectionMatrix.flattenToArray(Ua);Fa.multiply(c.projectionMatrix,c.matrixWorldInverse);p(Fa);this.initWebGLObjects(b);L(m);(this.autoClear||u)&&this.clear(this.autoClearColor,this.autoClearDepth,this.autoClearStencil);
-x=b.__webglObjects.length;for(u=0;u<x;u++)if(I=b.__webglObjects[u],D=I.object,D.visible)if(!(D instanceof THREE.Mesh)||!D.frustumCulled||q(D)){if(D.matrixWorld.flattenToArray(D._objectMatrixArray),F(D,c,!0),t(I),I.render=!0,this.sortObjects)I.object.renderDepth?I.z=I.object.renderDepth:(Ka.copy(D.position),Fa.multiplyVector3(Ka),I.z=Ka.z)}else I.render=!1;else I.render=!1;this.sortObjects&&b.__webglObjects.sort(A);J=b.__webglObjectsImmediate.length;for(u=0;u<J;u++)I=b.__webglObjectsImmediate[u],D=
-I.object,D.visible&&(D.matrixAutoUpdate&&D.matrixWorld.flattenToArray(D._objectMatrixArray),F(D,c,!0),r(I));if(b.overrideMaterial){j(b.overrideMaterial.depthTest);G(b.overrideMaterial.blending);for(u=0;u<x;u++)if(I=b.__webglObjects[u],I.render)D=I.object,Qa=I.buffer,i(D),e(c,Ra,C,b.overrideMaterial,Qa,D);for(u=0;u<J;u++)I=b.__webglObjectsImmediate[u],D=I.object,D.visible&&(S=-1,i(D),Ja=d(c,Ra,C,b.overrideMaterial,D),D.immediateRenderCallback?D.immediateRenderCallback(Ja,f,aa):D.render(function(c){h(c,
-Ja,b.overrideMaterial.shading)}))}else{G(THREE.NormalBlending);for(u=x-1;u>=0;u--)if(I=b.__webglObjects[u],I.render){D=I.object;Qa=I.buffer;v=I.opaque;i(D);for(I=0;I<v.count;I++)T=v.list[I],j(T.depthTest),k(T.depthWrite),n(T.polygonOffset,T.polygonOffsetFactor,T.polygonOffsetUnits),e(c,Ra,C,T,Qa,D)}for(u=0;u<J;u++)if(I=b.__webglObjectsImmediate[u],D=I.object,D.visible){S=-1;v=I.opaque;i(D);for(I=0;I<v.count;I++)T=v.list[I],j(T.depthTest),k(T.depthWrite),n(T.polygonOffset,T.polygonOffsetFactor,T.polygonOffsetUnits),
-Ja=d(c,Ra,C,T,D),D.immediateRenderCallback?D.immediateRenderCallback(Ja,f,aa):D.render(function(b){h(b,Ja,T.shading)})}for(u=0;u<x;u++)if(I=b.__webglObjects[u],I.render){D=I.object;Qa=I.buffer;v=I.transparent;i(D);for(I=0;I<v.count;I++)T=v.list[I],G(T.blending),j(T.depthTest),k(T.depthWrite),n(T.polygonOffset,T.polygonOffsetFactor,T.polygonOffsetUnits),e(c,Ra,C,T,Qa,D)}for(u=0;u<J;u++)if(I=b.__webglObjectsImmediate[u],D=I.object,D.visible){S=-1;v=I.transparent;i(D);for(I=0;I<v.count;I++)T=v.list[I],
-G(T.blending),j(T.depthTest),k(T.depthWrite),n(T.polygonOffset,T.polygonOffsetFactor,T.polygonOffsetUnits),Ja=d(c,Ra,C,T,D),D.immediateRenderCallback?D.immediateRenderCallback(Ja,f,aa):D.render(function(b){h(b,Ja,T.shading)})}}b.__webglSprites.length&&E(b,c);m&&m.minFilter!==THREE.NearestFilter&&m.minFilter!==THREE.LinearFilter&&ka(m)};this.initWebGLObjects=function(b){if(!b.__webglObjects)b.__webglObjects=[],b.__webglObjectsImmediate=[],b.__webglSprites=[];for(;b.__objectsAdded.length;){var d=b.__objectsAdded[0],
-e=b,h=void 0,i=void 0,j=void 0;if(!d.__webglInit)if(d.__webglInit=!0,d._modelViewMatrix=new THREE.Matrix4,d._normalMatrixArray=new Float32Array(9),d._modelViewMatrixArray=new Float32Array(16),d._objectMatrixArray=new Float32Array(16),d.matrixWorld.flattenToArray(d._objectMatrixArray),d instanceof THREE.Mesh)for(h in i=d.geometry,i.geometryGroups==void 0&&ra(i),i.geometryGroups){if(j=i.geometryGroups[h],!j.__webglVertexBuffer){var k=j;k.__webglVertexBuffer=f.createBuffer();k.__webglNormalBuffer=f.createBuffer();
-k.__webglTangentBuffer=f.createBuffer();k.__webglColorBuffer=f.createBuffer();k.__webglUVBuffer=f.createBuffer();k.__webglUV2Buffer=f.createBuffer();k.__webglSkinVertexABuffer=f.createBuffer();k.__webglSkinVertexBBuffer=f.createBuffer();k.__webglSkinIndicesBuffer=f.createBuffer();k.__webglSkinWeightsBuffer=f.createBuffer();k.__webglFaceBuffer=f.createBuffer();k.__webglLineBuffer=f.createBuffer();if(k.numMorphTargets){var n=void 0,m=void 0;k.__webglMorphTargetsBuffers=[];n=0;for(m=k.numMorphTargets;n<
-m;n++)k.__webglMorphTargetsBuffers.push(f.createBuffer())}M.info.memory.geometries++;for(var k=d,p=void 0,q=void 0,r=void 0,u=r=void 0,t=void 0,v=void 0,A=v=n=0,y=r=q=void 0,r=m=y=q=p=void 0,u=k.geometry,t=u.faces,y=j.faces,p=0,q=y.length;p<q;p++)r=y[p],r=t[r],r instanceof THREE.Face3?(n+=3,v+=1,A+=3):r instanceof THREE.Face4&&(n+=4,v+=2,A+=4);for(var p=j,q=k,F=y=t=void 0,H=void 0,F=void 0,r=[],t=0,y=q.materials.length;t<y;t++)if(F=q.materials[t],F instanceof THREE.MeshFaceMaterial){F=0;for(l=p.materials.length;F<
-l;F++)(H=p.materials[F])&&r.push(H)}else(H=F)&&r.push(H);p=r;j.__materials=p;a:{t=q=void 0;y=p.length;for(q=0;q<y;q++)if(t=p[q],t.map||t.lightMap||t instanceof THREE.ShaderMaterial){q=!0;break a}q=!1}a:{y=t=void 0;r=p.length;for(t=0;t<r;t++)if(y=p[t],!(y instanceof THREE.MeshBasicMaterial&&!y.envMap||y instanceof THREE.MeshDepthMaterial)){y=y&&y.shading!=void 0&&y.shading==THREE.SmoothShading?THREE.SmoothShading:THREE.FlatShading;break a}y=!1}a:{r=t=void 0;F=p.length;for(t=0;t<F;t++)if(r=p[t],r.vertexColors){r=
-r.vertexColors;break a}r=!1}j.__vertexArray=new Float32Array(n*3);if(y)j.__normalArray=new Float32Array(n*3);if(u.hasTangents)j.__tangentArray=new Float32Array(n*4);if(r)j.__colorArray=new Float32Array(n*3);if(q){if(u.faceUvs.length>0||u.faceVertexUvs.length>0)j.__uvArray=new Float32Array(n*2);if(u.faceUvs.length>1||u.faceVertexUvs.length>1)j.__uv2Array=new Float32Array(n*2)}if(k.geometry.skinWeights.length&&k.geometry.skinIndices.length)j.__skinVertexAArray=new Float32Array(n*4),j.__skinVertexBArray=
-new Float32Array(n*4),j.__skinIndexArray=new Float32Array(n*4),j.__skinWeightArray=new Float32Array(n*4);j.__faceArray=new Uint16Array(v*3+(k.geometry.edgeFaces?k.geometry.edgeFaces.length*6:0));j.__lineArray=new Uint16Array(A*2);if(j.numMorphTargets){j.__morphTargetsArrays=[];u=0;for(t=j.numMorphTargets;u<t;u++)j.__morphTargetsArrays.push(new Float32Array(n*3))}j.__needsSmoothNormals=y==THREE.SmoothShading;j.__uvType=q;j.__vertexColorType=r;j.__normalType=y;j.__webglFaceCount=v*3+(k.geometry.edgeFaces?
-k.geometry.edgeFaces.length*6:0);j.__webglLineCount=A*2;u=0;for(t=p.length;u<t;u++)if(q=p[u],q.attributes){if(j.__webglCustomAttributes===void 0)j.__webglCustomAttributes={};for(a in q.attributes){r=q.attributes[a];y={};for(m in r)y[m]=r[m];if(!y.__webglInitialized||y.createUniqueBuffers)y.__webglInitialized=!0,v=1,y.type==="v2"?v=2:y.type==="v3"?v=3:y.type==="v4"?v=4:y.type==="c"&&(v=3),y.size=v,y.array=new Float32Array(n*v),y.buffer=f.createBuffer(),y.buffer.belongsToAttribute=a,r.needsUpdate=!0,
-y.__original=r;j.__webglCustomAttributes[a]=y}}j.__inittedArrays=!0;i.__dirtyVertices=!0;i.__dirtyMorphTargets=!0;i.__dirtyElements=!0;i.__dirtyUvs=!0;i.__dirtyNormals=!0;i.__dirtyTangents=!0;i.__dirtyColors=!0}}else if(d instanceof THREE.Ribbon){if(i=d.geometry,!i.__webglVertexBuffer)j=i,j.__webglVertexBuffer=f.createBuffer(),j.__webglColorBuffer=f.createBuffer(),M.info.memory.geometries++,j=i,k=j.vertices.length,j.__vertexArray=new Float32Array(k*3),j.__colorArray=new Float32Array(k*3),j.__webglVertexCount=
-k,i.__dirtyVertices=!0,i.__dirtyColors=!0}else if(d instanceof THREE.Line){if(i=d.geometry,!i.__webglVertexBuffer)j=i,j.__webglVertexBuffer=f.createBuffer(),j.__webglColorBuffer=f.createBuffer(),M.info.memory.geometries++,j=i,k=j.vertices.length,j.__vertexArray=new Float32Array(k*3),j.__colorArray=new Float32Array(k*3),j.__webglLineCount=k,i.__dirtyVertices=!0,i.__dirtyColors=!0}else if(d instanceof THREE.ParticleSystem&&(i=d.geometry,!i.__webglVertexBuffer)){j=i;j.__webglVertexBuffer=f.createBuffer();
-j.__webglColorBuffer=f.createBuffer();M.info.geometries++;j=i;k=d;n=j.vertices.length;j.__vertexArray=new Float32Array(n*3);j.__colorArray=new Float32Array(n*3);j.__sortArray=[];j.__webglParticleCount=n;j.__materials=k.materials;A=v=m=void 0;m=0;for(v=k.materials.length;m<v;m++)if(A=k.materials[m],A.attributes){if(j.__webglCustomAttributes===void 0)j.__webglCustomAttributes={};for(a in A.attributes){originalAttribute=A.attributes[a];attribute={};for(property in originalAttribute)attribute[property]=
+this.clear(c,d,f)};this.render=function(b,c,m,u){var I,Ja,v,T,x,J,D,Qa,Ra=b.lights,C=b.fog;V=-1;this.shadowMapEnabled&&y(b,c);M.info.render.calls=0;M.info.render.vertices=0;M.info.render.faces=0;if(c.matrixAutoUpdate){for(x=c;x.parent;)x=x.parent;x.update(void 0,!0)}b.update(void 0,!1,c);c.matrixWorldInverse.flattenToArray(Va);c.projectionMatrix.flattenToArray(Ua);Fa.multiply(c.projectionMatrix,c.matrixWorldInverse);p(Fa);this.initWebGLObjects(b);L(m);(this.autoClear||u)&&this.clear(this.autoClearColor,
+this.autoClearDepth,this.autoClearStencil);x=b.__webglObjects.length;for(u=0;u<x;u++)if(I=b.__webglObjects[u],D=I.object,D.visible)if(!(D instanceof THREE.Mesh)||!D.frustumCulled||q(D)){if(D.matrixWorld.flattenToArray(D._objectMatrixArray),F(D,c,!0),t(I),I.render=!0,this.sortObjects)I.object.renderDepth?I.z=I.object.renderDepth:(Ka.copy(D.position),Fa.multiplyVector3(Ka),I.z=Ka.z)}else I.render=!1;else I.render=!1;this.sortObjects&&b.__webglObjects.sort(A);J=b.__webglObjectsImmediate.length;for(u=
+0;u<J;u++)I=b.__webglObjectsImmediate[u],D=I.object,D.visible&&(D.matrixAutoUpdate&&D.matrixWorld.flattenToArray(D._objectMatrixArray),F(D,c,!0),r(I));if(b.overrideMaterial){j(b.overrideMaterial.depthTest);G(b.overrideMaterial.blending);for(u=0;u<x;u++)if(I=b.__webglObjects[u],I.render)D=I.object,Qa=I.buffer,i(D),e(c,Ra,C,b.overrideMaterial,Qa,D);for(u=0;u<J;u++)I=b.__webglObjectsImmediate[u],D=I.object,D.visible&&(S=-1,i(D),Ja=d(c,Ra,C,b.overrideMaterial,D),D.immediateRenderCallback?D.immediateRenderCallback(Ja,
+f,aa):D.render(function(c){h(c,Ja,b.overrideMaterial.shading)}))}else{G(THREE.NormalBlending);for(u=x-1;u>=0;u--)if(I=b.__webglObjects[u],I.render){D=I.object;Qa=I.buffer;v=I.opaque;i(D);for(I=0;I<v.count;I++)T=v.list[I],j(T.depthTest),k(T.depthWrite),n(T.polygonOffset,T.polygonOffsetFactor,T.polygonOffsetUnits),e(c,Ra,C,T,Qa,D)}for(u=0;u<J;u++)if(I=b.__webglObjectsImmediate[u],D=I.object,D.visible){S=-1;v=I.opaque;i(D);for(I=0;I<v.count;I++)T=v.list[I],j(T.depthTest),k(T.depthWrite),n(T.polygonOffset,
+T.polygonOffsetFactor,T.polygonOffsetUnits),Ja=d(c,Ra,C,T,D),D.immediateRenderCallback?D.immediateRenderCallback(Ja,f,aa):D.render(function(b){h(b,Ja,T.shading)})}for(u=0;u<x;u++)if(I=b.__webglObjects[u],I.render){D=I.object;Qa=I.buffer;v=I.transparent;i(D);for(I=0;I<v.count;I++)T=v.list[I],G(T.blending),j(T.depthTest),k(T.depthWrite),n(T.polygonOffset,T.polygonOffsetFactor,T.polygonOffsetUnits),e(c,Ra,C,T,Qa,D)}for(u=0;u<J;u++)if(I=b.__webglObjectsImmediate[u],D=I.object,D.visible){S=-1;v=I.transparent;
+i(D);for(I=0;I<v.count;I++)T=v.list[I],G(T.blending),j(T.depthTest),k(T.depthWrite),n(T.polygonOffset,T.polygonOffsetFactor,T.polygonOffsetUnits),Ja=d(c,Ra,C,T,D),D.immediateRenderCallback?D.immediateRenderCallback(Ja,f,aa):D.render(function(b){h(b,Ja,T.shading)})}}b.__webglSprites.length&&E(b,c);m&&m.minFilter!==THREE.NearestFilter&&m.minFilter!==THREE.LinearFilter&&ka(m)};this.initWebGLObjects=function(b){if(!b.__webglObjects)b.__webglObjects=[],b.__webglObjectsImmediate=[],b.__webglSprites=[];
+for(;b.__objectsAdded.length;){var d=b.__objectsAdded[0],e=b,h=void 0,i=void 0,j=void 0;if(!d.__webglInit)if(d.__webglInit=!0,d._modelViewMatrix=new THREE.Matrix4,d._normalMatrixArray=new Float32Array(9),d._modelViewMatrixArray=new Float32Array(16),d._objectMatrixArray=new Float32Array(16),d.matrixWorld.flattenToArray(d._objectMatrixArray),d instanceof THREE.Mesh)for(h in i=d.geometry,i.geometryGroups==void 0&&ra(i),i.geometryGroups){if(j=i.geometryGroups[h],!j.__webglVertexBuffer){var k=j;k.__webglVertexBuffer=
+f.createBuffer();k.__webglNormalBuffer=f.createBuffer();k.__webglTangentBuffer=f.createBuffer();k.__webglColorBuffer=f.createBuffer();k.__webglUVBuffer=f.createBuffer();k.__webglUV2Buffer=f.createBuffer();k.__webglSkinVertexABuffer=f.createBuffer();k.__webglSkinVertexBBuffer=f.createBuffer();k.__webglSkinIndicesBuffer=f.createBuffer();k.__webglSkinWeightsBuffer=f.createBuffer();k.__webglFaceBuffer=f.createBuffer();k.__webglLineBuffer=f.createBuffer();if(k.numMorphTargets){var n=void 0,m=void 0;k.__webglMorphTargetsBuffers=
+[];n=0;for(m=k.numMorphTargets;n<m;n++)k.__webglMorphTargetsBuffers.push(f.createBuffer())}M.info.memory.geometries++;for(var k=d,p=void 0,q=void 0,r=void 0,u=r=void 0,t=void 0,v=void 0,A=v=n=0,y=r=q=void 0,r=m=y=q=p=void 0,u=k.geometry,t=u.faces,y=j.faces,p=0,q=y.length;p<q;p++)r=y[p],r=t[r],r instanceof THREE.Face3?(n+=3,v+=1,A+=3):r instanceof THREE.Face4&&(n+=4,v+=2,A+=4);for(var p=j,q=k,F=y=t=void 0,H=void 0,F=void 0,r=[],t=0,y=q.materials.length;t<y;t++)if(F=q.materials[t],F instanceof THREE.MeshFaceMaterial){F=
+0;for(l=p.materials.length;F<l;F++)(H=p.materials[F])&&r.push(H)}else(H=F)&&r.push(H);p=r;j.__materials=p;a:{t=q=void 0;y=p.length;for(q=0;q<y;q++)if(t=p[q],t.map||t.lightMap||t instanceof THREE.ShaderMaterial){q=!0;break a}q=!1}a:{y=t=void 0;r=p.length;for(t=0;t<r;t++)if(y=p[t],!(y instanceof THREE.MeshBasicMaterial&&!y.envMap||y instanceof THREE.MeshDepthMaterial)){y=y&&y.shading!=void 0&&y.shading==THREE.SmoothShading?THREE.SmoothShading:THREE.FlatShading;break a}y=!1}a:{r=t=void 0;F=p.length;
+for(t=0;t<F;t++)if(r=p[t],r.vertexColors){r=r.vertexColors;break a}r=!1}j.__vertexArray=new Float32Array(n*3);if(y)j.__normalArray=new Float32Array(n*3);if(u.hasTangents)j.__tangentArray=new Float32Array(n*4);if(r)j.__colorArray=new Float32Array(n*3);if(q){if(u.faceUvs.length>0||u.faceVertexUvs.length>0)j.__uvArray=new Float32Array(n*2);if(u.faceUvs.length>1||u.faceVertexUvs.length>1)j.__uv2Array=new Float32Array(n*2)}if(k.geometry.skinWeights.length&&k.geometry.skinIndices.length)j.__skinVertexAArray=
+new Float32Array(n*4),j.__skinVertexBArray=new Float32Array(n*4),j.__skinIndexArray=new Float32Array(n*4),j.__skinWeightArray=new Float32Array(n*4);j.__faceArray=new Uint16Array(v*3+(k.geometry.edgeFaces?k.geometry.edgeFaces.length*6:0));j.__lineArray=new Uint16Array(A*2);if(j.numMorphTargets){j.__morphTargetsArrays=[];u=0;for(t=j.numMorphTargets;u<t;u++)j.__morphTargetsArrays.push(new Float32Array(n*3))}j.__needsSmoothNormals=y==THREE.SmoothShading;j.__uvType=q;j.__vertexColorType=r;j.__normalType=
+y;j.__webglFaceCount=v*3+(k.geometry.edgeFaces?k.geometry.edgeFaces.length*6:0);j.__webglLineCount=A*2;u=0;for(t=p.length;u<t;u++)if(q=p[u],q.attributes){if(j.__webglCustomAttributes===void 0)j.__webglCustomAttributes={};for(a in q.attributes){r=q.attributes[a];y={};for(m in r)y[m]=r[m];if(!y.__webglInitialized||y.createUniqueBuffers)y.__webglInitialized=!0,v=1,y.type==="v2"?v=2:y.type==="v3"?v=3:y.type==="v4"?v=4:y.type==="c"&&(v=3),y.size=v,y.array=new Float32Array(n*v),y.buffer=f.createBuffer(),
+y.buffer.belongsToAttribute=a,r.needsUpdate=!0,y.__original=r;j.__webglCustomAttributes[a]=y}}j.__inittedArrays=!0;i.__dirtyVertices=!0;i.__dirtyMorphTargets=!0;i.__dirtyElements=!0;i.__dirtyUvs=!0;i.__dirtyNormals=!0;i.__dirtyTangents=!0;i.__dirtyColors=!0}}else if(d instanceof THREE.Ribbon){if(i=d.geometry,!i.__webglVertexBuffer)j=i,j.__webglVertexBuffer=f.createBuffer(),j.__webglColorBuffer=f.createBuffer(),M.info.memory.geometries++,j=i,k=j.vertices.length,j.__vertexArray=new Float32Array(k*3),
+j.__colorArray=new Float32Array(k*3),j.__webglVertexCount=k,i.__dirtyVertices=!0,i.__dirtyColors=!0}else if(d instanceof THREE.Line){if(i=d.geometry,!i.__webglVertexBuffer)j=i,j.__webglVertexBuffer=f.createBuffer(),j.__webglColorBuffer=f.createBuffer(),M.info.memory.geometries++,j=i,k=j.vertices.length,j.__vertexArray=new Float32Array(k*3),j.__colorArray=new Float32Array(k*3),j.__webglLineCount=k,i.__dirtyVertices=!0,i.__dirtyColors=!0}else if(d instanceof THREE.ParticleSystem&&(i=d.geometry,!i.__webglVertexBuffer)){j=
+i;j.__webglVertexBuffer=f.createBuffer();j.__webglColorBuffer=f.createBuffer();M.info.geometries++;j=i;k=d;n=j.vertices.length;j.__vertexArray=new Float32Array(n*3);j.__colorArray=new Float32Array(n*3);j.__sortArray=[];j.__webglParticleCount=n;j.__materials=k.materials;A=v=m=void 0;m=0;for(v=k.materials.length;m<v;m++)if(A=k.materials[m],A.attributes){if(j.__webglCustomAttributes===void 0)j.__webglCustomAttributes={};for(a in A.attributes){originalAttribute=A.attributes[a];attribute={};for(property in originalAttribute)attribute[property]=
 originalAttribute[property];if(!attribute.__webglInitialized||attribute.createUniqueBuffers)attribute.__webglInitialized=!0,size=1,attribute.type==="v2"?size=2:attribute.type==="v3"?size=3:attribute.type==="v4"?size=4:attribute.type==="c"&&(size=3),attribute.size=size,attribute.array=new Float32Array(n*size),attribute.buffer=f.createBuffer(),attribute.buffer.belongsToAttribute=a,originalAttribute.needsUpdate=!0,attribute.__original=originalAttribute;j.__webglCustomAttributes[a]=attribute}}i.__dirtyVertices=
 !0;i.__dirtyColors=!0}if(!d.__webglActive){if(d instanceof THREE.Mesh)for(h in i=d.geometry,i.geometryGroups)j=i.geometryGroups[h],ja(e.__webglObjects,j,d);else d instanceof THREE.Ribbon||d instanceof THREE.Line||d instanceof THREE.ParticleSystem?(i=d.geometry,ja(e.__webglObjects,i,d)):THREE.MarchingCubes!==void 0&&d instanceof THREE.MarchingCubes||d.immediateRenderCallback?e.__webglObjectsImmediate.push({object:d,opaque:{list:[],count:0},transparent:{list:[],count:0}}):d instanceof THREE.Sprite&&
 e.__webglSprites.push(d);d.__webglActive=!0}b.__objectsAdded.splice(0,1)}for(;b.__objectsRemoved.length;){d=b.__objectsRemoved[0];e=b;if(d instanceof THREE.Mesh||d instanceof THREE.ParticleSystem||d instanceof THREE.Ribbon||d instanceof THREE.Line)qa(e.__webglObjects,d);else if(d instanceof THREE.Sprite){e=e.__webglSprites;h=d;i=void 0;for(i=e.length-1;i>=0;i--)e[i]==h&&e.splice(i,1)}else(d instanceof THREE.MarchingCubes||d.immediateRenderCallback)&&qa(e.__webglObjectsImmediate,d);d.__webglActive=