|
@@ -10,6 +10,8 @@ THREE.WebGLShadowMap = function ( _renderer, _lights, _objects ) {
|
|
|
_frustum = new THREE.Frustum(),
|
|
|
_projScreenMatrix = new THREE.Matrix4(),
|
|
|
|
|
|
+ _shadowMapSize = new THREE.Vector2(),
|
|
|
+
|
|
|
_lookTarget = new THREE.Vector3(),
|
|
|
_lightPositionWorld = new THREE.Vector3(),
|
|
|
|
|
@@ -115,15 +117,16 @@ THREE.WebGLShadowMap = function ( _renderer, _lights, _objects ) {
|
|
|
|
|
|
var shadow = light.shadow;
|
|
|
var shadowCamera = shadow.camera;
|
|
|
- var shadowMapSize = shadow.mapSize;
|
|
|
+
|
|
|
+ _shadowMapSize.copy( shadow.mapSize );
|
|
|
|
|
|
if ( light instanceof THREE.PointLight ) {
|
|
|
|
|
|
faceCount = 6;
|
|
|
isPointLight = true;
|
|
|
|
|
|
- var vpWidth = shadowMapSize.x / 4.0;
|
|
|
- var vpHeight = shadowMapSize.y / 2.0;
|
|
|
+ var vpWidth = _shadowMapSize.x;
|
|
|
+ var vpHeight = _shadowMapSize.y;
|
|
|
|
|
|
// These viewports map a cube-map onto a 2D texture with the
|
|
|
// following orientation:
|
|
@@ -151,6 +154,9 @@ THREE.WebGLShadowMap = function ( _renderer, _lights, _objects ) {
|
|
|
// negative Y
|
|
|
cube2DViewPorts[ 5 ].set( vpWidth, 0, vpWidth, vpHeight );
|
|
|
|
|
|
+ _shadowMapSize.x *= 4.0;
|
|
|
+ _shadowMapSize.y *= 2.0;
|
|
|
+
|
|
|
} else {
|
|
|
|
|
|
faceCount = 1;
|
|
@@ -162,13 +168,13 @@ THREE.WebGLShadowMap = function ( _renderer, _lights, _objects ) {
|
|
|
|
|
|
var pars = { minFilter: THREE.NearestFilter, magFilter: THREE.NearestFilter, format: THREE.RGBAFormat };
|
|
|
|
|
|
- shadow.map = new THREE.WebGLRenderTarget( shadowMapSize.x, shadowMapSize.y, pars );
|
|
|
+ shadow.map = new THREE.WebGLRenderTarget( _shadowMapSize.x, _shadowMapSize.y, pars );
|
|
|
|
|
|
//
|
|
|
|
|
|
if ( light instanceof THREE.SpotLight ) {
|
|
|
|
|
|
- shadowCamera.aspect = shadowMapSize.x / shadowMapSize.y;
|
|
|
+ shadowCamera.aspect = _shadowMapSize.x / _shadowMapSize.y;
|
|
|
|
|
|
}
|
|
|
|