|
@@ -387,8 +387,8 @@ h);b.copyTexImage2D(b.TEXTURE_2D,0,b.RGB,F.x-8,F.y-8,16,16,0);b.uniform1i(E.rend
|
|
|
c.setBlending(D.blending),c.setTexture(D.texture,1),b.drawElements(b.TRIANGLES,6,b.UNSIGNED_SHORT,0)}b.enable(b.CULL_FACE);b.enable(b.DEPTH_TEST);b.depthMask(!0)}}};
|
|
|
THREE.ShadowMapPlugin=function(){var a,b,c,d,f=new THREE.Frustum,g=new THREE.Matrix4;this.init=function(e){a=e.context;b=e;var e=THREE.ShaderLib.depthRGBA,f=THREE.UniformsUtils.clone(e.uniforms);c=new THREE.ShaderMaterial({fragmentShader:e.fragmentShader,vertexShader:e.vertexShader,uniforms:f});d=new THREE.ShaderMaterial({fragmentShader:e.fragmentShader,vertexShader:e.vertexShader,uniforms:f,morphTargets:!0});c._shadowPass=!0;d._shadowPass=!0};this.render=function(a,c){b.shadowMapEnabled&&b.shadowMapAutoUpdate&&
|
|
|
this.update(a,c)};this.update=function(e){var h,i,k,j,m,p,n,l,o,q=e.lights;a.clearColor(1,1,1,1);a.disable(a.BLEND);b.shadowMapCullFrontFaces&&a.cullFace(a.FRONT);b.setDepthTest(!0);for(h=0,i=q.length;h<i;h++)if(l=q[h],l.castShadow&&l instanceof THREE.SpotLight){if(!l.shadowMap)l.shadowMap=new THREE.WebGLRenderTarget(l.shadowMapWidth,l.shadowMapHeight,{minFilter:THREE.LinearFilter,magFilter:THREE.LinearFilter,format:THREE.RGBAFormat}),l.shadowMapSize=new THREE.Vector2(l.shadowMapWidth,l.shadowMapHeight),
|
|
|
-l.shadowCamera=new THREE.PerspectiveCamera(l.shadowCameraFov,l.shadowMapWidth/l.shadowMapHeight,l.shadowCameraNear,l.shadowCameraFar),l.shadowMatrix=new THREE.Matrix4,e.add(l.shadowCamera),b.autoUpdateScene&&e.updateMatrixWorld();if(l.shadowCameraVisible&&!l.visibleCamera)l.visibleCamera=new THREE.VisibleCamera(l.shadowCamera),l.shadowCamera.add(l.visibleCamera);k=l.shadowMap;j=l.shadowMatrix;m=l.shadowCamera;m.position.copy(l.position);m.lookAt(l.target.position);m.matrixWorldInverse.getInverse(m.matrixWorld);
|
|
|
-if(l.visibleCamera)l.visibleCamera.lines.visible=l.shadowCameraVisible;l.shadowCameraVisible&&l.visibleCamera.update(l.shadowCamera);j.set(0.5,0,0,0.5,0,0.5,0,0.5,0,0,0.5,0.5,0,0,0,1);j.multiplySelf(m.projectionMatrix);j.multiplySelf(m.matrixWorldInverse);if(!m._viewMatrixArray)m._viewMatrixArray=new Float32Array(16);m.matrixWorldInverse.flattenToArray(m._viewMatrixArray);if(!m._projectionMatrixArray)m._projectionMatrixArray=new Float32Array(16);m.projectionMatrix.flattenToArray(m._projectionMatrixArray);
|
|
|
+l.shadowCamera=new THREE.PerspectiveCamera(l.shadowCameraFov,l.shadowMapWidth/l.shadowMapHeight,l.shadowCameraNear,l.shadowCameraFar),l.shadowMatrix=new THREE.Matrix4,e.add(l.shadowCamera),b.autoUpdateScene&&e.updateMatrixWorld();if(l.shadowCameraVisible&&!l.visibleCamera)l.visibleCamera=new THREE.VisibleCamera(l.shadowCamera),l.shadowCamera.add(l.visibleCamera);k=l.shadowMap;j=l.shadowMatrix;m=l.shadowCamera;m.position.copy(l.matrixWorld.getPosition());m.lookAt(l.target.matrixWorld.getPosition());
|
|
|
+m.matrixWorldInverse.getInverse(m.matrixWorld);if(l.visibleCamera)l.visibleCamera.lines.visible=l.shadowCameraVisible;l.shadowCameraVisible&&l.visibleCamera.update(l.shadowCamera);j.set(0.5,0,0,0.5,0,0.5,0,0.5,0,0,0.5,0.5,0,0,0,1);j.multiplySelf(m.projectionMatrix);j.multiplySelf(m.matrixWorldInverse);if(!m._viewMatrixArray)m._viewMatrixArray=new Float32Array(16);m.matrixWorldInverse.flattenToArray(m._viewMatrixArray);if(!m._projectionMatrixArray)m._projectionMatrixArray=new Float32Array(16);m.projectionMatrix.flattenToArray(m._projectionMatrixArray);
|
|
|
g.multiply(m.projectionMatrix,m.matrixWorldInverse);f.setFromMatrix(g);b.setRenderTarget(k);b.clear();o=e.__webglObjects;for(k=0,j=o.length;k<j;k++)if(p=o[k],l=p.object,p.render=!1,l.visible&&l.castShadow&&(!(l instanceof THREE.Mesh)||!l.frustumCulled||f.contains(l)))l.matrixWorld.flattenToArray(l._objectMatrixArray),l._modelViewMatrix.multiplyToArray(m.matrixWorldInverse,l.matrixWorld,l._modelViewMatrixArray),p.render=!0;for(k=0,j=o.length;k<j;k++)if(p=o[k],p.render)l=p.object,p=p.buffer,b.setObjectFaces(l),
|
|
|
n=l.customDepthMaterial?l.customDepthMaterial:l.geometry.morphTargets.length?d:c,p instanceof THREE.BufferGeometry?b.renderBufferDirect(m,q,null,n,p,l):b.renderBuffer(m,q,null,n,p,l);o=e.__webglObjectsImmediate;for(k=0,j=o.length;k<j;k++)p=o[k],l=p.object,l.visible&&l.castShadow&&(l.matrixAutoUpdate&&l.matrixWorld.flattenToArray(l._objectMatrixArray),l._modelViewMatrix.multiplyToArray(m.matrixWorldInverse,l.matrixWorld,l._modelViewMatrixArray),b.renderImmediateObject(m,q,null,c,l))}e=b.getClearColor();
|
|
|
h=b.getClearAlpha();a.clearColor(e.r,e.g,e.b,h);a.enable(a.BLEND);b.shadowMapCullFrontFaces&&a.cullFace(a.BACK)}};
|