From cbec0968bbf54e72b9ae0724d218f680e793073a Mon Sep 17 00:00:00 2001 From: "Mr.doob" Date: Mon, 7 Jan 2013 19:35:42 +0100 Subject: [PATCH] Updated builds. --- build/three.js | 89 +++++++++++++++---- build/three.min.js | 215 +++++++++++++++++++++++---------------------- 2 files changed, 182 insertions(+), 122 deletions(-) diff --git a/build/three.js b/build/three.js index 7c493136ac..c7879e3771 100644 --- a/build/three.js +++ b/build/three.js @@ -20412,7 +20412,43 @@ THREE.WebGLRenderer = function ( parameters ) { } - } + } else if ( object instanceof THREE.Line ) { + + if ( updateBuffers ) { + + // vertices + + var position = geometry.attributes[ "position" ]; + var positionSize = position.itemSize; + + _gl.bindBuffer( _gl.ARRAY_BUFFER, position.buffer ); + enableAttribute( attributes.position ); + _gl.vertexAttribPointer( attributes.position, positionSize, _gl.FLOAT, false, 0, 0 ); + + // colors + + var color = geometry.attributes[ "color" ]; + + if ( attributes.color >= 0 && color ) { + + var colorSize = color.itemSize; + + _gl.bindBuffer( _gl.ARRAY_BUFFER, color.buffer ); + enableAttribute( attributes.color ); + _gl.vertexAttribPointer( attributes.color, colorSize, _gl.FLOAT, false, 0, 0 ); + + } + + // render lines + + _gl.drawArrays( _gl.LINE_STRIP, 0, position.numItems / 3 ); + + _this.info.render.calls ++; + _this.info.render.points += position.numItems; + + } + + } }; @@ -21426,12 +21462,20 @@ THREE.WebGLRenderer = function ( parameters ) { if ( ! geometry.__webglVertexBuffer ) { - createLineBuffers( geometry ); - initLineBuffers( geometry, object ); + if ( geometry instanceof THREE.Geometry ) { + + createLineBuffers( geometry ); + initLineBuffers( geometry, object ); - geometry.verticesNeedUpdate = true; - geometry.colorsNeedUpdate = true; - geometry.lineDistancesNeedUpdate = true; + geometry.verticesNeedUpdate = true; + geometry.colorsNeedUpdate = true; + geometry.lineDistancesNeedUpdate = true; + + } else if ( geometry instanceof THREE.BufferGeometry ) { + + initDirectBuffers( geometry ); + + } } @@ -21624,21 +21668,36 @@ THREE.WebGLRenderer = function ( parameters ) { } else if ( object instanceof THREE.Line ) { - material = getBufferMaterial( object, geometry ); + if ( geometry instanceof THREE.BufferGeometry ) { - customAttributesDirty = material.attributes && areCustomAttributesDirty( material ); + if ( geometry.verticesNeedUpdate || geometry.colorsNeedUpdate ) { - if ( geometry.verticesNeedUpdate || geometry.colorsNeedUpdate || geometry.lineDistancesNeedUpdate || customAttributesDirty ) { + setDirectBuffers( geometry, _gl.DYNAMIC_DRAW, !geometry.dynamic ); - setLineBuffers( geometry, _gl.DYNAMIC_DRAW ); + } - } + geometry.verticesNeedUpdate = false; + geometry.colorsNeedUpdate = false; - geometry.verticesNeedUpdate = false; - geometry.colorsNeedUpdate = false; - geometry.lineDistancesNeedUpdate = false; + } else { - material.attributes && clearCustomAttributes( material ); + material = getBufferMaterial( object, geometry ); + + customAttributesDirty = material.attributes && areCustomAttributesDirty( material ); + + if ( geometry.verticesNeedUpdate || geometry.colorsNeedUpdate || geometry.lineDistancesNeedUpdate || customAttributesDirty ) { + + setLineBuffers( geometry, _gl.DYNAMIC_DRAW ); + + } + + geometry.verticesNeedUpdate = false; + geometry.colorsNeedUpdate = false; + geometry.lineDistancesNeedUpdate = false; + + material.attributes && clearCustomAttributes( material ); + + } } else if ( object instanceof THREE.ParticleSystem ) { diff --git a/build/three.min.js b/build/three.min.js index 6da7fedfc4..8c9af6d501 100644 --- a/build/three.min.js +++ b/build/three.min.js @@ -256,7 +256,7 @@ THREE.LOD.prototype.update=function(a){if(1t&&l.clearRect(Fa.min.x|0,Fa.min.y|0,Fa.max.x-Fa.min.x|0,Fa.max.y-Fa.min.y|0),0m;m++)N.autoScaleCubemaps&&!f?(l=k,r=m,t=c.image[m],w=bd,t.width<=w&&t.height<=w||(z=Math.max(t.width,t.height),x=Math.floor(t.width*w/z),w=Math.floor(t.height*w/z),z=document.createElement("canvas"),z.width=x,z.height=w,z.getContext("2d").drawImage(t,0,0,t.width,t.height,0,0,x,w),t=z),l[r]=t):k[m]=c.image[m];m=k[0];l=0===(m.width&m.width-1)&&0===(m.height&m.height-1);r=K(c.format);t=K(c.type);A(j.TEXTURE_CUBE_MAP,c,l);for(m=0;6>m;m++)if(f){w= +new Float32Array(16*k.length));m=0;for(l=k.length;mm;m++)M.autoScaleCubemaps&&!f?(l=k,r=m,t=c.image[m],w=bd,t.width<=w&&t.height<=w||(z=Math.max(t.width,t.height),x=Math.floor(t.width*w/z),w=Math.floor(t.height*w/z),z=document.createElement("canvas"),z.width=x,z.height=w,z.getContext("2d").drawImage(t,0,0,t.width,t.height,0,0,x,w),t=z),l[r]=t):k[m]=c.image[m];m=k[0];l=0===(m.width&m.width-1)&&0===(m.height&m.height-1);r=K(c.format);t=K(c.type);A(j.TEXTURE_CUBE_MAP,c,l);for(m=0;6>m;m++)if(f){w= k[m].mipmaps;z=0;for(B=w.length;z=Cc&&console.warn("WebGLRenderer: trying to use "+a+" texture units while this GPU supports only "+Cc); Ea+=1;return a}function C(a,b){a._modelViewMatrix.multiplyMatrices(b.matrixWorldInverse,a.matrixWorld);a._normalMatrix.getInverse(a._modelViewMatrix);a._normalMatrix.transpose()}function y(a,b,c,d){a[b]=c.r*c.r*d;a[b+1]=c.g*c.g*d;a[b+2]=c.b*c.b*d}function E(a,b,c,d){a[b]=c.r*d;a[b+1]=c.g*d;a[b+2]=c.b*d}function G(a,b,c){rb!==a&&(a?j.enable(j.POLYGON_OFFSET_FILL):j.disable(j.POLYGON_OFFSET_FILL),rb=a);if(a&&(jc!==b||kc!==c))j.polygonOffset(b,c),jc=b,kc=c}function H(a){for(var a=a.split("\n"),b=0,c= a.length;bb;b++)j.deleteFramebuffer(a.__webglFramebuffer[b]),j.deleteRenderbuffer(a.__webglRenderbuffer[b]);else j.deleteFramebuffer(a.__webglFramebuffer),j.deleteRenderbuffer(a.__webglRenderbuffer);N.info.memory.textures--},pb=function(a){a=a.target;a.removeEventListener("dispose",pb);fb(a)},fb=function(a){var b= -a.program;if(void 0!==b){a.program=void 0;var c,d,e=!1,a=0;for(c=ha.length;ab;b++)j.deleteFramebuffer(a.__webglFramebuffer[b]),j.deleteRenderbuffer(a.__webglRenderbuffer[b]);else j.deleteFramebuffer(a.__webglFramebuffer),j.deleteRenderbuffer(a.__webglRenderbuffer);M.info.memory.textures--},pb=function(a){a=a.target;a.removeEventListener("dispose",pb);fb(a)},fb=function(a){var b= +a.program;if(void 0!==b){a.program=void 0;var c,d,e=!1,a=0;for(c=ha.length;ad.numSupportedMorphTargets?(i.sort(n),i.length=d.numSupportedMorphTargets):i.length>d.numSupportedMorphNormals?i.sort(n):0===i.length&&i.push([0,0]);for(h=0;hza;za++)mc=ab[za],Eb[mb]=mc.x,Eb[mb+1]=mc.y,Eb[mb+2]=mc.z,mb+=3;else for(za=0;3>za;za++)Eb[mb]=Ua.x,Eb[mb+1]=Ua.y,Eb[mb+2]=Ua.z,mb+=3;D=0;for(V=va.length;Dza;za++)mc=ab[za],Eb[mb]=mc.x,Eb[mb+1]=mc.y,Eb[mb+2]=mc.z,mb+=3;else for(za=0;4>za;za++)Eb[mb]=Ua.x,Eb[mb+1]=Ua.y,Eb[mb+2]=Ua.z,mb+=3;j.bindBuffer(j.ARRAY_BUFFER,qa.__webglNormalBuffer);j.bufferData(j.ARRAY_BUFFER, -Eb,xa)}if(Cc&&fd&&pb){D=0;for(V=ua.length;Dza;za++)xc=qb[za],Kb[fc]=xc.x,Kb[fc+1]=xc.y,fc+=2;D=0;for(V=va.length;Dza;za++)xc=qb[za],Kb[fc]=xc.x,Kb[fc+1]=xc.y,fc+=2;0za;za++)yc=rb[za],Lb[gc]=yc.x,Lb[gc+1]=yc.y,gc+=2;D=0; -for(V=va.length;Dza;za++)yc=rb[za],Lb[gc]=yc.x,Lb[gc+1]=yc.y,gc+=2;0d.numSupportedMorphTargets?(i.sort(n),i.length=d.numSupportedMorphTargets):i.length>d.numSupportedMorphNormals?i.sort(n):0===i.length&&i.push([0,0]);for(h=0;hza;za++)mc=ab[za],Eb[mb]=mc.x,Eb[mb+1]=mc.y,Eb[mb+2]=mc.z,mb+=3;else for(za=0;3>za;za++)Eb[mb]=Ua.x,Eb[mb+1]=Ua.y,Eb[mb+2]=Ua.z,mb+=3;D=0;for(V=va.length;Dza;za++)mc=ab[za],Eb[mb]=mc.x,Eb[mb+1]=mc.y,Eb[mb+2]=mc.z,mb+=3;else for(za=0;4>za;za++)Eb[mb]=Ua.x,Eb[mb+1]=Ua.y,Eb[mb+ +2]=Ua.z,mb+=3;j.bindBuffer(j.ARRAY_BUFFER,qa.__webglNormalBuffer);j.bufferData(j.ARRAY_BUFFER,Eb,xa)}if(Cc&&fd&&pb){D=0;for(V=ua.length;Dza;za++)xc=qb[za],Kb[fc]=xc.x,Kb[fc+1]=xc.y,fc+=2;D=0;for(V=va.length;Dza;za++)xc=qb[za],Kb[fc]=xc.x,Kb[fc+1]=xc.y,fc+=2;0za;za++)yc=rb[za],Lb[gc]=yc.x,Lb[gc+1]=yc.y,gc+=2;D=0;for(V=va.length;Dza;za++)yc=rb[za],Lb[gc]=yc.x,Lb[gc+1]=yc.y,gc+=2;0f;f++){a.__webglFramebuffer[f]=j.createFramebuffer();a.__webglRenderbuffer[f]=j.createRenderbuffer();j.texImage2D(j.TEXTURE_CUBE_MAP_POSITIVE_X+f,0,d,a.width,a.height,0,d,e,null);var g=a,i=j.TEXTURE_CUBE_MAP_POSITIVE_X+f;j.bindFramebuffer(j.FRAMEBUFFER, +j.createTexture();M.info.memory.textures++;var c=0===(a.width&a.width-1)&&0===(a.height&a.height-1),d=K(a.format),e=K(a.type);if(b){a.__webglFramebuffer=[];a.__webglRenderbuffer=[];j.bindTexture(j.TEXTURE_CUBE_MAP,a.__webglTexture);A(j.TEXTURE_CUBE_MAP,a,c);for(var f=0;6>f;f++){a.__webglFramebuffer[f]=j.createFramebuffer();a.__webglRenderbuffer[f]=j.createRenderbuffer();j.texImage2D(j.TEXTURE_CUBE_MAP_POSITIVE_X+f,0,d,a.width,a.height,0,d,e,null);var g=a,i=j.TEXTURE_CUBE_MAP_POSITIVE_X+f;j.bindFramebuffer(j.FRAMEBUFFER, a.__webglFramebuffer[f]);j.framebufferTexture2D(j.FRAMEBUFFER,j.COLOR_ATTACHMENT0,i,g.__webglTexture,0);W(a.__webglRenderbuffer[f],a)}c&&j.generateMipmap(j.TEXTURE_CUBE_MAP)}else a.__webglFramebuffer=j.createFramebuffer(),a.__webglRenderbuffer=a.shareDepthFrom?a.shareDepthFrom.__webglRenderbuffer:j.createRenderbuffer(),j.bindTexture(j.TEXTURE_2D,a.__webglTexture),A(j.TEXTURE_2D,a,c),j.texImage2D(j.TEXTURE_2D,0,d,a.width,a.height,0,d,e,null),d=j.TEXTURE_2D,j.bindFramebuffer(j.FRAMEBUFFER,a.__webglFramebuffer), j.framebufferTexture2D(j.FRAMEBUFFER,j.COLOR_ATTACHMENT0,d,a.__webglTexture,0),a.shareDepthFrom?a.depthBuffer&&!a.stencilBuffer?j.framebufferRenderbuffer(j.FRAMEBUFFER,j.DEPTH_ATTACHMENT,j.RENDERBUFFER,a.__webglRenderbuffer):a.depthBuffer&&a.stencilBuffer&&j.framebufferRenderbuffer(j.FRAMEBUFFER,j.DEPTH_STENCIL_ATTACHMENT,j.RENDERBUFFER,a.__webglRenderbuffer):W(a.__webglRenderbuffer,a),c&&j.generateMipmap(j.TEXTURE_2D);b?j.bindTexture(j.TEXTURE_CUBE_MAP,null):j.bindTexture(j.TEXTURE_2D,null);j.bindRenderbuffer(j.RENDERBUFFER, null);j.bindFramebuffer(j.FRAMEBUFFER,null)}a?(b=b?a.__webglFramebuffer[a.activeCubeFace]:a.__webglFramebuffer,c=a.width,a=a.height,e=d=0):(b=null,c=Cb,a=Ta,d=Fa,e=Ra);b!==da&&(j.bindFramebuffer(j.FRAMEBUFFER,b),j.viewport(d,e,c,a),da=b);Kb=c;Lb=a};this.shadowMapPlugin=new THREE.ShadowMapPlugin;this.addPrePlugin(this.shadowMapPlugin);this.addPostPlugin(new THREE.SpritePlugin);this.addPostPlugin(new THREE.LensFlarePlugin)};THREE.WebGLRenderTarget=function(a,b,c){THREE.EventDispatcher.call(this);this.width=a;this.height=b;c=c||{};this.wrapS=void 0!==c.wrapS?c.wrapS:THREE.ClampToEdgeWrapping;this.wrapT=void 0!==c.wrapT?c.wrapT:THREE.ClampToEdgeWrapping;this.magFilter=void 0!==c.magFilter?c.magFilter:THREE.LinearFilter;this.minFilter=void 0!==c.minFilter?c.minFilter:THREE.LinearMipMapLinearFilter;this.anisotropy=void 0!==c.anisotropy?c.anisotropy:1;this.offset=new THREE.Vector2(0,0);this.repeat=new THREE.Vector2(1,1); @@ -601,8 +602,8 @@ i.copy(b).add(f);h.copy(c).add(g);f=d.dot(g);g=h.sub(i).dot(g);0===f&&(console.l g=0;gMath.abs(c-i)?[new THREE.Vector2(b,1-e),new THREE.Vector2(d,1-f),new THREE.Vector2(k,1-g),new THREE.Vector2(p,1-a)]:[new THREE.Vector2(c,1-e),new THREE.Vector2(i,1-f),new THREE.Vector2(m,1-g),new THREE.Vector2(n,1-a)]}};THREE.ExtrudeGeometry.__v1=new THREE.Vector2;THREE.ExtrudeGeometry.__v2=new THREE.Vector2;THREE.ExtrudeGeometry.__v3=new THREE.Vector2;THREE.ExtrudeGeometry.__v4=new THREE.Vector2; -- GitLab