|
@@ -181,8 +181,8 @@ C.__webGLUV2Buffer);b.vertexAttribPointer(p.uv2,2,b.FLOAT,false,0,0);b.enableVer
|
|
|
C.materials[F])&&A.blending==w&&A.opacity<1==p){this.setBlending(A.blending);this.renderBuffer(k,f,m,A,C,n)}}else if((A=F)&&A.blending==w&&A.opacity<1==p){this.setBlending(A.blending);this.renderBuffer(k,f,m,A,C,n)}}};this.render=function(k,f,m,n){var C,w,p,F=k.lights,y=k.fog;this.initWebGLObjects(k);n=n!==undefined?n:true;if(m&&!m.__webGLFramebuffer){m.__webGLFramebuffer=b.createFramebuffer();m.__webGLRenderbuffer=b.createRenderbuffer();m.__webGLTexture=b.createTexture();b.bindRenderbuffer(b.RENDERBUFFER,
|
|
|
m.__webGLRenderbuffer);b.renderbufferStorage(b.RENDERBUFFER,b.DEPTH_COMPONENT16,m.width,m.height);b.bindTexture(b.TEXTURE_2D,m.__webGLTexture);b.texParameteri(b.TEXTURE_2D,b.TEXTURE_WRAP_S,e(m.wrap_s));b.texParameteri(b.TEXTURE_2D,b.TEXTURE_WRAP_T,e(m.wrap_t));b.texParameteri(b.TEXTURE_2D,b.TEXTURE_MAG_FILTER,e(m.mag_filter));b.texParameteri(b.TEXTURE_2D,b.TEXTURE_MIN_FILTER,e(m.min_filter));b.texImage2D(b.TEXTURE_2D,0,e(m.format),m.width,m.height,0,e(m.format),e(m.type),null);b.bindFramebuffer(b.FRAMEBUFFER,
|
|
|
m.__webGLFramebuffer);b.framebufferTexture2D(b.FRAMEBUFFER,b.COLOR_ATTACHMENT0,b.TEXTURE_2D,m.__webGLTexture,0);b.framebufferRenderbuffer(b.FRAMEBUFFER,b.DEPTH_ATTACHMENT,b.RENDERBUFFER,m.__webGLRenderbuffer);b.bindTexture(b.TEXTURE_2D,null);b.bindRenderbuffer(b.RENDERBUFFER,null);b.bindFramebuffer(b.FRAMEBUFFER,null)}if(m){C=m.__webGLFramebuffer;p=m.width;w=m.height}else{C=null;p=g.width;w=g.height}if(C!=j){b.bindFramebuffer(b.FRAMEBUFFER,C);b.viewport(0,0,p,w);n&&b.clear(b.COLOR_BUFFER_BIT|b.DEPTH_BUFFER_BIT);
|
|
|
-j=C}this.autoClear&&this.clear();f.autoUpdateMatrix&&f.updateMatrix();v.set(f.matrix.flatten());u.set(f.projectionMatrix.flatten());n=0;for(C=k.__webGLObjects.length;n<C;n++){w=k.__webGLObjects[n];p=w.object;w=w.buffer;if(p.visible){this.setupMatrices(p,f);this.renderPass(f,F,y,p,w,THREE.NormalBlending,false)}}n=0;for(C=k.__webGLObjects.length;n<C;n++){w=k.__webGLObjects[n];p=w.object;w=w.buffer;if(p.visible){this.setupMatrices(p,f);if(p.doubleSided)b.disable(b.CULL_FACE);else{b.enable(b.CULL_FACE);
|
|
|
-p.flipSided?b.frontFace(b.CW):b.frontFace(b.CCW)}this.renderPass(f,F,y,p,w,THREE.AdditiveBlending,false);this.renderPass(f,F,y,p,w,THREE.SubtractiveBlending,false);this.renderPass(f,F,y,p,w,THREE.AdditiveBlending,true);this.renderPass(f,F,y,p,w,THREE.SubtractiveBlending,true);this.renderPass(f,F,y,p,w,THREE.NormalBlending,true)}}if(m&&m.min_filter!==THREE.NearestFilter&&m.min_filter!==THREE.LinearFilter){b.bindTexture(b.TEXTURE_2D,m.__webGLTexture);b.generateMipmap(b.TEXTURE_2D);b.bindTexture(b.TEXTURE_2D,
|
|
|
+j=C}this.autoClear&&this.clear();f.autoUpdateMatrix&&f.updateMatrix();v.set(f.matrix.flatten());u.set(f.projectionMatrix.flatten());n=0;for(C=k.__webGLObjects.length;n<C;n++){w=k.__webGLObjects[n];p=w.object;w=w.buffer;if(p.visible){if(p.doubleSided)b.disable(b.CULL_FACE);else{b.enable(b.CULL_FACE);p.flipSided?b.frontFace(b.CW):b.frontFace(b.CCW)}this.setupMatrices(p,f);this.renderPass(f,F,y,p,w,THREE.NormalBlending,false)}}n=0;for(C=k.__webGLObjects.length;n<C;n++){w=k.__webGLObjects[n];p=w.object;
|
|
|
+w=w.buffer;if(p.visible){this.setupMatrices(p,f);this.renderPass(f,F,y,p,w,THREE.AdditiveBlending,false);this.renderPass(f,F,y,p,w,THREE.SubtractiveBlending,false);this.renderPass(f,F,y,p,w,THREE.AdditiveBlending,true);this.renderPass(f,F,y,p,w,THREE.SubtractiveBlending,true);this.renderPass(f,F,y,p,w,THREE.NormalBlending,true)}}if(m&&m.min_filter!==THREE.NearestFilter&&m.min_filter!==THREE.LinearFilter){b.bindTexture(b.TEXTURE_2D,m.__webGLTexture);b.generateMipmap(b.TEXTURE_2D);b.bindTexture(b.TEXTURE_2D,
|
|
|
null)}};this.initWebGLObjects=function(k){function f(J,E,A,M){if(J[E]==undefined){k.__webGLObjects.push({buffer:A,object:M});J[E]=1}}var m,n,C,w,p,F,y;if(!k.__webGLObjects){k.__webGLObjects=[];k.__webGLObjectsMap={}}m=0;for(n=k.objects.length;m<n;m++){C=k.objects[m];p=C.geometry;if(k.__webGLObjectsMap[C.id]==undefined)k.__webGLObjectsMap[C.id]={};y=k.__webGLObjectsMap[C.id];if(C instanceof THREE.Mesh){for(w in p.geometryChunks){F=p.geometryChunks[w];if(!F.__webGLVertexBuffer){this.createMeshBuffers(F);
|
|
|
this.initMeshBuffers(F,C);p.__dirtyVertices=true;p.__dirtyElements=true;p.__dirtyUvs=true;p.__dirtyNormals=true;p.__dirtyTangents=true}if(p.__dirtyVertices||p.__dirtyElements||p.__dirtyUvs)this.setMeshBuffers(F,C,b.DYNAMIC_DRAW,p.__dirtyVertices,p.__dirtyElements,p.__dirtyUvs,p.__dirtyNormals,p.__dirtyTangents);f(y,w,F,C)}p.__dirtyVertices=false;p.__dirtyElements=false;p.__dirtyUvs=false;p.__dirtyNormals=false;p.__dirtyTangents=false}else if(C instanceof THREE.Line){if(!p.__webGLVertexBuffer){this.createLineBuffers(p);
|
|
|
this.initLineBuffers(p);p.__dirtyVertices=true;p.__dirtyElements=true}p.__dirtyVertices&&this.setLineBuffers(p,b.DYNAMIC_DRAW,p.__dirtyVertices,p.__dirtyElements);f(y,0,p,C);p.__dirtyVertices=false;p.__dirtyElements=false}else if(C instanceof THREE.ParticleSystem){if(!p.__webGLVertexBuffer){this.createParticleBuffers(p);this.initParticleBuffers(p);p.__dirtyVertices=true;p.__dirtyElements=true}p.__dirtyVertices&&this.setParticleBuffers(p,b.DYNAMIC_DRAW,p.__dirtyVertices,p.__dirtyElements);f(y,0,p,
|