浏览代码

Updated builds.

Mr.doob 12 年之前
父节点
当前提交
53d6b47b09
共有 2 个文件被更改,包括 68 次插入70 次删除
  1. 2 3
      build/three.js
  2. 66 67
      build/three.min.js

+ 2 - 3
build/three.js

@@ -21956,7 +21956,7 @@ THREE.WebGLRenderer = function ( parameters ) {
 
 
 		} else {
 		} else {
 
 
-			return b.id - a.id;
+			return a.id - b.id;
 
 
 		}
 		}
 
 
@@ -22038,6 +22038,7 @@ THREE.WebGLRenderer = function ( parameters ) {
 			webglObject = renderList[ i ];
 			webglObject = renderList[ i ];
 			object = webglObject.object;
 			object = webglObject.object;
 
 
+			webglObject.id = i;
 			webglObject.render = false;
 			webglObject.render = false;
 
 
 			if ( object.visible ) {
 			if ( object.visible ) {
@@ -22065,8 +22066,6 @@ THREE.WebGLRenderer = function ( parameters ) {
 
 
 						}
 						}
 
 
-						webglObject.id = object.id;
-
 					}
 					}
 
 
 				}
 				}

+ 66 - 67
build/three.min.js

@@ -351,7 +351,7 @@ n;c++)a.__morphTargetsArrays.push(new Float32Array(3*i))}if(a.numMorphNormals){a
 "v3"===c.type?h=3:"v4"===c.type?h=4:"c"===c.type&&(h=3),c.size=h,c.array=new Float32Array(i*h),c.buffer=j.createBuffer(),c.buffer.belongsToAttribute=p,k.needsUpdate=!0,c.__original=k;a.__webglCustomAttributesList.push(c)}}a.__inittedArrays=!0}function e(a,b){return a.material instanceof THREE.MeshFaceMaterial?a.material.materials[b.materialIndex]:a.material}function f(a){return a instanceof THREE.MeshBasicMaterial&&!a.envMap||a instanceof THREE.MeshDepthMaterial?!1:a&&void 0!==a.shading&&a.shading===
 "v3"===c.type?h=3:"v4"===c.type?h=4:"c"===c.type&&(h=3),c.size=h,c.array=new Float32Array(i*h),c.buffer=j.createBuffer(),c.buffer.belongsToAttribute=p,k.needsUpdate=!0,c.__original=k;a.__webglCustomAttributesList.push(c)}}a.__inittedArrays=!0}function e(a,b){return a.material instanceof THREE.MeshFaceMaterial?a.material.materials[b.materialIndex]:a.material}function f(a){return a instanceof THREE.MeshBasicMaterial&&!a.envMap||a instanceof THREE.MeshDepthMaterial?!1:a&&void 0!==a.shading&&a.shading===
 THREE.SmoothShading?THREE.SmoothShading:THREE.FlatShading}function g(a){return a.map||a.lightMap||a.bumpMap||a.normalMap||a.specularMap||a instanceof THREE.ShaderMaterial?!0:!1}function h(a){var b,c,d;for(b in a.attributes)d="index"===b?j.ELEMENT_ARRAY_BUFFER:j.ARRAY_BUFFER,c=a.attributes[b],c.buffer=j.createBuffer(),j.bindBuffer(d,c.buffer),j.bufferData(d,c.array,j.STATIC_DRAW)}function i(a,b,c){var d=a.attributes,e=d.index,f=d.position,g=d.normal,h=d.uv,i=d.color,d=d.tangent;a.elementsNeedUpdate&&
 THREE.SmoothShading?THREE.SmoothShading:THREE.FlatShading}function g(a){return a.map||a.lightMap||a.bumpMap||a.normalMap||a.specularMap||a instanceof THREE.ShaderMaterial?!0:!1}function h(a){var b,c,d;for(b in a.attributes)d="index"===b?j.ELEMENT_ARRAY_BUFFER:j.ARRAY_BUFFER,c=a.attributes[b],c.buffer=j.createBuffer(),j.bindBuffer(d,c.buffer),j.bufferData(d,c.array,j.STATIC_DRAW)}function i(a,b,c){var d=a.attributes,e=d.index,f=d.position,g=d.normal,h=d.uv,i=d.color,d=d.tangent;a.elementsNeedUpdate&&
 void 0!==e&&(j.bindBuffer(j.ELEMENT_ARRAY_BUFFER,e.buffer),j.bufferData(j.ELEMENT_ARRAY_BUFFER,e.array,b));a.verticesNeedUpdate&&void 0!==f&&(j.bindBuffer(j.ARRAY_BUFFER,f.buffer),j.bufferData(j.ARRAY_BUFFER,f.array,b));a.normalsNeedUpdate&&void 0!==g&&(j.bindBuffer(j.ARRAY_BUFFER,g.buffer),j.bufferData(j.ARRAY_BUFFER,g.array,b));a.uvsNeedUpdate&&void 0!==h&&(j.bindBuffer(j.ARRAY_BUFFER,h.buffer),j.bufferData(j.ARRAY_BUFFER,h.array,b));a.colorsNeedUpdate&&void 0!==i&&(j.bindBuffer(j.ARRAY_BUFFER,
 void 0!==e&&(j.bindBuffer(j.ELEMENT_ARRAY_BUFFER,e.buffer),j.bufferData(j.ELEMENT_ARRAY_BUFFER,e.array,b));a.verticesNeedUpdate&&void 0!==f&&(j.bindBuffer(j.ARRAY_BUFFER,f.buffer),j.bufferData(j.ARRAY_BUFFER,f.array,b));a.normalsNeedUpdate&&void 0!==g&&(j.bindBuffer(j.ARRAY_BUFFER,g.buffer),j.bufferData(j.ARRAY_BUFFER,g.array,b));a.uvsNeedUpdate&&void 0!==h&&(j.bindBuffer(j.ARRAY_BUFFER,h.buffer),j.bufferData(j.ARRAY_BUFFER,h.array,b));a.colorsNeedUpdate&&void 0!==i&&(j.bindBuffer(j.ARRAY_BUFFER,
-i.buffer),j.bufferData(j.ARRAY_BUFFER,i.array,b));a.tangentsNeedUpdate&&void 0!==d&&(j.bindBuffer(j.ARRAY_BUFFER,d.buffer),j.bufferData(j.ARRAY_BUFFER,d.array,b));if(c)for(var k in a.attributes)delete a.attributes[k].array}function k(a){Ka[a]||(j.enableVertexAttribArray(a),Ka[a]=!0)}function l(){for(var a in Ka)Ka[a]&&(j.disableVertexAttribArray(a),Ka[a]=!1)}function m(a,b){return a.z!==b.z?b.z-a.z:b.id-a.id}function n(a,b){return b[0]-a[0]}function s(a,b,c){if(a.length)for(var d=0,e=a.length;d<e;d++)ga=
+i.buffer),j.bufferData(j.ARRAY_BUFFER,i.array,b));a.tangentsNeedUpdate&&void 0!==d&&(j.bindBuffer(j.ARRAY_BUFFER,d.buffer),j.bufferData(j.ARRAY_BUFFER,d.array,b));if(c)for(var k in a.attributes)delete a.attributes[k].array}function k(a){Ka[a]||(j.enableVertexAttribArray(a),Ka[a]=!0)}function l(){for(var a in Ka)Ka[a]&&(j.disableVertexAttribArray(a),Ka[a]=!1)}function m(a,b){return a.z!==b.z?b.z-a.z:a.id-b.id}function n(a,b){return b[0]-a[0]}function s(a,b,c){if(a.length)for(var d=0,e=a.length;d<e;d++)ga=
 ab=null,Ea=ma=ja=ba=cb=ha=Z=-1,db=!0,a[d].render(b,c,kc,qb),ga=ab=null,Ea=ma=ja=ba=cb=ha=Z=-1,db=!0}function r(a,b,c,d,e,f,g,j){var h,i,k,n;b?(i=a.length-1,n=b=-1):(i=0,b=a.length,n=1);for(var l=i;l!==b;l+=n)if(h=a[l],h.render){i=h.object;k=h.buffer;if(j)h=j;else{h=h[c];if(!h)continue;g&&N.setBlending(h.blending,h.blendEquation,h.blendSrc,h.blendDst);N.setDepthTest(h.depthTest);N.setDepthWrite(h.depthWrite);E(h.polygonOffset,h.polygonOffsetFactor,h.polygonOffsetUnits)}N.setMaterialFaces(h);k instanceof
 ab=null,Ea=ma=ja=ba=cb=ha=Z=-1,db=!0,a[d].render(b,c,kc,qb),ga=ab=null,Ea=ma=ja=ba=cb=ha=Z=-1,db=!0}function r(a,b,c,d,e,f,g,j){var h,i,k,n;b?(i=a.length-1,n=b=-1):(i=0,b=a.length,n=1);for(var l=i;l!==b;l+=n)if(h=a[l],h.render){i=h.object;k=h.buffer;if(j)h=j;else{h=h[c];if(!h)continue;g&&N.setBlending(h.blending,h.blendEquation,h.blendSrc,h.blendDst);N.setDepthTest(h.depthTest);N.setDepthWrite(h.depthWrite);E(h.polygonOffset,h.polygonOffsetFactor,h.polygonOffsetUnits)}N.setMaterialFaces(h);k instanceof
 THREE.BufferGeometry?N.renderBufferDirect(d,e,f,h,k,i):N.renderBuffer(d,e,f,h,k,i)}}function p(a,b,c,d,e,f,g){for(var h,j,i=0,k=a.length;i<k;i++)if(h=a[i],j=h.object,j.visible){if(g)h=g;else{h=h[b];if(!h)continue;f&&N.setBlending(h.blending,h.blendEquation,h.blendSrc,h.blendDst);N.setDepthTest(h.depthTest);N.setDepthWrite(h.depthWrite);E(h.polygonOffset,h.polygonOffsetFactor,h.polygonOffsetUnits)}N.renderImmediateObject(c,d,e,h,j)}}function q(a,b,c){a.push({buffer:b,object:c,opaque:null,transparent:null})}
 THREE.BufferGeometry?N.renderBufferDirect(d,e,f,h,k,i):N.renderBuffer(d,e,f,h,k,i)}}function p(a,b,c,d,e,f,g){for(var h,j,i=0,k=a.length;i<k;i++)if(h=a[i],j=h.object,j.visible){if(g)h=g;else{h=h[b];if(!h)continue;f&&N.setBlending(h.blending,h.blendEquation,h.blendSrc,h.blendDst);N.setDepthTest(h.depthTest);N.setDepthWrite(h.depthWrite);E(h.polygonOffset,h.polygonOffsetFactor,h.polygonOffsetUnits)}N.renderImmediateObject(c,d,e,h,j)}}function q(a,b,c){a.push({buffer:b,object:c,opaque:null,transparent:null})}
 function y(a){for(var b in a.attributes)if(a.attributes[b].needsUpdate)return!0;return!1}function v(a){for(var b in a.attributes)a.attributes[b].needsUpdate=!1}function z(a,b){for(var c=a.length-1;0<=c;c--)a[c].object===b&&a.splice(c,1)}function t(a,b){for(var c=a.length-1;0<=c;c--)a[c]===b&&a.splice(c,1)}function A(a,b,c,d,e){Y=0;d.needsUpdate&&(d.program&&Ta(d),N.initMaterial(d,b,c,e),d.needsUpdate=!1);d.morphTargets&&!e.__webglMorphTargetInfluences&&(e.__webglMorphTargetInfluences=new Float32Array(N.maxMorphTargets));
 function y(a){for(var b in a.attributes)if(a.attributes[b].needsUpdate)return!0;return!1}function v(a){for(var b in a.attributes)a.attributes[b].needsUpdate=!1}function z(a,b){for(var c=a.length-1;0<=c;c--)a[c].object===b&&a.splice(c,1)}function t(a,b){for(var c=a.length-1;0<=c;c--)a[c]===b&&a.splice(c,1)}function A(a,b,c,d,e){Y=0;d.needsUpdate&&(d.program&&Ta(d),N.initMaterial(d,b,c,e),d.needsUpdate=!1);d.morphTargets&&!e.__webglMorphTargetInfluences&&(e.__webglMorphTargetInfluences=new Float32Array(N.maxMorphTargets));
@@ -417,73 +417,72 @@ e.__webglNormalBuffer),k(a.normal),j.vertexAttribPointer(a.normal,3,j.FLOAT,!1,0
 e.__webglSkinIndicesBuffer),k(a.skinIndex),j.vertexAttribPointer(a.skinIndex,4,j.FLOAT,!1,0,0),j.bindBuffer(j.ARRAY_BUFFER,e.__webglSkinWeightsBuffer),k(a.skinWeight),j.vertexAttribPointer(a.skinWeight,4,j.FLOAT,!1,0,0));0<=a.lineDistance&&(j.bindBuffer(j.ARRAY_BUFFER,e.__webglLineDistanceBuffer),k(a.lineDistance),j.vertexAttribPointer(a.lineDistance,1,j.FLOAT,!1,0,0))}f instanceof THREE.Mesh?(d.wireframe?(J(d.wireframeLinewidth),b&&j.bindBuffer(j.ELEMENT_ARRAY_BUFFER,e.__webglLineBuffer),j.drawElements(j.LINES,
 e.__webglSkinIndicesBuffer),k(a.skinIndex),j.vertexAttribPointer(a.skinIndex,4,j.FLOAT,!1,0,0),j.bindBuffer(j.ARRAY_BUFFER,e.__webglSkinWeightsBuffer),k(a.skinWeight),j.vertexAttribPointer(a.skinWeight,4,j.FLOAT,!1,0,0));0<=a.lineDistance&&(j.bindBuffer(j.ARRAY_BUFFER,e.__webglLineDistanceBuffer),k(a.lineDistance),j.vertexAttribPointer(a.lineDistance,1,j.FLOAT,!1,0,0))}f instanceof THREE.Mesh?(d.wireframe?(J(d.wireframeLinewidth),b&&j.bindBuffer(j.ELEMENT_ARRAY_BUFFER,e.__webglLineBuffer),j.drawElements(j.LINES,
 e.__webglLineCount,j.UNSIGNED_SHORT,0)):(b&&j.bindBuffer(j.ELEMENT_ARRAY_BUFFER,e.__webglFaceBuffer),j.drawElements(j.TRIANGLES,e.__webglFaceCount,j.UNSIGNED_SHORT,0)),N.info.render.calls++,N.info.render.vertices+=e.__webglFaceCount,N.info.render.faces+=e.__webglFaceCount/3):f instanceof THREE.Line?(f=f.type===THREE.LineStrip?j.LINE_STRIP:j.LINES,J(d.linewidth),j.drawArrays(f,0,e.__webglLineCount),N.info.render.calls++):f instanceof THREE.ParticleSystem?(j.drawArrays(j.POINTS,0,e.__webglParticleCount),
 e.__webglLineCount,j.UNSIGNED_SHORT,0)):(b&&j.bindBuffer(j.ELEMENT_ARRAY_BUFFER,e.__webglFaceBuffer),j.drawElements(j.TRIANGLES,e.__webglFaceCount,j.UNSIGNED_SHORT,0)),N.info.render.calls++,N.info.render.vertices+=e.__webglFaceCount,N.info.render.faces+=e.__webglFaceCount/3):f instanceof THREE.Line?(f=f.type===THREE.LineStrip?j.LINE_STRIP:j.LINES,J(d.linewidth),j.drawArrays(f,0,e.__webglLineCount),N.info.render.calls++):f instanceof THREE.ParticleSystem?(j.drawArrays(j.POINTS,0,e.__webglParticleCount),
 N.info.render.calls++,N.info.render.points+=e.__webglParticleCount):f instanceof THREE.Ribbon&&(j.drawArrays(j.TRIANGLE_STRIP,0,e.__webglVertexCount),N.info.render.calls++)}};this.render=function(a,b,c,d){if(!1===b instanceof THREE.Camera)console.error("THREE.WebGLRenderer.render: camera is not an instance of THREE.Camera.");else{var e,f,g,i,h=a.__lights,k=a.fog;Ea=-1;db=!0;this.autoUpdateScene&&a.updateMatrixWorld();void 0===b.parent&&b.updateMatrixWorld();b.matrixWorldInverse.getInverse(b.matrixWorld);
 N.info.render.calls++,N.info.render.points+=e.__webglParticleCount):f instanceof THREE.Ribbon&&(j.drawArrays(j.TRIANGLE_STRIP,0,e.__webglVertexCount),N.info.render.calls++)}};this.render=function(a,b,c,d){if(!1===b instanceof THREE.Camera)console.error("THREE.WebGLRenderer.render: camera is not an instance of THREE.Camera.");else{var e,f,g,i,h=a.__lights,k=a.fog;Ea=-1;db=!0;this.autoUpdateScene&&a.updateMatrixWorld();void 0===b.parent&&b.updateMatrixWorld();b.matrixWorldInverse.getInverse(b.matrixWorld);
-rb.multiplyMatrices(b.projectionMatrix,b.matrixWorldInverse);Ba.setFromMatrix(rb);this.autoUpdateObjects&&this.initWebGLObjects(a);s(this.renderPluginsPre,a,b);N.info.render.calls=0;N.info.render.vertices=0;N.info.render.faces=0;N.info.render.points=0;this.setRenderTarget(c);(this.autoClear||d)&&this.clear(this.autoClearColor,this.autoClearDepth,this.autoClearStencil);i=a.__webglObjects;d=0;for(e=i.length;d<e;d++)if(f=i[d],g=f.object,f.render=!1,g.visible&&(!(g instanceof THREE.Mesh||g instanceof
+rb.multiplyMatrices(b.projectionMatrix,b.matrixWorldInverse);Ba.setFromMatrix(rb);this.autoUpdateObjects&&this.initWebGLObjects(a);s(this.renderPluginsPre,a,b);N.info.render.calls=0;N.info.render.vertices=0;N.info.render.faces=0;N.info.render.points=0;this.setRenderTarget(c);(this.autoClear||d)&&this.clear(this.autoClearColor,this.autoClearDepth,this.autoClearStencil);i=a.__webglObjects;d=0;for(e=i.length;d<e;d++)if(f=i[d],g=f.object,f.id=d,f.render=!1,g.visible&&(!(g instanceof THREE.Mesh||g instanceof
 THREE.ParticleSystem)||!g.frustumCulled||Ba.intersectsObject(g))){B(g,b);var n=f,l=n.buffer,q=void 0,t=q=void 0,t=n.object.material;if(t instanceof THREE.MeshFaceMaterial)q=l.materialIndex,q=t.materials[q],q.transparent?(n.transparent=q,n.opaque=null):(n.opaque=q,n.transparent=null);else if(q=t)q.transparent?(n.transparent=q,n.opaque=null):(n.opaque=q,n.transparent=null);f.render=!0;!0===this.sortObjects&&(null!==g.renderDepth?f.z=g.renderDepth:(Ra.getPositionFromMatrix(g.matrixWorld),Ra.applyProjection(rb),
 THREE.ParticleSystem)||!g.frustumCulled||Ba.intersectsObject(g))){B(g,b);var n=f,l=n.buffer,q=void 0,t=q=void 0,t=n.object.material;if(t instanceof THREE.MeshFaceMaterial)q=l.materialIndex,q=t.materials[q],q.transparent?(n.transparent=q,n.opaque=null):(n.opaque=q,n.transparent=null);else if(q=t)q.transparent?(n.transparent=q,n.opaque=null):(n.opaque=q,n.transparent=null);f.render=!0;!0===this.sortObjects&&(null!==g.renderDepth?f.z=g.renderDepth:(Ra.getPositionFromMatrix(g.matrixWorld),Ra.applyProjection(rb),
-f.z=Ra.z),f.id=g.id)}this.sortObjects&&i.sort(m);i=a.__webglObjectsImmediate;d=0;for(e=i.length;d<e;d++)f=i[d],g=f.object,g.visible&&(B(g,b),g=f.object.material,g.transparent?(f.transparent=g,f.opaque=null):(f.opaque=g,f.transparent=null));a.overrideMaterial?(d=a.overrideMaterial,this.setBlending(d.blending,d.blendEquation,d.blendSrc,d.blendDst),this.setDepthTest(d.depthTest),this.setDepthWrite(d.depthWrite),E(d.polygonOffset,d.polygonOffsetFactor,d.polygonOffsetUnits),r(a.__webglObjects,!1,"",b,
-h,k,!0,d),p(a.__webglObjectsImmediate,"",b,h,k,!1,d)):(d=null,this.setBlending(THREE.NoBlending),r(a.__webglObjects,!0,"opaque",b,h,k,!1,d),p(a.__webglObjectsImmediate,"opaque",b,h,k,!1,d),r(a.__webglObjects,!1,"transparent",b,h,k,!0,d),p(a.__webglObjectsImmediate,"transparent",b,h,k,!0,d));s(this.renderPluginsPost,a,b);c&&(c.generateMipmaps&&c.minFilter!==THREE.NearestFilter&&c.minFilter!==THREE.LinearFilter)&&(c instanceof THREE.WebGLRenderTargetCube?(j.bindTexture(j.TEXTURE_CUBE_MAP,c.__webglTexture),
-j.generateMipmap(j.TEXTURE_CUBE_MAP),j.bindTexture(j.TEXTURE_CUBE_MAP,null)):(j.bindTexture(j.TEXTURE_2D,c.__webglTexture),j.generateMipmap(j.TEXTURE_2D),j.bindTexture(j.TEXTURE_2D,null)));this.setDepthTest(!0);this.setDepthWrite(!0)}};this.renderImmediateObject=function(a,b,c,d,e){var f=A(a,b,c,d,e);ma=-1;N.setMaterialFaces(d);e.immediateRenderCallback?e.immediateRenderCallback(f,j,Ba):e.render(function(a){N.renderBufferImmediate(a,f,d)})};this.initWebGLObjects=function(a){a.__webglObjects||(a.__webglObjects=
-[],a.__webglObjectsImmediate=[],a.__webglSprites=[],a.__webglFlares=[]);for(;a.__objectsAdded.length;){var b=a.__objectsAdded[0],k=a,l=void 0,m=void 0,p=void 0,r=void 0;if(!b.__webglInit)if(b.__webglInit=!0,b._modelViewMatrix=new THREE.Matrix4,b._normalMatrix=new THREE.Matrix3,void 0!==b.geometry&&void 0===b.geometry.__webglInit&&(b.geometry.__webglInit=!0,b.geometry.addEventListener("dispose",vd)),b instanceof THREE.Mesh)if(m=b.geometry,p=b.material,m instanceof THREE.Geometry){if(void 0===m.geometryGroups){var s=
-m,x=void 0,C=void 0,B=void 0,A=void 0,F=void 0,E=void 0,G={},I=s.morphTargets.length,J=s.morphNormals.length,K=p instanceof THREE.MeshFaceMaterial;s.geometryGroups={};x=0;for(C=s.faces.length;x<C;x++)B=s.faces[x],A=K?B.materialIndex:0,void 0===G[A]&&(G[A]={hash:A,counter:0}),E=G[A].hash+"_"+G[A].counter,void 0===s.geometryGroups[E]&&(s.geometryGroups[E]={faces3:[],faces4:[],materialIndex:A,vertices:0,numMorphTargets:I,numMorphNormals:J}),F=B instanceof THREE.Face3?3:4,65535<s.geometryGroups[E].vertices+
-F&&(G[A].counter+=1,E=G[A].hash+"_"+G[A].counter,void 0===s.geometryGroups[E]&&(s.geometryGroups[E]={faces3:[],faces4:[],materialIndex:A,vertices:0,numMorphTargets:I,numMorphNormals:J})),B instanceof THREE.Face3?s.geometryGroups[E].faces3.push(x):s.geometryGroups[E].faces4.push(x),s.geometryGroups[E].vertices+=F;s.geometryGroupsList=[];var L=void 0;for(L in s.geometryGroups)s.geometryGroups[L].id=pa++,s.geometryGroupsList.push(s.geometryGroups[L])}for(l in m.geometryGroups)if(r=m.geometryGroups[l],
-!r.__webglVertexBuffer){var H=r;H.__webglVertexBuffer=j.createBuffer();H.__webglNormalBuffer=j.createBuffer();H.__webglTangentBuffer=j.createBuffer();H.__webglColorBuffer=j.createBuffer();H.__webglUVBuffer=j.createBuffer();H.__webglUV2Buffer=j.createBuffer();H.__webglSkinIndicesBuffer=j.createBuffer();H.__webglSkinWeightsBuffer=j.createBuffer();H.__webglFaceBuffer=j.createBuffer();H.__webglLineBuffer=j.createBuffer();var M=void 0,Q=void 0;if(H.numMorphTargets){H.__webglMorphTargetsBuffers=[];M=0;
-for(Q=H.numMorphTargets;M<Q;M++)H.__webglMorphTargetsBuffers.push(j.createBuffer())}if(H.numMorphNormals){H.__webglMorphNormalsBuffers=[];M=0;for(Q=H.numMorphNormals;M<Q;M++)H.__webglMorphNormalsBuffers.push(j.createBuffer())}N.info.memory.geometries++;d(r,b);m.verticesNeedUpdate=!0;m.morphTargetsNeedUpdate=!0;m.elementsNeedUpdate=!0;m.uvsNeedUpdate=!0;m.normalsNeedUpdate=!0;m.tangentsNeedUpdate=!0;m.colorsNeedUpdate=!0}}else m instanceof THREE.BufferGeometry&&h(m);else if(b instanceof THREE.Ribbon){if(m=
-b.geometry,!m.__webglVertexBuffer){var U=m;U.__webglVertexBuffer=j.createBuffer();U.__webglColorBuffer=j.createBuffer();U.__webglNormalBuffer=j.createBuffer();N.info.memory.geometries++;var W=m,ga=b,Y=W.vertices.length;W.__vertexArray=new Float32Array(3*Y);W.__colorArray=new Float32Array(3*Y);W.__normalArray=new Float32Array(3*Y);W.__webglVertexCount=Y;c(W,ga);m.verticesNeedUpdate=!0;m.colorsNeedUpdate=!0;m.normalsNeedUpdate=!0}}else if(b instanceof THREE.Line){if(m=b.geometry,!m.__webglVertexBuffer)if(m instanceof
-THREE.Geometry){var Z=m;Z.__webglVertexBuffer=j.createBuffer();Z.__webglColorBuffer=j.createBuffer();Z.__webglLineDistanceBuffer=j.createBuffer();N.info.memory.geometries++;var X=m,ba=b,ma=X.vertices.length;X.__vertexArray=new Float32Array(3*ma);X.__colorArray=new Float32Array(3*ma);X.__lineDistanceArray=new Float32Array(1*ma);X.__webglLineCount=ma;c(X,ba);m.verticesNeedUpdate=!0;m.colorsNeedUpdate=!0;m.lineDistancesNeedUpdate=!0}else m instanceof THREE.BufferGeometry&&h(m)}else if(b instanceof THREE.ParticleSystem&&
-(m=b.geometry,!m.__webglVertexBuffer))if(m instanceof THREE.Geometry){var da=m;da.__webglVertexBuffer=j.createBuffer();da.__webglColorBuffer=j.createBuffer();N.info.memory.geometries++;var ea=m,Na=b,ia=ea.vertices.length;ea.__vertexArray=new Float32Array(3*ia);ea.__colorArray=new Float32Array(3*ia);ea.__sortArray=[];ea.__webglParticleCount=ia;c(ea,Na);m.verticesNeedUpdate=!0;m.colorsNeedUpdate=!0}else m instanceof THREE.BufferGeometry&&h(m);if(!b.__webglActive){if(b instanceof THREE.Mesh)if(m=b.geometry,
-m instanceof THREE.BufferGeometry)q(k.__webglObjects,m,b);else{if(m instanceof THREE.Geometry)for(l in m.geometryGroups)r=m.geometryGroups[l],q(k.__webglObjects,r,b)}else b instanceof THREE.Ribbon||b instanceof THREE.Line||b instanceof THREE.ParticleSystem?(m=b.geometry,q(k.__webglObjects,m,b)):b instanceof THREE.ImmediateRenderObject||b.immediateRenderCallback?k.__webglObjectsImmediate.push({object:b,opaque:null,transparent:null}):b instanceof THREE.Sprite?k.__webglSprites.push(b):b instanceof THREE.LensFlare&&
-k.__webglFlares.push(b);b.__webglActive=!0}a.__objectsAdded.splice(0,1)}for(;a.__objectsRemoved.length;){var ja=a.__objectsRemoved[0],pb=a;ja instanceof THREE.Mesh||ja instanceof THREE.ParticleSystem||ja instanceof THREE.Ribbon||ja instanceof THREE.Line?z(pb.__webglObjects,ja):ja instanceof THREE.Sprite?t(pb.__webglSprites,ja):ja instanceof THREE.LensFlare?t(pb.__webglFlares,ja):(ja instanceof THREE.ImmediateRenderObject||ja.immediateRenderCallback)&&z(pb.__webglObjectsImmediate,ja);ja.__webglActive=
-!1;a.__objectsRemoved.splice(0,1)}for(var qa=0,sa=a.__webglObjects.length;qa<sa;qa++){var ka=a.__webglObjects[qa].object,O=ka.geometry,Ea=void 0,ab=void 0,ha=void 0;if(ka instanceof THREE.Mesh)if(O instanceof THREE.BufferGeometry)(O.verticesNeedUpdate||O.elementsNeedUpdate||O.uvsNeedUpdate||O.normalsNeedUpdate||O.colorsNeedUpdate||O.tangentsNeedUpdate)&&i(O,j.DYNAMIC_DRAW,!O.dynamic),O.verticesNeedUpdate=!1,O.elementsNeedUpdate=!1,O.uvsNeedUpdate=!1,O.normalsNeedUpdate=!1,O.colorsNeedUpdate=!1,O.tangentsNeedUpdate=
-!1;else{for(var wa=0,Fa=O.geometryGroupsList.length;wa<Fa;wa++)if(Ea=O.geometryGroupsList[wa],ha=e(ka,Ea),O.buffersNeedUpdate&&d(Ea,ka),ab=ha.attributes&&y(ha),O.verticesNeedUpdate||O.morphTargetsNeedUpdate||O.elementsNeedUpdate||O.uvsNeedUpdate||O.normalsNeedUpdate||O.colorsNeedUpdate||O.tangentsNeedUpdate||ab){var ra=Ea,Ka=ka,Oa=j.DYNAMIC_DRAW,Ta=!O.dynamic,Ba=ha;if(ra.__inittedArrays){var Wa=f(Ba),bb=Ba.vertexColors?Ba.vertexColors:!1,cb=g(Ba),Xa=Wa===THREE.SmoothShading,D=void 0,V=void 0,Pa=void 0,
-P=void 0,Ya=void 0,Va=void 0,Qa=void 0,mb=void 0,db=void 0,nb=void 0,qb=void 0,R=void 0,S=void 0,T=void 0,oa=void 0,Lb=void 0,Mb=void 0,Nb=void 0,wb=void 0,Ob=void 0,Pb=void 0,Qb=void 0,yb=void 0,Rb=void 0,Sb=void 0,Tb=void 0,zb=void 0,Ub=void 0,Vb=void 0,Wb=void 0,Hb=void 0,Xb=void 0,Yb=void 0,Zb=void 0,Ib=void 0,va=void 0,ec=void 0,lc=void 0,Ab=void 0,xc=void 0,eb=void 0,kc=void 0,Za=void 0,$a=void 0,mc=void 0,fc=void 0,Ma=0,Ua=0,gc=0,hc=0,Db=0,kb=0,za=0,ob=0,Sa=0,aa=0,la=0,w=0,xa=void 0,fb=ra.__vertexArray,
-Cc=ra.__uvArray,Dc=ra.__uv2Array,Eb=ra.__normalArray,Ga=ra.__tangentArray,gb=ra.__colorArray,Ha=ra.__skinIndexArray,Ia=ra.__skinWeightArray,qc=ra.__morphTargetsArrays,rc=ra.__morphNormalsArrays,nd=ra.__webglCustomAttributesList,u=void 0,$b=ra.__faceArray,xb=ra.__lineArray,sb=Ka.geometry,Lc=sb.elementsNeedUpdate,Bc=sb.uvsNeedUpdate,Mc=sb.normalsNeedUpdate,Nc=sb.tangentsNeedUpdate,dd=sb.colorsNeedUpdate,ed=sb.morphTargetsNeedUpdate,sc=sb.vertices,ta=ra.faces3,ua=ra.faces4,lb=sb.faces,od=sb.faceVertexUvs[0],
-pd=sb.faceVertexUvs[1],tc=sb.skinIndices,nc=sb.skinWeights,oc=sb.morphTargets,Oc=sb.morphNormals;if(sb.verticesNeedUpdate){D=0;for(V=ta.length;D<V;D++)P=lb[ta[D]],R=sc[P.a],S=sc[P.b],T=sc[P.c],fb[Ua]=R.x,fb[Ua+1]=R.y,fb[Ua+2]=R.z,fb[Ua+3]=S.x,fb[Ua+4]=S.y,fb[Ua+5]=S.z,fb[Ua+6]=T.x,fb[Ua+7]=T.y,fb[Ua+8]=T.z,Ua+=9;D=0;for(V=ua.length;D<V;D++)P=lb[ua[D]],R=sc[P.a],S=sc[P.b],T=sc[P.c],oa=sc[P.d],fb[Ua]=R.x,fb[Ua+1]=R.y,fb[Ua+2]=R.z,fb[Ua+3]=S.x,fb[Ua+4]=S.y,fb[Ua+5]=S.z,fb[Ua+6]=T.x,fb[Ua+7]=T.y,fb[Ua+
-8]=T.z,fb[Ua+9]=oa.x,fb[Ua+10]=oa.y,fb[Ua+11]=oa.z,Ua+=12;j.bindBuffer(j.ARRAY_BUFFER,ra.__webglVertexBuffer);j.bufferData(j.ARRAY_BUFFER,fb,Oa)}if(ed){eb=0;for(kc=oc.length;eb<kc;eb++){D=la=0;for(V=ta.length;D<V;D++)mc=ta[D],P=lb[mc],R=oc[eb].vertices[P.a],S=oc[eb].vertices[P.b],T=oc[eb].vertices[P.c],Za=qc[eb],Za[la]=R.x,Za[la+1]=R.y,Za[la+2]=R.z,Za[la+3]=S.x,Za[la+4]=S.y,Za[la+5]=S.z,Za[la+6]=T.x,Za[la+7]=T.y,Za[la+8]=T.z,Ba.morphNormals&&(Xa?(fc=Oc[eb].vertexNormals[mc],Ob=fc.a,Pb=fc.b,Qb=fc.c):
-Qb=Pb=Ob=Oc[eb].faceNormals[mc],$a=rc[eb],$a[la]=Ob.x,$a[la+1]=Ob.y,$a[la+2]=Ob.z,$a[la+3]=Pb.x,$a[la+4]=Pb.y,$a[la+5]=Pb.z,$a[la+6]=Qb.x,$a[la+7]=Qb.y,$a[la+8]=Qb.z),la+=9;D=0;for(V=ua.length;D<V;D++)mc=ua[D],P=lb[mc],R=oc[eb].vertices[P.a],S=oc[eb].vertices[P.b],T=oc[eb].vertices[P.c],oa=oc[eb].vertices[P.d],Za=qc[eb],Za[la]=R.x,Za[la+1]=R.y,Za[la+2]=R.z,Za[la+3]=S.x,Za[la+4]=S.y,Za[la+5]=S.z,Za[la+6]=T.x,Za[la+7]=T.y,Za[la+8]=T.z,Za[la+9]=oa.x,Za[la+10]=oa.y,Za[la+11]=oa.z,Ba.morphNormals&&(Xa?
-(fc=Oc[eb].vertexNormals[mc],Ob=fc.a,Pb=fc.b,Qb=fc.c,yb=fc.d):yb=Qb=Pb=Ob=Oc[eb].faceNormals[mc],$a=rc[eb],$a[la]=Ob.x,$a[la+1]=Ob.y,$a[la+2]=Ob.z,$a[la+3]=Pb.x,$a[la+4]=Pb.y,$a[la+5]=Pb.z,$a[la+6]=Qb.x,$a[la+7]=Qb.y,$a[la+8]=Qb.z,$a[la+9]=yb.x,$a[la+10]=yb.y,$a[la+11]=yb.z),la+=12;j.bindBuffer(j.ARRAY_BUFFER,ra.__webglMorphTargetsBuffers[eb]);j.bufferData(j.ARRAY_BUFFER,qc[eb],Oa);Ba.morphNormals&&(j.bindBuffer(j.ARRAY_BUFFER,ra.__webglMorphNormalsBuffers[eb]),j.bufferData(j.ARRAY_BUFFER,rc[eb],
-Oa))}}if(nc.length){D=0;for(V=ta.length;D<V;D++)P=lb[ta[D]],Ub=nc[P.a],Vb=nc[P.b],Wb=nc[P.c],Ia[aa]=Ub.x,Ia[aa+1]=Ub.y,Ia[aa+2]=Ub.z,Ia[aa+3]=Ub.w,Ia[aa+4]=Vb.x,Ia[aa+5]=Vb.y,Ia[aa+6]=Vb.z,Ia[aa+7]=Vb.w,Ia[aa+8]=Wb.x,Ia[aa+9]=Wb.y,Ia[aa+10]=Wb.z,Ia[aa+11]=Wb.w,Xb=tc[P.a],Yb=tc[P.b],Zb=tc[P.c],Ha[aa]=Xb.x,Ha[aa+1]=Xb.y,Ha[aa+2]=Xb.z,Ha[aa+3]=Xb.w,Ha[aa+4]=Yb.x,Ha[aa+5]=Yb.y,Ha[aa+6]=Yb.z,Ha[aa+7]=Yb.w,Ha[aa+8]=Zb.x,Ha[aa+9]=Zb.y,Ha[aa+10]=Zb.z,Ha[aa+11]=Zb.w,aa+=12;D=0;for(V=ua.length;D<V;D++)P=lb[ua[D]],
-Ub=nc[P.a],Vb=nc[P.b],Wb=nc[P.c],Hb=nc[P.d],Ia[aa]=Ub.x,Ia[aa+1]=Ub.y,Ia[aa+2]=Ub.z,Ia[aa+3]=Ub.w,Ia[aa+4]=Vb.x,Ia[aa+5]=Vb.y,Ia[aa+6]=Vb.z,Ia[aa+7]=Vb.w,Ia[aa+8]=Wb.x,Ia[aa+9]=Wb.y,Ia[aa+10]=Wb.z,Ia[aa+11]=Wb.w,Ia[aa+12]=Hb.x,Ia[aa+13]=Hb.y,Ia[aa+14]=Hb.z,Ia[aa+15]=Hb.w,Xb=tc[P.a],Yb=tc[P.b],Zb=tc[P.c],Ib=tc[P.d],Ha[aa]=Xb.x,Ha[aa+1]=Xb.y,Ha[aa+2]=Xb.z,Ha[aa+3]=Xb.w,Ha[aa+4]=Yb.x,Ha[aa+5]=Yb.y,Ha[aa+6]=Yb.z,Ha[aa+7]=Yb.w,Ha[aa+8]=Zb.x,Ha[aa+9]=Zb.y,Ha[aa+10]=Zb.z,Ha[aa+11]=Zb.w,Ha[aa+12]=Ib.x,Ha[aa+
-13]=Ib.y,Ha[aa+14]=Ib.z,Ha[aa+15]=Ib.w,aa+=16;0<aa&&(j.bindBuffer(j.ARRAY_BUFFER,ra.__webglSkinIndicesBuffer),j.bufferData(j.ARRAY_BUFFER,Ha,Oa),j.bindBuffer(j.ARRAY_BUFFER,ra.__webglSkinWeightsBuffer),j.bufferData(j.ARRAY_BUFFER,Ia,Oa))}if(dd&&bb){D=0;for(V=ta.length;D<V;D++)P=lb[ta[D]],Qa=P.vertexColors,mb=P.color,3===Qa.length&&bb===THREE.VertexColors?(Rb=Qa[0],Sb=Qa[1],Tb=Qa[2]):Tb=Sb=Rb=mb,gb[Sa]=Rb.r,gb[Sa+1]=Rb.g,gb[Sa+2]=Rb.b,gb[Sa+3]=Sb.r,gb[Sa+4]=Sb.g,gb[Sa+5]=Sb.b,gb[Sa+6]=Tb.r,gb[Sa+7]=
-Tb.g,gb[Sa+8]=Tb.b,Sa+=9;D=0;for(V=ua.length;D<V;D++)P=lb[ua[D]],Qa=P.vertexColors,mb=P.color,4===Qa.length&&bb===THREE.VertexColors?(Rb=Qa[0],Sb=Qa[1],Tb=Qa[2],zb=Qa[3]):zb=Tb=Sb=Rb=mb,gb[Sa]=Rb.r,gb[Sa+1]=Rb.g,gb[Sa+2]=Rb.b,gb[Sa+3]=Sb.r,gb[Sa+4]=Sb.g,gb[Sa+5]=Sb.b,gb[Sa+6]=Tb.r,gb[Sa+7]=Tb.g,gb[Sa+8]=Tb.b,gb[Sa+9]=zb.r,gb[Sa+10]=zb.g,gb[Sa+11]=zb.b,Sa+=12;0<Sa&&(j.bindBuffer(j.ARRAY_BUFFER,ra.__webglColorBuffer),j.bufferData(j.ARRAY_BUFFER,gb,Oa))}if(Nc&&sb.hasTangents){D=0;for(V=ta.length;D<V;D++)P=
-lb[ta[D]],db=P.vertexTangents,Lb=db[0],Mb=db[1],Nb=db[2],Ga[za]=Lb.x,Ga[za+1]=Lb.y,Ga[za+2]=Lb.z,Ga[za+3]=Lb.w,Ga[za+4]=Mb.x,Ga[za+5]=Mb.y,Ga[za+6]=Mb.z,Ga[za+7]=Mb.w,Ga[za+8]=Nb.x,Ga[za+9]=Nb.y,Ga[za+10]=Nb.z,Ga[za+11]=Nb.w,za+=12;D=0;for(V=ua.length;D<V;D++)P=lb[ua[D]],db=P.vertexTangents,Lb=db[0],Mb=db[1],Nb=db[2],wb=db[3],Ga[za]=Lb.x,Ga[za+1]=Lb.y,Ga[za+2]=Lb.z,Ga[za+3]=Lb.w,Ga[za+4]=Mb.x,Ga[za+5]=Mb.y,Ga[za+6]=Mb.z,Ga[za+7]=Mb.w,Ga[za+8]=Nb.x,Ga[za+9]=Nb.y,Ga[za+10]=Nb.z,Ga[za+11]=Nb.w,Ga[za+
-12]=wb.x,Ga[za+13]=wb.y,Ga[za+14]=wb.z,Ga[za+15]=wb.w,za+=16;j.bindBuffer(j.ARRAY_BUFFER,ra.__webglTangentBuffer);j.bufferData(j.ARRAY_BUFFER,Ga,Oa)}if(Mc&&Wa){D=0;for(V=ta.length;D<V;D++)if(P=lb[ta[D]],Ya=P.vertexNormals,Va=P.normal,3===Ya.length&&Xa)for(va=0;3>va;va++)lc=Ya[va],Eb[kb]=lc.x,Eb[kb+1]=lc.y,Eb[kb+2]=lc.z,kb+=3;else for(va=0;3>va;va++)Eb[kb]=Va.x,Eb[kb+1]=Va.y,Eb[kb+2]=Va.z,kb+=3;D=0;for(V=ua.length;D<V;D++)if(P=lb[ua[D]],Ya=P.vertexNormals,Va=P.normal,4===Ya.length&&Xa)for(va=0;4>va;va++)lc=
-Ya[va],Eb[kb]=lc.x,Eb[kb+1]=lc.y,Eb[kb+2]=lc.z,kb+=3;else for(va=0;4>va;va++)Eb[kb]=Va.x,Eb[kb+1]=Va.y,Eb[kb+2]=Va.z,kb+=3;j.bindBuffer(j.ARRAY_BUFFER,ra.__webglNormalBuffer);j.bufferData(j.ARRAY_BUFFER,Eb,Oa)}if(Bc&&od&&cb){D=0;for(V=ta.length;D<V;D++)if(Pa=ta[D],nb=od[Pa],void 0!==nb)for(va=0;3>va;va++)Ab=nb[va],Cc[gc]=Ab.x,Cc[gc+1]=Ab.y,gc+=2;D=0;for(V=ua.length;D<V;D++)if(Pa=ua[D],nb=od[Pa],void 0!==nb)for(va=0;4>va;va++)Ab=nb[va],Cc[gc]=Ab.x,Cc[gc+1]=Ab.y,gc+=2;0<gc&&(j.bindBuffer(j.ARRAY_BUFFER,
-ra.__webglUVBuffer),j.bufferData(j.ARRAY_BUFFER,Cc,Oa))}if(Bc&&pd&&cb){D=0;for(V=ta.length;D<V;D++)if(Pa=ta[D],qb=pd[Pa],void 0!==qb)for(va=0;3>va;va++)xc=qb[va],Dc[hc]=xc.x,Dc[hc+1]=xc.y,hc+=2;D=0;for(V=ua.length;D<V;D++)if(Pa=ua[D],qb=pd[Pa],void 0!==qb)for(va=0;4>va;va++)xc=qb[va],Dc[hc]=xc.x,Dc[hc+1]=xc.y,hc+=2;0<hc&&(j.bindBuffer(j.ARRAY_BUFFER,ra.__webglUV2Buffer),j.bufferData(j.ARRAY_BUFFER,Dc,Oa))}if(Lc){D=0;for(V=ta.length;D<V;D++)$b[Db]=Ma,$b[Db+1]=Ma+1,$b[Db+2]=Ma+2,Db+=3,xb[ob]=Ma,xb[ob+
-1]=Ma+1,xb[ob+2]=Ma,xb[ob+3]=Ma+2,xb[ob+4]=Ma+1,xb[ob+5]=Ma+2,ob+=6,Ma+=3;D=0;for(V=ua.length;D<V;D++)$b[Db]=Ma,$b[Db+1]=Ma+1,$b[Db+2]=Ma+3,$b[Db+3]=Ma+1,$b[Db+4]=Ma+2,$b[Db+5]=Ma+3,Db+=6,xb[ob]=Ma,xb[ob+1]=Ma+1,xb[ob+2]=Ma,xb[ob+3]=Ma+3,xb[ob+4]=Ma+1,xb[ob+5]=Ma+2,xb[ob+6]=Ma+2,xb[ob+7]=Ma+3,ob+=8,Ma+=4;j.bindBuffer(j.ELEMENT_ARRAY_BUFFER,ra.__webglFaceBuffer);j.bufferData(j.ELEMENT_ARRAY_BUFFER,$b,Oa);j.bindBuffer(j.ELEMENT_ARRAY_BUFFER,ra.__webglLineBuffer);j.bufferData(j.ELEMENT_ARRAY_BUFFER,
-xb,Oa)}if(nd){va=0;for(ec=nd.length;va<ec;va++)if(u=nd[va],u.__original.needsUpdate){w=0;if(1===u.size)if(void 0===u.boundTo||"vertices"===u.boundTo){D=0;for(V=ta.length;D<V;D++)P=lb[ta[D]],u.array[w]=u.value[P.a],u.array[w+1]=u.value[P.b],u.array[w+2]=u.value[P.c],w+=3;D=0;for(V=ua.length;D<V;D++)P=lb[ua[D]],u.array[w]=u.value[P.a],u.array[w+1]=u.value[P.b],u.array[w+2]=u.value[P.c],u.array[w+3]=u.value[P.d],w+=4}else{if("faces"===u.boundTo){D=0;for(V=ta.length;D<V;D++)xa=u.value[ta[D]],u.array[w]=
-xa,u.array[w+1]=xa,u.array[w+2]=xa,w+=3;D=0;for(V=ua.length;D<V;D++)xa=u.value[ua[D]],u.array[w]=xa,u.array[w+1]=xa,u.array[w+2]=xa,u.array[w+3]=xa,w+=4}}else if(2===u.size)if(void 0===u.boundTo||"vertices"===u.boundTo){D=0;for(V=ta.length;D<V;D++)P=lb[ta[D]],R=u.value[P.a],S=u.value[P.b],T=u.value[P.c],u.array[w]=R.x,u.array[w+1]=R.y,u.array[w+2]=S.x,u.array[w+3]=S.y,u.array[w+4]=T.x,u.array[w+5]=T.y,w+=6;D=0;for(V=ua.length;D<V;D++)P=lb[ua[D]],R=u.value[P.a],S=u.value[P.b],T=u.value[P.c],oa=u.value[P.d],
-u.array[w]=R.x,u.array[w+1]=R.y,u.array[w+2]=S.x,u.array[w+3]=S.y,u.array[w+4]=T.x,u.array[w+5]=T.y,u.array[w+6]=oa.x,u.array[w+7]=oa.y,w+=8}else{if("faces"===u.boundTo){D=0;for(V=ta.length;D<V;D++)T=S=R=xa=u.value[ta[D]],u.array[w]=R.x,u.array[w+1]=R.y,u.array[w+2]=S.x,u.array[w+3]=S.y,u.array[w+4]=T.x,u.array[w+5]=T.y,w+=6;D=0;for(V=ua.length;D<V;D++)oa=T=S=R=xa=u.value[ua[D]],u.array[w]=R.x,u.array[w+1]=R.y,u.array[w+2]=S.x,u.array[w+3]=S.y,u.array[w+4]=T.x,u.array[w+5]=T.y,u.array[w+6]=oa.x,u.array[w+
-7]=oa.y,w+=8}}else if(3===u.size){var $;$="c"===u.type?["r","g","b"]:["x","y","z"];if(void 0===u.boundTo||"vertices"===u.boundTo){D=0;for(V=ta.length;D<V;D++)P=lb[ta[D]],R=u.value[P.a],S=u.value[P.b],T=u.value[P.c],u.array[w]=R[$[0]],u.array[w+1]=R[$[1]],u.array[w+2]=R[$[2]],u.array[w+3]=S[$[0]],u.array[w+4]=S[$[1]],u.array[w+5]=S[$[2]],u.array[w+6]=T[$[0]],u.array[w+7]=T[$[1]],u.array[w+8]=T[$[2]],w+=9;D=0;for(V=ua.length;D<V;D++)P=lb[ua[D]],R=u.value[P.a],S=u.value[P.b],T=u.value[P.c],oa=u.value[P.d],
-u.array[w]=R[$[0]],u.array[w+1]=R[$[1]],u.array[w+2]=R[$[2]],u.array[w+3]=S[$[0]],u.array[w+4]=S[$[1]],u.array[w+5]=S[$[2]],u.array[w+6]=T[$[0]],u.array[w+7]=T[$[1]],u.array[w+8]=T[$[2]],u.array[w+9]=oa[$[0]],u.array[w+10]=oa[$[1]],u.array[w+11]=oa[$[2]],w+=12}else if("faces"===u.boundTo){D=0;for(V=ta.length;D<V;D++)T=S=R=xa=u.value[ta[D]],u.array[w]=R[$[0]],u.array[w+1]=R[$[1]],u.array[w+2]=R[$[2]],u.array[w+3]=S[$[0]],u.array[w+4]=S[$[1]],u.array[w+5]=S[$[2]],u.array[w+6]=T[$[0]],u.array[w+7]=T[$[1]],
-u.array[w+8]=T[$[2]],w+=9;D=0;for(V=ua.length;D<V;D++)oa=T=S=R=xa=u.value[ua[D]],u.array[w]=R[$[0]],u.array[w+1]=R[$[1]],u.array[w+2]=R[$[2]],u.array[w+3]=S[$[0]],u.array[w+4]=S[$[1]],u.array[w+5]=S[$[2]],u.array[w+6]=T[$[0]],u.array[w+7]=T[$[1]],u.array[w+8]=T[$[2]],u.array[w+9]=oa[$[0]],u.array[w+10]=oa[$[1]],u.array[w+11]=oa[$[2]],w+=12}else if("faceVertices"===u.boundTo){D=0;for(V=ta.length;D<V;D++)xa=u.value[ta[D]],R=xa[0],S=xa[1],T=xa[2],u.array[w]=R[$[0]],u.array[w+1]=R[$[1]],u.array[w+2]=
-R[$[2]],u.array[w+3]=S[$[0]],u.array[w+4]=S[$[1]],u.array[w+5]=S[$[2]],u.array[w+6]=T[$[0]],u.array[w+7]=T[$[1]],u.array[w+8]=T[$[2]],w+=9;D=0;for(V=ua.length;D<V;D++)xa=u.value[ua[D]],R=xa[0],S=xa[1],T=xa[2],oa=xa[3],u.array[w]=R[$[0]],u.array[w+1]=R[$[1]],u.array[w+2]=R[$[2]],u.array[w+3]=S[$[0]],u.array[w+4]=S[$[1]],u.array[w+5]=S[$[2]],u.array[w+6]=T[$[0]],u.array[w+7]=T[$[1]],u.array[w+8]=T[$[2]],u.array[w+9]=oa[$[0]],u.array[w+10]=oa[$[1]],u.array[w+11]=oa[$[2]],w+=12}}else if(4===u.size)if(void 0===
-u.boundTo||"vertices"===u.boundTo){D=0;for(V=ta.length;D<V;D++)P=lb[ta[D]],R=u.value[P.a],S=u.value[P.b],T=u.value[P.c],u.array[w]=R.x,u.array[w+1]=R.y,u.array[w+2]=R.z,u.array[w+3]=R.w,u.array[w+4]=S.x,u.array[w+5]=S.y,u.array[w+6]=S.z,u.array[w+7]=S.w,u.array[w+8]=T.x,u.array[w+9]=T.y,u.array[w+10]=T.z,u.array[w+11]=T.w,w+=12;D=0;for(V=ua.length;D<V;D++)P=lb[ua[D]],R=u.value[P.a],S=u.value[P.b],T=u.value[P.c],oa=u.value[P.d],u.array[w]=R.x,u.array[w+1]=R.y,u.array[w+2]=R.z,u.array[w+3]=R.w,u.array[w+
-4]=S.x,u.array[w+5]=S.y,u.array[w+6]=S.z,u.array[w+7]=S.w,u.array[w+8]=T.x,u.array[w+9]=T.y,u.array[w+10]=T.z,u.array[w+11]=T.w,u.array[w+12]=oa.x,u.array[w+13]=oa.y,u.array[w+14]=oa.z,u.array[w+15]=oa.w,w+=16}else if("faces"===u.boundTo){D=0;for(V=ta.length;D<V;D++)T=S=R=xa=u.value[ta[D]],u.array[w]=R.x,u.array[w+1]=R.y,u.array[w+2]=R.z,u.array[w+3]=R.w,u.array[w+4]=S.x,u.array[w+5]=S.y,u.array[w+6]=S.z,u.array[w+7]=S.w,u.array[w+8]=T.x,u.array[w+9]=T.y,u.array[w+10]=T.z,u.array[w+11]=T.w,w+=12;
-D=0;for(V=ua.length;D<V;D++)oa=T=S=R=xa=u.value[ua[D]],u.array[w]=R.x,u.array[w+1]=R.y,u.array[w+2]=R.z,u.array[w+3]=R.w,u.array[w+4]=S.x,u.array[w+5]=S.y,u.array[w+6]=S.z,u.array[w+7]=S.w,u.array[w+8]=T.x,u.array[w+9]=T.y,u.array[w+10]=T.z,u.array[w+11]=T.w,u.array[w+12]=oa.x,u.array[w+13]=oa.y,u.array[w+14]=oa.z,u.array[w+15]=oa.w,w+=16}else if("faceVertices"===u.boundTo){D=0;for(V=ta.length;D<V;D++)xa=u.value[ta[D]],R=xa[0],S=xa[1],T=xa[2],u.array[w]=R.x,u.array[w+1]=R.y,u.array[w+2]=R.z,u.array[w+
-3]=R.w,u.array[w+4]=S.x,u.array[w+5]=S.y,u.array[w+6]=S.z,u.array[w+7]=S.w,u.array[w+8]=T.x,u.array[w+9]=T.y,u.array[w+10]=T.z,u.array[w+11]=T.w,w+=12;D=0;for(V=ua.length;D<V;D++)xa=u.value[ua[D]],R=xa[0],S=xa[1],T=xa[2],oa=xa[3],u.array[w]=R.x,u.array[w+1]=R.y,u.array[w+2]=R.z,u.array[w+3]=R.w,u.array[w+4]=S.x,u.array[w+5]=S.y,u.array[w+6]=S.z,u.array[w+7]=S.w,u.array[w+8]=T.x,u.array[w+9]=T.y,u.array[w+10]=T.z,u.array[w+11]=T.w,u.array[w+12]=oa.x,u.array[w+13]=oa.y,u.array[w+14]=oa.z,u.array[w+
-15]=oa.w,w+=16}j.bindBuffer(j.ARRAY_BUFFER,u.buffer);j.bufferData(j.ARRAY_BUFFER,u.array,Oa)}}Ta&&(delete ra.__inittedArrays,delete ra.__colorArray,delete ra.__normalArray,delete ra.__tangentArray,delete ra.__uvArray,delete ra.__uv2Array,delete ra.__faceArray,delete ra.__vertexArray,delete ra.__lineArray,delete ra.__skinIndexArray,delete ra.__skinWeightArray)}}O.verticesNeedUpdate=!1;O.morphTargetsNeedUpdate=!1;O.elementsNeedUpdate=!1;O.uvsNeedUpdate=!1;O.normalsNeedUpdate=!1;O.colorsNeedUpdate=!1;
-O.tangentsNeedUpdate=!1;O.buffersNeedUpdate=!1;ha.attributes&&v(ha)}else if(ka instanceof THREE.Ribbon){ha=e(ka,O);ab=ha.attributes&&y(ha);if(O.verticesNeedUpdate||O.colorsNeedUpdate||O.normalsNeedUpdate||ab){var Fb=O,Pc=j.DYNAMIC_DRAW,Ec=void 0,Fc=void 0,Gc=void 0,Qc=void 0,ya=void 0,Rc=void 0,Sc=void 0,Tc=void 0,wd=void 0,ib=void 0,yc=void 0,Ca=void 0,tb=void 0,xd=Fb.vertices,yd=Fb.colors,zd=Fb.normals,fd=xd.length,gd=yd.length,hd=zd.length,Uc=Fb.__vertexArray,Vc=Fb.__colorArray,Wc=Fb.__normalArray,
-id=Fb.colorsNeedUpdate,jd=Fb.normalsNeedUpdate,qd=Fb.__webglCustomAttributesList;if(Fb.verticesNeedUpdate){for(Ec=0;Ec<fd;Ec++)Qc=xd[Ec],ya=3*Ec,Uc[ya]=Qc.x,Uc[ya+1]=Qc.y,Uc[ya+2]=Qc.z;j.bindBuffer(j.ARRAY_BUFFER,Fb.__webglVertexBuffer);j.bufferData(j.ARRAY_BUFFER,Uc,Pc)}if(id){for(Fc=0;Fc<gd;Fc++)Rc=yd[Fc],ya=3*Fc,Vc[ya]=Rc.r,Vc[ya+1]=Rc.g,Vc[ya+2]=Rc.b;j.bindBuffer(j.ARRAY_BUFFER,Fb.__webglColorBuffer);j.bufferData(j.ARRAY_BUFFER,Vc,Pc)}if(jd){for(Gc=0;Gc<hd;Gc++)Sc=zd[Gc],ya=3*Gc,Wc[ya]=Sc.x,Wc[ya+
-1]=Sc.y,Wc[ya+2]=Sc.z;j.bindBuffer(j.ARRAY_BUFFER,Fb.__webglNormalBuffer);j.bufferData(j.ARRAY_BUFFER,Wc,Pc)}if(qd){Tc=0;for(wd=qd.length;Tc<wd;Tc++)if(Ca=qd[Tc],Ca.needsUpdate&&(void 0===Ca.boundTo||"vertices"===Ca.boundTo)){ya=0;yc=Ca.value.length;if(1===Ca.size)for(ib=0;ib<yc;ib++)Ca.array[ib]=Ca.value[ib];else if(2===Ca.size)for(ib=0;ib<yc;ib++)tb=Ca.value[ib],Ca.array[ya]=tb.x,Ca.array[ya+1]=tb.y,ya+=2;else if(3===Ca.size)if("c"===Ca.type)for(ib=0;ib<yc;ib++)tb=Ca.value[ib],Ca.array[ya]=tb.r,
-Ca.array[ya+1]=tb.g,Ca.array[ya+2]=tb.b,ya+=3;else for(ib=0;ib<yc;ib++)tb=Ca.value[ib],Ca.array[ya]=tb.x,Ca.array[ya+1]=tb.y,Ca.array[ya+2]=tb.z,ya+=3;else if(4===Ca.size)for(ib=0;ib<yc;ib++)tb=Ca.value[ib],Ca.array[ya]=tb.x,Ca.array[ya+1]=tb.y,Ca.array[ya+2]=tb.z,Ca.array[ya+3]=tb.w,ya+=4;j.bindBuffer(j.ARRAY_BUFFER,Ca.buffer);j.bufferData(j.ARRAY_BUFFER,Ca.array,Pc)}}}O.verticesNeedUpdate=!1;O.colorsNeedUpdate=!1;O.normalsNeedUpdate=!1;ha.attributes&&v(ha)}else if(ka instanceof THREE.Line)if(O instanceof
-THREE.BufferGeometry)(O.verticesNeedUpdate||O.colorsNeedUpdate)&&i(O,j.DYNAMIC_DRAW,!O.dynamic),O.verticesNeedUpdate=!1,O.colorsNeedUpdate=!1;else{ha=e(ka,O);ab=ha.attributes&&y(ha);if(O.verticesNeedUpdate||O.colorsNeedUpdate||O.lineDistancesNeedUpdate||ab){var Gb=O,Xc=j.DYNAMIC_DRAW,Hc=void 0,Ic=void 0,Jc=void 0,Yc=void 0,Ja=void 0,Zc=void 0,Ad=Gb.vertices,Bd=Gb.colors,Cd=Gb.lineDistances,kd=Ad.length,Id=Bd.length,Jd=Cd.length,$c=Gb.__vertexArray,ad=Gb.__colorArray,Dd=Gb.__lineDistanceArray,Kd=Gb.colorsNeedUpdate,
-Ld=Gb.lineDistancesNeedUpdate,rd=Gb.__webglCustomAttributesList,bd=void 0,Ed=void 0,jb=void 0,zc=void 0,ub=void 0,Da=void 0;if(Gb.verticesNeedUpdate){for(Hc=0;Hc<kd;Hc++)Yc=Ad[Hc],Ja=3*Hc,$c[Ja]=Yc.x,$c[Ja+1]=Yc.y,$c[Ja+2]=Yc.z;j.bindBuffer(j.ARRAY_BUFFER,Gb.__webglVertexBuffer);j.bufferData(j.ARRAY_BUFFER,$c,Xc)}if(Kd){for(Ic=0;Ic<Id;Ic++)Zc=Bd[Ic],Ja=3*Ic,ad[Ja]=Zc.r,ad[Ja+1]=Zc.g,ad[Ja+2]=Zc.b;j.bindBuffer(j.ARRAY_BUFFER,Gb.__webglColorBuffer);j.bufferData(j.ARRAY_BUFFER,ad,Xc)}if(Ld){for(Jc=0;Jc<
-Jd;Jc++)Dd[Jc]=Cd[Jc];j.bindBuffer(j.ARRAY_BUFFER,Gb.__webglLineDistanceBuffer);j.bufferData(j.ARRAY_BUFFER,Dd,Xc)}if(rd){bd=0;for(Ed=rd.length;bd<Ed;bd++)if(Da=rd[bd],Da.needsUpdate&&(void 0===Da.boundTo||"vertices"===Da.boundTo)){Ja=0;zc=Da.value.length;if(1===Da.size)for(jb=0;jb<zc;jb++)Da.array[jb]=Da.value[jb];else if(2===Da.size)for(jb=0;jb<zc;jb++)ub=Da.value[jb],Da.array[Ja]=ub.x,Da.array[Ja+1]=ub.y,Ja+=2;else if(3===Da.size)if("c"===Da.type)for(jb=0;jb<zc;jb++)ub=Da.value[jb],Da.array[Ja]=
-ub.r,Da.array[Ja+1]=ub.g,Da.array[Ja+2]=ub.b,Ja+=3;else for(jb=0;jb<zc;jb++)ub=Da.value[jb],Da.array[Ja]=ub.x,Da.array[Ja+1]=ub.y,Da.array[Ja+2]=ub.z,Ja+=3;else if(4===Da.size)for(jb=0;jb<zc;jb++)ub=Da.value[jb],Da.array[Ja]=ub.x,Da.array[Ja+1]=ub.y,Da.array[Ja+2]=ub.z,Da.array[Ja+3]=ub.w,Ja+=4;j.bindBuffer(j.ARRAY_BUFFER,Da.buffer);j.bufferData(j.ARRAY_BUFFER,Da.array,Xc)}}}O.verticesNeedUpdate=!1;O.colorsNeedUpdate=!1;O.lineDistancesNeedUpdate=!1;ha.attributes&&v(ha)}else if(ka instanceof THREE.ParticleSystem)if(O instanceof
-THREE.BufferGeometry)(O.verticesNeedUpdate||O.colorsNeedUpdate)&&i(O,j.DYNAMIC_DRAW,!O.dynamic),O.verticesNeedUpdate=!1,O.colorsNeedUpdate=!1;else{ha=e(ka,O);ab=ha.attributes&&y(ha);if(O.verticesNeedUpdate||O.colorsNeedUpdate||ka.sortParticles||ab){var ac=O,sd=j.DYNAMIC_DRAW,Kc=ka,vb=void 0,bc=void 0,cc=void 0,fa=void 0,dc=void 0,pc=void 0,cd=ac.vertices,td=cd.length,ud=ac.colors,Fd=ud.length,uc=ac.__vertexArray,vc=ac.__colorArray,ic=ac.__sortArray,Gd=ac.verticesNeedUpdate,Hd=ac.colorsNeedUpdate,
-jc=ac.__webglCustomAttributesList,Jb=void 0,Ac=void 0,na=void 0,Kb=void 0,Aa=void 0,ca=void 0;if(Kc.sortParticles){wc.copy(rb);wc.multiply(Kc.matrixWorld);for(vb=0;vb<td;vb++)cc=cd[vb],Ra.copy(cc),Ra.applyProjection(wc),ic[vb]=[Ra.z,vb];ic.sort(n);for(vb=0;vb<td;vb++)cc=cd[ic[vb][1]],fa=3*vb,uc[fa]=cc.x,uc[fa+1]=cc.y,uc[fa+2]=cc.z;for(bc=0;bc<Fd;bc++)fa=3*bc,pc=ud[ic[bc][1]],vc[fa]=pc.r,vc[fa+1]=pc.g,vc[fa+2]=pc.b;if(jc){Jb=0;for(Ac=jc.length;Jb<Ac;Jb++)if(ca=jc[Jb],void 0===ca.boundTo||"vertices"===
-ca.boundTo)if(fa=0,Kb=ca.value.length,1===ca.size)for(na=0;na<Kb;na++)dc=ic[na][1],ca.array[na]=ca.value[dc];else if(2===ca.size)for(na=0;na<Kb;na++)dc=ic[na][1],Aa=ca.value[dc],ca.array[fa]=Aa.x,ca.array[fa+1]=Aa.y,fa+=2;else if(3===ca.size)if("c"===ca.type)for(na=0;na<Kb;na++)dc=ic[na][1],Aa=ca.value[dc],ca.array[fa]=Aa.r,ca.array[fa+1]=Aa.g,ca.array[fa+2]=Aa.b,fa+=3;else for(na=0;na<Kb;na++)dc=ic[na][1],Aa=ca.value[dc],ca.array[fa]=Aa.x,ca.array[fa+1]=Aa.y,ca.array[fa+2]=Aa.z,fa+=3;else if(4===
-ca.size)for(na=0;na<Kb;na++)dc=ic[na][1],Aa=ca.value[dc],ca.array[fa]=Aa.x,ca.array[fa+1]=Aa.y,ca.array[fa+2]=Aa.z,ca.array[fa+3]=Aa.w,fa+=4}}else{if(Gd)for(vb=0;vb<td;vb++)cc=cd[vb],fa=3*vb,uc[fa]=cc.x,uc[fa+1]=cc.y,uc[fa+2]=cc.z;if(Hd)for(bc=0;bc<Fd;bc++)pc=ud[bc],fa=3*bc,vc[fa]=pc.r,vc[fa+1]=pc.g,vc[fa+2]=pc.b;if(jc){Jb=0;for(Ac=jc.length;Jb<Ac;Jb++)if(ca=jc[Jb],ca.needsUpdate&&(void 0===ca.boundTo||"vertices"===ca.boundTo))if(Kb=ca.value.length,fa=0,1===ca.size)for(na=0;na<Kb;na++)ca.array[na]=
-ca.value[na];else if(2===ca.size)for(na=0;na<Kb;na++)Aa=ca.value[na],ca.array[fa]=Aa.x,ca.array[fa+1]=Aa.y,fa+=2;else if(3===ca.size)if("c"===ca.type)for(na=0;na<Kb;na++)Aa=ca.value[na],ca.array[fa]=Aa.r,ca.array[fa+1]=Aa.g,ca.array[fa+2]=Aa.b,fa+=3;else for(na=0;na<Kb;na++)Aa=ca.value[na],ca.array[fa]=Aa.x,ca.array[fa+1]=Aa.y,ca.array[fa+2]=Aa.z,fa+=3;else if(4===ca.size)for(na=0;na<Kb;na++)Aa=ca.value[na],ca.array[fa]=Aa.x,ca.array[fa+1]=Aa.y,ca.array[fa+2]=Aa.z,ca.array[fa+3]=Aa.w,fa+=4}}if(Gd||
-Kc.sortParticles)j.bindBuffer(j.ARRAY_BUFFER,ac.__webglVertexBuffer),j.bufferData(j.ARRAY_BUFFER,uc,sd);if(Hd||Kc.sortParticles)j.bindBuffer(j.ARRAY_BUFFER,ac.__webglColorBuffer),j.bufferData(j.ARRAY_BUFFER,vc,sd);if(jc){Jb=0;for(Ac=jc.length;Jb<Ac;Jb++)if(ca=jc[Jb],ca.needsUpdate||Kc.sortParticles)j.bindBuffer(j.ARRAY_BUFFER,ca.buffer),j.bufferData(j.ARRAY_BUFFER,ca.array,sd)}}O.verticesNeedUpdate=!1;O.colorsNeedUpdate=!1;ha.attributes&&v(ha)}}};this.initMaterial=function(a,b,c,d){var e,f,g,i;a.addEventListener("dispose",
-Nc);var h,k,m,n,l;a instanceof THREE.MeshDepthMaterial?l="depth":a instanceof THREE.MeshNormalMaterial?l="normal":a instanceof THREE.MeshBasicMaterial?l="basic":a instanceof THREE.MeshLambertMaterial?l="lambert":a instanceof THREE.MeshPhongMaterial?l="phong":a instanceof THREE.LineBasicMaterial?l="basic":a instanceof THREE.LineDashedMaterial?l="dashed":a instanceof THREE.ParticleBasicMaterial&&(l="particle_basic");if(l){var p=THREE.ShaderLib[l];a.uniforms=THREE.UniformsUtils.clone(p.uniforms);a.vertexShader=
-p.vertexShader;a.fragmentShader=p.fragmentShader}var q,s,r;e=g=s=r=p=0;for(f=b.length;e<f;e++)q=b[e],q.onlyShadow||(q instanceof THREE.DirectionalLight&&g++,q instanceof THREE.PointLight&&s++,q instanceof THREE.SpotLight&&r++,q instanceof THREE.HemisphereLight&&p++);e=g;f=s;g=r;i=p;p=q=0;for(r=b.length;p<r;p++)s=b[p],s.castShadow&&(s instanceof THREE.SpotLight&&q++,s instanceof THREE.DirectionalLight&&!s.shadowCascade&&q++);n=q;qc&&d&&d.useVertexTexture?m=1024:(b=j.getParameter(j.MAX_VERTEX_UNIFORM_VECTORS),
-b=Math.floor((b-20)/4),void 0!==d&&d instanceof THREE.SkinnedMesh&&(b=Math.min(d.bones.length,b),b<d.bones.length&&console.warn("WebGLRenderer: too many bones - "+d.bones.length+", this GPU supports just "+b+" (try OpenGL instead of ANGLE)")),m=b);a:{s=a.fragmentShader;r=a.vertexShader;p=a.uniforms;b=a.attributes;q=a.defines;var c={map:!!a.map,envMap:!!a.envMap,lightMap:!!a.lightMap,bumpMap:!!a.bumpMap,normalMap:!!a.normalMap,specularMap:!!a.specularMap,vertexColors:a.vertexColors,fog:c,useFog:a.fog,
-fogExp:c instanceof THREE.FogExp2,sizeAttenuation:a.sizeAttenuation,skinning:a.skinning,maxBones:m,useVertexTexture:qc&&d&&d.useVertexTexture,boneTextureWidth:d&&d.boneTextureWidth,boneTextureHeight:d&&d.boneTextureHeight,morphTargets:a.morphTargets,morphNormals:a.morphNormals,maxMorphTargets:this.maxMorphTargets,maxMorphNormals:this.maxMorphNormals,maxDirLights:e,maxPointLights:f,maxSpotLights:g,maxHemiLights:i,maxShadows:n,shadowMapEnabled:this.shadowMapEnabled&&d.receiveShadow,shadowMapType:this.shadowMapType,
-shadowMapDebug:this.shadowMapDebug,shadowMapCascade:this.shadowMapCascade,alphaTest:a.alphaTest,metal:a.metal,perPixel:a.perPixel,wrapAround:a.wrapAround,doubleSided:a.side===THREE.DoubleSide,flipSided:a.side===THREE.BackSide},t,v,y,d=[];l?d.push(l):(d.push(s),d.push(r));for(v in q)d.push(v),d.push(q[v]);for(t in c)d.push(t),d.push(c[t]);l=d.join();t=0;for(v=Na.length;t<v;t++)if(d=Na[t],d.code===l){d.usedTimes++;k=d.program;break a}t="SHADOWMAP_TYPE_BASIC";c.shadowMapType===THREE.PCFShadowMap?t="SHADOWMAP_TYPE_PCF":
-c.shadowMapType===THREE.PCFSoftShadowMap&&(t="SHADOWMAP_TYPE_PCF_SOFT");v=[];for(y in q)d=q[y],!1!==d&&(d="#define "+y+" "+d,v.push(d));d=v.join("\n");y=j.createProgram();v=["precision "+da+" float;",d,rc?"#define VERTEX_TEXTURES":"",N.gammaInput?"#define GAMMA_INPUT":"",N.gammaOutput?"#define GAMMA_OUTPUT":"",N.physicallyBasedShading?"#define PHYSICALLY_BASED_SHADING":"","#define MAX_DIR_LIGHTS "+c.maxDirLights,"#define MAX_POINT_LIGHTS "+c.maxPointLights,"#define MAX_SPOT_LIGHTS "+c.maxSpotLights,
-"#define MAX_HEMI_LIGHTS "+c.maxHemiLights,"#define MAX_SHADOWS "+c.maxShadows,"#define MAX_BONES "+c.maxBones,c.map?"#define USE_MAP":"",c.envMap?"#define USE_ENVMAP":"",c.lightMap?"#define USE_LIGHTMAP":"",c.bumpMap?"#define USE_BUMPMAP":"",c.normalMap?"#define USE_NORMALMAP":"",c.specularMap?"#define USE_SPECULARMAP":"",c.vertexColors?"#define USE_COLOR":"",c.skinning?"#define USE_SKINNING":"",c.useVertexTexture?"#define BONE_TEXTURE":"",c.boneTextureWidth?"#define N_BONE_PIXEL_X "+c.boneTextureWidth.toFixed(1):
-"",c.boneTextureHeight?"#define N_BONE_PIXEL_Y "+c.boneTextureHeight.toFixed(1):"",c.morphTargets?"#define USE_MORPHTARGETS":"",c.morphNormals?"#define USE_MORPHNORMALS":"",c.perPixel?"#define PHONG_PER_PIXEL":"",c.wrapAround?"#define WRAP_AROUND":"",c.doubleSided?"#define DOUBLE_SIDED":"",c.flipSided?"#define FLIP_SIDED":"",c.shadowMapEnabled?"#define USE_SHADOWMAP":"",c.shadowMapEnabled?"#define "+t:"",c.shadowMapDebug?"#define SHADOWMAP_DEBUG":"",c.shadowMapCascade?"#define SHADOWMAP_CASCADE":
-"",c.sizeAttenuation?"#define USE_SIZEATTENUATION":"","uniform mat4 modelMatrix;\nuniform mat4 modelViewMatrix;\nuniform mat4 projectionMatrix;\nuniform mat4 viewMatrix;\nuniform mat3 normalMatrix;\nuniform vec3 cameraPosition;\nattribute vec3 position;\nattribute vec3 normal;\nattribute vec2 uv;\nattribute vec2 uv2;\n#ifdef USE_COLOR\nattribute vec3 color;\n#endif\n#ifdef USE_MORPHTARGETS\nattribute vec3 morphTarget0;\nattribute vec3 morphTarget1;\nattribute vec3 morphTarget2;\nattribute vec3 morphTarget3;\n#ifdef USE_MORPHNORMALS\nattribute vec3 morphNormal0;\nattribute vec3 morphNormal1;\nattribute vec3 morphNormal2;\nattribute vec3 morphNormal3;\n#else\nattribute vec3 morphTarget4;\nattribute vec3 morphTarget5;\nattribute vec3 morphTarget6;\nattribute vec3 morphTarget7;\n#endif\n#endif\n#ifdef USE_SKINNING\nattribute vec4 skinIndex;\nattribute vec4 skinWeight;\n#endif\n"].join("\n");
+f.z=Ra.z))}this.sortObjects&&i.sort(m);i=a.__webglObjectsImmediate;d=0;for(e=i.length;d<e;d++)f=i[d],g=f.object,g.visible&&(B(g,b),g=f.object.material,g.transparent?(f.transparent=g,f.opaque=null):(f.opaque=g,f.transparent=null));a.overrideMaterial?(d=a.overrideMaterial,this.setBlending(d.blending,d.blendEquation,d.blendSrc,d.blendDst),this.setDepthTest(d.depthTest),this.setDepthWrite(d.depthWrite),E(d.polygonOffset,d.polygonOffsetFactor,d.polygonOffsetUnits),r(a.__webglObjects,!1,"",b,h,k,!0,d),
+p(a.__webglObjectsImmediate,"",b,h,k,!1,d)):(d=null,this.setBlending(THREE.NoBlending),r(a.__webglObjects,!0,"opaque",b,h,k,!1,d),p(a.__webglObjectsImmediate,"opaque",b,h,k,!1,d),r(a.__webglObjects,!1,"transparent",b,h,k,!0,d),p(a.__webglObjectsImmediate,"transparent",b,h,k,!0,d));s(this.renderPluginsPost,a,b);c&&(c.generateMipmaps&&c.minFilter!==THREE.NearestFilter&&c.minFilter!==THREE.LinearFilter)&&(c instanceof THREE.WebGLRenderTargetCube?(j.bindTexture(j.TEXTURE_CUBE_MAP,c.__webglTexture),j.generateMipmap(j.TEXTURE_CUBE_MAP),
+j.bindTexture(j.TEXTURE_CUBE_MAP,null)):(j.bindTexture(j.TEXTURE_2D,c.__webglTexture),j.generateMipmap(j.TEXTURE_2D),j.bindTexture(j.TEXTURE_2D,null)));this.setDepthTest(!0);this.setDepthWrite(!0)}};this.renderImmediateObject=function(a,b,c,d,e){var f=A(a,b,c,d,e);ma=-1;N.setMaterialFaces(d);e.immediateRenderCallback?e.immediateRenderCallback(f,j,Ba):e.render(function(a){N.renderBufferImmediate(a,f,d)})};this.initWebGLObjects=function(a){a.__webglObjects||(a.__webglObjects=[],a.__webglObjectsImmediate=
+[],a.__webglSprites=[],a.__webglFlares=[]);for(;a.__objectsAdded.length;){var b=a.__objectsAdded[0],k=a,l=void 0,m=void 0,p=void 0,r=void 0;if(!b.__webglInit)if(b.__webglInit=!0,b._modelViewMatrix=new THREE.Matrix4,b._normalMatrix=new THREE.Matrix3,void 0!==b.geometry&&void 0===b.geometry.__webglInit&&(b.geometry.__webglInit=!0,b.geometry.addEventListener("dispose",vd)),b instanceof THREE.Mesh)if(m=b.geometry,p=b.material,m instanceof THREE.Geometry){if(void 0===m.geometryGroups){var s=m,x=void 0,
+C=void 0,B=void 0,A=void 0,F=void 0,E=void 0,G={},I=s.morphTargets.length,J=s.morphNormals.length,K=p instanceof THREE.MeshFaceMaterial;s.geometryGroups={};x=0;for(C=s.faces.length;x<C;x++)B=s.faces[x],A=K?B.materialIndex:0,void 0===G[A]&&(G[A]={hash:A,counter:0}),E=G[A].hash+"_"+G[A].counter,void 0===s.geometryGroups[E]&&(s.geometryGroups[E]={faces3:[],faces4:[],materialIndex:A,vertices:0,numMorphTargets:I,numMorphNormals:J}),F=B instanceof THREE.Face3?3:4,65535<s.geometryGroups[E].vertices+F&&(G[A].counter+=
+1,E=G[A].hash+"_"+G[A].counter,void 0===s.geometryGroups[E]&&(s.geometryGroups[E]={faces3:[],faces4:[],materialIndex:A,vertices:0,numMorphTargets:I,numMorphNormals:J})),B instanceof THREE.Face3?s.geometryGroups[E].faces3.push(x):s.geometryGroups[E].faces4.push(x),s.geometryGroups[E].vertices+=F;s.geometryGroupsList=[];var L=void 0;for(L in s.geometryGroups)s.geometryGroups[L].id=pa++,s.geometryGroupsList.push(s.geometryGroups[L])}for(l in m.geometryGroups)if(r=m.geometryGroups[l],!r.__webglVertexBuffer){var H=
+r;H.__webglVertexBuffer=j.createBuffer();H.__webglNormalBuffer=j.createBuffer();H.__webglTangentBuffer=j.createBuffer();H.__webglColorBuffer=j.createBuffer();H.__webglUVBuffer=j.createBuffer();H.__webglUV2Buffer=j.createBuffer();H.__webglSkinIndicesBuffer=j.createBuffer();H.__webglSkinWeightsBuffer=j.createBuffer();H.__webglFaceBuffer=j.createBuffer();H.__webglLineBuffer=j.createBuffer();var M=void 0,Q=void 0;if(H.numMorphTargets){H.__webglMorphTargetsBuffers=[];M=0;for(Q=H.numMorphTargets;M<Q;M++)H.__webglMorphTargetsBuffers.push(j.createBuffer())}if(H.numMorphNormals){H.__webglMorphNormalsBuffers=
+[];M=0;for(Q=H.numMorphNormals;M<Q;M++)H.__webglMorphNormalsBuffers.push(j.createBuffer())}N.info.memory.geometries++;d(r,b);m.verticesNeedUpdate=!0;m.morphTargetsNeedUpdate=!0;m.elementsNeedUpdate=!0;m.uvsNeedUpdate=!0;m.normalsNeedUpdate=!0;m.tangentsNeedUpdate=!0;m.colorsNeedUpdate=!0}}else m instanceof THREE.BufferGeometry&&h(m);else if(b instanceof THREE.Ribbon){if(m=b.geometry,!m.__webglVertexBuffer){var U=m;U.__webglVertexBuffer=j.createBuffer();U.__webglColorBuffer=j.createBuffer();U.__webglNormalBuffer=
+j.createBuffer();N.info.memory.geometries++;var W=m,ga=b,Y=W.vertices.length;W.__vertexArray=new Float32Array(3*Y);W.__colorArray=new Float32Array(3*Y);W.__normalArray=new Float32Array(3*Y);W.__webglVertexCount=Y;c(W,ga);m.verticesNeedUpdate=!0;m.colorsNeedUpdate=!0;m.normalsNeedUpdate=!0}}else if(b instanceof THREE.Line){if(m=b.geometry,!m.__webglVertexBuffer)if(m instanceof THREE.Geometry){var Z=m;Z.__webglVertexBuffer=j.createBuffer();Z.__webglColorBuffer=j.createBuffer();Z.__webglLineDistanceBuffer=
+j.createBuffer();N.info.memory.geometries++;var X=m,ba=b,ma=X.vertices.length;X.__vertexArray=new Float32Array(3*ma);X.__colorArray=new Float32Array(3*ma);X.__lineDistanceArray=new Float32Array(1*ma);X.__webglLineCount=ma;c(X,ba);m.verticesNeedUpdate=!0;m.colorsNeedUpdate=!0;m.lineDistancesNeedUpdate=!0}else m instanceof THREE.BufferGeometry&&h(m)}else if(b instanceof THREE.ParticleSystem&&(m=b.geometry,!m.__webglVertexBuffer))if(m instanceof THREE.Geometry){var da=m;da.__webglVertexBuffer=j.createBuffer();
+da.__webglColorBuffer=j.createBuffer();N.info.memory.geometries++;var ea=m,Na=b,ia=ea.vertices.length;ea.__vertexArray=new Float32Array(3*ia);ea.__colorArray=new Float32Array(3*ia);ea.__sortArray=[];ea.__webglParticleCount=ia;c(ea,Na);m.verticesNeedUpdate=!0;m.colorsNeedUpdate=!0}else m instanceof THREE.BufferGeometry&&h(m);if(!b.__webglActive){if(b instanceof THREE.Mesh)if(m=b.geometry,m instanceof THREE.BufferGeometry)q(k.__webglObjects,m,b);else{if(m instanceof THREE.Geometry)for(l in m.geometryGroups)r=
+m.geometryGroups[l],q(k.__webglObjects,r,b)}else b instanceof THREE.Ribbon||b instanceof THREE.Line||b instanceof THREE.ParticleSystem?(m=b.geometry,q(k.__webglObjects,m,b)):b instanceof THREE.ImmediateRenderObject||b.immediateRenderCallback?k.__webglObjectsImmediate.push({object:b,opaque:null,transparent:null}):b instanceof THREE.Sprite?k.__webglSprites.push(b):b instanceof THREE.LensFlare&&k.__webglFlares.push(b);b.__webglActive=!0}a.__objectsAdded.splice(0,1)}for(;a.__objectsRemoved.length;){var ja=
+a.__objectsRemoved[0],pb=a;ja instanceof THREE.Mesh||ja instanceof THREE.ParticleSystem||ja instanceof THREE.Ribbon||ja instanceof THREE.Line?z(pb.__webglObjects,ja):ja instanceof THREE.Sprite?t(pb.__webglSprites,ja):ja instanceof THREE.LensFlare?t(pb.__webglFlares,ja):(ja instanceof THREE.ImmediateRenderObject||ja.immediateRenderCallback)&&z(pb.__webglObjectsImmediate,ja);ja.__webglActive=!1;a.__objectsRemoved.splice(0,1)}for(var qa=0,sa=a.__webglObjects.length;qa<sa;qa++){var ka=a.__webglObjects[qa].object,
+O=ka.geometry,Ea=void 0,ab=void 0,ha=void 0;if(ka instanceof THREE.Mesh)if(O instanceof THREE.BufferGeometry)(O.verticesNeedUpdate||O.elementsNeedUpdate||O.uvsNeedUpdate||O.normalsNeedUpdate||O.colorsNeedUpdate||O.tangentsNeedUpdate)&&i(O,j.DYNAMIC_DRAW,!O.dynamic),O.verticesNeedUpdate=!1,O.elementsNeedUpdate=!1,O.uvsNeedUpdate=!1,O.normalsNeedUpdate=!1,O.colorsNeedUpdate=!1,O.tangentsNeedUpdate=!1;else{for(var wa=0,Fa=O.geometryGroupsList.length;wa<Fa;wa++)if(Ea=O.geometryGroupsList[wa],ha=e(ka,
+Ea),O.buffersNeedUpdate&&d(Ea,ka),ab=ha.attributes&&y(ha),O.verticesNeedUpdate||O.morphTargetsNeedUpdate||O.elementsNeedUpdate||O.uvsNeedUpdate||O.normalsNeedUpdate||O.colorsNeedUpdate||O.tangentsNeedUpdate||ab){var ra=Ea,Ka=ka,Oa=j.DYNAMIC_DRAW,Ta=!O.dynamic,Ba=ha;if(ra.__inittedArrays){var Wa=f(Ba),bb=Ba.vertexColors?Ba.vertexColors:!1,cb=g(Ba),Xa=Wa===THREE.SmoothShading,D=void 0,V=void 0,Pa=void 0,P=void 0,Ya=void 0,Va=void 0,Qa=void 0,mb=void 0,db=void 0,nb=void 0,qb=void 0,R=void 0,S=void 0,
+T=void 0,oa=void 0,Lb=void 0,Mb=void 0,Nb=void 0,wb=void 0,Ob=void 0,Pb=void 0,Qb=void 0,yb=void 0,Rb=void 0,Sb=void 0,Tb=void 0,zb=void 0,Ub=void 0,Vb=void 0,Wb=void 0,Hb=void 0,Xb=void 0,Yb=void 0,Zb=void 0,Ib=void 0,va=void 0,ec=void 0,lc=void 0,Ab=void 0,xc=void 0,eb=void 0,kc=void 0,Za=void 0,$a=void 0,mc=void 0,fc=void 0,Ma=0,Ua=0,gc=0,hc=0,Db=0,kb=0,za=0,ob=0,Sa=0,aa=0,la=0,w=0,xa=void 0,fb=ra.__vertexArray,Cc=ra.__uvArray,Dc=ra.__uv2Array,Eb=ra.__normalArray,Ga=ra.__tangentArray,gb=ra.__colorArray,
+Ha=ra.__skinIndexArray,Ia=ra.__skinWeightArray,qc=ra.__morphTargetsArrays,rc=ra.__morphNormalsArrays,nd=ra.__webglCustomAttributesList,u=void 0,$b=ra.__faceArray,xb=ra.__lineArray,sb=Ka.geometry,Lc=sb.elementsNeedUpdate,Bc=sb.uvsNeedUpdate,Mc=sb.normalsNeedUpdate,Nc=sb.tangentsNeedUpdate,dd=sb.colorsNeedUpdate,ed=sb.morphTargetsNeedUpdate,sc=sb.vertices,ta=ra.faces3,ua=ra.faces4,lb=sb.faces,od=sb.faceVertexUvs[0],pd=sb.faceVertexUvs[1],tc=sb.skinIndices,nc=sb.skinWeights,oc=sb.morphTargets,Oc=sb.morphNormals;
+if(sb.verticesNeedUpdate){D=0;for(V=ta.length;D<V;D++)P=lb[ta[D]],R=sc[P.a],S=sc[P.b],T=sc[P.c],fb[Ua]=R.x,fb[Ua+1]=R.y,fb[Ua+2]=R.z,fb[Ua+3]=S.x,fb[Ua+4]=S.y,fb[Ua+5]=S.z,fb[Ua+6]=T.x,fb[Ua+7]=T.y,fb[Ua+8]=T.z,Ua+=9;D=0;for(V=ua.length;D<V;D++)P=lb[ua[D]],R=sc[P.a],S=sc[P.b],T=sc[P.c],oa=sc[P.d],fb[Ua]=R.x,fb[Ua+1]=R.y,fb[Ua+2]=R.z,fb[Ua+3]=S.x,fb[Ua+4]=S.y,fb[Ua+5]=S.z,fb[Ua+6]=T.x,fb[Ua+7]=T.y,fb[Ua+8]=T.z,fb[Ua+9]=oa.x,fb[Ua+10]=oa.y,fb[Ua+11]=oa.z,Ua+=12;j.bindBuffer(j.ARRAY_BUFFER,ra.__webglVertexBuffer);
+j.bufferData(j.ARRAY_BUFFER,fb,Oa)}if(ed){eb=0;for(kc=oc.length;eb<kc;eb++){D=la=0;for(V=ta.length;D<V;D++)mc=ta[D],P=lb[mc],R=oc[eb].vertices[P.a],S=oc[eb].vertices[P.b],T=oc[eb].vertices[P.c],Za=qc[eb],Za[la]=R.x,Za[la+1]=R.y,Za[la+2]=R.z,Za[la+3]=S.x,Za[la+4]=S.y,Za[la+5]=S.z,Za[la+6]=T.x,Za[la+7]=T.y,Za[la+8]=T.z,Ba.morphNormals&&(Xa?(fc=Oc[eb].vertexNormals[mc],Ob=fc.a,Pb=fc.b,Qb=fc.c):Qb=Pb=Ob=Oc[eb].faceNormals[mc],$a=rc[eb],$a[la]=Ob.x,$a[la+1]=Ob.y,$a[la+2]=Ob.z,$a[la+3]=Pb.x,$a[la+4]=Pb.y,
+$a[la+5]=Pb.z,$a[la+6]=Qb.x,$a[la+7]=Qb.y,$a[la+8]=Qb.z),la+=9;D=0;for(V=ua.length;D<V;D++)mc=ua[D],P=lb[mc],R=oc[eb].vertices[P.a],S=oc[eb].vertices[P.b],T=oc[eb].vertices[P.c],oa=oc[eb].vertices[P.d],Za=qc[eb],Za[la]=R.x,Za[la+1]=R.y,Za[la+2]=R.z,Za[la+3]=S.x,Za[la+4]=S.y,Za[la+5]=S.z,Za[la+6]=T.x,Za[la+7]=T.y,Za[la+8]=T.z,Za[la+9]=oa.x,Za[la+10]=oa.y,Za[la+11]=oa.z,Ba.morphNormals&&(Xa?(fc=Oc[eb].vertexNormals[mc],Ob=fc.a,Pb=fc.b,Qb=fc.c,yb=fc.d):yb=Qb=Pb=Ob=Oc[eb].faceNormals[mc],$a=rc[eb],$a[la]=
+Ob.x,$a[la+1]=Ob.y,$a[la+2]=Ob.z,$a[la+3]=Pb.x,$a[la+4]=Pb.y,$a[la+5]=Pb.z,$a[la+6]=Qb.x,$a[la+7]=Qb.y,$a[la+8]=Qb.z,$a[la+9]=yb.x,$a[la+10]=yb.y,$a[la+11]=yb.z),la+=12;j.bindBuffer(j.ARRAY_BUFFER,ra.__webglMorphTargetsBuffers[eb]);j.bufferData(j.ARRAY_BUFFER,qc[eb],Oa);Ba.morphNormals&&(j.bindBuffer(j.ARRAY_BUFFER,ra.__webglMorphNormalsBuffers[eb]),j.bufferData(j.ARRAY_BUFFER,rc[eb],Oa))}}if(nc.length){D=0;for(V=ta.length;D<V;D++)P=lb[ta[D]],Ub=nc[P.a],Vb=nc[P.b],Wb=nc[P.c],Ia[aa]=Ub.x,Ia[aa+1]=
+Ub.y,Ia[aa+2]=Ub.z,Ia[aa+3]=Ub.w,Ia[aa+4]=Vb.x,Ia[aa+5]=Vb.y,Ia[aa+6]=Vb.z,Ia[aa+7]=Vb.w,Ia[aa+8]=Wb.x,Ia[aa+9]=Wb.y,Ia[aa+10]=Wb.z,Ia[aa+11]=Wb.w,Xb=tc[P.a],Yb=tc[P.b],Zb=tc[P.c],Ha[aa]=Xb.x,Ha[aa+1]=Xb.y,Ha[aa+2]=Xb.z,Ha[aa+3]=Xb.w,Ha[aa+4]=Yb.x,Ha[aa+5]=Yb.y,Ha[aa+6]=Yb.z,Ha[aa+7]=Yb.w,Ha[aa+8]=Zb.x,Ha[aa+9]=Zb.y,Ha[aa+10]=Zb.z,Ha[aa+11]=Zb.w,aa+=12;D=0;for(V=ua.length;D<V;D++)P=lb[ua[D]],Ub=nc[P.a],Vb=nc[P.b],Wb=nc[P.c],Hb=nc[P.d],Ia[aa]=Ub.x,Ia[aa+1]=Ub.y,Ia[aa+2]=Ub.z,Ia[aa+3]=Ub.w,Ia[aa+4]=
+Vb.x,Ia[aa+5]=Vb.y,Ia[aa+6]=Vb.z,Ia[aa+7]=Vb.w,Ia[aa+8]=Wb.x,Ia[aa+9]=Wb.y,Ia[aa+10]=Wb.z,Ia[aa+11]=Wb.w,Ia[aa+12]=Hb.x,Ia[aa+13]=Hb.y,Ia[aa+14]=Hb.z,Ia[aa+15]=Hb.w,Xb=tc[P.a],Yb=tc[P.b],Zb=tc[P.c],Ib=tc[P.d],Ha[aa]=Xb.x,Ha[aa+1]=Xb.y,Ha[aa+2]=Xb.z,Ha[aa+3]=Xb.w,Ha[aa+4]=Yb.x,Ha[aa+5]=Yb.y,Ha[aa+6]=Yb.z,Ha[aa+7]=Yb.w,Ha[aa+8]=Zb.x,Ha[aa+9]=Zb.y,Ha[aa+10]=Zb.z,Ha[aa+11]=Zb.w,Ha[aa+12]=Ib.x,Ha[aa+13]=Ib.y,Ha[aa+14]=Ib.z,Ha[aa+15]=Ib.w,aa+=16;0<aa&&(j.bindBuffer(j.ARRAY_BUFFER,ra.__webglSkinIndicesBuffer),
+j.bufferData(j.ARRAY_BUFFER,Ha,Oa),j.bindBuffer(j.ARRAY_BUFFER,ra.__webglSkinWeightsBuffer),j.bufferData(j.ARRAY_BUFFER,Ia,Oa))}if(dd&&bb){D=0;for(V=ta.length;D<V;D++)P=lb[ta[D]],Qa=P.vertexColors,mb=P.color,3===Qa.length&&bb===THREE.VertexColors?(Rb=Qa[0],Sb=Qa[1],Tb=Qa[2]):Tb=Sb=Rb=mb,gb[Sa]=Rb.r,gb[Sa+1]=Rb.g,gb[Sa+2]=Rb.b,gb[Sa+3]=Sb.r,gb[Sa+4]=Sb.g,gb[Sa+5]=Sb.b,gb[Sa+6]=Tb.r,gb[Sa+7]=Tb.g,gb[Sa+8]=Tb.b,Sa+=9;D=0;for(V=ua.length;D<V;D++)P=lb[ua[D]],Qa=P.vertexColors,mb=P.color,4===Qa.length&&
+bb===THREE.VertexColors?(Rb=Qa[0],Sb=Qa[1],Tb=Qa[2],zb=Qa[3]):zb=Tb=Sb=Rb=mb,gb[Sa]=Rb.r,gb[Sa+1]=Rb.g,gb[Sa+2]=Rb.b,gb[Sa+3]=Sb.r,gb[Sa+4]=Sb.g,gb[Sa+5]=Sb.b,gb[Sa+6]=Tb.r,gb[Sa+7]=Tb.g,gb[Sa+8]=Tb.b,gb[Sa+9]=zb.r,gb[Sa+10]=zb.g,gb[Sa+11]=zb.b,Sa+=12;0<Sa&&(j.bindBuffer(j.ARRAY_BUFFER,ra.__webglColorBuffer),j.bufferData(j.ARRAY_BUFFER,gb,Oa))}if(Nc&&sb.hasTangents){D=0;for(V=ta.length;D<V;D++)P=lb[ta[D]],db=P.vertexTangents,Lb=db[0],Mb=db[1],Nb=db[2],Ga[za]=Lb.x,Ga[za+1]=Lb.y,Ga[za+2]=Lb.z,Ga[za+
+3]=Lb.w,Ga[za+4]=Mb.x,Ga[za+5]=Mb.y,Ga[za+6]=Mb.z,Ga[za+7]=Mb.w,Ga[za+8]=Nb.x,Ga[za+9]=Nb.y,Ga[za+10]=Nb.z,Ga[za+11]=Nb.w,za+=12;D=0;for(V=ua.length;D<V;D++)P=lb[ua[D]],db=P.vertexTangents,Lb=db[0],Mb=db[1],Nb=db[2],wb=db[3],Ga[za]=Lb.x,Ga[za+1]=Lb.y,Ga[za+2]=Lb.z,Ga[za+3]=Lb.w,Ga[za+4]=Mb.x,Ga[za+5]=Mb.y,Ga[za+6]=Mb.z,Ga[za+7]=Mb.w,Ga[za+8]=Nb.x,Ga[za+9]=Nb.y,Ga[za+10]=Nb.z,Ga[za+11]=Nb.w,Ga[za+12]=wb.x,Ga[za+13]=wb.y,Ga[za+14]=wb.z,Ga[za+15]=wb.w,za+=16;j.bindBuffer(j.ARRAY_BUFFER,ra.__webglTangentBuffer);
+j.bufferData(j.ARRAY_BUFFER,Ga,Oa)}if(Mc&&Wa){D=0;for(V=ta.length;D<V;D++)if(P=lb[ta[D]],Ya=P.vertexNormals,Va=P.normal,3===Ya.length&&Xa)for(va=0;3>va;va++)lc=Ya[va],Eb[kb]=lc.x,Eb[kb+1]=lc.y,Eb[kb+2]=lc.z,kb+=3;else for(va=0;3>va;va++)Eb[kb]=Va.x,Eb[kb+1]=Va.y,Eb[kb+2]=Va.z,kb+=3;D=0;for(V=ua.length;D<V;D++)if(P=lb[ua[D]],Ya=P.vertexNormals,Va=P.normal,4===Ya.length&&Xa)for(va=0;4>va;va++)lc=Ya[va],Eb[kb]=lc.x,Eb[kb+1]=lc.y,Eb[kb+2]=lc.z,kb+=3;else for(va=0;4>va;va++)Eb[kb]=Va.x,Eb[kb+1]=Va.y,Eb[kb+
+2]=Va.z,kb+=3;j.bindBuffer(j.ARRAY_BUFFER,ra.__webglNormalBuffer);j.bufferData(j.ARRAY_BUFFER,Eb,Oa)}if(Bc&&od&&cb){D=0;for(V=ta.length;D<V;D++)if(Pa=ta[D],nb=od[Pa],void 0!==nb)for(va=0;3>va;va++)Ab=nb[va],Cc[gc]=Ab.x,Cc[gc+1]=Ab.y,gc+=2;D=0;for(V=ua.length;D<V;D++)if(Pa=ua[D],nb=od[Pa],void 0!==nb)for(va=0;4>va;va++)Ab=nb[va],Cc[gc]=Ab.x,Cc[gc+1]=Ab.y,gc+=2;0<gc&&(j.bindBuffer(j.ARRAY_BUFFER,ra.__webglUVBuffer),j.bufferData(j.ARRAY_BUFFER,Cc,Oa))}if(Bc&&pd&&cb){D=0;for(V=ta.length;D<V;D++)if(Pa=
+ta[D],qb=pd[Pa],void 0!==qb)for(va=0;3>va;va++)xc=qb[va],Dc[hc]=xc.x,Dc[hc+1]=xc.y,hc+=2;D=0;for(V=ua.length;D<V;D++)if(Pa=ua[D],qb=pd[Pa],void 0!==qb)for(va=0;4>va;va++)xc=qb[va],Dc[hc]=xc.x,Dc[hc+1]=xc.y,hc+=2;0<hc&&(j.bindBuffer(j.ARRAY_BUFFER,ra.__webglUV2Buffer),j.bufferData(j.ARRAY_BUFFER,Dc,Oa))}if(Lc){D=0;for(V=ta.length;D<V;D++)$b[Db]=Ma,$b[Db+1]=Ma+1,$b[Db+2]=Ma+2,Db+=3,xb[ob]=Ma,xb[ob+1]=Ma+1,xb[ob+2]=Ma,xb[ob+3]=Ma+2,xb[ob+4]=Ma+1,xb[ob+5]=Ma+2,ob+=6,Ma+=3;D=0;for(V=ua.length;D<V;D++)$b[Db]=
+Ma,$b[Db+1]=Ma+1,$b[Db+2]=Ma+3,$b[Db+3]=Ma+1,$b[Db+4]=Ma+2,$b[Db+5]=Ma+3,Db+=6,xb[ob]=Ma,xb[ob+1]=Ma+1,xb[ob+2]=Ma,xb[ob+3]=Ma+3,xb[ob+4]=Ma+1,xb[ob+5]=Ma+2,xb[ob+6]=Ma+2,xb[ob+7]=Ma+3,ob+=8,Ma+=4;j.bindBuffer(j.ELEMENT_ARRAY_BUFFER,ra.__webglFaceBuffer);j.bufferData(j.ELEMENT_ARRAY_BUFFER,$b,Oa);j.bindBuffer(j.ELEMENT_ARRAY_BUFFER,ra.__webglLineBuffer);j.bufferData(j.ELEMENT_ARRAY_BUFFER,xb,Oa)}if(nd){va=0;for(ec=nd.length;va<ec;va++)if(u=nd[va],u.__original.needsUpdate){w=0;if(1===u.size)if(void 0===
+u.boundTo||"vertices"===u.boundTo){D=0;for(V=ta.length;D<V;D++)P=lb[ta[D]],u.array[w]=u.value[P.a],u.array[w+1]=u.value[P.b],u.array[w+2]=u.value[P.c],w+=3;D=0;for(V=ua.length;D<V;D++)P=lb[ua[D]],u.array[w]=u.value[P.a],u.array[w+1]=u.value[P.b],u.array[w+2]=u.value[P.c],u.array[w+3]=u.value[P.d],w+=4}else{if("faces"===u.boundTo){D=0;for(V=ta.length;D<V;D++)xa=u.value[ta[D]],u.array[w]=xa,u.array[w+1]=xa,u.array[w+2]=xa,w+=3;D=0;for(V=ua.length;D<V;D++)xa=u.value[ua[D]],u.array[w]=xa,u.array[w+1]=
+xa,u.array[w+2]=xa,u.array[w+3]=xa,w+=4}}else if(2===u.size)if(void 0===u.boundTo||"vertices"===u.boundTo){D=0;for(V=ta.length;D<V;D++)P=lb[ta[D]],R=u.value[P.a],S=u.value[P.b],T=u.value[P.c],u.array[w]=R.x,u.array[w+1]=R.y,u.array[w+2]=S.x,u.array[w+3]=S.y,u.array[w+4]=T.x,u.array[w+5]=T.y,w+=6;D=0;for(V=ua.length;D<V;D++)P=lb[ua[D]],R=u.value[P.a],S=u.value[P.b],T=u.value[P.c],oa=u.value[P.d],u.array[w]=R.x,u.array[w+1]=R.y,u.array[w+2]=S.x,u.array[w+3]=S.y,u.array[w+4]=T.x,u.array[w+5]=T.y,u.array[w+
+6]=oa.x,u.array[w+7]=oa.y,w+=8}else{if("faces"===u.boundTo){D=0;for(V=ta.length;D<V;D++)T=S=R=xa=u.value[ta[D]],u.array[w]=R.x,u.array[w+1]=R.y,u.array[w+2]=S.x,u.array[w+3]=S.y,u.array[w+4]=T.x,u.array[w+5]=T.y,w+=6;D=0;for(V=ua.length;D<V;D++)oa=T=S=R=xa=u.value[ua[D]],u.array[w]=R.x,u.array[w+1]=R.y,u.array[w+2]=S.x,u.array[w+3]=S.y,u.array[w+4]=T.x,u.array[w+5]=T.y,u.array[w+6]=oa.x,u.array[w+7]=oa.y,w+=8}}else if(3===u.size){var $;$="c"===u.type?["r","g","b"]:["x","y","z"];if(void 0===u.boundTo||
+"vertices"===u.boundTo){D=0;for(V=ta.length;D<V;D++)P=lb[ta[D]],R=u.value[P.a],S=u.value[P.b],T=u.value[P.c],u.array[w]=R[$[0]],u.array[w+1]=R[$[1]],u.array[w+2]=R[$[2]],u.array[w+3]=S[$[0]],u.array[w+4]=S[$[1]],u.array[w+5]=S[$[2]],u.array[w+6]=T[$[0]],u.array[w+7]=T[$[1]],u.array[w+8]=T[$[2]],w+=9;D=0;for(V=ua.length;D<V;D++)P=lb[ua[D]],R=u.value[P.a],S=u.value[P.b],T=u.value[P.c],oa=u.value[P.d],u.array[w]=R[$[0]],u.array[w+1]=R[$[1]],u.array[w+2]=R[$[2]],u.array[w+3]=S[$[0]],u.array[w+4]=S[$[1]],
+u.array[w+5]=S[$[2]],u.array[w+6]=T[$[0]],u.array[w+7]=T[$[1]],u.array[w+8]=T[$[2]],u.array[w+9]=oa[$[0]],u.array[w+10]=oa[$[1]],u.array[w+11]=oa[$[2]],w+=12}else if("faces"===u.boundTo){D=0;for(V=ta.length;D<V;D++)T=S=R=xa=u.value[ta[D]],u.array[w]=R[$[0]],u.array[w+1]=R[$[1]],u.array[w+2]=R[$[2]],u.array[w+3]=S[$[0]],u.array[w+4]=S[$[1]],u.array[w+5]=S[$[2]],u.array[w+6]=T[$[0]],u.array[w+7]=T[$[1]],u.array[w+8]=T[$[2]],w+=9;D=0;for(V=ua.length;D<V;D++)oa=T=S=R=xa=u.value[ua[D]],u.array[w]=R[$[0]],
+u.array[w+1]=R[$[1]],u.array[w+2]=R[$[2]],u.array[w+3]=S[$[0]],u.array[w+4]=S[$[1]],u.array[w+5]=S[$[2]],u.array[w+6]=T[$[0]],u.array[w+7]=T[$[1]],u.array[w+8]=T[$[2]],u.array[w+9]=oa[$[0]],u.array[w+10]=oa[$[1]],u.array[w+11]=oa[$[2]],w+=12}else if("faceVertices"===u.boundTo){D=0;for(V=ta.length;D<V;D++)xa=u.value[ta[D]],R=xa[0],S=xa[1],T=xa[2],u.array[w]=R[$[0]],u.array[w+1]=R[$[1]],u.array[w+2]=R[$[2]],u.array[w+3]=S[$[0]],u.array[w+4]=S[$[1]],u.array[w+5]=S[$[2]],u.array[w+6]=T[$[0]],u.array[w+
+7]=T[$[1]],u.array[w+8]=T[$[2]],w+=9;D=0;for(V=ua.length;D<V;D++)xa=u.value[ua[D]],R=xa[0],S=xa[1],T=xa[2],oa=xa[3],u.array[w]=R[$[0]],u.array[w+1]=R[$[1]],u.array[w+2]=R[$[2]],u.array[w+3]=S[$[0]],u.array[w+4]=S[$[1]],u.array[w+5]=S[$[2]],u.array[w+6]=T[$[0]],u.array[w+7]=T[$[1]],u.array[w+8]=T[$[2]],u.array[w+9]=oa[$[0]],u.array[w+10]=oa[$[1]],u.array[w+11]=oa[$[2]],w+=12}}else if(4===u.size)if(void 0===u.boundTo||"vertices"===u.boundTo){D=0;for(V=ta.length;D<V;D++)P=lb[ta[D]],R=u.value[P.a],S=
+u.value[P.b],T=u.value[P.c],u.array[w]=R.x,u.array[w+1]=R.y,u.array[w+2]=R.z,u.array[w+3]=R.w,u.array[w+4]=S.x,u.array[w+5]=S.y,u.array[w+6]=S.z,u.array[w+7]=S.w,u.array[w+8]=T.x,u.array[w+9]=T.y,u.array[w+10]=T.z,u.array[w+11]=T.w,w+=12;D=0;for(V=ua.length;D<V;D++)P=lb[ua[D]],R=u.value[P.a],S=u.value[P.b],T=u.value[P.c],oa=u.value[P.d],u.array[w]=R.x,u.array[w+1]=R.y,u.array[w+2]=R.z,u.array[w+3]=R.w,u.array[w+4]=S.x,u.array[w+5]=S.y,u.array[w+6]=S.z,u.array[w+7]=S.w,u.array[w+8]=T.x,u.array[w+9]=
+T.y,u.array[w+10]=T.z,u.array[w+11]=T.w,u.array[w+12]=oa.x,u.array[w+13]=oa.y,u.array[w+14]=oa.z,u.array[w+15]=oa.w,w+=16}else if("faces"===u.boundTo){D=0;for(V=ta.length;D<V;D++)T=S=R=xa=u.value[ta[D]],u.array[w]=R.x,u.array[w+1]=R.y,u.array[w+2]=R.z,u.array[w+3]=R.w,u.array[w+4]=S.x,u.array[w+5]=S.y,u.array[w+6]=S.z,u.array[w+7]=S.w,u.array[w+8]=T.x,u.array[w+9]=T.y,u.array[w+10]=T.z,u.array[w+11]=T.w,w+=12;D=0;for(V=ua.length;D<V;D++)oa=T=S=R=xa=u.value[ua[D]],u.array[w]=R.x,u.array[w+1]=R.y,u.array[w+
+2]=R.z,u.array[w+3]=R.w,u.array[w+4]=S.x,u.array[w+5]=S.y,u.array[w+6]=S.z,u.array[w+7]=S.w,u.array[w+8]=T.x,u.array[w+9]=T.y,u.array[w+10]=T.z,u.array[w+11]=T.w,u.array[w+12]=oa.x,u.array[w+13]=oa.y,u.array[w+14]=oa.z,u.array[w+15]=oa.w,w+=16}else if("faceVertices"===u.boundTo){D=0;for(V=ta.length;D<V;D++)xa=u.value[ta[D]],R=xa[0],S=xa[1],T=xa[2],u.array[w]=R.x,u.array[w+1]=R.y,u.array[w+2]=R.z,u.array[w+3]=R.w,u.array[w+4]=S.x,u.array[w+5]=S.y,u.array[w+6]=S.z,u.array[w+7]=S.w,u.array[w+8]=T.x,
+u.array[w+9]=T.y,u.array[w+10]=T.z,u.array[w+11]=T.w,w+=12;D=0;for(V=ua.length;D<V;D++)xa=u.value[ua[D]],R=xa[0],S=xa[1],T=xa[2],oa=xa[3],u.array[w]=R.x,u.array[w+1]=R.y,u.array[w+2]=R.z,u.array[w+3]=R.w,u.array[w+4]=S.x,u.array[w+5]=S.y,u.array[w+6]=S.z,u.array[w+7]=S.w,u.array[w+8]=T.x,u.array[w+9]=T.y,u.array[w+10]=T.z,u.array[w+11]=T.w,u.array[w+12]=oa.x,u.array[w+13]=oa.y,u.array[w+14]=oa.z,u.array[w+15]=oa.w,w+=16}j.bindBuffer(j.ARRAY_BUFFER,u.buffer);j.bufferData(j.ARRAY_BUFFER,u.array,Oa)}}Ta&&
+(delete ra.__inittedArrays,delete ra.__colorArray,delete ra.__normalArray,delete ra.__tangentArray,delete ra.__uvArray,delete ra.__uv2Array,delete ra.__faceArray,delete ra.__vertexArray,delete ra.__lineArray,delete ra.__skinIndexArray,delete ra.__skinWeightArray)}}O.verticesNeedUpdate=!1;O.morphTargetsNeedUpdate=!1;O.elementsNeedUpdate=!1;O.uvsNeedUpdate=!1;O.normalsNeedUpdate=!1;O.colorsNeedUpdate=!1;O.tangentsNeedUpdate=!1;O.buffersNeedUpdate=!1;ha.attributes&&v(ha)}else if(ka instanceof THREE.Ribbon){ha=
+e(ka,O);ab=ha.attributes&&y(ha);if(O.verticesNeedUpdate||O.colorsNeedUpdate||O.normalsNeedUpdate||ab){var Fb=O,Pc=j.DYNAMIC_DRAW,Ec=void 0,Fc=void 0,Gc=void 0,Qc=void 0,ya=void 0,Rc=void 0,Sc=void 0,Tc=void 0,wd=void 0,ib=void 0,yc=void 0,Ca=void 0,tb=void 0,xd=Fb.vertices,yd=Fb.colors,zd=Fb.normals,fd=xd.length,gd=yd.length,hd=zd.length,Uc=Fb.__vertexArray,Vc=Fb.__colorArray,Wc=Fb.__normalArray,id=Fb.colorsNeedUpdate,jd=Fb.normalsNeedUpdate,qd=Fb.__webglCustomAttributesList;if(Fb.verticesNeedUpdate){for(Ec=
+0;Ec<fd;Ec++)Qc=xd[Ec],ya=3*Ec,Uc[ya]=Qc.x,Uc[ya+1]=Qc.y,Uc[ya+2]=Qc.z;j.bindBuffer(j.ARRAY_BUFFER,Fb.__webglVertexBuffer);j.bufferData(j.ARRAY_BUFFER,Uc,Pc)}if(id){for(Fc=0;Fc<gd;Fc++)Rc=yd[Fc],ya=3*Fc,Vc[ya]=Rc.r,Vc[ya+1]=Rc.g,Vc[ya+2]=Rc.b;j.bindBuffer(j.ARRAY_BUFFER,Fb.__webglColorBuffer);j.bufferData(j.ARRAY_BUFFER,Vc,Pc)}if(jd){for(Gc=0;Gc<hd;Gc++)Sc=zd[Gc],ya=3*Gc,Wc[ya]=Sc.x,Wc[ya+1]=Sc.y,Wc[ya+2]=Sc.z;j.bindBuffer(j.ARRAY_BUFFER,Fb.__webglNormalBuffer);j.bufferData(j.ARRAY_BUFFER,Wc,Pc)}if(qd){Tc=
+0;for(wd=qd.length;Tc<wd;Tc++)if(Ca=qd[Tc],Ca.needsUpdate&&(void 0===Ca.boundTo||"vertices"===Ca.boundTo)){ya=0;yc=Ca.value.length;if(1===Ca.size)for(ib=0;ib<yc;ib++)Ca.array[ib]=Ca.value[ib];else if(2===Ca.size)for(ib=0;ib<yc;ib++)tb=Ca.value[ib],Ca.array[ya]=tb.x,Ca.array[ya+1]=tb.y,ya+=2;else if(3===Ca.size)if("c"===Ca.type)for(ib=0;ib<yc;ib++)tb=Ca.value[ib],Ca.array[ya]=tb.r,Ca.array[ya+1]=tb.g,Ca.array[ya+2]=tb.b,ya+=3;else for(ib=0;ib<yc;ib++)tb=Ca.value[ib],Ca.array[ya]=tb.x,Ca.array[ya+1]=
+tb.y,Ca.array[ya+2]=tb.z,ya+=3;else if(4===Ca.size)for(ib=0;ib<yc;ib++)tb=Ca.value[ib],Ca.array[ya]=tb.x,Ca.array[ya+1]=tb.y,Ca.array[ya+2]=tb.z,Ca.array[ya+3]=tb.w,ya+=4;j.bindBuffer(j.ARRAY_BUFFER,Ca.buffer);j.bufferData(j.ARRAY_BUFFER,Ca.array,Pc)}}}O.verticesNeedUpdate=!1;O.colorsNeedUpdate=!1;O.normalsNeedUpdate=!1;ha.attributes&&v(ha)}else if(ka instanceof THREE.Line)if(O instanceof THREE.BufferGeometry)(O.verticesNeedUpdate||O.colorsNeedUpdate)&&i(O,j.DYNAMIC_DRAW,!O.dynamic),O.verticesNeedUpdate=
+!1,O.colorsNeedUpdate=!1;else{ha=e(ka,O);ab=ha.attributes&&y(ha);if(O.verticesNeedUpdate||O.colorsNeedUpdate||O.lineDistancesNeedUpdate||ab){var Gb=O,Xc=j.DYNAMIC_DRAW,Hc=void 0,Ic=void 0,Jc=void 0,Yc=void 0,Ja=void 0,Zc=void 0,Ad=Gb.vertices,Bd=Gb.colors,Cd=Gb.lineDistances,kd=Ad.length,Id=Bd.length,Jd=Cd.length,$c=Gb.__vertexArray,ad=Gb.__colorArray,Dd=Gb.__lineDistanceArray,Kd=Gb.colorsNeedUpdate,Ld=Gb.lineDistancesNeedUpdate,rd=Gb.__webglCustomAttributesList,bd=void 0,Ed=void 0,jb=void 0,zc=void 0,
+ub=void 0,Da=void 0;if(Gb.verticesNeedUpdate){for(Hc=0;Hc<kd;Hc++)Yc=Ad[Hc],Ja=3*Hc,$c[Ja]=Yc.x,$c[Ja+1]=Yc.y,$c[Ja+2]=Yc.z;j.bindBuffer(j.ARRAY_BUFFER,Gb.__webglVertexBuffer);j.bufferData(j.ARRAY_BUFFER,$c,Xc)}if(Kd){for(Ic=0;Ic<Id;Ic++)Zc=Bd[Ic],Ja=3*Ic,ad[Ja]=Zc.r,ad[Ja+1]=Zc.g,ad[Ja+2]=Zc.b;j.bindBuffer(j.ARRAY_BUFFER,Gb.__webglColorBuffer);j.bufferData(j.ARRAY_BUFFER,ad,Xc)}if(Ld){for(Jc=0;Jc<Jd;Jc++)Dd[Jc]=Cd[Jc];j.bindBuffer(j.ARRAY_BUFFER,Gb.__webglLineDistanceBuffer);j.bufferData(j.ARRAY_BUFFER,
+Dd,Xc)}if(rd){bd=0;for(Ed=rd.length;bd<Ed;bd++)if(Da=rd[bd],Da.needsUpdate&&(void 0===Da.boundTo||"vertices"===Da.boundTo)){Ja=0;zc=Da.value.length;if(1===Da.size)for(jb=0;jb<zc;jb++)Da.array[jb]=Da.value[jb];else if(2===Da.size)for(jb=0;jb<zc;jb++)ub=Da.value[jb],Da.array[Ja]=ub.x,Da.array[Ja+1]=ub.y,Ja+=2;else if(3===Da.size)if("c"===Da.type)for(jb=0;jb<zc;jb++)ub=Da.value[jb],Da.array[Ja]=ub.r,Da.array[Ja+1]=ub.g,Da.array[Ja+2]=ub.b,Ja+=3;else for(jb=0;jb<zc;jb++)ub=Da.value[jb],Da.array[Ja]=ub.x,
+Da.array[Ja+1]=ub.y,Da.array[Ja+2]=ub.z,Ja+=3;else if(4===Da.size)for(jb=0;jb<zc;jb++)ub=Da.value[jb],Da.array[Ja]=ub.x,Da.array[Ja+1]=ub.y,Da.array[Ja+2]=ub.z,Da.array[Ja+3]=ub.w,Ja+=4;j.bindBuffer(j.ARRAY_BUFFER,Da.buffer);j.bufferData(j.ARRAY_BUFFER,Da.array,Xc)}}}O.verticesNeedUpdate=!1;O.colorsNeedUpdate=!1;O.lineDistancesNeedUpdate=!1;ha.attributes&&v(ha)}else if(ka instanceof THREE.ParticleSystem)if(O instanceof THREE.BufferGeometry)(O.verticesNeedUpdate||O.colorsNeedUpdate)&&i(O,j.DYNAMIC_DRAW,
+!O.dynamic),O.verticesNeedUpdate=!1,O.colorsNeedUpdate=!1;else{ha=e(ka,O);ab=ha.attributes&&y(ha);if(O.verticesNeedUpdate||O.colorsNeedUpdate||ka.sortParticles||ab){var ac=O,sd=j.DYNAMIC_DRAW,Kc=ka,vb=void 0,bc=void 0,cc=void 0,fa=void 0,dc=void 0,pc=void 0,cd=ac.vertices,td=cd.length,ud=ac.colors,Fd=ud.length,uc=ac.__vertexArray,vc=ac.__colorArray,ic=ac.__sortArray,Gd=ac.verticesNeedUpdate,Hd=ac.colorsNeedUpdate,jc=ac.__webglCustomAttributesList,Jb=void 0,Ac=void 0,na=void 0,Kb=void 0,Aa=void 0,
+ca=void 0;if(Kc.sortParticles){wc.copy(rb);wc.multiply(Kc.matrixWorld);for(vb=0;vb<td;vb++)cc=cd[vb],Ra.copy(cc),Ra.applyProjection(wc),ic[vb]=[Ra.z,vb];ic.sort(n);for(vb=0;vb<td;vb++)cc=cd[ic[vb][1]],fa=3*vb,uc[fa]=cc.x,uc[fa+1]=cc.y,uc[fa+2]=cc.z;for(bc=0;bc<Fd;bc++)fa=3*bc,pc=ud[ic[bc][1]],vc[fa]=pc.r,vc[fa+1]=pc.g,vc[fa+2]=pc.b;if(jc){Jb=0;for(Ac=jc.length;Jb<Ac;Jb++)if(ca=jc[Jb],void 0===ca.boundTo||"vertices"===ca.boundTo)if(fa=0,Kb=ca.value.length,1===ca.size)for(na=0;na<Kb;na++)dc=ic[na][1],
+ca.array[na]=ca.value[dc];else if(2===ca.size)for(na=0;na<Kb;na++)dc=ic[na][1],Aa=ca.value[dc],ca.array[fa]=Aa.x,ca.array[fa+1]=Aa.y,fa+=2;else if(3===ca.size)if("c"===ca.type)for(na=0;na<Kb;na++)dc=ic[na][1],Aa=ca.value[dc],ca.array[fa]=Aa.r,ca.array[fa+1]=Aa.g,ca.array[fa+2]=Aa.b,fa+=3;else for(na=0;na<Kb;na++)dc=ic[na][1],Aa=ca.value[dc],ca.array[fa]=Aa.x,ca.array[fa+1]=Aa.y,ca.array[fa+2]=Aa.z,fa+=3;else if(4===ca.size)for(na=0;na<Kb;na++)dc=ic[na][1],Aa=ca.value[dc],ca.array[fa]=Aa.x,ca.array[fa+
+1]=Aa.y,ca.array[fa+2]=Aa.z,ca.array[fa+3]=Aa.w,fa+=4}}else{if(Gd)for(vb=0;vb<td;vb++)cc=cd[vb],fa=3*vb,uc[fa]=cc.x,uc[fa+1]=cc.y,uc[fa+2]=cc.z;if(Hd)for(bc=0;bc<Fd;bc++)pc=ud[bc],fa=3*bc,vc[fa]=pc.r,vc[fa+1]=pc.g,vc[fa+2]=pc.b;if(jc){Jb=0;for(Ac=jc.length;Jb<Ac;Jb++)if(ca=jc[Jb],ca.needsUpdate&&(void 0===ca.boundTo||"vertices"===ca.boundTo))if(Kb=ca.value.length,fa=0,1===ca.size)for(na=0;na<Kb;na++)ca.array[na]=ca.value[na];else if(2===ca.size)for(na=0;na<Kb;na++)Aa=ca.value[na],ca.array[fa]=Aa.x,
+ca.array[fa+1]=Aa.y,fa+=2;else if(3===ca.size)if("c"===ca.type)for(na=0;na<Kb;na++)Aa=ca.value[na],ca.array[fa]=Aa.r,ca.array[fa+1]=Aa.g,ca.array[fa+2]=Aa.b,fa+=3;else for(na=0;na<Kb;na++)Aa=ca.value[na],ca.array[fa]=Aa.x,ca.array[fa+1]=Aa.y,ca.array[fa+2]=Aa.z,fa+=3;else if(4===ca.size)for(na=0;na<Kb;na++)Aa=ca.value[na],ca.array[fa]=Aa.x,ca.array[fa+1]=Aa.y,ca.array[fa+2]=Aa.z,ca.array[fa+3]=Aa.w,fa+=4}}if(Gd||Kc.sortParticles)j.bindBuffer(j.ARRAY_BUFFER,ac.__webglVertexBuffer),j.bufferData(j.ARRAY_BUFFER,
+uc,sd);if(Hd||Kc.sortParticles)j.bindBuffer(j.ARRAY_BUFFER,ac.__webglColorBuffer),j.bufferData(j.ARRAY_BUFFER,vc,sd);if(jc){Jb=0;for(Ac=jc.length;Jb<Ac;Jb++)if(ca=jc[Jb],ca.needsUpdate||Kc.sortParticles)j.bindBuffer(j.ARRAY_BUFFER,ca.buffer),j.bufferData(j.ARRAY_BUFFER,ca.array,sd)}}O.verticesNeedUpdate=!1;O.colorsNeedUpdate=!1;ha.attributes&&v(ha)}}};this.initMaterial=function(a,b,c,d){var e,f,g,i;a.addEventListener("dispose",Nc);var h,k,m,n,l;a instanceof THREE.MeshDepthMaterial?l="depth":a instanceof
+THREE.MeshNormalMaterial?l="normal":a instanceof THREE.MeshBasicMaterial?l="basic":a instanceof THREE.MeshLambertMaterial?l="lambert":a instanceof THREE.MeshPhongMaterial?l="phong":a instanceof THREE.LineBasicMaterial?l="basic":a instanceof THREE.LineDashedMaterial?l="dashed":a instanceof THREE.ParticleBasicMaterial&&(l="particle_basic");if(l){var p=THREE.ShaderLib[l];a.uniforms=THREE.UniformsUtils.clone(p.uniforms);a.vertexShader=p.vertexShader;a.fragmentShader=p.fragmentShader}var q,s,r;e=g=s=r=
+p=0;for(f=b.length;e<f;e++)q=b[e],q.onlyShadow||(q instanceof THREE.DirectionalLight&&g++,q instanceof THREE.PointLight&&s++,q instanceof THREE.SpotLight&&r++,q instanceof THREE.HemisphereLight&&p++);e=g;f=s;g=r;i=p;p=q=0;for(r=b.length;p<r;p++)s=b[p],s.castShadow&&(s instanceof THREE.SpotLight&&q++,s instanceof THREE.DirectionalLight&&!s.shadowCascade&&q++);n=q;qc&&d&&d.useVertexTexture?m=1024:(b=j.getParameter(j.MAX_VERTEX_UNIFORM_VECTORS),b=Math.floor((b-20)/4),void 0!==d&&d instanceof THREE.SkinnedMesh&&
+(b=Math.min(d.bones.length,b),b<d.bones.length&&console.warn("WebGLRenderer: too many bones - "+d.bones.length+", this GPU supports just "+b+" (try OpenGL instead of ANGLE)")),m=b);a:{s=a.fragmentShader;r=a.vertexShader;p=a.uniforms;b=a.attributes;q=a.defines;var c={map:!!a.map,envMap:!!a.envMap,lightMap:!!a.lightMap,bumpMap:!!a.bumpMap,normalMap:!!a.normalMap,specularMap:!!a.specularMap,vertexColors:a.vertexColors,fog:c,useFog:a.fog,fogExp:c instanceof THREE.FogExp2,sizeAttenuation:a.sizeAttenuation,
+skinning:a.skinning,maxBones:m,useVertexTexture:qc&&d&&d.useVertexTexture,boneTextureWidth:d&&d.boneTextureWidth,boneTextureHeight:d&&d.boneTextureHeight,morphTargets:a.morphTargets,morphNormals:a.morphNormals,maxMorphTargets:this.maxMorphTargets,maxMorphNormals:this.maxMorphNormals,maxDirLights:e,maxPointLights:f,maxSpotLights:g,maxHemiLights:i,maxShadows:n,shadowMapEnabled:this.shadowMapEnabled&&d.receiveShadow,shadowMapType:this.shadowMapType,shadowMapDebug:this.shadowMapDebug,shadowMapCascade:this.shadowMapCascade,
+alphaTest:a.alphaTest,metal:a.metal,perPixel:a.perPixel,wrapAround:a.wrapAround,doubleSided:a.side===THREE.DoubleSide,flipSided:a.side===THREE.BackSide},t,v,y,d=[];l?d.push(l):(d.push(s),d.push(r));for(v in q)d.push(v),d.push(q[v]);for(t in c)d.push(t),d.push(c[t]);l=d.join();t=0;for(v=Na.length;t<v;t++)if(d=Na[t],d.code===l){d.usedTimes++;k=d.program;break a}t="SHADOWMAP_TYPE_BASIC";c.shadowMapType===THREE.PCFShadowMap?t="SHADOWMAP_TYPE_PCF":c.shadowMapType===THREE.PCFSoftShadowMap&&(t="SHADOWMAP_TYPE_PCF_SOFT");
+v=[];for(y in q)d=q[y],!1!==d&&(d="#define "+y+" "+d,v.push(d));d=v.join("\n");y=j.createProgram();v=["precision "+da+" float;",d,rc?"#define VERTEX_TEXTURES":"",N.gammaInput?"#define GAMMA_INPUT":"",N.gammaOutput?"#define GAMMA_OUTPUT":"",N.physicallyBasedShading?"#define PHYSICALLY_BASED_SHADING":"","#define MAX_DIR_LIGHTS "+c.maxDirLights,"#define MAX_POINT_LIGHTS "+c.maxPointLights,"#define MAX_SPOT_LIGHTS "+c.maxSpotLights,"#define MAX_HEMI_LIGHTS "+c.maxHemiLights,"#define MAX_SHADOWS "+c.maxShadows,
+"#define MAX_BONES "+c.maxBones,c.map?"#define USE_MAP":"",c.envMap?"#define USE_ENVMAP":"",c.lightMap?"#define USE_LIGHTMAP":"",c.bumpMap?"#define USE_BUMPMAP":"",c.normalMap?"#define USE_NORMALMAP":"",c.specularMap?"#define USE_SPECULARMAP":"",c.vertexColors?"#define USE_COLOR":"",c.skinning?"#define USE_SKINNING":"",c.useVertexTexture?"#define BONE_TEXTURE":"",c.boneTextureWidth?"#define N_BONE_PIXEL_X "+c.boneTextureWidth.toFixed(1):"",c.boneTextureHeight?"#define N_BONE_PIXEL_Y "+c.boneTextureHeight.toFixed(1):
+"",c.morphTargets?"#define USE_MORPHTARGETS":"",c.morphNormals?"#define USE_MORPHNORMALS":"",c.perPixel?"#define PHONG_PER_PIXEL":"",c.wrapAround?"#define WRAP_AROUND":"",c.doubleSided?"#define DOUBLE_SIDED":"",c.flipSided?"#define FLIP_SIDED":"",c.shadowMapEnabled?"#define USE_SHADOWMAP":"",c.shadowMapEnabled?"#define "+t:"",c.shadowMapDebug?"#define SHADOWMAP_DEBUG":"",c.shadowMapCascade?"#define SHADOWMAP_CASCADE":"",c.sizeAttenuation?"#define USE_SIZEATTENUATION":"","uniform mat4 modelMatrix;\nuniform mat4 modelViewMatrix;\nuniform mat4 projectionMatrix;\nuniform mat4 viewMatrix;\nuniform mat3 normalMatrix;\nuniform vec3 cameraPosition;\nattribute vec3 position;\nattribute vec3 normal;\nattribute vec2 uv;\nattribute vec2 uv2;\n#ifdef USE_COLOR\nattribute vec3 color;\n#endif\n#ifdef USE_MORPHTARGETS\nattribute vec3 morphTarget0;\nattribute vec3 morphTarget1;\nattribute vec3 morphTarget2;\nattribute vec3 morphTarget3;\n#ifdef USE_MORPHNORMALS\nattribute vec3 morphNormal0;\nattribute vec3 morphNormal1;\nattribute vec3 morphNormal2;\nattribute vec3 morphNormal3;\n#else\nattribute vec3 morphTarget4;\nattribute vec3 morphTarget5;\nattribute vec3 morphTarget6;\nattribute vec3 morphTarget7;\n#endif\n#endif\n#ifdef USE_SKINNING\nattribute vec4 skinIndex;\nattribute vec4 skinWeight;\n#endif\n"].join("\n");
 t=["precision "+da+" float;",c.bumpMap||c.normalMap?"#extension GL_OES_standard_derivatives : enable":"",d,"#define MAX_DIR_LIGHTS "+c.maxDirLights,"#define MAX_POINT_LIGHTS "+c.maxPointLights,"#define MAX_SPOT_LIGHTS "+c.maxSpotLights,"#define MAX_HEMI_LIGHTS "+c.maxHemiLights,"#define MAX_SHADOWS "+c.maxShadows,c.alphaTest?"#define ALPHATEST "+c.alphaTest:"",N.gammaInput?"#define GAMMA_INPUT":"",N.gammaOutput?"#define GAMMA_OUTPUT":"",N.physicallyBasedShading?"#define PHYSICALLY_BASED_SHADING":
 t=["precision "+da+" float;",c.bumpMap||c.normalMap?"#extension GL_OES_standard_derivatives : enable":"",d,"#define MAX_DIR_LIGHTS "+c.maxDirLights,"#define MAX_POINT_LIGHTS "+c.maxPointLights,"#define MAX_SPOT_LIGHTS "+c.maxSpotLights,"#define MAX_HEMI_LIGHTS "+c.maxHemiLights,"#define MAX_SHADOWS "+c.maxShadows,c.alphaTest?"#define ALPHATEST "+c.alphaTest:"",N.gammaInput?"#define GAMMA_INPUT":"",N.gammaOutput?"#define GAMMA_OUTPUT":"",N.physicallyBasedShading?"#define PHYSICALLY_BASED_SHADING":
 "",c.useFog&&c.fog?"#define USE_FOG":"",c.useFog&&c.fogExp?"#define FOG_EXP2":"",c.map?"#define USE_MAP":"",c.envMap?"#define USE_ENVMAP":"",c.lightMap?"#define USE_LIGHTMAP":"",c.bumpMap?"#define USE_BUMPMAP":"",c.normalMap?"#define USE_NORMALMAP":"",c.specularMap?"#define USE_SPECULARMAP":"",c.vertexColors?"#define USE_COLOR":"",c.metal?"#define METAL":"",c.perPixel?"#define PHONG_PER_PIXEL":"",c.wrapAround?"#define WRAP_AROUND":"",c.doubleSided?"#define DOUBLE_SIDED":"",c.flipSided?"#define FLIP_SIDED":
 "",c.useFog&&c.fog?"#define USE_FOG":"",c.useFog&&c.fogExp?"#define FOG_EXP2":"",c.map?"#define USE_MAP":"",c.envMap?"#define USE_ENVMAP":"",c.lightMap?"#define USE_LIGHTMAP":"",c.bumpMap?"#define USE_BUMPMAP":"",c.normalMap?"#define USE_NORMALMAP":"",c.specularMap?"#define USE_SPECULARMAP":"",c.vertexColors?"#define USE_COLOR":"",c.metal?"#define METAL":"",c.perPixel?"#define PHONG_PER_PIXEL":"",c.wrapAround?"#define WRAP_AROUND":"",c.doubleSided?"#define DOUBLE_SIDED":"",c.flipSided?"#define FLIP_SIDED":
 "",c.shadowMapEnabled?"#define USE_SHADOWMAP":"",c.shadowMapEnabled?"#define "+t:"",c.shadowMapDebug?"#define SHADOWMAP_DEBUG":"",c.shadowMapCascade?"#define SHADOWMAP_CASCADE":"","uniform mat4 viewMatrix;\nuniform vec3 cameraPosition;\n"].join("\n");t=C("fragment",t+s);v=C("vertex",v+r);j.attachShader(y,v);j.attachShader(y,t);j.linkProgram(y);j.getProgramParameter(y,j.LINK_STATUS)||console.error("Could not initialise shader\nVALIDATE_STATUS: "+j.getProgramParameter(y,j.VALIDATE_STATUS)+", gl error ["+
 "",c.shadowMapEnabled?"#define USE_SHADOWMAP":"",c.shadowMapEnabled?"#define "+t:"",c.shadowMapDebug?"#define SHADOWMAP_DEBUG":"",c.shadowMapCascade?"#define SHADOWMAP_CASCADE":"","uniform mat4 viewMatrix;\nuniform vec3 cameraPosition;\n"].join("\n");t=C("fragment",t+s);v=C("vertex",v+r);j.attachShader(y,v);j.attachShader(y,t);j.linkProgram(y);j.getProgramParameter(y,j.LINK_STATUS)||console.error("Could not initialise shader\nVALIDATE_STATUS: "+j.getProgramParameter(y,j.VALIDATE_STATUS)+", gl error ["+