Mr.doob 12 лет назад
Родитель
Сommit
61fcfb49f5
2 измененных файлов с 60 добавлено и 60 удалено
  1. 2 2
      build/three.js
  2. 58 58
      build/three.min.js

+ 2 - 2
build/three.js

@@ -14057,7 +14057,7 @@ THREE.CanvasRenderer = function ( parameters ) {
 		_canvas.width = _canvasWidth;
 		_canvas.height = _canvasHeight;
 
-		if ( updateStyle !== false ) {
+		if ( this.devicePixelRatio !== 1 && updateStyle !== false ) {
 
 			_canvas.style.width = width + 'px';
 			_canvas.style.height = height + 'px';
@@ -18730,7 +18730,7 @@ THREE.WebGLRenderer = function ( parameters ) {
 		_canvas.width = width * this.devicePixelRatio;
 		_canvas.height = height * this.devicePixelRatio;
 
-		if ( updateStyle !== false ) {
+		if ( this.devicePixelRatio !== 1 && updateStyle !== false ) {
 
 			_canvas.style.width = width + 'px';
 			_canvas.style.height = height + 'px';

+ 58 - 58
build/three.min.js

@@ -284,7 +284,7 @@ THREE.Scene.prototype.__removeObject=function(a){if(a instanceof THREE.Light){va
 b){if(V!==a||C!==b)t.setLineDash([a,b]),V=a,C=b}console.log("THREE.CanvasRenderer",THREE.REVISION);var j=THREE.Math.smoothstep,a=a||{},m=this,p,l,r,s=new THREE.Projector,n=void 0!==a.canvas?a.canvas:document.createElement("canvas"),q,y,u,x,t=n.getContext("2d"),E=new THREE.Color(0),J=0,F=1,z=0,H=null,K=null,G=null,L=null,B=null,V=null,C=0,I,M,P,ja,oa=new THREE.RenderableVertex,gb=new THREE.RenderableVertex,A,da,ha,la,N,ea,kb,Ka,db,La,pa,na,aa=new THREE.Color,W=new THREE.Color,X=new THREE.Color,Y=new THREE.Color,
 ia=new THREE.Color,fa=new THREE.Color,ga=new THREE.Color,Ea=new THREE.Color,Za={},sa={},Ua,lb,ya,Va,rb,Eb,Nb,Kb,Sb,Tb,Sa=new THREE.Box2,ta=new THREE.Box2,Ja=new THREE.Box2,sb=new THREE.Color,Na=new THREE.Color,za=new THREE.Color,Qa=new THREE.Vector3,ub,k,Ab,Oa,$a,Ta,Bb=16;ub=document.createElement("canvas");ub.width=ub.height=2;k=ub.getContext("2d");k.fillStyle="rgba(0,0,0,1)";k.fillRect(0,0,2,2);Ab=k.getImageData(0,0,2,2);Oa=Ab.data;$a=document.createElement("canvas");$a.width=$a.height=Bb;Ta=$a.getContext("2d");
 Ta.translate(-Bb/2,-Bb/2);Ta.scale(Bb,Bb);Bb--;void 0===t.setLineDash&&(t.setLineDash=void 0!==t.mozDash?function(a){t.mozDash=null!==a[0]?a:null}:function(){});this.domElement=n;this.devicePixelRatio=void 0!==a.devicePixelRatio?a.devicePixelRatio:void 0!==window.devicePixelRatio?window.devicePixelRatio:1;this.sortElements=this.sortObjects=this.autoClear=!0;this.info={render:{vertices:0,faces:0}};this.supportsVertexTextures=function(){};this.setFaceCulling=function(){};this.setSize=function(a,b,c){q=
-a*this.devicePixelRatio;y=b*this.devicePixelRatio;u=Math.floor(q/2);x=Math.floor(y/2);n.width=q;n.height=y;!1!==c&&(n.style.width=a+"px",n.style.height=b+"px");Sa.set(new THREE.Vector2(-u,-x),new THREE.Vector2(u,x));ta.set(new THREE.Vector2(-u,-x),new THREE.Vector2(u,x));F=1;z=0;B=L=G=K=H=null};this.setClearColor=function(a,b){E.set(a);J=void 0!==b?b:1;ta.set(new THREE.Vector2(-u,-x),new THREE.Vector2(u,x))};this.setClearColorHex=function(a,b){console.warn("DEPRECATED: .setClearColorHex() is being removed. Use .setClearColor() instead.");
+a*this.devicePixelRatio;y=b*this.devicePixelRatio;u=Math.floor(q/2);x=Math.floor(y/2);n.width=q;n.height=y;1!==this.devicePixelRatio&&!1!==c&&(n.style.width=a+"px",n.style.height=b+"px");Sa.set(new THREE.Vector2(-u,-x),new THREE.Vector2(u,x));ta.set(new THREE.Vector2(-u,-x),new THREE.Vector2(u,x));F=1;z=0;B=L=G=K=H=null};this.setClearColor=function(a,b){E.set(a);J=void 0!==b?b:1;ta.set(new THREE.Vector2(-u,-x),new THREE.Vector2(u,x))};this.setClearColorHex=function(a,b){console.warn("DEPRECATED: .setClearColorHex() is being removed. Use .setClearColor() instead.");
 this.setClearColor(a,b)};this.getMaxAnisotropy=function(){return 0};this.clear=function(){t.setTransform(1,0,0,-1,u,x);!1===ta.empty()&&(ta.intersect(Sa),ta.expandByScalar(2),1>J&&t.clearRect(ta.min.x|0,ta.min.y|0,ta.max.x-ta.min.x|0,ta.max.y-ta.min.y|0),0<J&&(c(THREE.NormalBlending),b(1),h("rgba("+Math.floor(255*E.r)+","+Math.floor(255*E.g)+","+Math.floor(255*E.b)+","+J+")"),t.fillRect(ta.min.x|0,ta.min.y|0,ta.max.x-ta.min.x|0,ta.max.y-ta.min.y|0)),ta.makeEmpty())};this.render=function(a,n){function q(a,
 b,c){for(var d=0,e=r.length;d<e;d++){var f=r[d];Ea.copy(f.color);if(f instanceof THREE.DirectionalLight){var g=Qa.getPositionFromMatrix(f.matrixWorld).normalize(),h=b.dot(g);0>=h||(h*=f.intensity,c.add(Ea.multiplyScalar(h)))}else f instanceof THREE.PointLight&&(g=Qa.getPositionFromMatrix(f.matrixWorld),h=b.dot(Qa.subVectors(g,a).normalize()),0>=h||(h*=0==f.distance?1:1-Math.min(a.distanceTo(g)/f.distance,1),0!=h&&(h*=f.intensity,c.add(Ea.multiplyScalar(h)))))}}function z(a,d,e,f,g,h,k,i){m.info.render.vertices+=
 3;m.info.render.faces++;b(i.opacity);c(i.blending);A=a.positionScreen.x;da=a.positionScreen.y;ha=d.positionScreen.x;la=d.positionScreen.y;N=e.positionScreen.x;ea=e.positionScreen.y;y(A,da,ha,la,N,ea);(i instanceof THREE.MeshLambertMaterial||i instanceof THREE.MeshPhongMaterial)&&null===i.map?(fa.copy(i.color),ga.copy(i.emissive),i.vertexColors===THREE.FaceColors&&fa.multiply(k.color),!1===i.wireframe&&i.shading==THREE.SmoothShading&&3==k.vertexNormalsLength?(W.copy(sb),X.copy(sb),Y.copy(sb),q(k.v1.positionWorld,
@@ -415,63 +415,63 @@ $a||console.log("THREE.WebGLRenderer: Anisotropic texture filtering not supporte
 k.ONE_MINUS_SRC_ALPHA);k.clearColor(ha.r,ha.g,ha.b,la);this.context=k;var ac=k.getParameter(k.MAX_TEXTURE_IMAGE_UNITS),Fc=k.getParameter(k.MAX_VERTEX_TEXTURE_IMAGE_UNITS);k.getParameter(k.MAX_TEXTURE_SIZE);var Gc=k.getParameter(k.MAX_CUBE_MAP_TEXTURE_SIZE),bc=$a?k.getParameter($a.MAX_TEXTURE_MAX_ANISOTROPY_EXT):0,cc=0<Fc,dc=cc&&Ab;Ta&&k.getParameter(k.COMPRESSED_TEXTURE_FORMATS);var Jc=k.getShaderPrecisionFormat(k.VERTEX_SHADER,k.HIGH_FLOAT),Kc=k.getShaderPrecisionFormat(k.VERTEX_SHADER,k.MEDIUM_FLOAT);
 k.getShaderPrecisionFormat(k.VERTEX_SHADER,k.LOW_FLOAT);var Lc=k.getShaderPrecisionFormat(k.FRAGMENT_SHADER,k.HIGH_FLOAT),Ic=k.getShaderPrecisionFormat(k.FRAGMENT_SHADER,k.MEDIUM_FLOAT);k.getShaderPrecisionFormat(k.FRAGMENT_SHADER,k.LOW_FLOAT);k.getShaderPrecisionFormat(k.VERTEX_SHADER,k.HIGH_INT);k.getShaderPrecisionFormat(k.VERTEX_SHADER,k.MEDIUM_INT);k.getShaderPrecisionFormat(k.VERTEX_SHADER,k.LOW_INT);k.getShaderPrecisionFormat(k.FRAGMENT_SHADER,k.HIGH_INT);k.getShaderPrecisionFormat(k.FRAGMENT_SHADER,
 k.MEDIUM_INT);k.getShaderPrecisionFormat(k.FRAGMENT_SHADER,k.LOW_INT);var Hc=0<Jc.precision&&0<Lc.precision,ec=0<Kc.precision&&0<Ic.precision;"highp"===P&&!Hc&&(ec?(P="mediump",console.warn("WebGLRenderer: highp not supported, using mediump")):(P="lowp",console.warn("WebGLRenderer: highp and mediump not supported, using lowp")));"mediump"===P&&!ec&&(P="lowp",console.warn("WebGLRenderer: mediump not supported, using lowp"));this.getContext=function(){return k};this.supportsVertexTextures=function(){return cc};
-this.supportsFloatTextures=function(){return Ab};this.supportsStandardDerivatives=function(){return Oa};this.supportsCompressedTextureS3TC=function(){return Ta};this.getMaxAnisotropy=function(){return bc};this.getPrecision=function(){return P};this.setSize=function(a,b,c){M.width=a*this.devicePixelRatio;M.height=b*this.devicePixelRatio;!1!==c&&(M.style.width=a+"px",M.style.height=b+"px");this.setViewport(0,0,M.width,M.height)};this.setViewport=function(a,b,c,d){rb=void 0!==a?a:0;Eb=void 0!==b?b:0;
-Nb=void 0!==c?c:M.width;Kb=void 0!==d?d:M.height;k.viewport(rb,Eb,Nb,Kb)};this.setScissor=function(a,b,c,d){k.scissor(a,b,c,d)};this.enableScissorTest=function(a){a?k.enable(k.SCISSOR_TEST):k.disable(k.SCISSOR_TEST)};this.setClearColor=function(a,b){ha.set(a);la=void 0!==b?b:1;k.clearColor(ha.r,ha.g,ha.b,la)};this.setClearColorHex=function(a,b){console.warn("DEPRECATED: .setClearColorHex() is being removed. Use .setClearColor() instead.");this.setClearColor(a,b)};this.getClearColor=function(){return ha};
-this.getClearAlpha=function(){return la};this.clear=function(a,b,c){var d=0;if(void 0===a||a)d|=k.COLOR_BUFFER_BIT;if(void 0===b||b)d|=k.DEPTH_BUFFER_BIT;if(void 0===c||c)d|=k.STENCIL_BUFFER_BIT;k.clear(d)};this.clearTarget=function(a,b,c,d){this.setRenderTarget(a);this.clear(b,c,d)};this.addPostPlugin=function(a){a.init(this);this.renderPluginsPost.push(a)};this.addPrePlugin=function(a){a.init(this);this.renderPluginsPre.push(a)};this.updateShadowMap=function(a,b){Ka=null;La=pa=sa=Za=ia=-1;Qa=!0;
-Y=X=-1;this.shadowMapPlugin.update(a,b)};var fc=function(a){a=a.target;a.removeEventListener("dispose",fc);a.__webglInit=void 0;void 0!==a.__webglVertexBuffer&&k.deleteBuffer(a.__webglVertexBuffer);void 0!==a.__webglNormalBuffer&&k.deleteBuffer(a.__webglNormalBuffer);void 0!==a.__webglTangentBuffer&&k.deleteBuffer(a.__webglTangentBuffer);void 0!==a.__webglColorBuffer&&k.deleteBuffer(a.__webglColorBuffer);void 0!==a.__webglUVBuffer&&k.deleteBuffer(a.__webglUVBuffer);void 0!==a.__webglUV2Buffer&&k.deleteBuffer(a.__webglUV2Buffer);
-void 0!==a.__webglSkinIndicesBuffer&&k.deleteBuffer(a.__webglSkinIndicesBuffer);void 0!==a.__webglSkinWeightsBuffer&&k.deleteBuffer(a.__webglSkinWeightsBuffer);void 0!==a.__webglFaceBuffer&&k.deleteBuffer(a.__webglFaceBuffer);void 0!==a.__webglLineBuffer&&k.deleteBuffer(a.__webglLineBuffer);void 0!==a.__webglLineDistanceBuffer&&k.deleteBuffer(a.__webglLineDistanceBuffer);if(void 0!==a.geometryGroups)for(var c in a.geometryGroups){var d=a.geometryGroups[c];if(void 0!==d.numMorphTargets)for(var e=0,
-f=d.numMorphTargets;e<f;e++)k.deleteBuffer(d.__webglMorphTargetsBuffers[e]);if(void 0!==d.numMorphNormals){e=0;for(f=d.numMorphNormals;e<f;e++)k.deleteBuffer(d.__webglMorphNormalsBuffers[e])}b(d)}b(a);N.info.memory.geometries--},nc=function(a){a=a.target;a.removeEventListener("dispose",nc);a.image&&a.image.__webglTextureCube?k.deleteTexture(a.image.__webglTextureCube):a.__webglInit&&(a.__webglInit=!1,k.deleteTexture(a.__webglTexture));N.info.memory.textures--},U=function(a){a=a.target;a.removeEventListener("dispose",
-U);if(a&&a.__webglTexture)if(k.deleteTexture(a.__webglTexture),a instanceof THREE.WebGLRenderTargetCube)for(var b=0;6>b;b++)k.deleteFramebuffer(a.__webglFramebuffer[b]),k.deleteRenderbuffer(a.__webglRenderbuffer[b]);else k.deleteFramebuffer(a.__webglFramebuffer),k.deleteRenderbuffer(a.__webglRenderbuffer);N.info.memory.textures--},Q=function(a){a=a.target;a.removeEventListener("dispose",Q);oc(a)},oc=function(a){var b=a.program;if(void 0!==b){a.program=void 0;var c,d,e=!1,a=0;for(c=ea.length;a<c;a++)if(d=
-ea[a],d.program===b){d.usedTimes--;0===d.usedTimes&&(e=!0);break}if(!0===e){e=[];a=0;for(c=ea.length;a<c;a++)d=ea[a],d.program!==b&&e.push(d);ea=e;k.deleteProgram(b);N.info.memory.programs--}}};this.renderBufferImmediate=function(a,b,c){a.hasPositions&&!a.__webglVertexBuffer&&(a.__webglVertexBuffer=k.createBuffer());a.hasNormals&&!a.__webglNormalBuffer&&(a.__webglNormalBuffer=k.createBuffer());a.hasUvs&&!a.__webglUvBuffer&&(a.__webglUvBuffer=k.createBuffer());a.hasColors&&!a.__webglColorBuffer&&(a.__webglColorBuffer=
-k.createBuffer());a.hasPositions&&(k.bindBuffer(k.ARRAY_BUFFER,a.__webglVertexBuffer),k.bufferData(k.ARRAY_BUFFER,a.positionArray,k.DYNAMIC_DRAW),k.enableVertexAttribArray(b.attributes.position),k.vertexAttribPointer(b.attributes.position,3,k.FLOAT,!1,0,0));if(a.hasNormals){k.bindBuffer(k.ARRAY_BUFFER,a.__webglNormalBuffer);if(c.shading===THREE.FlatShading){var d,e,f,g,h,i,j,l,p,m,n,q=3*a.count;for(n=0;n<q;n+=9)m=a.normalArray,d=m[n],e=m[n+1],f=m[n+2],g=m[n+3],i=m[n+4],l=m[n+5],h=m[n+6],j=m[n+7],
-p=m[n+8],d=(d+g+h)/3,e=(e+i+j)/3,f=(f+l+p)/3,m[n]=d,m[n+1]=e,m[n+2]=f,m[n+3]=d,m[n+4]=e,m[n+5]=f,m[n+6]=d,m[n+7]=e,m[n+8]=f}k.bufferData(k.ARRAY_BUFFER,a.normalArray,k.DYNAMIC_DRAW);k.enableVertexAttribArray(b.attributes.normal);k.vertexAttribPointer(b.attributes.normal,3,k.FLOAT,!1,0,0)}a.hasUvs&&c.map&&(k.bindBuffer(k.ARRAY_BUFFER,a.__webglUvBuffer),k.bufferData(k.ARRAY_BUFFER,a.uvArray,k.DYNAMIC_DRAW),k.enableVertexAttribArray(b.attributes.uv),k.vertexAttribPointer(b.attributes.uv,2,k.FLOAT,!1,
-0,0));a.hasColors&&c.vertexColors!==THREE.NoColors&&(k.bindBuffer(k.ARRAY_BUFFER,a.__webglColorBuffer),k.bufferData(k.ARRAY_BUFFER,a.colorArray,k.DYNAMIC_DRAW),k.enableVertexAttribArray(b.attributes.color),k.vertexAttribPointer(b.attributes.color,3,k.FLOAT,!1,0,0));k.drawArrays(k.TRIANGLES,0,a.count);a.count=0};this.renderBufferDirect=function(a,b,c,d,e,f){if(!1!==d.visible){var g,j,l;g=E(a,b,c,d,f);a=g.attributes;b=e.attributes;c=!1;g=16777215*e.id+2*g.id+(d.wireframe?1:0);g!==pa&&(pa=g,c=!0);c&&
-i();if(f instanceof THREE.Mesh)if(d=b.index){e=e.offsets;1<e.length&&(c=!0);for(var p=0,m=e.length;p<m;p++){var n=e[p].index;if(c){for(j in b)"index"!==j&&(g=a[j],f=b[j],l=f.itemSize,0<=g&&(k.bindBuffer(k.ARRAY_BUFFER,f.buffer),h(g),k.vertexAttribPointer(g,l,k.FLOAT,!1,0,4*n*l)));k.bindBuffer(k.ELEMENT_ARRAY_BUFFER,d.buffer)}k.drawElements(k.TRIANGLES,e[p].count,k.UNSIGNED_SHORT,2*e[p].start);N.info.render.calls++;N.info.render.vertices+=e[p].count;N.info.render.faces+=e[p].count/3}}else{if(c)for(j in b)"index"!==
-j&&(g=a[j],f=b[j],l=f.itemSize,0<=g&&(k.bindBuffer(k.ARRAY_BUFFER,f.buffer),h(g),k.vertexAttribPointer(g,l,k.FLOAT,!1,0,0)));j=e.attributes.position;k.drawArrays(k.TRIANGLES,0,j.numItems/3);N.info.render.calls++;N.info.render.vertices+=j.numItems/3;N.info.render.faces+=j.numItems/3/3}else if(f instanceof THREE.ParticleSystem){if(c){for(j in b)g=a[j],f=b[j],l=f.itemSize,0<=g&&(k.bindBuffer(k.ARRAY_BUFFER,f.buffer),h(g),k.vertexAttribPointer(g,l,k.FLOAT,!1,0,0));j=b.position;k.drawArrays(k.POINTS,0,
-j.numItems/3);N.info.render.calls++;N.info.render.points+=j.numItems/3}}else if(f instanceof THREE.Line&&c){for(j in b)g=a[j],f=b[j],l=f.itemSize,0<=g&&(k.bindBuffer(k.ARRAY_BUFFER,f.buffer),h(g),k.vertexAttribPointer(g,l,k.FLOAT,!1,0,0));H(d.linewidth);j=b.position;k.drawArrays(k.LINE_STRIP,0,j.numItems/3);N.info.render.calls++;N.info.render.points+=j.numItems}}};this.renderBuffer=function(a,b,c,d,e,f){if(!1!==d.visible){var g,j,c=E(a,b,c,d,f),a=c.attributes,b=!1,c=16777215*e.id+2*c.id+(d.wireframe?
-1:0);c!==pa&&(pa=c,b=!0);b&&i();if(!d.morphTargets&&0<=a.position)b&&(k.bindBuffer(k.ARRAY_BUFFER,e.__webglVertexBuffer),h(a.position),k.vertexAttribPointer(a.position,3,k.FLOAT,!1,0,0));else if(f.morphTargetBase){c=d.program.attributes;-1!==f.morphTargetBase&&0<=c.position?(k.bindBuffer(k.ARRAY_BUFFER,e.__webglMorphTargetsBuffers[f.morphTargetBase]),h(c.position),k.vertexAttribPointer(c.position,3,k.FLOAT,!1,0,0)):0<=c.position&&(k.bindBuffer(k.ARRAY_BUFFER,e.__webglVertexBuffer),h(c.position),k.vertexAttribPointer(c.position,
-3,k.FLOAT,!1,0,0));if(f.morphTargetForcedOrder.length){var l=0;j=f.morphTargetForcedOrder;for(g=f.morphTargetInfluences;l<d.numSupportedMorphTargets&&l<j.length;)0<=c["morphTarget"+l]&&(k.bindBuffer(k.ARRAY_BUFFER,e.__webglMorphTargetsBuffers[j[l]]),h(c["morphTarget"+l]),k.vertexAttribPointer(c["morphTarget"+l],3,k.FLOAT,!1,0,0)),0<=c["morphNormal"+l]&&d.morphNormals&&(k.bindBuffer(k.ARRAY_BUFFER,e.__webglMorphNormalsBuffers[j[l]]),h(c["morphNormal"+l]),k.vertexAttribPointer(c["morphNormal"+l],3,
-k.FLOAT,!1,0,0)),f.__webglMorphTargetInfluences[l]=g[j[l]],l++}else{j=[];g=f.morphTargetInfluences;var p,n=g.length;for(p=0;p<n;p++)l=g[p],0<l&&j.push([l,p]);j.length>d.numSupportedMorphTargets?(j.sort(m),j.length=d.numSupportedMorphTargets):j.length>d.numSupportedMorphNormals?j.sort(m):0===j.length&&j.push([0,0]);for(l=0;l<d.numSupportedMorphTargets;)j[l]?(p=j[l][1],0<=c["morphTarget"+l]&&(k.bindBuffer(k.ARRAY_BUFFER,e.__webglMorphTargetsBuffers[p]),h(c["morphTarget"+l]),k.vertexAttribPointer(c["morphTarget"+
-l],3,k.FLOAT,!1,0,0)),0<=c["morphNormal"+l]&&d.morphNormals&&(k.bindBuffer(k.ARRAY_BUFFER,e.__webglMorphNormalsBuffers[p]),h(c["morphNormal"+l]),k.vertexAttribPointer(c["morphNormal"+l],3,k.FLOAT,!1,0,0)),f.__webglMorphTargetInfluences[l]=g[p]):f.__webglMorphTargetInfluences[l]=0,l++}null!==d.program.uniforms.morphTargetInfluences&&k.uniform1fv(d.program.uniforms.morphTargetInfluences,f.__webglMorphTargetInfluences)}if(b){if(e.__webglCustomAttributesList){g=0;for(j=e.__webglCustomAttributesList.length;g<
-j;g++)c=e.__webglCustomAttributesList[g],0<=a[c.buffer.belongsToAttribute]&&(k.bindBuffer(k.ARRAY_BUFFER,c.buffer),h(a[c.buffer.belongsToAttribute]),k.vertexAttribPointer(a[c.buffer.belongsToAttribute],c.size,k.FLOAT,!1,0,0))}0<=a.color&&(k.bindBuffer(k.ARRAY_BUFFER,e.__webglColorBuffer),h(a.color),k.vertexAttribPointer(a.color,3,k.FLOAT,!1,0,0));0<=a.normal&&(k.bindBuffer(k.ARRAY_BUFFER,e.__webglNormalBuffer),h(a.normal),k.vertexAttribPointer(a.normal,3,k.FLOAT,!1,0,0));0<=a.tangent&&(k.bindBuffer(k.ARRAY_BUFFER,
-e.__webglTangentBuffer),h(a.tangent),k.vertexAttribPointer(a.tangent,4,k.FLOAT,!1,0,0));0<=a.uv&&(k.bindBuffer(k.ARRAY_BUFFER,e.__webglUVBuffer),h(a.uv),k.vertexAttribPointer(a.uv,2,k.FLOAT,!1,0,0));0<=a.uv2&&(k.bindBuffer(k.ARRAY_BUFFER,e.__webglUV2Buffer),h(a.uv2),k.vertexAttribPointer(a.uv2,2,k.FLOAT,!1,0,0));d.skinning&&(0<=a.skinIndex&&0<=a.skinWeight)&&(k.bindBuffer(k.ARRAY_BUFFER,e.__webglSkinIndicesBuffer),h(a.skinIndex),k.vertexAttribPointer(a.skinIndex,4,k.FLOAT,!1,0,0),k.bindBuffer(k.ARRAY_BUFFER,
-e.__webglSkinWeightsBuffer),h(a.skinWeight),k.vertexAttribPointer(a.skinWeight,4,k.FLOAT,!1,0,0));0<=a.lineDistance&&(k.bindBuffer(k.ARRAY_BUFFER,e.__webglLineDistanceBuffer),h(a.lineDistance),k.vertexAttribPointer(a.lineDistance,1,k.FLOAT,!1,0,0))}f instanceof THREE.Mesh?(d.wireframe?(H(d.wireframeLinewidth),b&&k.bindBuffer(k.ELEMENT_ARRAY_BUFFER,e.__webglLineBuffer),k.drawElements(k.LINES,e.__webglLineCount,k.UNSIGNED_SHORT,0)):(b&&k.bindBuffer(k.ELEMENT_ARRAY_BUFFER,e.__webglFaceBuffer),k.drawElements(k.TRIANGLES,
-e.__webglFaceCount,k.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?k.LINE_STRIP:k.LINES,H(d.linewidth),k.drawArrays(f,0,e.__webglLineCount),N.info.render.calls++):f instanceof THREE.ParticleSystem?(k.drawArrays(k.POINTS,0,e.__webglParticleCount),N.info.render.calls++,N.info.render.points+=e.__webglParticleCount):f instanceof THREE.Ribbon&&(k.drawArrays(k.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,h,i=a.__lights,m=a.fog;La=-1;Qa=!0;!0===a.autoUpdate&&a.updateMatrixWorld();void 0===b.parent&&b.updateMatrixWorld();b.matrixWorldInverse.getInverse(b.matrixWorld);Ja.multiplyMatrices(b.projectionMatrix,b.matrixWorldInverse);ta.setFromMatrix(Ja);this.autoUpdateObjects&&this.initWebGLObjects(a);
-p(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);h=a.__webglObjects;d=0;for(e=h.length;d<e;d++)if(f=h[d],g=f.object,f.id=d,f.render=!1,g.visible&&(!(g instanceof THREE.Mesh||g instanceof THREE.ParticleSystem)||!g.frustumCulled||ta.intersectsObject(g))){var n=g;n._modelViewMatrix.multiplyMatrices(b.matrixWorldInverse,
-n.matrixWorld);n._normalMatrix.getNormalMatrix(n._modelViewMatrix);var n=f,q=n.buffer,s=void 0,t=s=void 0,t=n.object.material;if(t instanceof THREE.MeshFaceMaterial)s=q.materialIndex,s=t.materials[s],s.transparent?(n.transparent=s,n.opaque=null):(n.opaque=s,n.transparent=null);else if(s=t)s.transparent?(n.transparent=s,n.opaque=null):(n.opaque=s,n.transparent=null);f.render=!0;!0===this.sortObjects&&(null!==g.renderDepth?f.z=g.renderDepth:(Na.getPositionFromMatrix(g.matrixWorld),Na.applyProjection(Ja),
-f.z=Na.z))}this.sortObjects&&h.sort(j);h=a.__webglObjectsImmediate;d=0;for(e=h.length;d<e;d++)f=h[d],g=f.object,g.visible&&(g._modelViewMatrix.multiplyMatrices(b.matrixWorldInverse,g.matrixWorld),g._normalMatrix.getNormalMatrix(g._modelViewMatrix),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),
-K(d.polygonOffset,d.polygonOffsetFactor,d.polygonOffsetUnits),l(a.__webglObjects,!1,"",b,i,m,!0,d),r(a.__webglObjectsImmediate,"",b,i,m,!1,d)):(d=null,this.setBlending(THREE.NoBlending),l(a.__webglObjects,!0,"opaque",b,i,m,!1,d),r(a.__webglObjectsImmediate,"opaque",b,i,m,!1,d),l(a.__webglObjects,!1,"transparent",b,i,m,!0,d),r(a.__webglObjectsImmediate,"transparent",b,i,m,!0,d));p(this.renderPluginsPost,a,b);c&&(c.generateMipmaps&&c.minFilter!==THREE.NearestFilter&&c.minFilter!==THREE.LinearFilter)&&
-(c instanceof THREE.WebGLRenderTargetCube?(k.bindTexture(k.TEXTURE_CUBE_MAP,c.__webglTexture),k.generateMipmap(k.TEXTURE_CUBE_MAP),k.bindTexture(k.TEXTURE_CUBE_MAP,null)):(k.bindTexture(k.TEXTURE_2D,c.__webglTexture),k.generateMipmap(k.TEXTURE_2D),k.bindTexture(k.TEXTURE_2D,null)));this.setDepthTest(!0);this.setDepthWrite(!0)}};this.renderImmediateObject=function(a,b,c,d,e){var f=E(a,b,c,d,e);pa=-1;N.setMaterialFaces(d);e.immediateRenderCallback?e.immediateRenderCallback(f,k,ta):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;)s(a.__objectsAdded[0],a),a.__objectsAdded.splice(0,1);for(;a.__objectsRemoved.length;)u(a.__objectsRemoved[0],a),a.__objectsRemoved.splice(0,1);for(var b=0,c=a.__webglObjects.length;b<c;b++){var h=a.__webglObjects[b].object;void 0===h.__webglInit&&(void 0!==h.__webglActive&&u(h,a),s(h,a));var i=h,j=i.geometry,l=void 0,p=
-void 0,n=void 0;if(j instanceof THREE.BufferGeometry){var r=k.DYNAMIC_DRAW,t=!j.dynamic,x=j.attributes,z=void 0,B=void 0;for(z in x)B=x[z],B.needsUpdate&&("index"===z?(k.bindBuffer(k.ELEMENT_ARRAY_BUFFER,B.buffer),k.bufferData(k.ELEMENT_ARRAY_BUFFER,B.array,r)):(k.bindBuffer(k.ARRAY_BUFFER,B.buffer),k.bufferData(k.ARRAY_BUFFER,B.array,r)),B.needsUpdate=!1),t&&!B.dynamic&&delete B.array}else if(i instanceof THREE.Mesh){for(var E=0,F=j.geometryGroupsList.length;E<F;E++)if(l=j.geometryGroupsList[E],
-n=e(i,l),j.buffersNeedUpdate&&d(l,i),p=n.attributes&&q(n),j.verticesNeedUpdate||j.morphTargetsNeedUpdate||j.elementsNeedUpdate||j.uvsNeedUpdate||j.normalsNeedUpdate||j.colorsNeedUpdate||j.tangentsNeedUpdate||p){var C=l,J=i,G=k.DYNAMIC_DRAW,I=!j.dynamic,H=n;if(C.__inittedArrays){var L=f(H),K=H.vertexColors?H.vertexColors:!1,N=g(H),M=L===THREE.SmoothShading,D=void 0,A=void 0,ea=void 0,O=void 0,U=void 0,Q=void 0,P=void 0,V=void 0,X=void 0,Y=void 0,aa=void 0,S=void 0,T=void 0,R=void 0,W=void 0,na=void 0,
-da=void 0,Ka=void 0,ja=void 0,fa=void 0,ga=void 0,ia=void 0,kb=void 0,ha=void 0,pa=void 0,la=void 0,sa=void 0,La=void 0,db=void 0,oa=void 0,za=void 0,ta=void 0,ya=void 0,Ea=void 0,Qa=void 0,ua=void 0,gb=void 0,Oa=void 0,Ua=void 0,Za=void 0,ab=void 0,lb=void 0,Xa=void 0,Ya=void 0,Va=void 0,Sa=void 0,Ma=0,Ra=0,Ta=0,$a=0,wb=0,hb=0,Aa=0,mb=0,Pa=0,$=0,ka=0,w=0,wa=void 0,bb=C.__vertexArray,rb=C.__uvArray,ub=C.__uv2Array,xb=C.__normalArray,Fa=C.__tangentArray,cb=C.__colorArray,Ga=C.__skinIndexArray,Ha=C.__skinWeightArray,
-Ab=C.__morphTargetsArrays,Bb=C.__morphNormalsArrays,Eb=C.__webglCustomAttributesList,v=void 0,Fb=C.__faceArray,tb=C.__lineArray,nb=J.geometry,Nb=nb.elementsNeedUpdate,Kb=nb.uvsNeedUpdate,Sb=nb.normalsNeedUpdate,Tb=nb.tangentsNeedUpdate,cc=nb.colorsNeedUpdate,dc=nb.morphTargetsNeedUpdate,Ub=nb.vertices,qa=C.faces3,ra=C.faces4,ib=nb.faces,Oc=nb.faceVertexUvs[0],Pc=nb.faceVertexUvs[1],Vb=nb.skinIndices,Pb=nb.skinWeights,Qb=nb.morphTargets,pc=nb.morphNormals;if(nb.verticesNeedUpdate){D=0;for(A=qa.length;D<
-A;D++)O=ib[qa[D]],S=Ub[O.a],T=Ub[O.b],R=Ub[O.c],bb[Ra]=S.x,bb[Ra+1]=S.y,bb[Ra+2]=S.z,bb[Ra+3]=T.x,bb[Ra+4]=T.y,bb[Ra+5]=T.z,bb[Ra+6]=R.x,bb[Ra+7]=R.y,bb[Ra+8]=R.z,Ra+=9;D=0;for(A=ra.length;D<A;D++)O=ib[ra[D]],S=Ub[O.a],T=Ub[O.b],R=Ub[O.c],W=Ub[O.d],bb[Ra]=S.x,bb[Ra+1]=S.y,bb[Ra+2]=S.z,bb[Ra+3]=T.x,bb[Ra+4]=T.y,bb[Ra+5]=T.z,bb[Ra+6]=R.x,bb[Ra+7]=R.y,bb[Ra+8]=R.z,bb[Ra+9]=W.x,bb[Ra+10]=W.y,bb[Ra+11]=W.z,Ra+=12;k.bindBuffer(k.ARRAY_BUFFER,C.__webglVertexBuffer);k.bufferData(k.ARRAY_BUFFER,bb,G)}if(dc){ab=
-0;for(lb=Qb.length;ab<lb;ab++){D=ka=0;for(A=qa.length;D<A;D++)Va=qa[D],O=ib[Va],S=Qb[ab].vertices[O.a],T=Qb[ab].vertices[O.b],R=Qb[ab].vertices[O.c],Xa=Ab[ab],Xa[ka]=S.x,Xa[ka+1]=S.y,Xa[ka+2]=S.z,Xa[ka+3]=T.x,Xa[ka+4]=T.y,Xa[ka+5]=T.z,Xa[ka+6]=R.x,Xa[ka+7]=R.y,Xa[ka+8]=R.z,H.morphNormals&&(M?(Sa=pc[ab].vertexNormals[Va],fa=Sa.a,ga=Sa.b,ia=Sa.c):ia=ga=fa=pc[ab].faceNormals[Va],Ya=Bb[ab],Ya[ka]=fa.x,Ya[ka+1]=fa.y,Ya[ka+2]=fa.z,Ya[ka+3]=ga.x,Ya[ka+4]=ga.y,Ya[ka+5]=ga.z,Ya[ka+6]=ia.x,Ya[ka+7]=ia.y,Ya[ka+
-8]=ia.z),ka+=9;D=0;for(A=ra.length;D<A;D++)Va=ra[D],O=ib[Va],S=Qb[ab].vertices[O.a],T=Qb[ab].vertices[O.b],R=Qb[ab].vertices[O.c],W=Qb[ab].vertices[O.d],Xa=Ab[ab],Xa[ka]=S.x,Xa[ka+1]=S.y,Xa[ka+2]=S.z,Xa[ka+3]=T.x,Xa[ka+4]=T.y,Xa[ka+5]=T.z,Xa[ka+6]=R.x,Xa[ka+7]=R.y,Xa[ka+8]=R.z,Xa[ka+9]=W.x,Xa[ka+10]=W.y,Xa[ka+11]=W.z,H.morphNormals&&(M?(Sa=pc[ab].vertexNormals[Va],fa=Sa.a,ga=Sa.b,ia=Sa.c,kb=Sa.d):kb=ia=ga=fa=pc[ab].faceNormals[Va],Ya=Bb[ab],Ya[ka]=fa.x,Ya[ka+1]=fa.y,Ya[ka+2]=fa.z,Ya[ka+3]=ga.x,Ya[ka+
-4]=ga.y,Ya[ka+5]=ga.z,Ya[ka+6]=ia.x,Ya[ka+7]=ia.y,Ya[ka+8]=ia.z,Ya[ka+9]=kb.x,Ya[ka+10]=kb.y,Ya[ka+11]=kb.z),ka+=12;k.bindBuffer(k.ARRAY_BUFFER,C.__webglMorphTargetsBuffers[ab]);k.bufferData(k.ARRAY_BUFFER,Ab[ab],G);H.morphNormals&&(k.bindBuffer(k.ARRAY_BUFFER,C.__webglMorphNormalsBuffers[ab]),k.bufferData(k.ARRAY_BUFFER,Bb[ab],G))}}if(Pb.length){D=0;for(A=qa.length;D<A;D++)O=ib[qa[D]],La=Pb[O.a],db=Pb[O.b],oa=Pb[O.c],Ha[$]=La.x,Ha[$+1]=La.y,Ha[$+2]=La.z,Ha[$+3]=La.w,Ha[$+4]=db.x,Ha[$+5]=db.y,Ha[$+
-6]=db.z,Ha[$+7]=db.w,Ha[$+8]=oa.x,Ha[$+9]=oa.y,Ha[$+10]=oa.z,Ha[$+11]=oa.w,ta=Vb[O.a],ya=Vb[O.b],Ea=Vb[O.c],Ga[$]=ta.x,Ga[$+1]=ta.y,Ga[$+2]=ta.z,Ga[$+3]=ta.w,Ga[$+4]=ya.x,Ga[$+5]=ya.y,Ga[$+6]=ya.z,Ga[$+7]=ya.w,Ga[$+8]=Ea.x,Ga[$+9]=Ea.y,Ga[$+10]=Ea.z,Ga[$+11]=Ea.w,$+=12;D=0;for(A=ra.length;D<A;D++)O=ib[ra[D]],La=Pb[O.a],db=Pb[O.b],oa=Pb[O.c],za=Pb[O.d],Ha[$]=La.x,Ha[$+1]=La.y,Ha[$+2]=La.z,Ha[$+3]=La.w,Ha[$+4]=db.x,Ha[$+5]=db.y,Ha[$+6]=db.z,Ha[$+7]=db.w,Ha[$+8]=oa.x,Ha[$+9]=oa.y,Ha[$+10]=oa.z,Ha[$+
-11]=oa.w,Ha[$+12]=za.x,Ha[$+13]=za.y,Ha[$+14]=za.z,Ha[$+15]=za.w,ta=Vb[O.a],ya=Vb[O.b],Ea=Vb[O.c],Qa=Vb[O.d],Ga[$]=ta.x,Ga[$+1]=ta.y,Ga[$+2]=ta.z,Ga[$+3]=ta.w,Ga[$+4]=ya.x,Ga[$+5]=ya.y,Ga[$+6]=ya.z,Ga[$+7]=ya.w,Ga[$+8]=Ea.x,Ga[$+9]=Ea.y,Ga[$+10]=Ea.z,Ga[$+11]=Ea.w,Ga[$+12]=Qa.x,Ga[$+13]=Qa.y,Ga[$+14]=Qa.z,Ga[$+15]=Qa.w,$+=16;0<$&&(k.bindBuffer(k.ARRAY_BUFFER,C.__webglSkinIndicesBuffer),k.bufferData(k.ARRAY_BUFFER,Ga,G),k.bindBuffer(k.ARRAY_BUFFER,C.__webglSkinWeightsBuffer),k.bufferData(k.ARRAY_BUFFER,
-Ha,G))}if(cc&&K){D=0;for(A=qa.length;D<A;D++)O=ib[qa[D]],P=O.vertexColors,V=O.color,3===P.length&&K===THREE.VertexColors?(ha=P[0],pa=P[1],la=P[2]):la=pa=ha=V,cb[Pa]=ha.r,cb[Pa+1]=ha.g,cb[Pa+2]=ha.b,cb[Pa+3]=pa.r,cb[Pa+4]=pa.g,cb[Pa+5]=pa.b,cb[Pa+6]=la.r,cb[Pa+7]=la.g,cb[Pa+8]=la.b,Pa+=9;D=0;for(A=ra.length;D<A;D++)O=ib[ra[D]],P=O.vertexColors,V=O.color,4===P.length&&K===THREE.VertexColors?(ha=P[0],pa=P[1],la=P[2],sa=P[3]):sa=la=pa=ha=V,cb[Pa]=ha.r,cb[Pa+1]=ha.g,cb[Pa+2]=ha.b,cb[Pa+3]=pa.r,cb[Pa+4]=
-pa.g,cb[Pa+5]=pa.b,cb[Pa+6]=la.r,cb[Pa+7]=la.g,cb[Pa+8]=la.b,cb[Pa+9]=sa.r,cb[Pa+10]=sa.g,cb[Pa+11]=sa.b,Pa+=12;0<Pa&&(k.bindBuffer(k.ARRAY_BUFFER,C.__webglColorBuffer),k.bufferData(k.ARRAY_BUFFER,cb,G))}if(Tb&&nb.hasTangents){D=0;for(A=qa.length;D<A;D++)O=ib[qa[D]],X=O.vertexTangents,na=X[0],da=X[1],Ka=X[2],Fa[Aa]=na.x,Fa[Aa+1]=na.y,Fa[Aa+2]=na.z,Fa[Aa+3]=na.w,Fa[Aa+4]=da.x,Fa[Aa+5]=da.y,Fa[Aa+6]=da.z,Fa[Aa+7]=da.w,Fa[Aa+8]=Ka.x,Fa[Aa+9]=Ka.y,Fa[Aa+10]=Ka.z,Fa[Aa+11]=Ka.w,Aa+=12;D=0;for(A=ra.length;D<
-A;D++)O=ib[ra[D]],X=O.vertexTangents,na=X[0],da=X[1],Ka=X[2],ja=X[3],Fa[Aa]=na.x,Fa[Aa+1]=na.y,Fa[Aa+2]=na.z,Fa[Aa+3]=na.w,Fa[Aa+4]=da.x,Fa[Aa+5]=da.y,Fa[Aa+6]=da.z,Fa[Aa+7]=da.w,Fa[Aa+8]=Ka.x,Fa[Aa+9]=Ka.y,Fa[Aa+10]=Ka.z,Fa[Aa+11]=Ka.w,Fa[Aa+12]=ja.x,Fa[Aa+13]=ja.y,Fa[Aa+14]=ja.z,Fa[Aa+15]=ja.w,Aa+=16;k.bindBuffer(k.ARRAY_BUFFER,C.__webglTangentBuffer);k.bufferData(k.ARRAY_BUFFER,Fa,G)}if(Sb&&L){D=0;for(A=qa.length;D<A;D++)if(O=ib[qa[D]],U=O.vertexNormals,Q=O.normal,3===U.length&&M)for(ua=0;3>ua;ua++)Oa=
-U[ua],xb[hb]=Oa.x,xb[hb+1]=Oa.y,xb[hb+2]=Oa.z,hb+=3;else for(ua=0;3>ua;ua++)xb[hb]=Q.x,xb[hb+1]=Q.y,xb[hb+2]=Q.z,hb+=3;D=0;for(A=ra.length;D<A;D++)if(O=ib[ra[D]],U=O.vertexNormals,Q=O.normal,4===U.length&&M)for(ua=0;4>ua;ua++)Oa=U[ua],xb[hb]=Oa.x,xb[hb+1]=Oa.y,xb[hb+2]=Oa.z,hb+=3;else for(ua=0;4>ua;ua++)xb[hb]=Q.x,xb[hb+1]=Q.y,xb[hb+2]=Q.z,hb+=3;k.bindBuffer(k.ARRAY_BUFFER,C.__webglNormalBuffer);k.bufferData(k.ARRAY_BUFFER,xb,G)}if(Kb&&Oc&&N){D=0;for(A=qa.length;D<A;D++)if(ea=qa[D],Y=Oc[ea],void 0!==
-Y)for(ua=0;3>ua;ua++)Ua=Y[ua],rb[Ta]=Ua.x,rb[Ta+1]=Ua.y,Ta+=2;D=0;for(A=ra.length;D<A;D++)if(ea=ra[D],Y=Oc[ea],void 0!==Y)for(ua=0;4>ua;ua++)Ua=Y[ua],rb[Ta]=Ua.x,rb[Ta+1]=Ua.y,Ta+=2;0<Ta&&(k.bindBuffer(k.ARRAY_BUFFER,C.__webglUVBuffer),k.bufferData(k.ARRAY_BUFFER,rb,G))}if(Kb&&Pc&&N){D=0;for(A=qa.length;D<A;D++)if(ea=qa[D],aa=Pc[ea],void 0!==aa)for(ua=0;3>ua;ua++)Za=aa[ua],ub[$a]=Za.x,ub[$a+1]=Za.y,$a+=2;D=0;for(A=ra.length;D<A;D++)if(ea=ra[D],aa=Pc[ea],void 0!==aa)for(ua=0;4>ua;ua++)Za=aa[ua],ub[$a]=
-Za.x,ub[$a+1]=Za.y,$a+=2;0<$a&&(k.bindBuffer(k.ARRAY_BUFFER,C.__webglUV2Buffer),k.bufferData(k.ARRAY_BUFFER,ub,G))}if(Nb){D=0;for(A=qa.length;D<A;D++)Fb[wb]=Ma,Fb[wb+1]=Ma+1,Fb[wb+2]=Ma+2,wb+=3,tb[mb]=Ma,tb[mb+1]=Ma+1,tb[mb+2]=Ma,tb[mb+3]=Ma+2,tb[mb+4]=Ma+1,tb[mb+5]=Ma+2,mb+=6,Ma+=3;D=0;for(A=ra.length;D<A;D++)Fb[wb]=Ma,Fb[wb+1]=Ma+1,Fb[wb+2]=Ma+3,Fb[wb+3]=Ma+1,Fb[wb+4]=Ma+2,Fb[wb+5]=Ma+3,wb+=6,tb[mb]=Ma,tb[mb+1]=Ma+1,tb[mb+2]=Ma,tb[mb+3]=Ma+3,tb[mb+4]=Ma+1,tb[mb+5]=Ma+2,tb[mb+6]=Ma+2,tb[mb+7]=Ma+
-3,mb+=8,Ma+=4;k.bindBuffer(k.ELEMENT_ARRAY_BUFFER,C.__webglFaceBuffer);k.bufferData(k.ELEMENT_ARRAY_BUFFER,Fb,G);k.bindBuffer(k.ELEMENT_ARRAY_BUFFER,C.__webglLineBuffer);k.bufferData(k.ELEMENT_ARRAY_BUFFER,tb,G)}if(Eb){ua=0;for(gb=Eb.length;ua<gb;ua++)if(v=Eb[ua],v.__original.needsUpdate){w=0;if(1===v.size)if(void 0===v.boundTo||"vertices"===v.boundTo){D=0;for(A=qa.length;D<A;D++)O=ib[qa[D]],v.array[w]=v.value[O.a],v.array[w+1]=v.value[O.b],v.array[w+2]=v.value[O.c],w+=3;D=0;for(A=ra.length;D<A;D++)O=
-ib[ra[D]],v.array[w]=v.value[O.a],v.array[w+1]=v.value[O.b],v.array[w+2]=v.value[O.c],v.array[w+3]=v.value[O.d],w+=4}else{if("faces"===v.boundTo){D=0;for(A=qa.length;D<A;D++)wa=v.value[qa[D]],v.array[w]=wa,v.array[w+1]=wa,v.array[w+2]=wa,w+=3;D=0;for(A=ra.length;D<A;D++)wa=v.value[ra[D]],v.array[w]=wa,v.array[w+1]=wa,v.array[w+2]=wa,v.array[w+3]=wa,w+=4}}else if(2===v.size)if(void 0===v.boundTo||"vertices"===v.boundTo){D=0;for(A=qa.length;D<A;D++)O=ib[qa[D]],S=v.value[O.a],T=v.value[O.b],R=v.value[O.c],
-v.array[w]=S.x,v.array[w+1]=S.y,v.array[w+2]=T.x,v.array[w+3]=T.y,v.array[w+4]=R.x,v.array[w+5]=R.y,w+=6;D=0;for(A=ra.length;D<A;D++)O=ib[ra[D]],S=v.value[O.a],T=v.value[O.b],R=v.value[O.c],W=v.value[O.d],v.array[w]=S.x,v.array[w+1]=S.y,v.array[w+2]=T.x,v.array[w+3]=T.y,v.array[w+4]=R.x,v.array[w+5]=R.y,v.array[w+6]=W.x,v.array[w+7]=W.y,w+=8}else{if("faces"===v.boundTo){D=0;for(A=qa.length;D<A;D++)R=T=S=wa=v.value[qa[D]],v.array[w]=S.x,v.array[w+1]=S.y,v.array[w+2]=T.x,v.array[w+3]=T.y,v.array[w+
-4]=R.x,v.array[w+5]=R.y,w+=6;D=0;for(A=ra.length;D<A;D++)W=R=T=S=wa=v.value[ra[D]],v.array[w]=S.x,v.array[w+1]=S.y,v.array[w+2]=T.x,v.array[w+3]=T.y,v.array[w+4]=R.x,v.array[w+5]=R.y,v.array[w+6]=W.x,v.array[w+7]=W.y,w+=8}}else if(3===v.size){var Z;Z="c"===v.type?["r","g","b"]:["x","y","z"];if(void 0===v.boundTo||"vertices"===v.boundTo){D=0;for(A=qa.length;D<A;D++)O=ib[qa[D]],S=v.value[O.a],T=v.value[O.b],R=v.value[O.c],v.array[w]=S[Z[0]],v.array[w+1]=S[Z[1]],v.array[w+2]=S[Z[2]],v.array[w+3]=T[Z[0]],
-v.array[w+4]=T[Z[1]],v.array[w+5]=T[Z[2]],v.array[w+6]=R[Z[0]],v.array[w+7]=R[Z[1]],v.array[w+8]=R[Z[2]],w+=9;D=0;for(A=ra.length;D<A;D++)O=ib[ra[D]],S=v.value[O.a],T=v.value[O.b],R=v.value[O.c],W=v.value[O.d],v.array[w]=S[Z[0]],v.array[w+1]=S[Z[1]],v.array[w+2]=S[Z[2]],v.array[w+3]=T[Z[0]],v.array[w+4]=T[Z[1]],v.array[w+5]=T[Z[2]],v.array[w+6]=R[Z[0]],v.array[w+7]=R[Z[1]],v.array[w+8]=R[Z[2]],v.array[w+9]=W[Z[0]],v.array[w+10]=W[Z[1]],v.array[w+11]=W[Z[2]],w+=12}else if("faces"===v.boundTo){D=0;
-for(A=qa.length;D<A;D++)R=T=S=wa=v.value[qa[D]],v.array[w]=S[Z[0]],v.array[w+1]=S[Z[1]],v.array[w+2]=S[Z[2]],v.array[w+3]=T[Z[0]],v.array[w+4]=T[Z[1]],v.array[w+5]=T[Z[2]],v.array[w+6]=R[Z[0]],v.array[w+7]=R[Z[1]],v.array[w+8]=R[Z[2]],w+=9;D=0;for(A=ra.length;D<A;D++)W=R=T=S=wa=v.value[ra[D]],v.array[w]=S[Z[0]],v.array[w+1]=S[Z[1]],v.array[w+2]=S[Z[2]],v.array[w+3]=T[Z[0]],v.array[w+4]=T[Z[1]],v.array[w+5]=T[Z[2]],v.array[w+6]=R[Z[0]],v.array[w+7]=R[Z[1]],v.array[w+8]=R[Z[2]],v.array[w+9]=W[Z[0]],
-v.array[w+10]=W[Z[1]],v.array[w+11]=W[Z[2]],w+=12}else if("faceVertices"===v.boundTo){D=0;for(A=qa.length;D<A;D++)wa=v.value[qa[D]],S=wa[0],T=wa[1],R=wa[2],v.array[w]=S[Z[0]],v.array[w+1]=S[Z[1]],v.array[w+2]=S[Z[2]],v.array[w+3]=T[Z[0]],v.array[w+4]=T[Z[1]],v.array[w+5]=T[Z[2]],v.array[w+6]=R[Z[0]],v.array[w+7]=R[Z[1]],v.array[w+8]=R[Z[2]],w+=9;D=0;for(A=ra.length;D<A;D++)wa=v.value[ra[D]],S=wa[0],T=wa[1],R=wa[2],W=wa[3],v.array[w]=S[Z[0]],v.array[w+1]=S[Z[1]],v.array[w+2]=S[Z[2]],v.array[w+3]=T[Z[0]],
-v.array[w+4]=T[Z[1]],v.array[w+5]=T[Z[2]],v.array[w+6]=R[Z[0]],v.array[w+7]=R[Z[1]],v.array[w+8]=R[Z[2]],v.array[w+9]=W[Z[0]],v.array[w+10]=W[Z[1]],v.array[w+11]=W[Z[2]],w+=12}}else if(4===v.size)if(void 0===v.boundTo||"vertices"===v.boundTo){D=0;for(A=qa.length;D<A;D++)O=ib[qa[D]],S=v.value[O.a],T=v.value[O.b],R=v.value[O.c],v.array[w]=S.x,v.array[w+1]=S.y,v.array[w+2]=S.z,v.array[w+3]=S.w,v.array[w+4]=T.x,v.array[w+5]=T.y,v.array[w+6]=T.z,v.array[w+7]=T.w,v.array[w+8]=R.x,v.array[w+9]=R.y,v.array[w+
-10]=R.z,v.array[w+11]=R.w,w+=12;D=0;for(A=ra.length;D<A;D++)O=ib[ra[D]],S=v.value[O.a],T=v.value[O.b],R=v.value[O.c],W=v.value[O.d],v.array[w]=S.x,v.array[w+1]=S.y,v.array[w+2]=S.z,v.array[w+3]=S.w,v.array[w+4]=T.x,v.array[w+5]=T.y,v.array[w+6]=T.z,v.array[w+7]=T.w,v.array[w+8]=R.x,v.array[w+9]=R.y,v.array[w+10]=R.z,v.array[w+11]=R.w,v.array[w+12]=W.x,v.array[w+13]=W.y,v.array[w+14]=W.z,v.array[w+15]=W.w,w+=16}else if("faces"===v.boundTo){D=0;for(A=qa.length;D<A;D++)R=T=S=wa=v.value[qa[D]],v.array[w]=
-S.x,v.array[w+1]=S.y,v.array[w+2]=S.z,v.array[w+3]=S.w,v.array[w+4]=T.x,v.array[w+5]=T.y,v.array[w+6]=T.z,v.array[w+7]=T.w,v.array[w+8]=R.x,v.array[w+9]=R.y,v.array[w+10]=R.z,v.array[w+11]=R.w,w+=12;D=0;for(A=ra.length;D<A;D++)W=R=T=S=wa=v.value[ra[D]],v.array[w]=S.x,v.array[w+1]=S.y,v.array[w+2]=S.z,v.array[w+3]=S.w,v.array[w+4]=T.x,v.array[w+5]=T.y,v.array[w+6]=T.z,v.array[w+7]=T.w,v.array[w+8]=R.x,v.array[w+9]=R.y,v.array[w+10]=R.z,v.array[w+11]=R.w,v.array[w+12]=W.x,v.array[w+13]=W.y,v.array[w+
-14]=W.z,v.array[w+15]=W.w,w+=16}else if("faceVertices"===v.boundTo){D=0;for(A=qa.length;D<A;D++)wa=v.value[qa[D]],S=wa[0],T=wa[1],R=wa[2],v.array[w]=S.x,v.array[w+1]=S.y,v.array[w+2]=S.z,v.array[w+3]=S.w,v.array[w+4]=T.x,v.array[w+5]=T.y,v.array[w+6]=T.z,v.array[w+7]=T.w,v.array[w+8]=R.x,v.array[w+9]=R.y,v.array[w+10]=R.z,v.array[w+11]=R.w,w+=12;D=0;for(A=ra.length;D<A;D++)wa=v.value[ra[D]],S=wa[0],T=wa[1],R=wa[2],W=wa[3],v.array[w]=S.x,v.array[w+1]=S.y,v.array[w+2]=S.z,v.array[w+3]=S.w,v.array[w+
-4]=T.x,v.array[w+5]=T.y,v.array[w+6]=T.z,v.array[w+7]=T.w,v.array[w+8]=R.x,v.array[w+9]=R.y,v.array[w+10]=R.z,v.array[w+11]=R.w,v.array[w+12]=W.x,v.array[w+13]=W.y,v.array[w+14]=W.z,v.array[w+15]=W.w,w+=16}k.bindBuffer(k.ARRAY_BUFFER,v.buffer);k.bufferData(k.ARRAY_BUFFER,v.array,G)}}I&&(delete C.__inittedArrays,delete C.__colorArray,delete C.__normalArray,delete C.__tangentArray,delete C.__uvArray,delete C.__uv2Array,delete C.__faceArray,delete C.__vertexArray,delete C.__lineArray,delete C.__skinIndexArray,
+this.supportsFloatTextures=function(){return Ab};this.supportsStandardDerivatives=function(){return Oa};this.supportsCompressedTextureS3TC=function(){return Ta};this.getMaxAnisotropy=function(){return bc};this.getPrecision=function(){return P};this.setSize=function(a,b,c){M.width=a*this.devicePixelRatio;M.height=b*this.devicePixelRatio;1!==this.devicePixelRatio&&!1!==c&&(M.style.width=a+"px",M.style.height=b+"px");this.setViewport(0,0,M.width,M.height)};this.setViewport=function(a,b,c,d){rb=void 0!==
+a?a:0;Eb=void 0!==b?b:0;Nb=void 0!==c?c:M.width;Kb=void 0!==d?d:M.height;k.viewport(rb,Eb,Nb,Kb)};this.setScissor=function(a,b,c,d){k.scissor(a,b,c,d)};this.enableScissorTest=function(a){a?k.enable(k.SCISSOR_TEST):k.disable(k.SCISSOR_TEST)};this.setClearColor=function(a,b){ha.set(a);la=void 0!==b?b:1;k.clearColor(ha.r,ha.g,ha.b,la)};this.setClearColorHex=function(a,b){console.warn("DEPRECATED: .setClearColorHex() is being removed. Use .setClearColor() instead.");this.setClearColor(a,b)};this.getClearColor=
+function(){return ha};this.getClearAlpha=function(){return la};this.clear=function(a,b,c){var d=0;if(void 0===a||a)d|=k.COLOR_BUFFER_BIT;if(void 0===b||b)d|=k.DEPTH_BUFFER_BIT;if(void 0===c||c)d|=k.STENCIL_BUFFER_BIT;k.clear(d)};this.clearTarget=function(a,b,c,d){this.setRenderTarget(a);this.clear(b,c,d)};this.addPostPlugin=function(a){a.init(this);this.renderPluginsPost.push(a)};this.addPrePlugin=function(a){a.init(this);this.renderPluginsPre.push(a)};this.updateShadowMap=function(a,b){Ka=null;La=
+pa=sa=Za=ia=-1;Qa=!0;Y=X=-1;this.shadowMapPlugin.update(a,b)};var fc=function(a){a=a.target;a.removeEventListener("dispose",fc);a.__webglInit=void 0;void 0!==a.__webglVertexBuffer&&k.deleteBuffer(a.__webglVertexBuffer);void 0!==a.__webglNormalBuffer&&k.deleteBuffer(a.__webglNormalBuffer);void 0!==a.__webglTangentBuffer&&k.deleteBuffer(a.__webglTangentBuffer);void 0!==a.__webglColorBuffer&&k.deleteBuffer(a.__webglColorBuffer);void 0!==a.__webglUVBuffer&&k.deleteBuffer(a.__webglUVBuffer);void 0!==a.__webglUV2Buffer&&
+k.deleteBuffer(a.__webglUV2Buffer);void 0!==a.__webglSkinIndicesBuffer&&k.deleteBuffer(a.__webglSkinIndicesBuffer);void 0!==a.__webglSkinWeightsBuffer&&k.deleteBuffer(a.__webglSkinWeightsBuffer);void 0!==a.__webglFaceBuffer&&k.deleteBuffer(a.__webglFaceBuffer);void 0!==a.__webglLineBuffer&&k.deleteBuffer(a.__webglLineBuffer);void 0!==a.__webglLineDistanceBuffer&&k.deleteBuffer(a.__webglLineDistanceBuffer);if(void 0!==a.geometryGroups)for(var c in a.geometryGroups){var d=a.geometryGroups[c];if(void 0!==
+d.numMorphTargets)for(var e=0,f=d.numMorphTargets;e<f;e++)k.deleteBuffer(d.__webglMorphTargetsBuffers[e]);if(void 0!==d.numMorphNormals){e=0;for(f=d.numMorphNormals;e<f;e++)k.deleteBuffer(d.__webglMorphNormalsBuffers[e])}b(d)}b(a);N.info.memory.geometries--},nc=function(a){a=a.target;a.removeEventListener("dispose",nc);a.image&&a.image.__webglTextureCube?k.deleteTexture(a.image.__webglTextureCube):a.__webglInit&&(a.__webglInit=!1,k.deleteTexture(a.__webglTexture));N.info.memory.textures--},U=function(a){a=
+a.target;a.removeEventListener("dispose",U);if(a&&a.__webglTexture)if(k.deleteTexture(a.__webglTexture),a instanceof THREE.WebGLRenderTargetCube)for(var b=0;6>b;b++)k.deleteFramebuffer(a.__webglFramebuffer[b]),k.deleteRenderbuffer(a.__webglRenderbuffer[b]);else k.deleteFramebuffer(a.__webglFramebuffer),k.deleteRenderbuffer(a.__webglRenderbuffer);N.info.memory.textures--},Q=function(a){a=a.target;a.removeEventListener("dispose",Q);oc(a)},oc=function(a){var b=a.program;if(void 0!==b){a.program=void 0;
+var c,d,e=!1,a=0;for(c=ea.length;a<c;a++)if(d=ea[a],d.program===b){d.usedTimes--;0===d.usedTimes&&(e=!0);break}if(!0===e){e=[];a=0;for(c=ea.length;a<c;a++)d=ea[a],d.program!==b&&e.push(d);ea=e;k.deleteProgram(b);N.info.memory.programs--}}};this.renderBufferImmediate=function(a,b,c){a.hasPositions&&!a.__webglVertexBuffer&&(a.__webglVertexBuffer=k.createBuffer());a.hasNormals&&!a.__webglNormalBuffer&&(a.__webglNormalBuffer=k.createBuffer());a.hasUvs&&!a.__webglUvBuffer&&(a.__webglUvBuffer=k.createBuffer());
+a.hasColors&&!a.__webglColorBuffer&&(a.__webglColorBuffer=k.createBuffer());a.hasPositions&&(k.bindBuffer(k.ARRAY_BUFFER,a.__webglVertexBuffer),k.bufferData(k.ARRAY_BUFFER,a.positionArray,k.DYNAMIC_DRAW),k.enableVertexAttribArray(b.attributes.position),k.vertexAttribPointer(b.attributes.position,3,k.FLOAT,!1,0,0));if(a.hasNormals){k.bindBuffer(k.ARRAY_BUFFER,a.__webglNormalBuffer);if(c.shading===THREE.FlatShading){var d,e,f,g,h,i,j,l,p,m,n,q=3*a.count;for(n=0;n<q;n+=9)m=a.normalArray,d=m[n],e=m[n+
+1],f=m[n+2],g=m[n+3],i=m[n+4],l=m[n+5],h=m[n+6],j=m[n+7],p=m[n+8],d=(d+g+h)/3,e=(e+i+j)/3,f=(f+l+p)/3,m[n]=d,m[n+1]=e,m[n+2]=f,m[n+3]=d,m[n+4]=e,m[n+5]=f,m[n+6]=d,m[n+7]=e,m[n+8]=f}k.bufferData(k.ARRAY_BUFFER,a.normalArray,k.DYNAMIC_DRAW);k.enableVertexAttribArray(b.attributes.normal);k.vertexAttribPointer(b.attributes.normal,3,k.FLOAT,!1,0,0)}a.hasUvs&&c.map&&(k.bindBuffer(k.ARRAY_BUFFER,a.__webglUvBuffer),k.bufferData(k.ARRAY_BUFFER,a.uvArray,k.DYNAMIC_DRAW),k.enableVertexAttribArray(b.attributes.uv),
+k.vertexAttribPointer(b.attributes.uv,2,k.FLOAT,!1,0,0));a.hasColors&&c.vertexColors!==THREE.NoColors&&(k.bindBuffer(k.ARRAY_BUFFER,a.__webglColorBuffer),k.bufferData(k.ARRAY_BUFFER,a.colorArray,k.DYNAMIC_DRAW),k.enableVertexAttribArray(b.attributes.color),k.vertexAttribPointer(b.attributes.color,3,k.FLOAT,!1,0,0));k.drawArrays(k.TRIANGLES,0,a.count);a.count=0};this.renderBufferDirect=function(a,b,c,d,e,f){if(!1!==d.visible){var g,j,l;g=E(a,b,c,d,f);a=g.attributes;b=e.attributes;c=!1;g=16777215*e.id+
+2*g.id+(d.wireframe?1:0);g!==pa&&(pa=g,c=!0);c&&i();if(f instanceof THREE.Mesh)if(d=b.index){e=e.offsets;1<e.length&&(c=!0);for(var p=0,m=e.length;p<m;p++){var n=e[p].index;if(c){for(j in b)"index"!==j&&(g=a[j],f=b[j],l=f.itemSize,0<=g&&(k.bindBuffer(k.ARRAY_BUFFER,f.buffer),h(g),k.vertexAttribPointer(g,l,k.FLOAT,!1,0,4*n*l)));k.bindBuffer(k.ELEMENT_ARRAY_BUFFER,d.buffer)}k.drawElements(k.TRIANGLES,e[p].count,k.UNSIGNED_SHORT,2*e[p].start);N.info.render.calls++;N.info.render.vertices+=e[p].count;
+N.info.render.faces+=e[p].count/3}}else{if(c)for(j in b)"index"!==j&&(g=a[j],f=b[j],l=f.itemSize,0<=g&&(k.bindBuffer(k.ARRAY_BUFFER,f.buffer),h(g),k.vertexAttribPointer(g,l,k.FLOAT,!1,0,0)));j=e.attributes.position;k.drawArrays(k.TRIANGLES,0,j.numItems/3);N.info.render.calls++;N.info.render.vertices+=j.numItems/3;N.info.render.faces+=j.numItems/3/3}else if(f instanceof THREE.ParticleSystem){if(c){for(j in b)g=a[j],f=b[j],l=f.itemSize,0<=g&&(k.bindBuffer(k.ARRAY_BUFFER,f.buffer),h(g),k.vertexAttribPointer(g,
+l,k.FLOAT,!1,0,0));j=b.position;k.drawArrays(k.POINTS,0,j.numItems/3);N.info.render.calls++;N.info.render.points+=j.numItems/3}}else if(f instanceof THREE.Line&&c){for(j in b)g=a[j],f=b[j],l=f.itemSize,0<=g&&(k.bindBuffer(k.ARRAY_BUFFER,f.buffer),h(g),k.vertexAttribPointer(g,l,k.FLOAT,!1,0,0));H(d.linewidth);j=b.position;k.drawArrays(k.LINE_STRIP,0,j.numItems/3);N.info.render.calls++;N.info.render.points+=j.numItems}}};this.renderBuffer=function(a,b,c,d,e,f){if(!1!==d.visible){var g,j,c=E(a,b,c,d,
+f),a=c.attributes,b=!1,c=16777215*e.id+2*c.id+(d.wireframe?1:0);c!==pa&&(pa=c,b=!0);b&&i();if(!d.morphTargets&&0<=a.position)b&&(k.bindBuffer(k.ARRAY_BUFFER,e.__webglVertexBuffer),h(a.position),k.vertexAttribPointer(a.position,3,k.FLOAT,!1,0,0));else if(f.morphTargetBase){c=d.program.attributes;-1!==f.morphTargetBase&&0<=c.position?(k.bindBuffer(k.ARRAY_BUFFER,e.__webglMorphTargetsBuffers[f.morphTargetBase]),h(c.position),k.vertexAttribPointer(c.position,3,k.FLOAT,!1,0,0)):0<=c.position&&(k.bindBuffer(k.ARRAY_BUFFER,
+e.__webglVertexBuffer),h(c.position),k.vertexAttribPointer(c.position,3,k.FLOAT,!1,0,0));if(f.morphTargetForcedOrder.length){var l=0;j=f.morphTargetForcedOrder;for(g=f.morphTargetInfluences;l<d.numSupportedMorphTargets&&l<j.length;)0<=c["morphTarget"+l]&&(k.bindBuffer(k.ARRAY_BUFFER,e.__webglMorphTargetsBuffers[j[l]]),h(c["morphTarget"+l]),k.vertexAttribPointer(c["morphTarget"+l],3,k.FLOAT,!1,0,0)),0<=c["morphNormal"+l]&&d.morphNormals&&(k.bindBuffer(k.ARRAY_BUFFER,e.__webglMorphNormalsBuffers[j[l]]),
+h(c["morphNormal"+l]),k.vertexAttribPointer(c["morphNormal"+l],3,k.FLOAT,!1,0,0)),f.__webglMorphTargetInfluences[l]=g[j[l]],l++}else{j=[];g=f.morphTargetInfluences;var p,n=g.length;for(p=0;p<n;p++)l=g[p],0<l&&j.push([l,p]);j.length>d.numSupportedMorphTargets?(j.sort(m),j.length=d.numSupportedMorphTargets):j.length>d.numSupportedMorphNormals?j.sort(m):0===j.length&&j.push([0,0]);for(l=0;l<d.numSupportedMorphTargets;)j[l]?(p=j[l][1],0<=c["morphTarget"+l]&&(k.bindBuffer(k.ARRAY_BUFFER,e.__webglMorphTargetsBuffers[p]),
+h(c["morphTarget"+l]),k.vertexAttribPointer(c["morphTarget"+l],3,k.FLOAT,!1,0,0)),0<=c["morphNormal"+l]&&d.morphNormals&&(k.bindBuffer(k.ARRAY_BUFFER,e.__webglMorphNormalsBuffers[p]),h(c["morphNormal"+l]),k.vertexAttribPointer(c["morphNormal"+l],3,k.FLOAT,!1,0,0)),f.__webglMorphTargetInfluences[l]=g[p]):f.__webglMorphTargetInfluences[l]=0,l++}null!==d.program.uniforms.morphTargetInfluences&&k.uniform1fv(d.program.uniforms.morphTargetInfluences,f.__webglMorphTargetInfluences)}if(b){if(e.__webglCustomAttributesList){g=
+0;for(j=e.__webglCustomAttributesList.length;g<j;g++)c=e.__webglCustomAttributesList[g],0<=a[c.buffer.belongsToAttribute]&&(k.bindBuffer(k.ARRAY_BUFFER,c.buffer),h(a[c.buffer.belongsToAttribute]),k.vertexAttribPointer(a[c.buffer.belongsToAttribute],c.size,k.FLOAT,!1,0,0))}0<=a.color&&(k.bindBuffer(k.ARRAY_BUFFER,e.__webglColorBuffer),h(a.color),k.vertexAttribPointer(a.color,3,k.FLOAT,!1,0,0));0<=a.normal&&(k.bindBuffer(k.ARRAY_BUFFER,e.__webglNormalBuffer),h(a.normal),k.vertexAttribPointer(a.normal,
+3,k.FLOAT,!1,0,0));0<=a.tangent&&(k.bindBuffer(k.ARRAY_BUFFER,e.__webglTangentBuffer),h(a.tangent),k.vertexAttribPointer(a.tangent,4,k.FLOAT,!1,0,0));0<=a.uv&&(k.bindBuffer(k.ARRAY_BUFFER,e.__webglUVBuffer),h(a.uv),k.vertexAttribPointer(a.uv,2,k.FLOAT,!1,0,0));0<=a.uv2&&(k.bindBuffer(k.ARRAY_BUFFER,e.__webglUV2Buffer),h(a.uv2),k.vertexAttribPointer(a.uv2,2,k.FLOAT,!1,0,0));d.skinning&&(0<=a.skinIndex&&0<=a.skinWeight)&&(k.bindBuffer(k.ARRAY_BUFFER,e.__webglSkinIndicesBuffer),h(a.skinIndex),k.vertexAttribPointer(a.skinIndex,
+4,k.FLOAT,!1,0,0),k.bindBuffer(k.ARRAY_BUFFER,e.__webglSkinWeightsBuffer),h(a.skinWeight),k.vertexAttribPointer(a.skinWeight,4,k.FLOAT,!1,0,0));0<=a.lineDistance&&(k.bindBuffer(k.ARRAY_BUFFER,e.__webglLineDistanceBuffer),h(a.lineDistance),k.vertexAttribPointer(a.lineDistance,1,k.FLOAT,!1,0,0))}f instanceof THREE.Mesh?(d.wireframe?(H(d.wireframeLinewidth),b&&k.bindBuffer(k.ELEMENT_ARRAY_BUFFER,e.__webglLineBuffer),k.drawElements(k.LINES,e.__webglLineCount,k.UNSIGNED_SHORT,0)):(b&&k.bindBuffer(k.ELEMENT_ARRAY_BUFFER,
+e.__webglFaceBuffer),k.drawElements(k.TRIANGLES,e.__webglFaceCount,k.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?k.LINE_STRIP:k.LINES,H(d.linewidth),k.drawArrays(f,0,e.__webglLineCount),N.info.render.calls++):f instanceof THREE.ParticleSystem?(k.drawArrays(k.POINTS,0,e.__webglParticleCount),N.info.render.calls++,N.info.render.points+=e.__webglParticleCount):f instanceof
+THREE.Ribbon&&(k.drawArrays(k.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,h,i=a.__lights,m=a.fog;La=-1;Qa=!0;!0===a.autoUpdate&&a.updateMatrixWorld();void 0===b.parent&&b.updateMatrixWorld();b.matrixWorldInverse.getInverse(b.matrixWorld);Ja.multiplyMatrices(b.projectionMatrix,b.matrixWorldInverse);ta.setFromMatrix(Ja);
+this.autoUpdateObjects&&this.initWebGLObjects(a);p(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);h=a.__webglObjects;d=0;for(e=h.length;d<e;d++)if(f=h[d],g=f.object,f.id=d,f.render=!1,g.visible&&(!(g instanceof THREE.Mesh||g instanceof THREE.ParticleSystem)||!g.frustumCulled||ta.intersectsObject(g))){var n=g;
+n._modelViewMatrix.multiplyMatrices(b.matrixWorldInverse,n.matrixWorld);n._normalMatrix.getNormalMatrix(n._modelViewMatrix);var n=f,q=n.buffer,s=void 0,t=s=void 0,t=n.object.material;if(t instanceof THREE.MeshFaceMaterial)s=q.materialIndex,s=t.materials[s],s.transparent?(n.transparent=s,n.opaque=null):(n.opaque=s,n.transparent=null);else if(s=t)s.transparent?(n.transparent=s,n.opaque=null):(n.opaque=s,n.transparent=null);f.render=!0;!0===this.sortObjects&&(null!==g.renderDepth?f.z=g.renderDepth:(Na.getPositionFromMatrix(g.matrixWorld),
+Na.applyProjection(Ja),f.z=Na.z))}this.sortObjects&&h.sort(j);h=a.__webglObjectsImmediate;d=0;for(e=h.length;d<e;d++)f=h[d],g=f.object,g.visible&&(g._modelViewMatrix.multiplyMatrices(b.matrixWorldInverse,g.matrixWorld),g._normalMatrix.getNormalMatrix(g._modelViewMatrix),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),K(d.polygonOffset,d.polygonOffsetFactor,d.polygonOffsetUnits),l(a.__webglObjects,!1,"",b,i,m,!0,d),r(a.__webglObjectsImmediate,"",b,i,m,!1,d)):(d=null,this.setBlending(THREE.NoBlending),l(a.__webglObjects,!0,"opaque",b,i,m,!1,d),r(a.__webglObjectsImmediate,"opaque",b,i,m,!1,d),l(a.__webglObjects,!1,"transparent",b,i,m,!0,d),r(a.__webglObjectsImmediate,"transparent",b,i,m,!0,d));p(this.renderPluginsPost,a,b);c&&(c.generateMipmaps&&c.minFilter!==THREE.NearestFilter&&
+c.minFilter!==THREE.LinearFilter)&&(c instanceof THREE.WebGLRenderTargetCube?(k.bindTexture(k.TEXTURE_CUBE_MAP,c.__webglTexture),k.generateMipmap(k.TEXTURE_CUBE_MAP),k.bindTexture(k.TEXTURE_CUBE_MAP,null)):(k.bindTexture(k.TEXTURE_2D,c.__webglTexture),k.generateMipmap(k.TEXTURE_2D),k.bindTexture(k.TEXTURE_2D,null)));this.setDepthTest(!0);this.setDepthWrite(!0)}};this.renderImmediateObject=function(a,b,c,d,e){var f=E(a,b,c,d,e);pa=-1;N.setMaterialFaces(d);e.immediateRenderCallback?e.immediateRenderCallback(f,
+k,ta):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;)s(a.__objectsAdded[0],a),a.__objectsAdded.splice(0,1);for(;a.__objectsRemoved.length;)u(a.__objectsRemoved[0],a),a.__objectsRemoved.splice(0,1);for(var b=0,c=a.__webglObjects.length;b<c;b++){var h=a.__webglObjects[b].object;void 0===h.__webglInit&&(void 0!==h.__webglActive&&
+u(h,a),s(h,a));var i=h,j=i.geometry,l=void 0,p=void 0,n=void 0;if(j instanceof THREE.BufferGeometry){var r=k.DYNAMIC_DRAW,t=!j.dynamic,x=j.attributes,z=void 0,B=void 0;for(z in x)B=x[z],B.needsUpdate&&("index"===z?(k.bindBuffer(k.ELEMENT_ARRAY_BUFFER,B.buffer),k.bufferData(k.ELEMENT_ARRAY_BUFFER,B.array,r)):(k.bindBuffer(k.ARRAY_BUFFER,B.buffer),k.bufferData(k.ARRAY_BUFFER,B.array,r)),B.needsUpdate=!1),t&&!B.dynamic&&delete B.array}else if(i instanceof THREE.Mesh){for(var E=0,F=j.geometryGroupsList.length;E<
+F;E++)if(l=j.geometryGroupsList[E],n=e(i,l),j.buffersNeedUpdate&&d(l,i),p=n.attributes&&q(n),j.verticesNeedUpdate||j.morphTargetsNeedUpdate||j.elementsNeedUpdate||j.uvsNeedUpdate||j.normalsNeedUpdate||j.colorsNeedUpdate||j.tangentsNeedUpdate||p){var C=l,J=i,G=k.DYNAMIC_DRAW,I=!j.dynamic,H=n;if(C.__inittedArrays){var L=f(H),K=H.vertexColors?H.vertexColors:!1,N=g(H),M=L===THREE.SmoothShading,D=void 0,A=void 0,ea=void 0,O=void 0,U=void 0,Q=void 0,P=void 0,V=void 0,X=void 0,Y=void 0,aa=void 0,S=void 0,
+T=void 0,R=void 0,W=void 0,na=void 0,da=void 0,Ka=void 0,ja=void 0,fa=void 0,ga=void 0,ia=void 0,kb=void 0,ha=void 0,pa=void 0,la=void 0,sa=void 0,La=void 0,db=void 0,oa=void 0,za=void 0,ta=void 0,ya=void 0,Ea=void 0,Qa=void 0,ua=void 0,gb=void 0,Oa=void 0,Ua=void 0,Za=void 0,ab=void 0,lb=void 0,Xa=void 0,Ya=void 0,Va=void 0,Sa=void 0,Ma=0,Ra=0,Ta=0,$a=0,wb=0,hb=0,Aa=0,mb=0,Pa=0,$=0,ka=0,w=0,wa=void 0,bb=C.__vertexArray,rb=C.__uvArray,ub=C.__uv2Array,xb=C.__normalArray,Fa=C.__tangentArray,cb=C.__colorArray,
+Ga=C.__skinIndexArray,Ha=C.__skinWeightArray,Ab=C.__morphTargetsArrays,Bb=C.__morphNormalsArrays,Eb=C.__webglCustomAttributesList,v=void 0,Fb=C.__faceArray,tb=C.__lineArray,nb=J.geometry,Nb=nb.elementsNeedUpdate,Kb=nb.uvsNeedUpdate,Sb=nb.normalsNeedUpdate,Tb=nb.tangentsNeedUpdate,cc=nb.colorsNeedUpdate,dc=nb.morphTargetsNeedUpdate,Ub=nb.vertices,qa=C.faces3,ra=C.faces4,ib=nb.faces,Oc=nb.faceVertexUvs[0],Pc=nb.faceVertexUvs[1],Vb=nb.skinIndices,Pb=nb.skinWeights,Qb=nb.morphTargets,pc=nb.morphNormals;
+if(nb.verticesNeedUpdate){D=0;for(A=qa.length;D<A;D++)O=ib[qa[D]],S=Ub[O.a],T=Ub[O.b],R=Ub[O.c],bb[Ra]=S.x,bb[Ra+1]=S.y,bb[Ra+2]=S.z,bb[Ra+3]=T.x,bb[Ra+4]=T.y,bb[Ra+5]=T.z,bb[Ra+6]=R.x,bb[Ra+7]=R.y,bb[Ra+8]=R.z,Ra+=9;D=0;for(A=ra.length;D<A;D++)O=ib[ra[D]],S=Ub[O.a],T=Ub[O.b],R=Ub[O.c],W=Ub[O.d],bb[Ra]=S.x,bb[Ra+1]=S.y,bb[Ra+2]=S.z,bb[Ra+3]=T.x,bb[Ra+4]=T.y,bb[Ra+5]=T.z,bb[Ra+6]=R.x,bb[Ra+7]=R.y,bb[Ra+8]=R.z,bb[Ra+9]=W.x,bb[Ra+10]=W.y,bb[Ra+11]=W.z,Ra+=12;k.bindBuffer(k.ARRAY_BUFFER,C.__webglVertexBuffer);
+k.bufferData(k.ARRAY_BUFFER,bb,G)}if(dc){ab=0;for(lb=Qb.length;ab<lb;ab++){D=ka=0;for(A=qa.length;D<A;D++)Va=qa[D],O=ib[Va],S=Qb[ab].vertices[O.a],T=Qb[ab].vertices[O.b],R=Qb[ab].vertices[O.c],Xa=Ab[ab],Xa[ka]=S.x,Xa[ka+1]=S.y,Xa[ka+2]=S.z,Xa[ka+3]=T.x,Xa[ka+4]=T.y,Xa[ka+5]=T.z,Xa[ka+6]=R.x,Xa[ka+7]=R.y,Xa[ka+8]=R.z,H.morphNormals&&(M?(Sa=pc[ab].vertexNormals[Va],fa=Sa.a,ga=Sa.b,ia=Sa.c):ia=ga=fa=pc[ab].faceNormals[Va],Ya=Bb[ab],Ya[ka]=fa.x,Ya[ka+1]=fa.y,Ya[ka+2]=fa.z,Ya[ka+3]=ga.x,Ya[ka+4]=ga.y,
+Ya[ka+5]=ga.z,Ya[ka+6]=ia.x,Ya[ka+7]=ia.y,Ya[ka+8]=ia.z),ka+=9;D=0;for(A=ra.length;D<A;D++)Va=ra[D],O=ib[Va],S=Qb[ab].vertices[O.a],T=Qb[ab].vertices[O.b],R=Qb[ab].vertices[O.c],W=Qb[ab].vertices[O.d],Xa=Ab[ab],Xa[ka]=S.x,Xa[ka+1]=S.y,Xa[ka+2]=S.z,Xa[ka+3]=T.x,Xa[ka+4]=T.y,Xa[ka+5]=T.z,Xa[ka+6]=R.x,Xa[ka+7]=R.y,Xa[ka+8]=R.z,Xa[ka+9]=W.x,Xa[ka+10]=W.y,Xa[ka+11]=W.z,H.morphNormals&&(M?(Sa=pc[ab].vertexNormals[Va],fa=Sa.a,ga=Sa.b,ia=Sa.c,kb=Sa.d):kb=ia=ga=fa=pc[ab].faceNormals[Va],Ya=Bb[ab],Ya[ka]=fa.x,
+Ya[ka+1]=fa.y,Ya[ka+2]=fa.z,Ya[ka+3]=ga.x,Ya[ka+4]=ga.y,Ya[ka+5]=ga.z,Ya[ka+6]=ia.x,Ya[ka+7]=ia.y,Ya[ka+8]=ia.z,Ya[ka+9]=kb.x,Ya[ka+10]=kb.y,Ya[ka+11]=kb.z),ka+=12;k.bindBuffer(k.ARRAY_BUFFER,C.__webglMorphTargetsBuffers[ab]);k.bufferData(k.ARRAY_BUFFER,Ab[ab],G);H.morphNormals&&(k.bindBuffer(k.ARRAY_BUFFER,C.__webglMorphNormalsBuffers[ab]),k.bufferData(k.ARRAY_BUFFER,Bb[ab],G))}}if(Pb.length){D=0;for(A=qa.length;D<A;D++)O=ib[qa[D]],La=Pb[O.a],db=Pb[O.b],oa=Pb[O.c],Ha[$]=La.x,Ha[$+1]=La.y,Ha[$+2]=
+La.z,Ha[$+3]=La.w,Ha[$+4]=db.x,Ha[$+5]=db.y,Ha[$+6]=db.z,Ha[$+7]=db.w,Ha[$+8]=oa.x,Ha[$+9]=oa.y,Ha[$+10]=oa.z,Ha[$+11]=oa.w,ta=Vb[O.a],ya=Vb[O.b],Ea=Vb[O.c],Ga[$]=ta.x,Ga[$+1]=ta.y,Ga[$+2]=ta.z,Ga[$+3]=ta.w,Ga[$+4]=ya.x,Ga[$+5]=ya.y,Ga[$+6]=ya.z,Ga[$+7]=ya.w,Ga[$+8]=Ea.x,Ga[$+9]=Ea.y,Ga[$+10]=Ea.z,Ga[$+11]=Ea.w,$+=12;D=0;for(A=ra.length;D<A;D++)O=ib[ra[D]],La=Pb[O.a],db=Pb[O.b],oa=Pb[O.c],za=Pb[O.d],Ha[$]=La.x,Ha[$+1]=La.y,Ha[$+2]=La.z,Ha[$+3]=La.w,Ha[$+4]=db.x,Ha[$+5]=db.y,Ha[$+6]=db.z,Ha[$+7]=db.w,
+Ha[$+8]=oa.x,Ha[$+9]=oa.y,Ha[$+10]=oa.z,Ha[$+11]=oa.w,Ha[$+12]=za.x,Ha[$+13]=za.y,Ha[$+14]=za.z,Ha[$+15]=za.w,ta=Vb[O.a],ya=Vb[O.b],Ea=Vb[O.c],Qa=Vb[O.d],Ga[$]=ta.x,Ga[$+1]=ta.y,Ga[$+2]=ta.z,Ga[$+3]=ta.w,Ga[$+4]=ya.x,Ga[$+5]=ya.y,Ga[$+6]=ya.z,Ga[$+7]=ya.w,Ga[$+8]=Ea.x,Ga[$+9]=Ea.y,Ga[$+10]=Ea.z,Ga[$+11]=Ea.w,Ga[$+12]=Qa.x,Ga[$+13]=Qa.y,Ga[$+14]=Qa.z,Ga[$+15]=Qa.w,$+=16;0<$&&(k.bindBuffer(k.ARRAY_BUFFER,C.__webglSkinIndicesBuffer),k.bufferData(k.ARRAY_BUFFER,Ga,G),k.bindBuffer(k.ARRAY_BUFFER,C.__webglSkinWeightsBuffer),
+k.bufferData(k.ARRAY_BUFFER,Ha,G))}if(cc&&K){D=0;for(A=qa.length;D<A;D++)O=ib[qa[D]],P=O.vertexColors,V=O.color,3===P.length&&K===THREE.VertexColors?(ha=P[0],pa=P[1],la=P[2]):la=pa=ha=V,cb[Pa]=ha.r,cb[Pa+1]=ha.g,cb[Pa+2]=ha.b,cb[Pa+3]=pa.r,cb[Pa+4]=pa.g,cb[Pa+5]=pa.b,cb[Pa+6]=la.r,cb[Pa+7]=la.g,cb[Pa+8]=la.b,Pa+=9;D=0;for(A=ra.length;D<A;D++)O=ib[ra[D]],P=O.vertexColors,V=O.color,4===P.length&&K===THREE.VertexColors?(ha=P[0],pa=P[1],la=P[2],sa=P[3]):sa=la=pa=ha=V,cb[Pa]=ha.r,cb[Pa+1]=ha.g,cb[Pa+2]=
+ha.b,cb[Pa+3]=pa.r,cb[Pa+4]=pa.g,cb[Pa+5]=pa.b,cb[Pa+6]=la.r,cb[Pa+7]=la.g,cb[Pa+8]=la.b,cb[Pa+9]=sa.r,cb[Pa+10]=sa.g,cb[Pa+11]=sa.b,Pa+=12;0<Pa&&(k.bindBuffer(k.ARRAY_BUFFER,C.__webglColorBuffer),k.bufferData(k.ARRAY_BUFFER,cb,G))}if(Tb&&nb.hasTangents){D=0;for(A=qa.length;D<A;D++)O=ib[qa[D]],X=O.vertexTangents,na=X[0],da=X[1],Ka=X[2],Fa[Aa]=na.x,Fa[Aa+1]=na.y,Fa[Aa+2]=na.z,Fa[Aa+3]=na.w,Fa[Aa+4]=da.x,Fa[Aa+5]=da.y,Fa[Aa+6]=da.z,Fa[Aa+7]=da.w,Fa[Aa+8]=Ka.x,Fa[Aa+9]=Ka.y,Fa[Aa+10]=Ka.z,Fa[Aa+11]=
+Ka.w,Aa+=12;D=0;for(A=ra.length;D<A;D++)O=ib[ra[D]],X=O.vertexTangents,na=X[0],da=X[1],Ka=X[2],ja=X[3],Fa[Aa]=na.x,Fa[Aa+1]=na.y,Fa[Aa+2]=na.z,Fa[Aa+3]=na.w,Fa[Aa+4]=da.x,Fa[Aa+5]=da.y,Fa[Aa+6]=da.z,Fa[Aa+7]=da.w,Fa[Aa+8]=Ka.x,Fa[Aa+9]=Ka.y,Fa[Aa+10]=Ka.z,Fa[Aa+11]=Ka.w,Fa[Aa+12]=ja.x,Fa[Aa+13]=ja.y,Fa[Aa+14]=ja.z,Fa[Aa+15]=ja.w,Aa+=16;k.bindBuffer(k.ARRAY_BUFFER,C.__webglTangentBuffer);k.bufferData(k.ARRAY_BUFFER,Fa,G)}if(Sb&&L){D=0;for(A=qa.length;D<A;D++)if(O=ib[qa[D]],U=O.vertexNormals,Q=O.normal,
+3===U.length&&M)for(ua=0;3>ua;ua++)Oa=U[ua],xb[hb]=Oa.x,xb[hb+1]=Oa.y,xb[hb+2]=Oa.z,hb+=3;else for(ua=0;3>ua;ua++)xb[hb]=Q.x,xb[hb+1]=Q.y,xb[hb+2]=Q.z,hb+=3;D=0;for(A=ra.length;D<A;D++)if(O=ib[ra[D]],U=O.vertexNormals,Q=O.normal,4===U.length&&M)for(ua=0;4>ua;ua++)Oa=U[ua],xb[hb]=Oa.x,xb[hb+1]=Oa.y,xb[hb+2]=Oa.z,hb+=3;else for(ua=0;4>ua;ua++)xb[hb]=Q.x,xb[hb+1]=Q.y,xb[hb+2]=Q.z,hb+=3;k.bindBuffer(k.ARRAY_BUFFER,C.__webglNormalBuffer);k.bufferData(k.ARRAY_BUFFER,xb,G)}if(Kb&&Oc&&N){D=0;for(A=qa.length;D<
+A;D++)if(ea=qa[D],Y=Oc[ea],void 0!==Y)for(ua=0;3>ua;ua++)Ua=Y[ua],rb[Ta]=Ua.x,rb[Ta+1]=Ua.y,Ta+=2;D=0;for(A=ra.length;D<A;D++)if(ea=ra[D],Y=Oc[ea],void 0!==Y)for(ua=0;4>ua;ua++)Ua=Y[ua],rb[Ta]=Ua.x,rb[Ta+1]=Ua.y,Ta+=2;0<Ta&&(k.bindBuffer(k.ARRAY_BUFFER,C.__webglUVBuffer),k.bufferData(k.ARRAY_BUFFER,rb,G))}if(Kb&&Pc&&N){D=0;for(A=qa.length;D<A;D++)if(ea=qa[D],aa=Pc[ea],void 0!==aa)for(ua=0;3>ua;ua++)Za=aa[ua],ub[$a]=Za.x,ub[$a+1]=Za.y,$a+=2;D=0;for(A=ra.length;D<A;D++)if(ea=ra[D],aa=Pc[ea],void 0!==
+aa)for(ua=0;4>ua;ua++)Za=aa[ua],ub[$a]=Za.x,ub[$a+1]=Za.y,$a+=2;0<$a&&(k.bindBuffer(k.ARRAY_BUFFER,C.__webglUV2Buffer),k.bufferData(k.ARRAY_BUFFER,ub,G))}if(Nb){D=0;for(A=qa.length;D<A;D++)Fb[wb]=Ma,Fb[wb+1]=Ma+1,Fb[wb+2]=Ma+2,wb+=3,tb[mb]=Ma,tb[mb+1]=Ma+1,tb[mb+2]=Ma,tb[mb+3]=Ma+2,tb[mb+4]=Ma+1,tb[mb+5]=Ma+2,mb+=6,Ma+=3;D=0;for(A=ra.length;D<A;D++)Fb[wb]=Ma,Fb[wb+1]=Ma+1,Fb[wb+2]=Ma+3,Fb[wb+3]=Ma+1,Fb[wb+4]=Ma+2,Fb[wb+5]=Ma+3,wb+=6,tb[mb]=Ma,tb[mb+1]=Ma+1,tb[mb+2]=Ma,tb[mb+3]=Ma+3,tb[mb+4]=Ma+1,
+tb[mb+5]=Ma+2,tb[mb+6]=Ma+2,tb[mb+7]=Ma+3,mb+=8,Ma+=4;k.bindBuffer(k.ELEMENT_ARRAY_BUFFER,C.__webglFaceBuffer);k.bufferData(k.ELEMENT_ARRAY_BUFFER,Fb,G);k.bindBuffer(k.ELEMENT_ARRAY_BUFFER,C.__webglLineBuffer);k.bufferData(k.ELEMENT_ARRAY_BUFFER,tb,G)}if(Eb){ua=0;for(gb=Eb.length;ua<gb;ua++)if(v=Eb[ua],v.__original.needsUpdate){w=0;if(1===v.size)if(void 0===v.boundTo||"vertices"===v.boundTo){D=0;for(A=qa.length;D<A;D++)O=ib[qa[D]],v.array[w]=v.value[O.a],v.array[w+1]=v.value[O.b],v.array[w+2]=v.value[O.c],
+w+=3;D=0;for(A=ra.length;D<A;D++)O=ib[ra[D]],v.array[w]=v.value[O.a],v.array[w+1]=v.value[O.b],v.array[w+2]=v.value[O.c],v.array[w+3]=v.value[O.d],w+=4}else{if("faces"===v.boundTo){D=0;for(A=qa.length;D<A;D++)wa=v.value[qa[D]],v.array[w]=wa,v.array[w+1]=wa,v.array[w+2]=wa,w+=3;D=0;for(A=ra.length;D<A;D++)wa=v.value[ra[D]],v.array[w]=wa,v.array[w+1]=wa,v.array[w+2]=wa,v.array[w+3]=wa,w+=4}}else if(2===v.size)if(void 0===v.boundTo||"vertices"===v.boundTo){D=0;for(A=qa.length;D<A;D++)O=ib[qa[D]],S=v.value[O.a],
+T=v.value[O.b],R=v.value[O.c],v.array[w]=S.x,v.array[w+1]=S.y,v.array[w+2]=T.x,v.array[w+3]=T.y,v.array[w+4]=R.x,v.array[w+5]=R.y,w+=6;D=0;for(A=ra.length;D<A;D++)O=ib[ra[D]],S=v.value[O.a],T=v.value[O.b],R=v.value[O.c],W=v.value[O.d],v.array[w]=S.x,v.array[w+1]=S.y,v.array[w+2]=T.x,v.array[w+3]=T.y,v.array[w+4]=R.x,v.array[w+5]=R.y,v.array[w+6]=W.x,v.array[w+7]=W.y,w+=8}else{if("faces"===v.boundTo){D=0;for(A=qa.length;D<A;D++)R=T=S=wa=v.value[qa[D]],v.array[w]=S.x,v.array[w+1]=S.y,v.array[w+2]=T.x,
+v.array[w+3]=T.y,v.array[w+4]=R.x,v.array[w+5]=R.y,w+=6;D=0;for(A=ra.length;D<A;D++)W=R=T=S=wa=v.value[ra[D]],v.array[w]=S.x,v.array[w+1]=S.y,v.array[w+2]=T.x,v.array[w+3]=T.y,v.array[w+4]=R.x,v.array[w+5]=R.y,v.array[w+6]=W.x,v.array[w+7]=W.y,w+=8}}else if(3===v.size){var Z;Z="c"===v.type?["r","g","b"]:["x","y","z"];if(void 0===v.boundTo||"vertices"===v.boundTo){D=0;for(A=qa.length;D<A;D++)O=ib[qa[D]],S=v.value[O.a],T=v.value[O.b],R=v.value[O.c],v.array[w]=S[Z[0]],v.array[w+1]=S[Z[1]],v.array[w+
+2]=S[Z[2]],v.array[w+3]=T[Z[0]],v.array[w+4]=T[Z[1]],v.array[w+5]=T[Z[2]],v.array[w+6]=R[Z[0]],v.array[w+7]=R[Z[1]],v.array[w+8]=R[Z[2]],w+=9;D=0;for(A=ra.length;D<A;D++)O=ib[ra[D]],S=v.value[O.a],T=v.value[O.b],R=v.value[O.c],W=v.value[O.d],v.array[w]=S[Z[0]],v.array[w+1]=S[Z[1]],v.array[w+2]=S[Z[2]],v.array[w+3]=T[Z[0]],v.array[w+4]=T[Z[1]],v.array[w+5]=T[Z[2]],v.array[w+6]=R[Z[0]],v.array[w+7]=R[Z[1]],v.array[w+8]=R[Z[2]],v.array[w+9]=W[Z[0]],v.array[w+10]=W[Z[1]],v.array[w+11]=W[Z[2]],w+=12}else if("faces"===
+v.boundTo){D=0;for(A=qa.length;D<A;D++)R=T=S=wa=v.value[qa[D]],v.array[w]=S[Z[0]],v.array[w+1]=S[Z[1]],v.array[w+2]=S[Z[2]],v.array[w+3]=T[Z[0]],v.array[w+4]=T[Z[1]],v.array[w+5]=T[Z[2]],v.array[w+6]=R[Z[0]],v.array[w+7]=R[Z[1]],v.array[w+8]=R[Z[2]],w+=9;D=0;for(A=ra.length;D<A;D++)W=R=T=S=wa=v.value[ra[D]],v.array[w]=S[Z[0]],v.array[w+1]=S[Z[1]],v.array[w+2]=S[Z[2]],v.array[w+3]=T[Z[0]],v.array[w+4]=T[Z[1]],v.array[w+5]=T[Z[2]],v.array[w+6]=R[Z[0]],v.array[w+7]=R[Z[1]],v.array[w+8]=R[Z[2]],v.array[w+
+9]=W[Z[0]],v.array[w+10]=W[Z[1]],v.array[w+11]=W[Z[2]],w+=12}else if("faceVertices"===v.boundTo){D=0;for(A=qa.length;D<A;D++)wa=v.value[qa[D]],S=wa[0],T=wa[1],R=wa[2],v.array[w]=S[Z[0]],v.array[w+1]=S[Z[1]],v.array[w+2]=S[Z[2]],v.array[w+3]=T[Z[0]],v.array[w+4]=T[Z[1]],v.array[w+5]=T[Z[2]],v.array[w+6]=R[Z[0]],v.array[w+7]=R[Z[1]],v.array[w+8]=R[Z[2]],w+=9;D=0;for(A=ra.length;D<A;D++)wa=v.value[ra[D]],S=wa[0],T=wa[1],R=wa[2],W=wa[3],v.array[w]=S[Z[0]],v.array[w+1]=S[Z[1]],v.array[w+2]=S[Z[2]],v.array[w+
+3]=T[Z[0]],v.array[w+4]=T[Z[1]],v.array[w+5]=T[Z[2]],v.array[w+6]=R[Z[0]],v.array[w+7]=R[Z[1]],v.array[w+8]=R[Z[2]],v.array[w+9]=W[Z[0]],v.array[w+10]=W[Z[1]],v.array[w+11]=W[Z[2]],w+=12}}else if(4===v.size)if(void 0===v.boundTo||"vertices"===v.boundTo){D=0;for(A=qa.length;D<A;D++)O=ib[qa[D]],S=v.value[O.a],T=v.value[O.b],R=v.value[O.c],v.array[w]=S.x,v.array[w+1]=S.y,v.array[w+2]=S.z,v.array[w+3]=S.w,v.array[w+4]=T.x,v.array[w+5]=T.y,v.array[w+6]=T.z,v.array[w+7]=T.w,v.array[w+8]=R.x,v.array[w+9]=
+R.y,v.array[w+10]=R.z,v.array[w+11]=R.w,w+=12;D=0;for(A=ra.length;D<A;D++)O=ib[ra[D]],S=v.value[O.a],T=v.value[O.b],R=v.value[O.c],W=v.value[O.d],v.array[w]=S.x,v.array[w+1]=S.y,v.array[w+2]=S.z,v.array[w+3]=S.w,v.array[w+4]=T.x,v.array[w+5]=T.y,v.array[w+6]=T.z,v.array[w+7]=T.w,v.array[w+8]=R.x,v.array[w+9]=R.y,v.array[w+10]=R.z,v.array[w+11]=R.w,v.array[w+12]=W.x,v.array[w+13]=W.y,v.array[w+14]=W.z,v.array[w+15]=W.w,w+=16}else if("faces"===v.boundTo){D=0;for(A=qa.length;D<A;D++)R=T=S=wa=v.value[qa[D]],
+v.array[w]=S.x,v.array[w+1]=S.y,v.array[w+2]=S.z,v.array[w+3]=S.w,v.array[w+4]=T.x,v.array[w+5]=T.y,v.array[w+6]=T.z,v.array[w+7]=T.w,v.array[w+8]=R.x,v.array[w+9]=R.y,v.array[w+10]=R.z,v.array[w+11]=R.w,w+=12;D=0;for(A=ra.length;D<A;D++)W=R=T=S=wa=v.value[ra[D]],v.array[w]=S.x,v.array[w+1]=S.y,v.array[w+2]=S.z,v.array[w+3]=S.w,v.array[w+4]=T.x,v.array[w+5]=T.y,v.array[w+6]=T.z,v.array[w+7]=T.w,v.array[w+8]=R.x,v.array[w+9]=R.y,v.array[w+10]=R.z,v.array[w+11]=R.w,v.array[w+12]=W.x,v.array[w+13]=W.y,
+v.array[w+14]=W.z,v.array[w+15]=W.w,w+=16}else if("faceVertices"===v.boundTo){D=0;for(A=qa.length;D<A;D++)wa=v.value[qa[D]],S=wa[0],T=wa[1],R=wa[2],v.array[w]=S.x,v.array[w+1]=S.y,v.array[w+2]=S.z,v.array[w+3]=S.w,v.array[w+4]=T.x,v.array[w+5]=T.y,v.array[w+6]=T.z,v.array[w+7]=T.w,v.array[w+8]=R.x,v.array[w+9]=R.y,v.array[w+10]=R.z,v.array[w+11]=R.w,w+=12;D=0;for(A=ra.length;D<A;D++)wa=v.value[ra[D]],S=wa[0],T=wa[1],R=wa[2],W=wa[3],v.array[w]=S.x,v.array[w+1]=S.y,v.array[w+2]=S.z,v.array[w+3]=S.w,
+v.array[w+4]=T.x,v.array[w+5]=T.y,v.array[w+6]=T.z,v.array[w+7]=T.w,v.array[w+8]=R.x,v.array[w+9]=R.y,v.array[w+10]=R.z,v.array[w+11]=R.w,v.array[w+12]=W.x,v.array[w+13]=W.y,v.array[w+14]=W.z,v.array[w+15]=W.w,w+=16}k.bindBuffer(k.ARRAY_BUFFER,v.buffer);k.bufferData(k.ARRAY_BUFFER,v.array,G)}}I&&(delete C.__inittedArrays,delete C.__colorArray,delete C.__normalArray,delete C.__tangentArray,delete C.__uvArray,delete C.__uv2Array,delete C.__faceArray,delete C.__vertexArray,delete C.__lineArray,delete C.__skinIndexArray,
 delete C.__skinWeightArray)}}j.verticesNeedUpdate=!1;j.morphTargetsNeedUpdate=!1;j.elementsNeedUpdate=!1;j.uvsNeedUpdate=!1;j.normalsNeedUpdate=!1;j.colorsNeedUpdate=!1;j.tangentsNeedUpdate=!1;j.buffersNeedUpdate=!1;n.attributes&&y(n)}else if(i instanceof THREE.Ribbon){n=e(i,j);p=n.attributes&&q(n);if(j.verticesNeedUpdate||j.colorsNeedUpdate||j.normalsNeedUpdate||p){var yb=j,qc=k.DYNAMIC_DRAW,gc=void 0,hc=void 0,ic=void 0,rc=void 0,xa=void 0,sc=void 0,tc=void 0,uc=void 0,ac=void 0,eb=void 0,Yb=void 0,
 Ca=void 0,ob=void 0,bc=yb.vertices,ec=yb.colors,fc=yb.normals,nc=bc.length,oc=ec.length,Fc=fc.length,vc=yb.__vertexArray,wc=yb.__colorArray,xc=yb.__normalArray,Gc=yb.colorsNeedUpdate,Hc=yb.normalsNeedUpdate,Qc=yb.__webglCustomAttributesList;if(yb.verticesNeedUpdate){for(gc=0;gc<nc;gc++)rc=bc[gc],xa=3*gc,vc[xa]=rc.x,vc[xa+1]=rc.y,vc[xa+2]=rc.z;k.bindBuffer(k.ARRAY_BUFFER,yb.__webglVertexBuffer);k.bufferData(k.ARRAY_BUFFER,vc,qc)}if(Gc){for(hc=0;hc<oc;hc++)sc=ec[hc],xa=3*hc,wc[xa]=sc.r,wc[xa+1]=sc.g,
 wc[xa+2]=sc.b;k.bindBuffer(k.ARRAY_BUFFER,yb.__webglColorBuffer);k.bufferData(k.ARRAY_BUFFER,wc,qc)}if(Hc){for(ic=0;ic<Fc;ic++)tc=fc[ic],xa=3*ic,xc[xa]=tc.x,xc[xa+1]=tc.y,xc[xa+2]=tc.z;k.bindBuffer(k.ARRAY_BUFFER,yb.__webglNormalBuffer);k.bufferData(k.ARRAY_BUFFER,xc,qc)}if(Qc){uc=0;for(ac=Qc.length;uc<ac;uc++)if(Ca=Qc[uc],Ca.needsUpdate&&(void 0===Ca.boundTo||"vertices"===Ca.boundTo)){xa=0;Yb=Ca.value.length;if(1===Ca.size)for(eb=0;eb<Yb;eb++)Ca.array[eb]=Ca.value[eb];else if(2===Ca.size)for(eb=