Explorar o código

Move matrix calcs from webglshadows

supereggbert %!s(int64=6) %!d(string=hai) anos
pai
achega
0190a2d5ca
Modificáronse 1 ficheiros con 14 adicións e 3 borrados
  1. 14 3
      src/lights/SpotLightShadow.js

+ 14 - 3
src/lights/SpotLightShadow.js

@@ -18,9 +18,11 @@ SpotLightShadow.prototype = Object.assign( Object.create( LightShadow.prototype
 
 
 	isSpotLightShadow: true,
 	isSpotLightShadow: true,
 
 
-	update: function ( light ) {
+  updateMatrices: function ( light, viewCamera, viewportIndex ) { 
 
 
-		var camera = this.camera;
+		var camera = this.camera,
+      lookTarget = this._lookTarget,
+      lightPositionWorld = this._lightPositionWorld;
 
 
 		var fov = _Math.RAD2DEG * 2 * light.angle;
 		var fov = _Math.RAD2DEG * 2 * light.angle;
 		var aspect = this.mapSize.width / this.mapSize.height;
 		var aspect = this.mapSize.width / this.mapSize.height;
@@ -35,7 +37,16 @@ SpotLightShadow.prototype = Object.assign( Object.create( LightShadow.prototype
 
 
 		}
 		}
 
 
-	}
+    lightPositionWorld.setFromMatrixPosition( light.matrixWorld );
+		camera.position.copy( lightPositionWorld );
+
+    lookTarget.setFromMatrixPosition( light.target.matrixWorld );
+		camera.lookAt( lookTarget );
+		camera.updateMatrixWorld();
+
+    LightShadow.prototype.updateMatrices.call( this, light, viewCamera, viewportIndex );
+
+  }
 
 
 } );
 } );