diff --git a/build/three.js b/build/three.js index 50651881968a0430d23115fc2edb64ac5d6bbe95..e54ce8756ae7f8576ab5bad493678e9e493f6958 100644 --- a/build/three.js +++ b/build/three.js @@ -24467,6 +24467,10 @@ THREE.WebGLShadowMap = function ( _renderer, _lights, _objects ) { var scope = this; this.enabled = false; + + this.autoUpdate = true; + this.needsUpdate = false; + this.type = THREE.PCFShadowMap; this.cullFace = THREE.CullFaceFront; this.cascade = false; @@ -24474,6 +24478,7 @@ THREE.WebGLShadowMap = function ( _renderer, _lights, _objects ) { this.render = function ( scene, camera ) { if ( scope.enabled === false ) return; + if ( scope.autoUpdate === false && scope.needsUpdate === false ) return; var i, il, j, jl, n, @@ -24750,6 +24755,8 @@ THREE.WebGLShadowMap = function ( _renderer, _lights, _objects ) { _renderer.resetGLState(); + scope.needsUpdate = false; + }; function projectObject( object, shadowCamera ) { diff --git a/build/three.min.js b/build/three.min.js index e6f2480ee39434362f0b89f11a7a8d19db934dfd..f2a9f9c3a57b658fc6b962b184fba8d2bf04d5f5 100644 --- a/build/three.min.js +++ b/build/three.min.js @@ -607,16 +607,16 @@ return this.getUniforms()}},attributes:{get:function(){console.warn("THREE.WebGL THREE.WebGLShader=function(){var a=function(a){a=a.split("\n");for(var c=0;cN;N++)B[N]=new THREE.Vector3,C[N]=new THREE.Vector3;B=D.shadowCascadeNearZ[L];D=D.shadowCascadeFarZ[L];C[0].set(-1,-1,B);C[1].set(1,-1,B);C[2].set(-1,1,B);C[3].set(1,1,B);C[4].set(-1,-1,D);C[5].set(1,-1,D);C[6].set(-1,1,D);C[7].set(1,1,D);E.originalCamera=q;C=new THREE.Gyroscope;C.position.copy(y.shadowCascadeOffset);C.add(E);C.add(E.target);q.add(C); -y.shadowCascadeArray[F]=E}L=y;B=F;D=L.shadowCascadeArray[B];D.position.copy(L.position);D.target.position.copy(L.target.position);D.lookAt(D.target);D.shadowCameraVisible=L.shadowCameraVisible;D.shadowDarkness=L.shadowDarkness;D.shadowBias=L.shadowCascadeBias[B];C=L.shadowCascadeNearZ[B];L=L.shadowCascadeFarZ[B];D=D.pointsFrustum;D[0].z=C;D[1].z=C;D[2].z=C;D[3].z=C;D[4].z=L;D[5].z=L;D[6].z=L;D[7].z=L;O[G]=E;G++}else O[G]=y,G++;t=0;for(A=O.length;tL;L++)B=D[L],B.copy(C[L]),B.unproject(F),B.applyMatrix4(G.matrixWorldInverse),B.xl.x&&(l.x=B.x),B.yl.y&&(l.y=B.y),B.zl.z&&(l.z=B.z);G.left=k.x;G.right=l.x;G.top=l.y;G.bottom=k.y;G.updateProjectionMatrix()}G=y.shadowMap;C=y.shadowMatrix;F=y.shadowCamera;F.position.setFromMatrixPosition(y.matrixWorld);r.setFromMatrixPosition(y.target.matrixWorld);F.lookAt(r);F.updateMatrixWorld(); -F.matrixWorldInverse.getInverse(F.matrixWorld);y.cameraHelper&&(y.cameraHelper.visible=y.shadowCameraVisible);y.shadowCameraVisible&&y.cameraHelper.update();C.set(.5,0,0,.5,0,.5,0,.5,0,0,.5,.5,0,0,0,1);C.multiply(F.projectionMatrix);C.multiply(F.matrixWorldInverse);h.multiplyMatrices(F.projectionMatrix,F.matrixWorldInverse);f.setFromMatrix(h);a.setRenderTarget(G);a.clear();n.length=0;d(c,F);y=0;for(G=n.length;yN;N++)B[N]=new THREE.Vector3,C[N]=new THREE.Vector3;B=D.shadowCascadeNearZ[L];D=D.shadowCascadeFarZ[L];C[0].set(-1,-1,B);C[1].set(1,-1,B);C[2].set(-1,1,B);C[3].set(1,1,B);C[4].set(-1,-1,D);C[5].set(1,-1,D);C[6].set(-1,1,D);C[7].set(1,1,D);E.originalCamera=q;C= +new THREE.Gyroscope;C.position.copy(y.shadowCascadeOffset);C.add(E);C.add(E.target);q.add(C);y.shadowCascadeArray[F]=E}L=y;B=F;D=L.shadowCascadeArray[B];D.position.copy(L.position);D.target.position.copy(L.target.position);D.lookAt(D.target);D.shadowCameraVisible=L.shadowCameraVisible;D.shadowDarkness=L.shadowDarkness;D.shadowBias=L.shadowCascadeBias[B];C=L.shadowCascadeNearZ[B];L=L.shadowCascadeFarZ[B];D=D.pointsFrustum;D[0].z=C;D[1].z=C;D[2].z=C;D[3].z=C;D[4].z=L;D[5].z=L;D[6].z=L;D[7].z=L;O[G]= +E;G++}else O[G]=y,G++;t=0;for(A=O.length;tL;L++)B=D[L],B.copy(C[L]),B.unproject(F),B.applyMatrix4(G.matrixWorldInverse),B.xl.x&&(l.x=B.x),B.yl.y&&(l.y=B.y),B.zl.z&&(l.z=B.z);G.left=k.x;G.right=l.x;G.top=l.y;G.bottom=k.y;G.updateProjectionMatrix()}G=y.shadowMap;C=y.shadowMatrix;F=y.shadowCamera; +F.position.setFromMatrixPosition(y.matrixWorld);r.setFromMatrixPosition(y.target.matrixWorld);F.lookAt(r);F.updateMatrixWorld();F.matrixWorldInverse.getInverse(F.matrixWorld);y.cameraHelper&&(y.cameraHelper.visible=y.shadowCameraVisible);y.shadowCameraVisible&&y.cameraHelper.update();C.set(.5,0,0,.5,0,.5,0,.5,0,0,.5,.5,0,0,0,1);C.multiply(F.projectionMatrix);C.multiply(F.matrixWorldInverse);h.multiplyMatrices(F.projectionMatrix,F.matrixWorldInverse);f.setFromMatrix(h);a.setRenderTarget(G);a.clear(); +n.length=0;d(c,F);y=0;for(G=n.length;y