瀏覽代碼

Updated builds.

Mr.doob 9 年之前
父節點
當前提交
d8bc87676c
共有 2 個文件被更改,包括 24 次插入11 次删除
  1. 15 2
      build/three.js
  2. 9 9
      build/three.min.js

+ 15 - 2
build/three.js

@@ -29892,8 +29892,21 @@ THREE.WebGLShadowMap = function ( _renderer, _lights, _objects ) {
 
 		if ( ! customMaterial ) {
 
-			var useMorphing = geometry.morphTargets !== undefined &&
-					geometry.morphTargets.length > 0 && material.morphTargets;
+			var useMorphing = false;
+
+			if ( material.morphTargets ) {
+
+				if ( geometry instanceof THREE.BufferGeometry ) {
+
+					useMorphing = geometry.morphAttributes && geometry.morphAttributes.position && geometry.morphAttributes.position.length > 0;
+
+				} else if ( geometry instanceof THREE.Geometry ) {
+
+					useMorphing = geometry.morphTargets && geometry.morphTargets.length > 0;
+
+				}
+
+			}
 
 			var useSkinning = object instanceof THREE.SkinnedMesh && material.skinning;
 

+ 9 - 9
build/three.min.js

@@ -708,15 +708,15 @@ toneMapping:a.toneMapping,physicallyCorrectLights:a.physicallyCorrectLights,prem
 return c.join()};this.acquireProgram=function(b,c,e){for(var f,m=0,p=d.length;m<p;m++){var n=d[m];if(n.code===e){f=n;++f.usedTimes;break}}void 0===f&&(f=new THREE.WebGLProgram(a,e,b,c),d.push(f));return f};this.releaseProgram=function(a){if(0===--a.usedTimes){var b=d.indexOf(a);d[b]=d[d.length-1];d.pop();a.destroy()}};this.programs=d};
 THREE.WebGLProperties=function(){var a={};this.get=function(b){b=b.uuid;var c=a[b];void 0===c&&(c={},a[b]=c);return c};this.delete=function(b){delete a[b.uuid]};this.clear=function(){a={}}};
 THREE.WebGLShader=function(){function a(a){a=a.split("\n");for(var c=0;c<a.length;c++)a[c]=c+1+": "+a[c];return a.join("\n")}return function(b,c,d){var e=b.createShader(c);b.shaderSource(e,d);b.compileShader(e);!1===b.getShaderParameter(e,b.COMPILE_STATUS)&&console.error("THREE.WebGLShader: Shader couldn't compile.");""!==b.getShaderInfoLog(e)&&console.warn("THREE.WebGLShader: gl.getShaderInfoLog()",c===b.VERTEX_SHADER?"vertex":"fragment",b.getShaderInfoLog(e),a(d));return e}}();
