Browse Source

Updated builds.

Mr.doob 11 years ago
parent
commit
6aa7ddd1ae
2 changed files with 19 additions and 15 deletions
  1. 9 5
      build/three.js
  2. 10 10
      build/three.min.js

+ 9 - 5
build/three.js

@@ -9378,6 +9378,12 @@ THREE.BufferGeometry.prototype = {
 
 	}(),
 
+	computeFaceNormals: function () {
+
+		// backwards compatibility
+
+	},
+
 	computeVertexNormals: function () {
 
 		if ( this.attributes[ "position" ] ) {
@@ -23121,8 +23127,6 @@ THREE.WebGLRenderer = function ( parameters ) {
 
 		if ( object instanceof THREE.Mesh ) {
 
-			var mode = material.wireframe === false ? _gl.TRIANGLES : _gl.LINES;
-
 			var index = geometryAttributes[ "index" ];
 
 			if ( index ) {
@@ -23154,7 +23158,7 @@ THREE.WebGLRenderer = function ( parameters ) {
 
 					}
 
-					_gl.drawElements( mode, index.array.length, type, 0 );
+					_gl.drawElements( _gl.TRIANGLES, index.array.length, type, 0 );
 
 					_this.info.render.calls ++;
 					_this.info.render.vertices += index.array.length; // not really true, here vertices can be shared
@@ -23181,7 +23185,7 @@ THREE.WebGLRenderer = function ( parameters ) {
 
 						// render indexed triangles
 
-						_gl.drawElements( mode, offsets[ i ].count, type, offsets[ i ].start * size );
+						_gl.drawElements( _gl.TRIANGLES, offsets[ i ].count, type, offsets[ i ].start * size );
 
 						_this.info.render.calls ++;
 						_this.info.render.vertices += offsets[ i ].count; // not really true, here vertices can be shared
@@ -23205,7 +23209,7 @@ THREE.WebGLRenderer = function ( parameters ) {
 
 				// render non-indexed triangles
 
-				_gl.drawArrays( mode, 0, position.array.length / 3 );
+				_gl.drawArrays( _gl.TRIANGLES, 0, position.array.length / 3 );
 
 				_this.info.render.calls ++;
 				_this.info.render.vertices += position.array.length / 3;

+ 10 - 10
build/three.min.js

@@ -190,11 +190,11 @@ THREE.Float64Attribute.prototype=Object.create(THREE.BufferAttribute.prototype);
 THREE.BufferGeometry.prototype={constructor:THREE.BufferGeometry,addAttribute:function(a,b,c){!1===b instanceof THREE.BufferAttribute?(console.warn("DEPRECATED: BufferGeometry's addAttribute() now expects ( name, attribute )."),this.attributes[a]={array:b,itemSize:c}):this.attributes[a]=b},getAttribute:function(a){return this.attributes[a]},addDrawCall:function(a,b,c){this.drawcalls.push({start:a,count:b,index:void 0!==c?c:0})},applyMatrix:function(a){var b=this.attributes.position;void 0!==b&&(a.applyToVector3Array(b.array),
 b.needsUpdate=!0);b=this.attributes.normal;void 0!==b&&((new THREE.Matrix3).getNormalMatrix(a).applyToVector3Array(b.array),b.needsUpdate=!0)},computeBoundingBox:function(){null===this.boundingBox&&(this.boundingBox=new THREE.Box3);var a=this.attributes.position.array;if(a){var b=this.boundingBox;3<=a.length&&(b.min.x=b.max.x=a[0],b.min.y=b.max.y=a[1],b.min.z=b.max.z=a[2]);for(var c=3,d=a.length;c<d;c+=3){var e=a[c],f=a[c+1],g=a[c+2];e<b.min.x?b.min.x=e:e>b.max.x&&(b.max.x=e);f<b.min.y?b.min.y=f:
 f>b.max.y&&(b.max.y=f);g<b.min.z?b.min.z=g:g>b.max.z&&(b.max.z=g)}}if(void 0===a||0===a.length)this.boundingBox.min.set(0,0,0),this.boundingBox.max.set(0,0,0)},computeBoundingSphere:function(){var a=new THREE.Box3,b=new THREE.Vector3;return function(){null===this.boundingSphere&&(this.boundingSphere=new THREE.Sphere);var c=this.attributes.position.array;if(c){a.makeEmpty();for(var d=this.boundingSphere.center,e=0,f=c.length;e<f;e+=3)b.set(c[e],c[e+1],c[e+2]),a.addPoint(b);a.center(d);for(var g=0,
-e=0,f=c.length;e<f;e+=3)b.set(c[e],c[e+1],c[e+2]),g=Math.max(g,d.distanceToSquared(b));this.boundingSphere.radius=Math.sqrt(g)}}}(),computeVertexNormals:function(){if(this.attributes.position){var a,b,c,d;a=this.attributes.position.array.length;if(void 0===this.attributes.normal)this.attributes.normal={itemSize:3,array:new Float32Array(a)};else for(a=0,b=this.attributes.normal.array.length;a<b;a++)this.attributes.normal.array[a]=0;var e=this.attributes.position.array,f=this.attributes.normal.array,
-g,h,k,l,n,q,p=new THREE.Vector3,r=new THREE.Vector3,u=new THREE.Vector3,s=new THREE.Vector3,v=new THREE.Vector3;if(this.attributes.index){var w=this.attributes.index.array,t=this.offsets;c=0;for(d=t.length;c<d;++c){b=t[c].start;g=t[c].count;var x=t[c].index;a=b;for(b+=g;a<b;a+=3)g=x+w[a],h=x+w[a+1],k=x+w[a+2],l=e[3*g],n=e[3*g+1],q=e[3*g+2],p.set(l,n,q),l=e[3*h],n=e[3*h+1],q=e[3*h+2],r.set(l,n,q),l=e[3*k],n=e[3*k+1],q=e[3*k+2],u.set(l,n,q),s.subVectors(u,r),v.subVectors(p,r),s.cross(v),f[3*g]+=s.x,
-f[3*g+1]+=s.y,f[3*g+2]+=s.z,f[3*h]+=s.x,f[3*h+1]+=s.y,f[3*h+2]+=s.z,f[3*k]+=s.x,f[3*k+1]+=s.y,f[3*k+2]+=s.z}}else for(a=0,b=e.length;a<b;a+=9)l=e[a],n=e[a+1],q=e[a+2],p.set(l,n,q),l=e[a+3],n=e[a+4],q=e[a+5],r.set(l,n,q),l=e[a+6],n=e[a+7],q=e[a+8],u.set(l,n,q),s.subVectors(u,r),v.subVectors(p,r),s.cross(v),f[a]=s.x,f[a+1]=s.y,f[a+2]=s.z,f[a+3]=s.x,f[a+4]=s.y,f[a+5]=s.z,f[a+6]=s.x,f[a+7]=s.y,f[a+8]=s.z;this.normalizeNormals();this.normalsNeedUpdate=!0}},normalizeNormals:function(){for(var a=this.attributes.normal.array,
-b,c,d,e=0,f=a.length;e<f;e+=3)b=a[e],c=a[e+1],d=a[e+2],b=1/Math.sqrt(b*b+c*c+d*d),a[e]*=b,a[e+1]*=b,a[e+2]*=b},computeTangents:function(){function a(a,b,c){q=d[3*a];p=d[3*a+1];r=d[3*a+2];u=d[3*b];s=d[3*b+1];v=d[3*b+2];w=d[3*c];t=d[3*c+1];x=d[3*c+2];G=f[2*a];E=f[2*a+1];P=f[2*b];H=f[2*b+1];C=f[2*c];L=f[2*c+1];A=u-q;z=w-q;I=s-p;D=t-p;N=v-r;y=x-r;J=P-G;F=C-G;K=H-E;Y=L-E;R=1/(J*Y-F*K);ka.set((Y*A-K*z)*R,(Y*I-K*D)*R,(Y*N-K*y)*R);da.set((J*z-F*A)*R,(J*D-F*I)*R,(J*y-F*N)*R);k[a].add(ka);k[b].add(ka);k[c].add(ka);
-l[a].add(da);l[b].add(da);l[c].add(da)}function b(a){aa.x=e[3*a];aa.y=e[3*a+1];aa.z=e[3*a+2];Ga.copy(aa);Aa=k[a];T.copy(Aa);T.sub(aa.multiplyScalar(aa.dot(Aa))).normalize();wa.crossVectors(Ga,Aa);Ha=wa.dot(l[a]);Ia=0>Ha?-1:1;h[4*a]=T.x;h[4*a+1]=T.y;h[4*a+2]=T.z;h[4*a+3]=Ia}if(void 0===this.attributes.index||void 0===this.attributes.position||void 0===this.attributes.normal||void 0===this.attributes.uv)console.warn("Missing required attributes (index, position, normal or uv) in BufferGeometry.computeTangents()");
+e=0,f=c.length;e<f;e+=3)b.set(c[e],c[e+1],c[e+2]),g=Math.max(g,d.distanceToSquared(b));this.boundingSphere.radius=Math.sqrt(g)}}}(),computeFaceNormals:function(){},computeVertexNormals:function(){if(this.attributes.position){var a,b,c,d;a=this.attributes.position.array.length;if(void 0===this.attributes.normal)this.attributes.normal={itemSize:3,array:new Float32Array(a)};else for(a=0,b=this.attributes.normal.array.length;a<b;a++)this.attributes.normal.array[a]=0;var e=this.attributes.position.array,
+f=this.attributes.normal.array,g,h,k,l,n,q,p=new THREE.Vector3,r=new THREE.Vector3,u=new THREE.Vector3,s=new THREE.Vector3,v=new THREE.Vector3;if(this.attributes.index){var w=this.attributes.index.array,t=this.offsets;c=0;for(d=t.length;c<d;++c){b=t[c].start;g=t[c].count;var x=t[c].index;a=b;for(b+=g;a<b;a+=3)g=x+w[a],h=x+w[a+1],k=x+w[a+2],l=e[3*g],n=e[3*g+1],q=e[3*g+2],p.set(l,n,q),l=e[3*h],n=e[3*h+1],q=e[3*h+2],r.set(l,n,q),l=e[3*k],n=e[3*k+1],q=e[3*k+2],u.set(l,n,q),s.subVectors(u,r),v.subVectors(p,
+r),s.cross(v),f[3*g]+=s.x,f[3*g+1]+=s.y,f[3*g+2]+=s.z,f[3*h]+=s.x,f[3*h+1]+=s.y,f[3*h+2]+=s.z,f[3*k]+=s.x,f[3*k+1]+=s.y,f[3*k+2]+=s.z}}else for(a=0,b=e.length;a<b;a+=9)l=e[a],n=e[a+1],q=e[a+2],p.set(l,n,q),l=e[a+3],n=e[a+4],q=e[a+5],r.set(l,n,q),l=e[a+6],n=e[a+7],q=e[a+8],u.set(l,n,q),s.subVectors(u,r),v.subVectors(p,r),s.cross(v),f[a]=s.x,f[a+1]=s.y,f[a+2]=s.z,f[a+3]=s.x,f[a+4]=s.y,f[a+5]=s.z,f[a+6]=s.x,f[a+7]=s.y,f[a+8]=s.z;this.normalizeNormals();this.normalsNeedUpdate=!0}},normalizeNormals:function(){for(var a=
+this.attributes.normal.array,b,c,d,e=0,f=a.length;e<f;e+=3)b=a[e],c=a[e+1],d=a[e+2],b=1/Math.sqrt(b*b+c*c+d*d),a[e]*=b,a[e+1]*=b,a[e+2]*=b},computeTangents:function(){function a(a,b,c){q=d[3*a];p=d[3*a+1];r=d[3*a+2];u=d[3*b];s=d[3*b+1];v=d[3*b+2];w=d[3*c];t=d[3*c+1];x=d[3*c+2];G=f[2*a];E=f[2*a+1];P=f[2*b];H=f[2*b+1];C=f[2*c];L=f[2*c+1];A=u-q;z=w-q;I=s-p;D=t-p;N=v-r;y=x-r;J=P-G;F=C-G;K=H-E;Y=L-E;R=1/(J*Y-F*K);ka.set((Y*A-K*z)*R,(Y*I-K*D)*R,(Y*N-K*y)*R);da.set((J*z-F*A)*R,(J*D-F*I)*R,(J*y-F*N)*R);k[a].add(ka);
+k[b].add(ka);k[c].add(ka);l[a].add(da);l[b].add(da);l[c].add(da)}function b(a){aa.x=e[3*a];aa.y=e[3*a+1];aa.z=e[3*a+2];Ga.copy(aa);Aa=k[a];T.copy(Aa);T.sub(aa.multiplyScalar(aa.dot(Aa))).normalize();wa.crossVectors(Ga,Aa);Ha=wa.dot(l[a]);Ia=0>Ha?-1:1;h[4*a]=T.x;h[4*a+1]=T.y;h[4*a+2]=T.z;h[4*a+3]=Ia}if(void 0===this.attributes.index||void 0===this.attributes.position||void 0===this.attributes.normal||void 0===this.attributes.uv)console.warn("Missing required attributes (index, position, normal or uv) in BufferGeometry.computeTangents()");
 else{var c=this.attributes.index.array,d=this.attributes.position.array,e=this.attributes.normal.array,f=this.attributes.uv.array,g=d.length/3;void 0===this.attributes.tangent&&(this.attributes.tangent={itemSize:4,array:new Float32Array(4*g)});for(var h=this.attributes.tangent.array,k=[],l=[],n=0;n<g;n++)k[n]=new THREE.Vector3,l[n]=new THREE.Vector3;var q,p,r,u,s,v,w,t,x,G,E,P,H,C,L,A,z,I,D,N,y,J,F,K,Y,R,ka=new THREE.Vector3,da=new THREE.Vector3,X,O,S,fa,B,ia=this.offsets,n=0;for(O=ia.length;n<O;++n){X=
 ia[n].start;S=ia[n].count;var ta=ia[n].index,g=X;for(X+=S;g<X;g+=3)S=ta+c[g],fa=ta+c[g+1],B=ta+c[g+2],a(S,fa,B)}var T=new THREE.Vector3,wa=new THREE.Vector3,aa=new THREE.Vector3,Ga=new THREE.Vector3,Ia,Aa,Ha,n=0;for(O=ia.length;n<O;++n)for(X=ia[n].start,S=ia[n].count,ta=ia[n].index,g=X,X+=S;g<X;g+=3)S=ta+c[g],fa=ta+c[g+1],B=ta+c[g+2],b(S),b(fa),b(B)}},computeOffsets:function(a){var b=a;void 0===a&&(b=65535);Date.now();a=this.attributes.index.array;for(var c=this.attributes.position.array,d=a.length/
 3,e=new Uint16Array(a.length),f=0,g=0,h=[{start:0,count:0,index:0}],k=h[0],l=0,n=0,q=new Int32Array(6),p=new Int32Array(c.length),r=new Int32Array(c.length),u=0;u<c.length;u++)p[u]=-1,r[u]=-1;for(c=0;c<d;c++){for(var s=n=0;3>s;s++)u=a[3*c+s],-1==p[u]?(q[2*s]=u,q[2*s+1]=-1,n++):p[u]<k.index?(q[2*s]=u,q[2*s+1]=-1,l++):(q[2*s]=u,q[2*s+1]=p[u]);if(g+n>k.index+b)for(k={start:f,count:0,index:g},h.push(k),n=0;6>n;n+=2)s=q[n+1],-1<s&&s<k.index&&(q[n+1]=-1);for(n=0;6>n;n+=2)u=q[n],s=q[n+1],-1===s&&(s=g++),
@@ -453,11 +453,11 @@ m.deleteBuffer(a.__webglSkinWeightsBuffer);void 0!==a.__webglFaceBuffer&&m.delet
 a=0;for(c=ia.length;a<c;a++)if(d=ia[a],d.program===b){d.usedTimes--;0===d.usedTimes&&(e=!0);break}if(!0===e){e=[];a=0;for(c=ia.length;a<c;a++)d=ia[a],d.program!==b&&e.push(d);ia=e;m.deleteProgram(b);B.info.memory.programs--}}};this.renderBufferImmediate=function(a,b,c){h();a.hasPositions&&!a.__webglVertexBuffer&&(a.__webglVertexBuffer=m.createBuffer());a.hasNormals&&!a.__webglNormalBuffer&&(a.__webglNormalBuffer=m.createBuffer());a.hasUvs&&!a.__webglUvBuffer&&(a.__webglUvBuffer=m.createBuffer());
 a.hasColors&&!a.__webglColorBuffer&&(a.__webglColorBuffer=m.createBuffer());a.hasPositions&&(m.bindBuffer(m.ARRAY_BUFFER,a.__webglVertexBuffer),m.bufferData(m.ARRAY_BUFFER,a.positionArray,m.DYNAMIC_DRAW),k(b.attributes.position),m.vertexAttribPointer(b.attributes.position,3,m.FLOAT,!1,0,0));if(a.hasNormals){m.bindBuffer(m.ARRAY_BUFFER,a.__webglNormalBuffer);if(c.shading===THREE.FlatShading){var d,e,f,g,p,n,q,r,s,t,u,v=3*a.count;for(u=0;u<v;u+=9)t=a.normalArray,d=t[u],e=t[u+1],f=t[u+2],g=t[u+3],n=
 t[u+4],r=t[u+5],p=t[u+6],q=t[u+7],s=t[u+8],d=(d+g+p)/3,e=(e+n+q)/3,f=(f+r+s)/3,t[u]=d,t[u+1]=e,t[u+2]=f,t[u+3]=d,t[u+4]=e,t[u+5]=f,t[u+6]=d,t[u+7]=e,t[u+8]=f}m.bufferData(m.ARRAY_BUFFER,a.normalArray,m.DYNAMIC_DRAW);k(b.attributes.normal);m.vertexAttribPointer(b.attributes.normal,3,m.FLOAT,!1,0,0)}a.hasUvs&&c.map&&(m.bindBuffer(m.ARRAY_BUFFER,a.__webglUvBuffer),m.bufferData(m.ARRAY_BUFFER,a.uvArray,m.DYNAMIC_DRAW),k(b.attributes.uv),m.vertexAttribPointer(b.attributes.uv,2,m.FLOAT,!1,0,0));a.hasColors&&
-c.vertexColors!==THREE.NoColors&&(m.bindBuffer(m.ARRAY_BUFFER,a.__webglColorBuffer),m.bufferData(m.ARRAY_BUFFER,a.colorArray,m.DYNAMIC_DRAW),k(b.attributes.color),m.vertexAttribPointer(b.attributes.color,3,m.FLOAT,!1,0,0));l();m.drawArrays(m.TRIANGLES,0,a.count);a.count=0};this.renderBufferDirect=function(a,b,c,d,e,f){if(!1!==d.visible){var k=P(a,b,c,d,f);a=k.attributes;b=e.attributes;c=!1;k=16777215*e.id+2*k.id+(d.wireframe?1:0);k!==aa&&(aa=k,c=!0);c&&h();if(f instanceof THREE.Mesh)if(f=!1===d.wireframe?
-m.TRIANGLES:m.LINES,k=b.index){var l,p;k.array instanceof Uint32Array?(l=m.UNSIGNED_INT,p=4):(l=m.UNSIGNED_SHORT,p=2);e=e.offsets;if(0===e.length)c&&(g(d,a,b,0),m.bindBuffer(m.ELEMENT_ARRAY_BUFFER,k.buffer)),m.drawElements(f,k.array.length,l,0),B.info.render.calls++,B.info.render.vertices+=k.array.length,B.info.render.faces+=k.array.length/3;else{c=!0;for(var n=0,q=e.length;n<q;n++){var r=e[n].index;c&&(g(d,a,b,r),m.bindBuffer(m.ELEMENT_ARRAY_BUFFER,k.buffer));m.drawElements(f,e[n].count,l,e[n].start*
-p);B.info.render.calls++;B.info.render.vertices+=e[n].count;B.info.render.faces+=e[n].count/3}}}else c&&g(d,a,b,0),d=e.attributes.position,m.drawArrays(f,0,d.array.length/3),B.info.render.calls++,B.info.render.vertices+=d.array.length/3,B.info.render.faces+=d.array.length/9;else if(f instanceof THREE.ParticleSystem)c&&g(d,a,b,0),d=b.position,m.drawArrays(m.POINTS,0,d.array.length/3),B.info.render.calls++,B.info.render.points+=d.array.length/3;else if(f instanceof THREE.Line)if(f=f.type===THREE.LineStrip?
-m.LINE_STRIP:m.LINES,A(d.linewidth),k=b.index)if(k.array instanceof Uint32Array?(l=m.UNSIGNED_INT,p=4):(l=m.UNSIGNED_SHORT,p=2),e=e.offsets,0===e.length)c&&(g(d,a,b,0),m.bindBuffer(m.ELEMENT_ARRAY_BUFFER,k.buffer)),m.drawElements(m.LINES,k.array.length,l,0),B.info.render.calls++,B.info.render.vertices+=k.array.length;else for(1<e.length&&(c=!0),n=0,q=e.length;n<q;n++)r=e[n].index,c&&(g(d,a,b,r),m.bindBuffer(m.ELEMENT_ARRAY_BUFFER,k.buffer)),m.drawElements(m.LINES,e[n].count,l,e[n].start*p),B.info.render.calls++,
-B.info.render.vertices+=e[n].count;else c&&g(d,a,b,0),d=b.position,m.drawArrays(f,0,d.array.length/3),B.info.render.calls++,B.info.render.points+=d.array.length/3}};this.renderBuffer=function(a,b,c,d,e,f){if(!1!==d.visible){var g,p;c=P(a,b,c,d,f);b=c.attributes;a=!1;c=16777215*e.id+2*c.id+(d.wireframe?1:0);c!==aa&&(aa=c,a=!0);a&&h();if(!d.morphTargets&&0<=b.position)a&&(m.bindBuffer(m.ARRAY_BUFFER,e.__webglVertexBuffer),k(b.position),m.vertexAttribPointer(b.position,3,m.FLOAT,!1,0,0));else if(f.morphTargetBase){c=
+c.vertexColors!==THREE.NoColors&&(m.bindBuffer(m.ARRAY_BUFFER,a.__webglColorBuffer),m.bufferData(m.ARRAY_BUFFER,a.colorArray,m.DYNAMIC_DRAW),k(b.attributes.color),m.vertexAttribPointer(b.attributes.color,3,m.FLOAT,!1,0,0));l();m.drawArrays(m.TRIANGLES,0,a.count);a.count=0};this.renderBufferDirect=function(a,b,c,d,e,f){if(!1!==d.visible){var k=P(a,b,c,d,f);a=k.attributes;b=e.attributes;c=!1;k=16777215*e.id+2*k.id+(d.wireframe?1:0);k!==aa&&(aa=k,c=!0);c&&h();if(f instanceof THREE.Mesh)if(f=b.index){var l;
+f.array instanceof Uint32Array?(k=m.UNSIGNED_INT,l=4):(k=m.UNSIGNED_SHORT,l=2);e=e.offsets;if(0===e.length)c&&(g(d,a,b,0),m.bindBuffer(m.ELEMENT_ARRAY_BUFFER,f.buffer)),m.drawElements(m.TRIANGLES,f.array.length,k,0),B.info.render.calls++,B.info.render.vertices+=f.array.length,B.info.render.faces+=f.array.length/3;else{c=!0;for(var p=0,n=e.length;p<n;p++){var q=e[p].index;c&&(g(d,a,b,q),m.bindBuffer(m.ELEMENT_ARRAY_BUFFER,f.buffer));m.drawElements(m.TRIANGLES,e[p].count,k,e[p].start*l);B.info.render.calls++;
+B.info.render.vertices+=e[p].count;B.info.render.faces+=e[p].count/3}}}else c&&g(d,a,b,0),d=e.attributes.position,m.drawArrays(m.TRIANGLES,0,d.array.length/3),B.info.render.calls++,B.info.render.vertices+=d.array.length/3,B.info.render.faces+=d.array.length/9;else if(f instanceof THREE.ParticleSystem)c&&g(d,a,b,0),d=b.position,m.drawArrays(m.POINTS,0,d.array.length/3),B.info.render.calls++,B.info.render.points+=d.array.length/3;else if(f instanceof THREE.Line)if(k=f.type===THREE.LineStrip?m.LINE_STRIP:
+m.LINES,A(d.linewidth),f=b.index)if(f.array instanceof Uint32Array?(k=m.UNSIGNED_INT,l=4):(k=m.UNSIGNED_SHORT,l=2),e=e.offsets,0===e.length)c&&(g(d,a,b,0),m.bindBuffer(m.ELEMENT_ARRAY_BUFFER,f.buffer)),m.drawElements(m.LINES,f.array.length,k,0),B.info.render.calls++,B.info.render.vertices+=f.array.length;else for(1<e.length&&(c=!0),p=0,n=e.length;p<n;p++)q=e[p].index,c&&(g(d,a,b,q),m.bindBuffer(m.ELEMENT_ARRAY_BUFFER,f.buffer)),m.drawElements(m.LINES,e[p].count,k,e[p].start*l),B.info.render.calls++,
+B.info.render.vertices+=e[p].count;else c&&g(d,a,b,0),d=b.position,m.drawArrays(k,0,d.array.length/3),B.info.render.calls++,B.info.render.points+=d.array.length/3}};this.renderBuffer=function(a,b,c,d,e,f){if(!1!==d.visible){var g,p;c=P(a,b,c,d,f);b=c.attributes;a=!1;c=16777215*e.id+2*c.id+(d.wireframe?1:0);c!==aa&&(aa=c,a=!0);a&&h();if(!d.morphTargets&&0<=b.position)a&&(m.bindBuffer(m.ARRAY_BUFFER,e.__webglVertexBuffer),k(b.position),m.vertexAttribPointer(b.position,3,m.FLOAT,!1,0,0));else if(f.morphTargetBase){c=
 d.program.attributes;-1!==f.morphTargetBase&&0<=c.position?(m.bindBuffer(m.ARRAY_BUFFER,e.__webglMorphTargetsBuffers[f.morphTargetBase]),k(c.position),m.vertexAttribPointer(c.position,3,m.FLOAT,!1,0,0)):0<=c.position&&(m.bindBuffer(m.ARRAY_BUFFER,e.__webglVertexBuffer),k(c.position),m.vertexAttribPointer(c.position,3,m.FLOAT,!1,0,0));if(f.morphTargetForcedOrder.length){var n=0;p=f.morphTargetForcedOrder;for(g=f.morphTargetInfluences;n<d.numSupportedMorphTargets&&n<p.length;)0<=c["morphTarget"+n]&&
 (m.bindBuffer(m.ARRAY_BUFFER,e.__webglMorphTargetsBuffers[p[n]]),k(c["morphTarget"+n]),m.vertexAttribPointer(c["morphTarget"+n],3,m.FLOAT,!1,0,0)),0<=c["morphNormal"+n]&&d.morphNormals&&(m.bindBuffer(m.ARRAY_BUFFER,e.__webglMorphNormalsBuffers[p[n]]),k(c["morphNormal"+n]),m.vertexAttribPointer(c["morphNormal"+n],3,m.FLOAT,!1,0,0)),f.__webglMorphTargetInfluences[n]=g[p[n]],n++}else{p=[];g=f.morphTargetInfluences;var r,s=g.length;for(r=0;r<s;r++)n=g[r],0<n&&p.push([n,r]);p.length>d.numSupportedMorphTargets?
 (p.sort(q),p.length=d.numSupportedMorphTargets):p.length>d.numSupportedMorphNormals?p.sort(q):0===p.length&&p.push([0,0]);for(n=0;n<d.numSupportedMorphTargets;)p[n]?(r=p[n][1],0<=c["morphTarget"+n]&&(m.bindBuffer(m.ARRAY_BUFFER,e.__webglMorphTargetsBuffers[r]),k(c["morphTarget"+n]),m.vertexAttribPointer(c["morphTarget"+n],3,m.FLOAT,!1,0,0)),0<=c["morphNormal"+n]&&d.morphNormals&&(m.bindBuffer(m.ARRAY_BUFFER,e.__webglMorphNormalsBuffers[r]),k(c["morphNormal"+n]),m.vertexAttribPointer(c["morphNormal"+