提交 9ade9bbd 编写于 作者: A alteredq

Changed opaque pass to use front-to-back order.

Impact on performance is not very big, you need a lot of triangles with complex fragment shaders to see the difference.
上级 5a82fb1d
......@@ -334,7 +334,7 @@ u[w],v.attributes[c]=k.getAttribLocation(v,c);K.push({program:v,code:h});u=v}b.p
k.enableVertexAttribArray(u.skinWeight));if(b.attributes)for(g in b.attributes)u[g]!==void 0&&u[g]>=0&&k.enableVertexAttribArray(u[g]);if(b.morphTargets)for(g=b.numSupportedMorphTargets=0;g<this.maxMorphTargets;g++)w="morphTarget"+g,u[w]>=0&&(k.enableVertexAttribArray(u[w]),b.numSupportedMorphTargets++)};this.render=function(b,c,o,B){var J,D,E,F,H,L,V,K,M=b.lights,ga=b.fog;this.shadowMapEnabled&&w(b,c);$.data.vertices=0;$.data.faces=0;$.data.drawCalls=0;c.matrixAutoUpdate&&c.update(void 0,!0);b.update(void 0,
!1,c);c.matrixWorldInverse.flattenToArray(xa);c.projectionMatrix.flattenToArray(sa);ka.multiply(c.projectionMatrix,c.matrixWorldInverse);n(ka);this.initWebGLObjects(b);Q(o);(this.autoClear||B)&&this.clear();H=b.__webglObjects.length;for(B=0;B<H;B++)if(J=b.__webglObjects[B],V=J.object,V.visible)if(!(V instanceof THREE.Mesh)||t(V)){if(V.matrixWorld.flattenToArray(V._objectMatrixArray),G(V,c,!0),v(J),J.render=!0,this.sortObjects)J.object.renderDepth?J.z=J.object.renderDepth:(Aa.copy(V.position),ka.multiplyVector3(Aa),
J.z=Aa.z)}else J.render=!1;else J.render=!1;this.sortObjects&&b.__webglObjects.sort(u);L=b.__webglObjectsImmediate.length;for(B=0;B<L;B++)J=b.__webglObjectsImmediate[B],V=J.object,V.visible&&(V.matrixAutoUpdate&&V.matrixWorld.flattenToArray(V._objectMatrixArray),G(V,c,!0),p(J));if(b.overrideMaterial){g(b.overrideMaterial.depthTest);I(b.overrideMaterial.blending);for(B=0;B<H;B++)if(J=b.__webglObjects[B],J.render)V=J.object,K=J.buffer,j(V),f(c,M,ga,b.overrideMaterial,K,V);for(B=0;B<L;B++)J=b.__webglObjectsImmediate[B],
V=J.object,V.visible&&(j(V),D=e(c,M,ga,b.overrideMaterial,V),V.render(function(c){h(c,D,b.overrideMaterial.shading)}))}else{I(THREE.NormalBlending);for(B=0;B<H;B++)if(J=b.__webglObjects[B],J.render){V=J.object;K=J.buffer;E=J.opaque;j(V);for(J=0;J<E.count;J++)F=E.list[J],g(F.depthTest),m(F.polygonOffset,F.polygonOffsetFactor,F.polygonOffsetUnits),f(c,M,ga,F,K,V)}for(B=0;B<L;B++)if(J=b.__webglObjectsImmediate[B],V=J.object,V.visible){E=J.opaque;j(V);for(J=0;J<E.count;J++)F=E.list[J],g(F.depthTest),
V=J.object,V.visible&&(j(V),D=e(c,M,ga,b.overrideMaterial,V),V.render(function(c){h(c,D,b.overrideMaterial.shading)}))}else{I(THREE.NormalBlending);for(B=H-1;B>=0;B--)if(J=b.__webglObjects[B],J.render){V=J.object;K=J.buffer;E=J.opaque;j(V);for(J=0;J<E.count;J++)F=E.list[J],g(F.depthTest),m(F.polygonOffset,F.polygonOffsetFactor,F.polygonOffsetUnits),f(c,M,ga,F,K,V)}for(B=0;B<L;B++)if(J=b.__webglObjectsImmediate[B],V=J.object,V.visible){E=J.opaque;j(V);for(J=0;J<E.count;J++)F=E.list[J],g(F.depthTest),
m(F.polygonOffset,F.polygonOffsetFactor,F.polygonOffsetUnits),D=e(c,M,ga,F,V),V.render(function(b){h(b,D,F.shading)})}for(B=0;B<H;B++)if(J=b.__webglObjects[B],J.render){V=J.object;K=J.buffer;E=J.transparent;j(V);for(J=0;J<E.count;J++)F=E.list[J],I(F.blending),g(F.depthTest),m(F.polygonOffset,F.polygonOffsetFactor,F.polygonOffsetUnits),f(c,M,ga,F,K,V)}for(B=0;B<L;B++)if(J=b.__webglObjectsImmediate[B],V=J.object,V.visible){E=J.transparent;j(V);for(J=0;J<E.count;J++)F=E.list[J],I(F.blending),g(F.depthTest),
m(F.polygonOffset,F.polygonOffsetFactor,F.polygonOffsetUnits),D=e(c,M,ga,F,V),V.render(function(b){h(b,D,F.shading)})}}b.__webglSprites.length&&x(b,c);Pa&&b.__webglShadowVolumes.length&&b.lights.length&&z(b);b.__webglLensFlares.length&&y(b,c);o&&o.minFilter!==THREE.NearestFilter&&o.minFilter!==THREE.LinearFilter&&(k.bindTexture(k.TEXTURE_2D,o.__webglTexture),k.generateMipmap(k.TEXTURE_2D),k.bindTexture(k.TEXTURE_2D,null))};this.initWebGLObjects=function(b){if(!b.__webglObjects)b.__webglObjects=[],
b.__webglObjectsImmediate=[],b.__webglShadowVolumes=[],b.__webglLensFlares=[],b.__webglSprites=[];for(;b.__objectsAdded.length;){var c=b.__objectsAdded[0],e=b,f=void 0,g=void 0,j=void 0;if(c._modelViewMatrix==void 0)c._modelViewMatrix=new THREE.Matrix4,c._normalMatrixArray=new Float32Array(9),c._modelViewMatrixArray=new Float32Array(16),c._objectMatrixArray=new Float32Array(16),c.matrixWorld.flattenToArray(c._objectMatrixArray);if(c instanceof THREE.Mesh)for(f in g=c.geometry,g.geometryGroups==void 0&&
......
......@@ -291,23 +291,23 @@ o[s],p.attributes[e]=c.getAttribLocation(p,e);ha.push({program:p,code:i});o=p}b.
c.enableVertexAttribArray(o.skinWeight));if(b.attributes)for(g in b.attributes)o[g]!==void 0&&o[g]>=0&&c.enableVertexAttribArray(o[g]);if(b.morphTargets)for(g=b.numSupportedMorphTargets=0;g<this.maxMorphTargets;g++)s="morphTarget"+g,o[s]>=0&&(c.enableVertexAttribArray(o[s]),b.numSupportedMorphTargets++)};this.render=function(b,d,r,u){var w,x,y,v,H,C,q,I,E=b.lights,K=b.fog;this.shadowMapEnabled&&D(b,d);J.data.vertices=0;J.data.faces=0;J.data.drawCalls=0;d.matrixAutoUpdate&&d.update(void 0,!0);b.update(void 0,
!1,d);d.matrixWorldInverse.flattenToArray(Ma);d.projectionMatrix.flattenToArray(La);wa.multiply(d.projectionMatrix,d.matrixWorldInverse);k(wa);this.initWebGLObjects(b);ka(r);(this.autoClear||u)&&this.clear();H=b.__webglObjects.length;for(u=0;u<H;u++)if(w=b.__webglObjects[u],q=w.object,q.visible)if(!(q instanceof THREE.Mesh)||n(q)){if(q.matrixWorld.flattenToArray(q._objectMatrixArray),U(q,d,!0),s(w),w.render=!0,this.sortObjects)w.object.renderDepth?w.z=w.object.renderDepth:(Ka.copy(q.position),wa.multiplyVector3(Ka),
w.z=Ka.z)}else w.render=!1;else w.render=!1;this.sortObjects&&b.__webglObjects.sort(p);C=b.__webglObjectsImmediate.length;for(u=0;u<C;u++)w=b.__webglObjectsImmediate[u],q=w.object,q.visible&&(q.matrixAutoUpdate&&q.matrixWorld.flattenToArray(q._objectMatrixArray),U(q,d,!0),o(w));if(b.overrideMaterial){h(b.overrideMaterial.depthTest);M(b.overrideMaterial.blending);for(u=0;u<H;u++)if(w=b.__webglObjects[u],w.render)q=w.object,I=w.buffer,i(q),f(d,E,K,b.overrideMaterial,I,q);for(u=0;u<C;u++)w=b.__webglObjectsImmediate[u],
q=w.object,q.visible&&(i(q),x=e(d,E,K,b.overrideMaterial,q),q.render(function(c){g(c,x,b.overrideMaterial.shading)}))}else{M(THREE.NormalBlending);for(u=0;u<H;u++)if(w=b.__webglObjects[u],w.render){q=w.object;I=w.buffer;y=w.opaque;i(q);for(w=0;w<y.count;w++)v=y.list[w],h(v.depthTest),j(v.polygonOffset,v.polygonOffsetFactor,v.polygonOffsetUnits),f(d,E,K,v,I,q)}for(u=0;u<C;u++)if(w=b.__webglObjectsImmediate[u],q=w.object,q.visible){y=w.opaque;i(q);for(w=0;w<y.count;w++)v=y.list[w],h(v.depthTest),j(v.polygonOffset,
v.polygonOffsetFactor,v.polygonOffsetUnits),x=e(d,E,K,v,q),q.render(function(b){g(b,x,v.shading)})}for(u=0;u<H;u++)if(w=b.__webglObjects[u],w.render){q=w.object;I=w.buffer;y=w.transparent;i(q);for(w=0;w<y.count;w++)v=y.list[w],M(v.blending),h(v.depthTest),j(v.polygonOffset,v.polygonOffsetFactor,v.polygonOffsetUnits),f(d,E,K,v,I,q)}for(u=0;u<C;u++)if(w=b.__webglObjectsImmediate[u],q=w.object,q.visible){y=w.transparent;i(q);for(w=0;w<y.count;w++)v=y.list[w],M(v.blending),h(v.depthTest),j(v.polygonOffset,
v.polygonOffsetFactor,v.polygonOffsetUnits),x=e(d,E,K,v,q),q.render(function(b){g(b,x,v.shading)})}}b.__webglSprites.length&&G(b,d);Qa&&b.__webglShadowVolumes.length&&b.lights.length&&F(b);b.__webglLensFlares.length&&B(b,d);r&&r.minFilter!==THREE.NearestFilter&&r.minFilter!==THREE.LinearFilter&&(c.bindTexture(c.TEXTURE_2D,r.__webglTexture),c.generateMipmap(c.TEXTURE_2D),c.bindTexture(c.TEXTURE_2D,null))};this.initWebGLObjects=function(b){if(!b.__webglObjects)b.__webglObjects=[],b.__webglObjectsImmediate=
[],b.__webglShadowVolumes=[],b.__webglLensFlares=[],b.__webglSprites=[];for(;b.__objectsAdded.length;){var d=b.__objectsAdded[0],e=b,f=void 0,g=void 0,h=void 0;if(d._modelViewMatrix==void 0)d._modelViewMatrix=new THREE.Matrix4,d._normalMatrixArray=new Float32Array(9),d._modelViewMatrixArray=new Float32Array(16),d._objectMatrixArray=new Float32Array(16),d.matrixWorld.flattenToArray(d._objectMatrixArray);if(d instanceof THREE.Mesh)for(f in g=d.geometry,g.geometryGroups==void 0&&P(g),g.geometryGroups){h=
g.geometryGroups[f];if(!h.__webglVertexBuffer){var i=h;i.__webglVertexBuffer=c.createBuffer();i.__webglNormalBuffer=c.createBuffer();i.__webglTangentBuffer=c.createBuffer();i.__webglColorBuffer=c.createBuffer();i.__webglUVBuffer=c.createBuffer();i.__webglUV2Buffer=c.createBuffer();i.__webglSkinVertexABuffer=c.createBuffer();i.__webglSkinVertexBBuffer=c.createBuffer();i.__webglSkinIndicesBuffer=c.createBuffer();i.__webglSkinWeightsBuffer=c.createBuffer();i.__webglFaceBuffer=c.createBuffer();i.__webglLineBuffer=
c.createBuffer();if(i.numMorphTargets){var j=void 0,k=void 0;i.__webglMorphTargetsBuffers=[];j=0;for(k=i.numMorphTargets;j<k;j++)i.__webglMorphTargetsBuffers.push(c.createBuffer())}for(var i=h,j=d,n=void 0,q=void 0,o=void 0,r=o=void 0,p=void 0,s=void 0,w=s=k=0,v=o=q=void 0,y=v=q=n=void 0,o=void 0,r=j.geometry,p=r.faces,v=i.faces,n=0,q=v.length;n<q;n++)o=v[n],o=p[o],o instanceof THREE.Face3?(k+=3,s+=1,w+=3):o instanceof THREE.Face4&&(k+=4,s+=2,w+=4);for(var n=i,q=j,x=v=p=void 0,B=void 0,x=void 0,o=
[],p=0,v=q.materials.length;p<v;p++)if(x=q.materials[p],x instanceof THREE.MeshFaceMaterial){x=0;for(l=n.materials.length;x<l;x++)(B=n.materials[x])&&o.push(B)}else(B=x)&&o.push(B);n=o;i.__materials=n;a:{p=q=void 0;v=n.length;for(q=0;q<v;q++)if(p=n[q],p.map||p.lightMap||p instanceof THREE.MeshShaderMaterial){q=!0;break a}q=!1}a:{v=p=void 0;o=n.length;for(p=0;p<o;p++)if(v=n[p],!(v instanceof THREE.MeshBasicMaterial&&!v.envMap||v instanceof THREE.MeshDepthMaterial)){v=v&&v.shading!=void 0&&v.shading==
THREE.SmoothShading?THREE.SmoothShading:THREE.FlatShading;break a}v=!1}a:{o=p=void 0;x=n.length;for(p=0;p<x;p++)if(o=n[p],o.vertexColors){o=o.vertexColors;break a}o=!1}i.__vertexArray=new Float32Array(k*3);if(v)i.__normalArray=new Float32Array(k*3);if(r.hasTangents)i.__tangentArray=new Float32Array(k*4);if(o)i.__colorArray=new Float32Array(k*3);if(q){if(r.faceUvs.length>0||r.faceVertexUvs.length>0)i.__uvArray=new Float32Array(k*2);if(r.faceUvs.length>1||r.faceVertexUvs.length>1)i.__uv2Array=new Float32Array(k*
2)}if(j.geometry.skinWeights.length&&j.geometry.skinIndices.length)i.__skinVertexAArray=new Float32Array(k*4),i.__skinVertexBArray=new Float32Array(k*4),i.__skinIndexArray=new Float32Array(k*4),i.__skinWeightArray=new Float32Array(k*4);i.__faceArray=new Uint16Array(s*3+(j.geometry.edgeFaces?j.geometry.edgeFaces.length*6:0));i.__lineArray=new Uint16Array(w*2);if(i.numMorphTargets){i.__morphTargetsArrays=[];r=0;for(p=i.numMorphTargets;r<p;r++)i.__morphTargetsArrays.push(new Float32Array(k*3))}i.__needsSmoothNormals=
v==THREE.SmoothShading;i.__uvType=q;i.__vertexColorType=o;i.__normalType=v;i.__webglFaceCount=s*3+(j.geometry.edgeFaces?j.geometry.edgeFaces.length*6:0);i.__webglLineCount=w*2;r=0;for(p=n.length;r<p;r++)if(q=n[r],q.attributes){if(i.__webglCustomAttributes===void 0)i.__webglCustomAttributes={};for(a in q.attributes){o=q.attributes[a];v={};for(y in o)v[y]=o[y];if(!v.__webglInitialized||v.createUniqueBuffers)v.__webglInitialized=!0,s=1,v.type==="v2"?s=2:v.type==="v3"?s=3:v.type==="v4"?s=4:v.type==="c"&&
(s=3),v.size=s,v.array=new Float32Array(k*s),v.buffer=c.createBuffer(),v.buffer.belongsToAttribute=a,o.needsUpdate=!0,v.__original=o;i.__webglCustomAttributes[a]=v}}i.__inittedArrays=!0;g.__dirtyVertices=!0;g.__dirtyMorphTargets=!0;g.__dirtyElements=!0;g.__dirtyUvs=!0;g.__dirtyNormals=!0;g.__dirtyTangents=!0;g.__dirtyColors=!0}d instanceof THREE.ShadowVolume?I(e.__webglShadowVolumes,h,d):I(e.__webglObjects,h,d)}else if(d instanceof THREE.LensFlare)I(e.__webglLensFlares,void 0,d);else if(d instanceof
THREE.Ribbon){g=d.geometry;if(!g.__webglVertexBuffer)f=g,f.__webglVertexBuffer=c.createBuffer(),f.__webglColorBuffer=c.createBuffer(),f=g,h=f.vertices.length,f.__vertexArray=new Float32Array(h*3),f.__colorArray=new Float32Array(h*3),f.__webglVertexCount=h,g.__dirtyVertices=!0,g.__dirtyColors=!0;I(e.__webglObjects,g,d)}else if(d instanceof THREE.Line){g=d.geometry;if(!g.__webglVertexBuffer)f=g,f.__webglVertexBuffer=c.createBuffer(),f.__webglColorBuffer=c.createBuffer(),f=g,h=f.vertices.length,f.__vertexArray=
new Float32Array(h*3),f.__colorArray=new Float32Array(h*3),f.__webglLineCount=h,g.__dirtyVertices=!0,g.__dirtyColors=!0;I(e.__webglObjects,g,d)}else if(d instanceof THREE.ParticleSystem){g=d.geometry;if(!g.__webglVertexBuffer){f=g;f.__webglVertexBuffer=c.createBuffer();f.__webglColorBuffer=c.createBuffer();f=g;h=d;i=f.vertices.length;f.__vertexArray=new Float32Array(i*3);f.__colorArray=new Float32Array(i*3);f.__sortArray=[];f.__webglParticleCount=i;f.__materials=h.materials;y=k=j=void 0;j=0;for(k=
h.materials.length;j<k;j++)if(y=h.materials[j],y.attributes){if(f.__webglCustomAttributes===void 0)f.__webglCustomAttributes={};for(a in y.attributes){originalAttribute=y.attributes[a];attribute={};for(property in originalAttribute)attribute[property]=originalAttribute[property];if(!attribute.__webglInitialized||attribute.createUniqueBuffers)attribute.__webglInitialized=!0,size=1,attribute.type==="v2"?size=2:attribute.type==="v3"?size=3:attribute.type==="v4"?size=4:attribute.type==="c"&&(size=3),
attribute.size=size,attribute.array=new Float32Array(i*size),attribute.buffer=c.createBuffer(),attribute.buffer.belongsToAttribute=a,originalAttribute.needsUpdate=!0,attribute.__original=originalAttribute;f.__webglCustomAttributes[a]=attribute}}g.__dirtyVertices=!0;g.__dirtyColors=!0}I(e.__webglObjects,g,d)}else THREE.MarchingCubes!==void 0&&d instanceof THREE.MarchingCubes?e.__webglObjectsImmediate.push({object:d,opaque:{list:[],count:0},transparent:{list:[],count:0}}):d instanceof THREE.Sprite&&
e.__webglSprites.push(d);b.__objectsAdded.splice(0,1)}for(;b.__objectsRemoved.length;){e=b.__objectsRemoved[0];d=b;if(e instanceof THREE.ShadowVolume)u(d.__webglShadowVolumes,e);else if(e instanceof THREE.Mesh||e instanceof THREE.ParticleSystem||e instanceof THREE.Ribbon||e instanceof THREE.Line)u(d.__webglObjects,e);else if(e instanceof THREE.Sprite){d=d.__webglSprites;g=void 0;for(g=d.length-1;g>=0;g--)d[g]==e&&d.splice(g,1)}else e instanceof THREE.LensFlare?u(d.__webglLensFlares,e):e instanceof
THREE.MarchingCubes&&u(d.__webglObjectsImmediate,e);b.__objectsRemoved.splice(0,1)}d=0;for(e=b.__webglObjects.length;d<e;d++)H(b.__webglObjects[d].object,b);d=0;for(e=b.__webglShadowVolumes.length;d<e;d++)H(b.__webglShadowVolumes[d].object,b);d=0;for(e=b.__webglLensFlares.length;d<e;d++)H(b.__webglLensFlares[d].object,b)};this.setFaceCulling=function(b,d){b?(!d||d=="ccw"?c.frontFace(c.CCW):c.frontFace(c.CW),b=="back"?c.cullFace(c.BACK):b=="front"?c.cullFace(c.FRONT):c.cullFace(c.FRONT_AND_BACK),c.enable(c.CULL_FACE)):
c.disable(c.CULL_FACE)};this.supportsVertexTextures=function(){return Xa}};
q=w.object,q.visible&&(i(q),x=e(d,E,K,b.overrideMaterial,q),q.render(function(c){g(c,x,b.overrideMaterial.shading)}))}else{M(THREE.NormalBlending);for(u=H-1;u>=0;u--)if(w=b.__webglObjects[u],w.render){q=w.object;I=w.buffer;y=w.opaque;i(q);for(w=0;w<y.count;w++)v=y.list[w],h(v.depthTest),j(v.polygonOffset,v.polygonOffsetFactor,v.polygonOffsetUnits),f(d,E,K,v,I,q)}for(u=0;u<C;u++)if(w=b.__webglObjectsImmediate[u],q=w.object,q.visible){y=w.opaque;i(q);for(w=0;w<y.count;w++)v=y.list[w],h(v.depthTest),
j(v.polygonOffset,v.polygonOffsetFactor,v.polygonOffsetUnits),x=e(d,E,K,v,q),q.render(function(b){g(b,x,v.shading)})}for(u=0;u<H;u++)if(w=b.__webglObjects[u],w.render){q=w.object;I=w.buffer;y=w.transparent;i(q);for(w=0;w<y.count;w++)v=y.list[w],M(v.blending),h(v.depthTest),j(v.polygonOffset,v.polygonOffsetFactor,v.polygonOffsetUnits),f(d,E,K,v,I,q)}for(u=0;u<C;u++)if(w=b.__webglObjectsImmediate[u],q=w.object,q.visible){y=w.transparent;i(q);for(w=0;w<y.count;w++)v=y.list[w],M(v.blending),h(v.depthTest),
j(v.polygonOffset,v.polygonOffsetFactor,v.polygonOffsetUnits),x=e(d,E,K,v,q),q.render(function(b){g(b,x,v.shading)})}}b.__webglSprites.length&&G(b,d);Qa&&b.__webglShadowVolumes.length&&b.lights.length&&F(b);b.__webglLensFlares.length&&B(b,d);r&&r.minFilter!==THREE.NearestFilter&&r.minFilter!==THREE.LinearFilter&&(c.bindTexture(c.TEXTURE_2D,r.__webglTexture),c.generateMipmap(c.TEXTURE_2D),c.bindTexture(c.TEXTURE_2D,null))};this.initWebGLObjects=function(b){if(!b.__webglObjects)b.__webglObjects=[],
b.__webglObjectsImmediate=[],b.__webglShadowVolumes=[],b.__webglLensFlares=[],b.__webglSprites=[];for(;b.__objectsAdded.length;){var d=b.__objectsAdded[0],e=b,f=void 0,g=void 0,h=void 0;if(d._modelViewMatrix==void 0)d._modelViewMatrix=new THREE.Matrix4,d._normalMatrixArray=new Float32Array(9),d._modelViewMatrixArray=new Float32Array(16),d._objectMatrixArray=new Float32Array(16),d.matrixWorld.flattenToArray(d._objectMatrixArray);if(d instanceof THREE.Mesh)for(f in g=d.geometry,g.geometryGroups==void 0&&
P(g),g.geometryGroups){h=g.geometryGroups[f];if(!h.__webglVertexBuffer){var i=h;i.__webglVertexBuffer=c.createBuffer();i.__webglNormalBuffer=c.createBuffer();i.__webglTangentBuffer=c.createBuffer();i.__webglColorBuffer=c.createBuffer();i.__webglUVBuffer=c.createBuffer();i.__webglUV2Buffer=c.createBuffer();i.__webglSkinVertexABuffer=c.createBuffer();i.__webglSkinVertexBBuffer=c.createBuffer();i.__webglSkinIndicesBuffer=c.createBuffer();i.__webglSkinWeightsBuffer=c.createBuffer();i.__webglFaceBuffer=
c.createBuffer();i.__webglLineBuffer=c.createBuffer();if(i.numMorphTargets){var j=void 0,k=void 0;i.__webglMorphTargetsBuffers=[];j=0;for(k=i.numMorphTargets;j<k;j++)i.__webglMorphTargetsBuffers.push(c.createBuffer())}for(var i=h,j=d,n=void 0,q=void 0,o=void 0,r=o=void 0,p=void 0,s=void 0,w=s=k=0,v=o=q=void 0,y=v=q=n=void 0,o=void 0,r=j.geometry,p=r.faces,v=i.faces,n=0,q=v.length;n<q;n++)o=v[n],o=p[o],o instanceof THREE.Face3?(k+=3,s+=1,w+=3):o instanceof THREE.Face4&&(k+=4,s+=2,w+=4);for(var n=i,
q=j,x=v=p=void 0,B=void 0,x=void 0,o=[],p=0,v=q.materials.length;p<v;p++)if(x=q.materials[p],x instanceof THREE.MeshFaceMaterial){x=0;for(l=n.materials.length;x<l;x++)(B=n.materials[x])&&o.push(B)}else(B=x)&&o.push(B);n=o;i.__materials=n;a:{p=q=void 0;v=n.length;for(q=0;q<v;q++)if(p=n[q],p.map||p.lightMap||p instanceof THREE.MeshShaderMaterial){q=!0;break a}q=!1}a:{v=p=void 0;o=n.length;for(p=0;p<o;p++)if(v=n[p],!(v instanceof THREE.MeshBasicMaterial&&!v.envMap||v instanceof THREE.MeshDepthMaterial)){v=
v&&v.shading!=void 0&&v.shading==THREE.SmoothShading?THREE.SmoothShading:THREE.FlatShading;break a}v=!1}a:{o=p=void 0;x=n.length;for(p=0;p<x;p++)if(o=n[p],o.vertexColors){o=o.vertexColors;break a}o=!1}i.__vertexArray=new Float32Array(k*3);if(v)i.__normalArray=new Float32Array(k*3);if(r.hasTangents)i.__tangentArray=new Float32Array(k*4);if(o)i.__colorArray=new Float32Array(k*3);if(q){if(r.faceUvs.length>0||r.faceVertexUvs.length>0)i.__uvArray=new Float32Array(k*2);if(r.faceUvs.length>1||r.faceVertexUvs.length>
1)i.__uv2Array=new Float32Array(k*2)}if(j.geometry.skinWeights.length&&j.geometry.skinIndices.length)i.__skinVertexAArray=new Float32Array(k*4),i.__skinVertexBArray=new Float32Array(k*4),i.__skinIndexArray=new Float32Array(k*4),i.__skinWeightArray=new Float32Array(k*4);i.__faceArray=new Uint16Array(s*3+(j.geometry.edgeFaces?j.geometry.edgeFaces.length*6:0));i.__lineArray=new Uint16Array(w*2);if(i.numMorphTargets){i.__morphTargetsArrays=[];r=0;for(p=i.numMorphTargets;r<p;r++)i.__morphTargetsArrays.push(new Float32Array(k*
3))}i.__needsSmoothNormals=v==THREE.SmoothShading;i.__uvType=q;i.__vertexColorType=o;i.__normalType=v;i.__webglFaceCount=s*3+(j.geometry.edgeFaces?j.geometry.edgeFaces.length*6:0);i.__webglLineCount=w*2;r=0;for(p=n.length;r<p;r++)if(q=n[r],q.attributes){if(i.__webglCustomAttributes===void 0)i.__webglCustomAttributes={};for(a in q.attributes){o=q.attributes[a];v={};for(y in o)v[y]=o[y];if(!v.__webglInitialized||v.createUniqueBuffers)v.__webglInitialized=!0,s=1,v.type==="v2"?s=2:v.type==="v3"?s=3:v.type===
"v4"?s=4:v.type==="c"&&(s=3),v.size=s,v.array=new Float32Array(k*s),v.buffer=c.createBuffer(),v.buffer.belongsToAttribute=a,o.needsUpdate=!0,v.__original=o;i.__webglCustomAttributes[a]=v}}i.__inittedArrays=!0;g.__dirtyVertices=!0;g.__dirtyMorphTargets=!0;g.__dirtyElements=!0;g.__dirtyUvs=!0;g.__dirtyNormals=!0;g.__dirtyTangents=!0;g.__dirtyColors=!0}d instanceof THREE.ShadowVolume?I(e.__webglShadowVolumes,h,d):I(e.__webglObjects,h,d)}else if(d instanceof THREE.LensFlare)I(e.__webglLensFlares,void 0,
d);else if(d instanceof THREE.Ribbon){g=d.geometry;if(!g.__webglVertexBuffer)f=g,f.__webglVertexBuffer=c.createBuffer(),f.__webglColorBuffer=c.createBuffer(),f=g,h=f.vertices.length,f.__vertexArray=new Float32Array(h*3),f.__colorArray=new Float32Array(h*3),f.__webglVertexCount=h,g.__dirtyVertices=!0,g.__dirtyColors=!0;I(e.__webglObjects,g,d)}else if(d instanceof THREE.Line){g=d.geometry;if(!g.__webglVertexBuffer)f=g,f.__webglVertexBuffer=c.createBuffer(),f.__webglColorBuffer=c.createBuffer(),f=g,
h=f.vertices.length,f.__vertexArray=new Float32Array(h*3),f.__colorArray=new Float32Array(h*3),f.__webglLineCount=h,g.__dirtyVertices=!0,g.__dirtyColors=!0;I(e.__webglObjects,g,d)}else if(d instanceof THREE.ParticleSystem){g=d.geometry;if(!g.__webglVertexBuffer){f=g;f.__webglVertexBuffer=c.createBuffer();f.__webglColorBuffer=c.createBuffer();f=g;h=d;i=f.vertices.length;f.__vertexArray=new Float32Array(i*3);f.__colorArray=new Float32Array(i*3);f.__sortArray=[];f.__webglParticleCount=i;f.__materials=
h.materials;y=k=j=void 0;j=0;for(k=h.materials.length;j<k;j++)if(y=h.materials[j],y.attributes){if(f.__webglCustomAttributes===void 0)f.__webglCustomAttributes={};for(a in y.attributes){originalAttribute=y.attributes[a];attribute={};for(property in originalAttribute)attribute[property]=originalAttribute[property];if(!attribute.__webglInitialized||attribute.createUniqueBuffers)attribute.__webglInitialized=!0,size=1,attribute.type==="v2"?size=2:attribute.type==="v3"?size=3:attribute.type==="v4"?size=
4:attribute.type==="c"&&(size=3),attribute.size=size,attribute.array=new Float32Array(i*size),attribute.buffer=c.createBuffer(),attribute.buffer.belongsToAttribute=a,originalAttribute.needsUpdate=!0,attribute.__original=originalAttribute;f.__webglCustomAttributes[a]=attribute}}g.__dirtyVertices=!0;g.__dirtyColors=!0}I(e.__webglObjects,g,d)}else THREE.MarchingCubes!==void 0&&d instanceof THREE.MarchingCubes?e.__webglObjectsImmediate.push({object:d,opaque:{list:[],count:0},transparent:{list:[],count:0}}):
d instanceof THREE.Sprite&&e.__webglSprites.push(d);b.__objectsAdded.splice(0,1)}for(;b.__objectsRemoved.length;){e=b.__objectsRemoved[0];d=b;if(e instanceof THREE.ShadowVolume)u(d.__webglShadowVolumes,e);else if(e instanceof THREE.Mesh||e instanceof THREE.ParticleSystem||e instanceof THREE.Ribbon||e instanceof THREE.Line)u(d.__webglObjects,e);else if(e instanceof THREE.Sprite){d=d.__webglSprites;g=void 0;for(g=d.length-1;g>=0;g--)d[g]==e&&d.splice(g,1)}else e instanceof THREE.LensFlare?u(d.__webglLensFlares,
e):e instanceof THREE.MarchingCubes&&u(d.__webglObjectsImmediate,e);b.__objectsRemoved.splice(0,1)}d=0;for(e=b.__webglObjects.length;d<e;d++)H(b.__webglObjects[d].object,b);d=0;for(e=b.__webglShadowVolumes.length;d<e;d++)H(b.__webglShadowVolumes[d].object,b);d=0;for(e=b.__webglLensFlares.length;d<e;d++)H(b.__webglLensFlares[d].object,b)};this.setFaceCulling=function(b,d){b?(!d||d=="ccw"?c.frontFace(c.CCW):c.frontFace(c.CW),b=="back"?c.cullFace(c.BACK):b=="front"?c.cullFace(c.FRONT):c.cullFace(c.FRONT_AND_BACK),
c.enable(c.CULL_FACE)):c.disable(c.CULL_FACE)};this.supportsVertexTextures=function(){return Xa}};
THREE.WebGLRenderTarget=function(b,d,e){this.width=b;this.height=d;e=e||{};this.wrapS=e.wrapS!==void 0?e.wrapS:THREE.ClampToEdgeWrapping;this.wrapT=e.wrapT!==void 0?e.wrapT:THREE.ClampToEdgeWrapping;this.magFilter=e.magFilter!==void 0?e.magFilter:THREE.LinearFilter;this.minFilter=e.minFilter!==void 0?e.minFilter:THREE.LinearMipMapLinearFilter;this.offset=new THREE.Vector2(0,0);this.repeat=new THREE.Vector2(1,1);this.format=e.format!==void 0?e.format:THREE.RGBAFormat;this.type=e.type!==void 0?e.type:
THREE.UnsignedByteType;this.depthBuffer=e.depthBuffer!==void 0?e.depthBuffer:!0;this.stencilBuffer=e.stencilBuffer!==void 0?e.stencilBuffer:!0};
......@@ -1429,7 +1429,7 @@ THREE.WebGLRenderer = function ( parameters ) {
if ( dirtyElements ) {
faceArray[ offset_face ] = vertexIndex;
faceArray[ offset_face ] = vertexIndex;
faceArray[ offset_face + 1 ] = vertexIndex + 1;
faceArray[ offset_face + 2 ] = vertexIndex + 2;
......@@ -2111,7 +2111,7 @@ THREE.WebGLRenderer = function ( parameters ) {
if ( dirtyVertices ) {
for ( v = 0; v < vl; v++ ) {
for ( v = 0; v < vl; v ++ ) {
vertex = vertices[ v ].position;
......@@ -2130,7 +2130,7 @@ THREE.WebGLRenderer = function ( parameters ) {
if ( dirtyColors ) {
for ( c = 0; c < cl; c++ ) {
for ( c = 0; c < cl; c ++ ) {
color = colors[ c ];
......@@ -2165,7 +2165,7 @@ THREE.WebGLRenderer = function ( parameters ) {
if ( dirtyVertices ) {
for ( v = 0; v < vl; v++ ) {
for ( v = 0; v < vl; v ++ ) {
vertex = vertices[ v ].position;
......@@ -2184,7 +2184,7 @@ THREE.WebGLRenderer = function ( parameters ) {
if ( dirtyColors ) {
for ( c = 0; c < cl; c++ ) {
for ( c = 0; c < cl; c ++ ) {
color = colors[ c ];
......@@ -2265,7 +2265,7 @@ THREE.WebGLRenderer = function ( parameters ) {
}
for ( c = 0; c < cl; c++ ) {
for ( c = 0; c < cl; c ++ ) {
offset = c * 3;
......@@ -2368,7 +2368,7 @@ THREE.WebGLRenderer = function ( parameters ) {
if ( dirtyColors ) {
for ( c = 0; c < cl; c++ ) {
for ( c = 0; c < cl; c ++ ) {
color = colors[ c ];
......@@ -3407,7 +3407,7 @@ THREE.WebGLRenderer = function ( parameters ) {
transparent.count = 0;
opaque.count = 0;
for ( m = 0, ml = object.materials.length; m < ml; m++ ) {
for ( m = 0, ml = object.materials.length; m < ml; m ++ ) {
material = object.materials[ m ];
material.transparent ? addToFixedArray( transparent, material ) : addToFixedArray( opaque, material );
......@@ -3427,13 +3427,13 @@ THREE.WebGLRenderer = function ( parameters ) {
transparent.count = 0;
opaque.count = 0;
for ( m = 0, ml = object.materials.length; m < ml; m++ ) {
for ( m = 0, ml = object.materials.length; m < ml; m ++ ) {
meshMaterial = object.materials[ m ];
if ( meshMaterial instanceof THREE.MeshFaceMaterial ) {
for ( i = 0, l = buffer.materials.length; i < l; i++ ) {
for ( i = 0, l = buffer.materials.length; i < l; i ++ ) {
material = buffer.materials[ i ];
if ( material ) material.transparent ? addToFixedArray( transparent, material ) : addToFixedArray( opaque, material );
......@@ -3607,7 +3607,7 @@ THREE.WebGLRenderer = function ( parameters ) {
}
for ( o = 0; o < oil; o++ ) {
for ( o = 0; o < oil; o ++ ) {
webglObject = scene.__webglObjectsImmediate[ o ];
object = webglObject.object;
......@@ -3678,7 +3678,7 @@ THREE.WebGLRenderer = function ( parameters ) {
ol = scene.__webglObjects.length;
for ( o = 0; o < ol; o++ ) {
for ( o = 0; o < ol; o ++ ) {
webglObject = scene.__webglObjects[ o ];
object = webglObject.object;
......@@ -3734,7 +3734,7 @@ THREE.WebGLRenderer = function ( parameters ) {
oil = scene.__webglObjectsImmediate.length;
for ( o = 0; o < oil; o++ ) {
for ( o = 0; o < oil; o ++ ) {
webglObject = scene.__webglObjectsImmediate[ o ];
object = webglObject.object;
......@@ -3777,7 +3777,7 @@ THREE.WebGLRenderer = function ( parameters ) {
}
for ( o = 0; o < oil; o++ ) {
for ( o = 0; o < oil; o ++ ) {
webglObject = scene.__webglObjectsImmediate[ o ];
object = webglObject.object;
......@@ -3796,10 +3796,11 @@ THREE.WebGLRenderer = function ( parameters ) {
} else {
// opaque pass
// (front-to-back order)
setBlending( THREE.NormalBlending );
for ( o = 0; o < ol; o ++ ) {
for ( o = ol - 1; o >= 0; o -- ) {
webglObject = scene.__webglObjects[ o ];
......@@ -3855,6 +3856,7 @@ THREE.WebGLRenderer = function ( parameters ) {
}
// transparent pass
// (back-to-front order)
for ( o = 0; o < ol; o ++ ) {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册