-THREE.WebGLShadowMap=function(a,b,c){function d(b,c,d,e){var f=b.geometry,g=null,g=r,h=b.customDepthMaterial;d&&(g=s,h=b.customDistanceMaterial);h?g=h:(b=b instanceof THREE.SkinnedMesh&&c.skinning,h=0,void 0!==f.morphTargets&&0<f.morphTargets.length&&c.morphTargets&&(h|=1),b&&(h|=2),g=g[h]);a.localClippingEnabled&&!0===c.clipShadows&&0!==c.clippingPlanes.length&&(h=g.uuid,f=c.uuid,b=v[h],void 0===b&&(b={},v[h]=b),h=b[f],void 0===h&&(h=g.clone(),b[f]=h),g=h);g.visible=c.visible;g.wireframe=c.wireframe;
-f=c.side;A.renderSingleSided&&f==THREE.DoubleSide&&(f=THREE.FrontSide);A.renderReverseSided&&(f===THREE.FrontSide?f=THREE.BackSide:f===THREE.BackSide&&(f=THREE.FrontSide));g.side=f;g.clipShadows=c.clipShadows;g.clippingPlanes=c.clippingPlanes;g.wireframeLinewidth=c.wireframeLinewidth;g.linewidth=c.linewidth;d&&void 0!==g.uniforms.lightPos&&g.uniforms.lightPos.value.copy(e);return g}function e(a,b,c){if(!1!==a.visible){a.layers.test(b.layers)&&(a instanceof THREE.Mesh||a instanceof THREE.Line||a instanceof
-THREE.Points)&&a.castShadow&&(!1===a.frustumCulled||!0===h.intersectsObject(a))&&!0===a.material.visible&&(a.modelViewMatrix.multiplyMatrices(c.matrixWorldInverse,a.matrixWorld),q.push(a));a=a.children;for(var d=0,f=a.length;d<f;d++)e(a[d],b,c)}}var f=a.context,g=a.state,h=new THREE.Frustum,k=new THREE.Matrix4,l=b.shadows,m=new THREE.Vector2,p=new THREE.Vector3,n=new THREE.Vector3,q=[],r=Array(4),s=Array(4),v={},t=[new THREE.Vector3(1,0,0),new THREE.Vector3(-1,0,0),new THREE.Vector3(0,0,1),new THREE.Vector3(0,
-0,-1),new THREE.Vector3(0,1,0),new THREE.Vector3(0,-1,0)],u=[new THREE.Vector3(0,1,0),new THREE.Vector3(0,1,0),new THREE.Vector3(0,1,0),new THREE.Vector3(0,1,0),new THREE.Vector3(0,0,1),new THREE.Vector3(0,0,-1)],C=[new THREE.Vector4,new THREE.Vector4,new THREE.Vector4,new THREE.Vector4,new THREE.Vector4,new THREE.Vector4];b=new THREE.MeshDepthMaterial;b.depthPacking=THREE.RGBADepthPacking;b.clipping=!0;for(var w=THREE.ShaderLib.distanceRGBA,E=THREE.UniformsUtils.clone(w.uniforms),y=0;4!==y;++y){var z=
-0!==(y&1),B=0!==(y&2),F=b.clone();F.morphTargets=z;F.skinning=B;r[y]=F;z=new THREE.ShaderMaterial({defines:{USE_SHADOWMAP:""},uniforms:E,vertexShader:w.vertexShader,fragmentShader:w.fragmentShader,morphTargets:z,skinning:B,clipping:!0});s[y]=z}var A=this;this.enabled=!1;this.autoUpdate=!0;this.needsUpdate=!1;this.type=THREE.PCFShadowMap;this.renderSingleSided=this.renderReverseSided=!0;this.render=function(b,r){if(!1!==A.enabled&&(!1!==A.autoUpdate||!1!==A.needsUpdate)&&0!==l.length){g.clearColor(1,
-1,1,1);g.disable(f.BLEND);g.setDepthTest(!0);g.setScissorTest(!1);for(var s,w,v=0,z=l.length;v<z;v++){var y=l[v],B=y.shadow;if(void 0===B)console.warn("THREE.WebGLShadowMap:",y,"has no shadow.");else{var E=B.camera;m.copy(B.mapSize);if(y instanceof THREE.PointLight){s=6;w=!0;var L=m.x,D=m.y;C[0].set(2*L,D,L,D);C[1].set(0,D,L,D);C[2].set(3*L,D,L,D);C[3].set(L,D,L,D);C[4].set(3*L,0,L,D);C[5].set(L,0,L,D);m.x*=4;m.y*=2}else s=1,w=!1;null===B.map&&(B.map=new THREE.WebGLRenderTarget(m.x,m.y,{minFilter:THREE.NearestFilter,
-magFilter:THREE.NearestFilter,format:THREE.RGBAFormat}),E.updateProjectionMatrix());B instanceof THREE.SpotLightShadow&&B.update(y);L=B.map;B=B.matrix;n.setFromMatrixPosition(y.matrixWorld);E.position.copy(n);a.setRenderTarget(L);a.clear();for(L=0;L<s;L++){w?(p.copy(E.position),p.add(t[L]),E.up.copy(u[L]),E.lookAt(p),g.viewport(C[L])):(p.setFromMatrixPosition(y.target.matrixWorld),E.lookAt(p));E.updateMatrixWorld();E.matrixWorldInverse.getInverse(E.matrixWorld);B.set(.5,0,0,.5,0,.5,0,.5,0,0,.5,.5,
-0,0,0,1);B.multiply(E.projectionMatrix);B.multiply(E.matrixWorldInverse);k.multiplyMatrices(E.projectionMatrix,E.matrixWorldInverse);h.setFromMatrix(k);q.length=0;e(b,r,E);for(var D=0,I=q.length;D<I;D++){var F=q[D],T=c.update(F),X=F.material;if(X instanceof THREE.MultiMaterial)for(var ja=T.groups,X=X.materials,ba=0,ia=ja.length;ba<ia;ba++){var V=ja[ba],Y=X[V.materialIndex];!0===Y.visible&&(Y=d(F,Y,w,n),a.renderBufferDirect(E,null,T,Y,F,V))}else Y=d(F,X,w,n),a.renderBufferDirect(E,null,T,Y,F,null)}}}}s=
-a.getClearColor();w=a.getClearAlpha();a.setClearColor(s,w);A.needsUpdate=!1}}};
+THREE.WebGLShadowMap=function(a,b,c){function d(b,c,d,e){var f=b.geometry,g=null,g=r,h=b.customDepthMaterial;d&&(g=s,h=b.customDistanceMaterial);h?g=h:(h=!1,c.morphTargets&&(f instanceof THREE.BufferGeometry?h=f.morphAttributes&&f.morphAttributes.position&&0<f.morphAttributes.position.length:f instanceof THREE.Geometry&&(h=f.morphTargets&&0<f.morphTargets.length)),b=b instanceof THREE.SkinnedMesh&&c.skinning,f=0,h&&(f|=1),b&&(f|=2),g=g[f]);a.localClippingEnabled&&!0===c.clipShadows&&0!==c.clippingPlanes.length&&
+(h=g.uuid,b=c.uuid,f=v[h],void 0===f&&(f={},v[h]=f),h=f[b],void 0===h&&(h=g.clone(),f[b]=h),g=h);g.visible=c.visible;g.wireframe=c.wireframe;b=c.side;A.renderSingleSided&&b==THREE.DoubleSide&&(b=THREE.FrontSide);A.renderReverseSided&&(b===THREE.FrontSide?b=THREE.BackSide:b===THREE.BackSide&&(b=THREE.FrontSide));g.side=b;g.clipShadows=c.clipShadows;g.clippingPlanes=c.clippingPlanes;g.wireframeLinewidth=c.wireframeLinewidth;g.linewidth=c.linewidth;d&&void 0!==g.uniforms.lightPos&&g.uniforms.lightPos.value.copy(e);
+return g}function e(a,b,c){if(!1!==a.visible){a.layers.test(b.layers)&&(a instanceof THREE.Mesh||a instanceof THREE.Line||a instanceof THREE.Points)&&a.castShadow&&(!1===a.frustumCulled||!0===h.intersectsObject(a))&&!0===a.material.visible&&(a.modelViewMatrix.multiplyMatrices(c.matrixWorldInverse,a.matrixWorld),q.push(a));a=a.children;for(var d=0,f=a.length;d<f;d++)e(a[d],b,c)}}var f=a.context,g=a.state,h=new THREE.Frustum,k=new THREE.Matrix4,l=b.shadows,m=new THREE.Vector2,p=new THREE.Vector3,n=
+new THREE.Vector3,q=[],r=Array(4),s=Array(4),v={},t=[new THREE.Vector3(1,0,0),new THREE.Vector3(-1,0,0),new THREE.Vector3(0,0,1),new THREE.Vector3(0,0,-1),new THREE.Vector3(0,1,0),new THREE.Vector3(0,-1,0)],u=[new THREE.Vector3(0,1,0),new THREE.Vector3(0,1,0),new THREE.Vector3(0,1,0),new THREE.Vector3(0,1,0),new THREE.Vector3(0,0,1),new THREE.Vector3(0,0,-1)],C=[new THREE.Vector4,new THREE.Vector4,new THREE.Vector4,new THREE.Vector4,new THREE.Vector4,new THREE.Vector4];b=new THREE.MeshDepthMaterial;
+b.depthPacking=THREE.RGBADepthPacking;b.clipping=!0;for(var w=THREE.ShaderLib.distanceRGBA,E=THREE.UniformsUtils.clone(w.uniforms),y=0;4!==y;++y){var z=0!==(y&1),B=0!==(y&2),F=b.clone();F.morphTargets=z;F.skinning=B;r[y]=F;z=new THREE.ShaderMaterial({defines:{USE_SHADOWMAP:""},uniforms:E,vertexShader:w.vertexShader,fragmentShader:w.fragmentShader,morphTargets:z,skinning:B,clipping:!0});s[y]=z}var A=this;this.enabled=!1;this.autoUpdate=!0;this.needsUpdate=!1;this.type=THREE.PCFShadowMap;this.renderSingleSided=
+this.renderReverseSided=!0;this.render=function(b,r){if(!1!==A.enabled&&(!1!==A.autoUpdate||!1!==A.needsUpdate)&&0!==l.length){g.clearColor(1,1,1,1);g.disable(f.BLEND);g.setDepthTest(!0);g.setScissorTest(!1);for(var s,w,v=0,z=l.length;v<z;v++){var y=l[v],B=y.shadow;if(void 0===B)console.warn("THREE.WebGLShadowMap:",y,"has no shadow.");else{var E=B.camera;m.copy(B.mapSize);if(y instanceof THREE.PointLight){s=6;w=!0;var L=m.x,D=m.y;C[0].set(2*L,D,L,D);C[1].set(0,D,L,D);C[2].set(3*L,D,L,D);C[3].set(L,
+D,L,D);C[4].set(3*L,0,L,D);C[5].set(L,0,L,D);m.x*=4;m.y*=2}else s=1,w=!1;null===B.map&&(B.map=new THREE.WebGLRenderTarget(m.x,m.y,{minFilter:THREE.NearestFilter,magFilter:THREE.NearestFilter,format:THREE.RGBAFormat}),E.updateProjectionMatrix());B instanceof THREE.SpotLightShadow&&B.update(y);L=B.map;B=B.matrix;n.setFromMatrixPosition(y.matrixWorld);E.position.copy(n);a.setRenderTarget(L);a.clear();for(L=0;L<s;L++){w?(p.copy(E.position),p.add(t[L]),E.up.copy(u[L]),E.lookAt(p),g.viewport(C[L])):(p.setFromMatrixPosition(y.target.matrixWorld),
+E.lookAt(p));E.updateMatrixWorld();E.matrixWorldInverse.getInverse(E.matrixWorld);B.set(.5,0,0,.5,0,.5,0,.5,0,0,.5,.5,0,0,0,1);B.multiply(E.projectionMatrix);B.multiply(E.matrixWorldInverse);k.multiplyMatrices(E.projectionMatrix,E.matrixWorldInverse);h.setFromMatrix(k);q.length=0;e(b,r,E);for(var D=0,I=q.length;D<I;D++){var F=q[D],T=c.update(F),X=F.material;if(X instanceof THREE.MultiMaterial)for(var ja=T.groups,X=X.materials,ba=0,ia=ja.length;ba<ia;ba++){var V=ja[ba],Y=X[V.materialIndex];!0===Y.visible&&
+(Y=d(F,Y,w,n),a.renderBufferDirect(E,null,T,Y,F,V))}else Y=d(F,X,w,n),a.renderBufferDirect(E,null,T,Y,F,null)}}}}s=a.getClearColor();w=a.getClearAlpha();a.setClearColor(s,w);A.needsUpdate=!1}}};
 THREE.WebGLState=function(a,b,c){function d(b,c,d){var e=new Uint8Array(4),f=a.createTexture();a.bindTexture(b,f);a.texParameteri(b,a.TEXTURE_MIN_FILTER,a.NEAREST);a.texParameteri(b,a.TEXTURE_MAG_FILTER,a.NEAREST);for(b=0;b<d;b++)a.texImage2D(c+b,0,a.RGBA,1,1,0,a.RGBA,a.UNSIGNED_BYTE,e);return f}var e=this;this.buffers={color:new THREE.WebGLColorBuffer(a,this),depth:new THREE.WebGLDepthBuffer(a,this),stencil:new THREE.WebGLStencilBuffer(a,this)};var f=a.getParameter(a.MAX_VERTEX_ATTRIBS),g=new Uint8Array(f),
 h=new Uint8Array(f),k=new Uint8Array(f),l={},m=null,p=null,n=null,q=null,r=null,s=null,v=null,t=null,u=!1,C=null,w=null,E=null,y=null,z=null,B=null,F=a.getParameter(a.MAX_TEXTURE_IMAGE_UNITS),A=null,G={},J=new THREE.Vector4,P=new THREE.Vector4,K={};K[a.TEXTURE_2D]=d(a.TEXTURE_2D,a.TEXTURE_2D,1);K[a.TEXTURE_CUBE_MAP]=d(a.TEXTURE_CUBE_MAP,a.TEXTURE_CUBE_MAP_POSITIVE_X,6);this.init=function(){this.clearColor(0,0,0,1);this.clearDepth(1);this.clearStencil(0);this.enable(a.DEPTH_TEST);this.setDepthFunc(THREE.LessEqualDepth);
 this.setFlipSided(!1);this.setCullFace(THREE.CullFaceBack);this.enable(a.CULL_FACE);this.enable(a.BLEND);this.setBlending(THREE.NormalBlending)};this.initAttributes=function(){for(var a=0,b=g.length;a<b;a++)g[a]=0};this.enableAttribute=function(c){g[c]=1;0===h[c]&&(a.enableVertexAttribArray(c),h[c]=1);0!==k[c]&&(b.get("ANGLE_instanced_arrays").vertexAttribDivisorANGLE(c,0),k[c]=0)};this.enableAttributeAndDivisor=function(b,c,d){g[b]=1;0===h[b]&&(a.enableVertexAttribArray(b),h[b]=1);k[b]!==c&&(d.vertexAttribDivisorANGLE(b,