Browse Source

reduce the need for temporaries, cleanup code.

Ben Houston 9 years ago
parent
commit
223c383b14

+ 12 - 16
src/renderers/WebGLRenderer.js

@@ -2470,12 +2470,11 @@ THREE.WebGLRenderer = function ( parameters ) {
 					continue;
 				}
 
-				_direction.setFromMatrixPosition( light.matrixWorld );
+				lightUniforms.direction.setFromMatrixPosition( light.matrixWorld );
 				_vector3.setFromMatrixPosition( light.target.matrixWorld );
-				_direction.sub( _vector3 );
-				_direction.transformDirection( viewMatrix );
+				lightUniforms.direction.sub( _vector3 );
+				lightUniforms.direction.transformDirection( viewMatrix );
 
-				lightUniforms.position.copy( _direction );
 				lightUniforms.color.copy( color ).multiplyScalar( intensity );
 				lightUniforms.distance = distance;
 
@@ -2497,10 +2496,9 @@ THREE.WebGLRenderer = function ( parameters ) {
 					continue;
 				}
 
-				_vector3.setFromMatrixPosition( light.matrixWorld );
-				_vector3.applyMatrix4( viewMatrix );
+				lightUniforms.position.setFromMatrixPosition( light.matrixWorld );
+				lightUniforms.position.applyMatrix4( viewMatrix );
 
-				lightUniforms.position.copy(  _vector3 );
 				lightUniforms.color.copy( color ).multiplyScalar( intensity );
 				lightUniforms.distance = distance;
 				lightUniforms.decay = ( light.distance === 0 ) ? 0.0 : light.decay;
@@ -2525,18 +2523,17 @@ THREE.WebGLRenderer = function ( parameters ) {
 					continue;
 				}
 
-				_direction.setFromMatrixPosition( light.matrixWorld );
-				_vector3.copy( _direction ).applyMatrix4( viewMatrix );
+				lightUniforms.position.setFromMatrixPosition( light.matrixWorld );
+				lightUniforms.position.applyMatrix4( viewMatrix );
 
-				lightUniforms.position.copy( _vector3 );
 				lightUniforms.color.copy( color ).multiplyScalar( intensity );
 				lightUniforms.distance = distance;
 
+				lightUniforms.direction.setFromMatrixPosition( light.matrixWorld );
 				_vector3.setFromMatrixPosition( light.target.matrixWorld );
-				_direction.sub( _vector3 );
-				_direction.transformDirection( viewMatrix );
+				lightUniforms.direction.sub( _vector3 );
+				lightUniforms.direction.transformDirection( viewMatrix );
 
-				lightUniforms.direction.copy( _direction);
 				lightUniforms.angleCos = Math.cos( light.angle );
 				lightUniforms.exponent = light.exponent;
 				lightUniforms.decay = ( light.distance === 0 ) ? 0.0 : light.decay;
@@ -2558,10 +2555,9 @@ THREE.WebGLRenderer = function ( parameters ) {
 					continue;
 				}
 
-				_direction.setFromMatrixPosition( light.matrixWorld );
-				_direction.transformDirection( viewMatrix );
+				lightUniforms.position.setFromMatrixPosition( light.matrixWorld );
+				lightUniforms.position.transformDirection( viewMatrix );
 
-				lightUniforms.position.copy( _direction);
 				lightUniforms.skyColor.copy(  light.color ).multiplyScalar( intensity );
 				lightUniforms.groundColor.copy( groundColor ).multiplyScalar( intensity );
 

+ 7 - 28
src/renderers/shaders/ShaderChunk/lights_phong_pars_fragment.glsl

@@ -17,12 +17,9 @@ varying vec3 vViewPosition;
 
 #if MAX_DIR_LIGHTS > 0
 
-	//uniform vec3 directionalLightColor[ MAX_DIR_LIGHTS ];
-	//uniform vec3 directionalLightDirection[ MAX_DIR_LIGHTS ];
-
 	struct DirectionalLight {
-	  vec3 color;
 	  vec3 direction;
+	  vec3 color;
 	};
 
 	uniform DirectionalLight singleTestDirLight;
@@ -40,14 +37,10 @@ varying vec3 vViewPosition;
 
 #if MAX_HEMI_LIGHTS > 0
 
-	//uniform vec3 hemisphereLightSkyColor[ MAX_HEMI_LIGHTS ];
-	//uniform vec3 hemisphereLightGroundColor[ MAX_HEMI_LIGHTS ];
-	//uniform vec3 hemisphereLightDirection[ MAX_HEMI_LIGHTS ];
-
 	struct HemisphereLight {
+	  vec3 direction;
 	  vec3 skyColor;
 	  vec3 groundColor;
-	  vec3 direction;
 	};
 
 	uniform HemisphereLight hemisphereLights[ MAX_HEMI_LIGHTS ];
@@ -56,19 +49,13 @@ varying vec3 vViewPosition;
 
 #if MAX_POINT_LIGHTS > 0
 
-	//uniform vec3 pointLightColor[ MAX_POINT_LIGHTS ];
-	//uniform vec3 pointLightPosition[ MAX_POINT_LIGHTS ];
-	//uniform float pointLightDistance[ MAX_POINT_LIGHTS ];
-	//uniform float pointLightDecay[ MAX_POINT_LIGHTS ];
-
 	struct PointLight {
-	  vec3 color;
 	  vec3 position;
-	  float decay;
+	  vec3 color;
 	  float distance;
+	  float decay;
 	};
 
-
 	uniform PointLight singleTestPointLight;
 
 	uniform PointLight pointLights[ MAX_POINT_LIGHTS ];
@@ -89,22 +76,14 @@ varying vec3 vViewPosition;
 
 #if MAX_SPOT_LIGHTS > 0
 
-	//uniform vec3 spotLightColor[ MAX_SPOT_LIGHTS ];
-	//uniform vec3 spotLightPosition[ MAX_SPOT_LIGHTS ];
-	//uniform vec3 spotLightDirection[ MAX_SPOT_LIGHTS ];
-	//uniform float spotLightAngleCos[ MAX_SPOT_LIGHTS ];
-	//uniform float spotLightExponent[ MAX_SPOT_LIGHTS ];
-	//uniform float spotLightDistance[ MAX_SPOT_LIGHTS ];
-	//uniform float spotLightDecay[ MAX_SPOT_LIGHTS ];
-
 	struct SpotLight {
-	  vec3 color;
 	  vec3 position;
 	  vec3 direction;
-	  float angleCos;
-	  float exponent;
+	  vec3 color;
 	  float distance;
 	  float decay;
+	  float angleCos;
+	  float exponent;
 	};
 
 	uniform SpotLight spotLights[ MAX_SPOT_LIGHTS ];