diff --git a/src/renderers/WebGLRenderer.js b/src/renderers/WebGLRenderer.js index 42d05da788c6a7030da234d18b8d7e911c4a6c43..c87e4bc9372c3fbb38fce4301672121314624675 100644 --- a/src/renderers/WebGLRenderer.js +++ b/src/renderers/WebGLRenderer.js @@ -1119,7 +1119,7 @@ THREE.WebGLRenderer = function ( parameters ) { // - shadowMap.render( scene ); + shadowMap.render( scene, camera ); // diff --git a/src/renderers/webgl/WebGLShadowMap.js b/src/renderers/webgl/WebGLShadowMap.js index 9bf1c83c46426eb8cf4a183cc92f20fa97baf450..52b37fc4f482e895607e19519e857a074269b286 100644 --- a/src/renderers/webgl/WebGLShadowMap.js +++ b/src/renderers/webgl/WebGLShadowMap.js @@ -94,7 +94,7 @@ THREE.WebGLShadowMap = function ( _renderer, _lights, _objects ) { this.type = THREE.PCFShadowMap; this.cullFace = THREE.CullFaceFront; - this.render = function ( scene ) { + this.render = function ( scene, camera ) { var faceCount, isPointLight; @@ -246,7 +246,7 @@ THREE.WebGLShadowMap = function ( _renderer, _lights, _objects ) { _renderList.length = 0; - projectObject( scene, shadowCamera ); + projectObject( scene, camera, shadowCamera ); // render shadow map // render regular objects @@ -365,11 +365,11 @@ THREE.WebGLShadowMap = function ( _renderer, _lights, _objects ) { } - function projectObject( object, camera ) { + function projectObject( object, camera, shadowCamera ) { if ( object.visible === false ) return; - if ( object instanceof THREE.Mesh || object instanceof THREE.Line || object instanceof THREE.Points ) { + if ( object.layers.test( camera.layers ) && ( object instanceof THREE.Mesh || object instanceof THREE.Line || object instanceof THREE.Points ) ) { if ( object.castShadow && ( object.frustumCulled === false || _frustum.intersectsObject( object ) === true ) ) { @@ -377,7 +377,7 @@ THREE.WebGLShadowMap = function ( _renderer, _lights, _objects ) { if ( material.visible === true ) { - object.modelViewMatrix.multiplyMatrices( camera.matrixWorldInverse, object.matrixWorld ); + object.modelViewMatrix.multiplyMatrices( shadowCamera.matrixWorldInverse, object.matrixWorld ); _renderList.push( object ); } @@ -390,7 +390,7 @@ THREE.WebGLShadowMap = function ( _renderer, _lights, _objects ) { for ( var i = 0, l = children.length; i < l; i ++ ) { - projectObject( children[ i ], camera ); + projectObject( children[ i ], camera, shadowCamera ); }