Browse Source

Refactored light structs in shaders. Fixed StandardMaterial breakage.

Mr.doob 9 years ago
parent
commit
3b54f69c72

+ 71 - 0
src/renderers/shaders/ShaderChunk/common.glsl

@@ -31,6 +31,77 @@ struct GeometricContext {
 };
 };
 
 
 
 
+#if NUM_DIR_LIGHTS > 0
+
+	struct DirectionalLight {
+		vec3 direction;
+		vec3 color;
+
+		bool shadowEnabled;
+		float shadowBias;
+		float shadowRadius;
+		vec2 shadowMapSize;
+		mat4 shadowMatrix;
+	};
+
+	uniform DirectionalLight directionalLights[ NUM_DIR_LIGHTS ];
+
+#endif
+
+#if NUM_SPOT_LIGHTS > 0
+
+	struct SpotLight {
+		vec3 position;
+		vec3 direction;
+		vec3 color;
+		float distance;
+		float decay;
+		float angleCos;
+		float exponent;
+
+		bool shadowEnabled;
+		float shadowBias;
+		float shadowRadius;
+		vec2 shadowMapSize;
+		mat4 shadowMatrix;
+	};
+
+	uniform SpotLight spotLights[ NUM_SPOT_LIGHTS ];
+
+#endif
+
+#if NUM_POINT_LIGHTS > 0
+
+	struct PointLight {
+		vec3 position;
+		vec3 color;
+		float distance;
+		float decay;
+
+		bool shadowEnabled;
+		float shadowBias;
+		float shadowRadius;
+		vec2 shadowMapSize;
+		mat4 shadowMatrix;
+	};
+
+	uniform PointLight pointLights[ NUM_POINT_LIGHTS ];
+
+#endif
+
+#if NUM_HEMI_LIGHTS > 0
+
+	struct HemisphereLight {
+		vec3 direction;
+		vec3 skyColor;
+		vec3 groundColor;
+	};
+
+	uniform HemisphereLight hemisphereLights[ NUM_HEMI_LIGHTS ];
+
+#endif
+
+
 vec3 transformDirection( in vec3 dir, in mat4 matrix ) {
 vec3 transformDirection( in vec3 dir, in mat4 matrix ) {
 
 
 	return normalize( ( matrix * vec4( dir, 0.0 ) ).xyz );
 	return normalize( ( matrix * vec4( dir, 0.0 ) ).xyz );

+ 0 - 54
src/renderers/shaders/ShaderChunk/lights_pars.glsl

@@ -1,18 +1,5 @@
 #if NUM_DIR_LIGHTS > 0
 #if NUM_DIR_LIGHTS > 0
 
 
-	struct DirectionalLight {
-		vec3 direction;
-		vec3 color;
-
-		bool shadowEnabled;
-		float shadowBias;
-		float shadowRadius;
-		vec2 shadowMapSize;
-		mat4 shadowMatrix;
-	};
-
-	uniform DirectionalLight directionalLights[ NUM_DIR_LIGHTS ];
-
 	IncidentLight getDirectionalDirectLight( const in DirectionalLight directionalLight, const in GeometricContext geometry ) {
 	IncidentLight getDirectionalDirectLight( const in DirectionalLight directionalLight, const in GeometricContext geometry ) {
 
 
 		IncidentLight directLight;
 		IncidentLight directLight;
@@ -29,21 +16,6 @@
 
 
 #if NUM_POINT_LIGHTS > 0
 #if NUM_POINT_LIGHTS > 0
 
 
-	struct PointLight {
-		vec3 position;
-		vec3 color;
-		float distance;
-		float decay;
-
-		bool shadowEnabled;
-		float shadowBias;
-		float shadowRadius;
-		vec2 shadowMapSize;
-		mat4 shadowMatrix;
-	};
-
-	uniform PointLight pointLights[ NUM_POINT_LIGHTS ];
-
 	IncidentLight getPointDirectLight( const in PointLight pointLight, const in GeometricContext geometry ) {
 	IncidentLight getPointDirectLight( const in PointLight pointLight, const in GeometricContext geometry ) {
 
 
 		IncidentLight directLight;
 		IncidentLight directLight;
@@ -63,24 +35,6 @@
 
 
 #if NUM_SPOT_LIGHTS > 0
 #if NUM_SPOT_LIGHTS > 0
 
 
-	struct SpotLight {
-		vec3 position;
-		vec3 direction;
-		vec3 color;
-		float distance;
-		float decay;
-		float angleCos;
-		float exponent;
-
-		bool shadowEnabled;
-		float shadowBias;
-		float shadowRadius;
-		vec2 shadowMapSize;
-		mat4 shadowMatrix;
-	};
-
-	uniform SpotLight spotLights[ NUM_SPOT_LIGHTS ];
-
 	IncidentLight getSpotDirectLight( const in SpotLight spotLight, const in GeometricContext geometry ) {
 	IncidentLight getSpotDirectLight( const in SpotLight spotLight, const in GeometricContext geometry ) {
 
 
 		IncidentLight directLight;
 		IncidentLight directLight;
@@ -113,14 +67,6 @@
 
 
 #if NUM_HEMI_LIGHTS > 0
 #if NUM_HEMI_LIGHTS > 0
 
 
-	struct HemisphereLight {
-		vec3 direction;
-		vec3 skyColor;
-		vec3 groundColor;
-	};
-
-	uniform HemisphereLight hemisphereLights[ NUM_HEMI_LIGHTS ];
-
 	vec3 getHemisphereLightIrradiance( const in HemisphereLight hemiLight, const in GeometricContext geometry ) {
 	vec3 getHemisphereLightIrradiance( const in HemisphereLight hemiLight, const in GeometricContext geometry ) {
 
 
 		float dotNL = dot( geometry.normal, hemiLight.direction );
 		float dotNL = dot( geometry.normal, hemiLight.direction );

+ 0 - 8
src/renderers/shaders/ShaderLib.js

@@ -25,8 +25,6 @@ THREE.ShaderLib = {
 			THREE.ShaderChunk[ "uv_pars_vertex" ],
 			THREE.ShaderChunk[ "uv_pars_vertex" ],
 			THREE.ShaderChunk[ "uv2_pars_vertex" ],
 			THREE.ShaderChunk[ "uv2_pars_vertex" ],
 			THREE.ShaderChunk[ "envmap_pars_vertex" ],
 			THREE.ShaderChunk[ "envmap_pars_vertex" ],
-			THREE.ShaderChunk[ "bsdfs" ],
-			THREE.ShaderChunk[ "lights_pars" ],
 			THREE.ShaderChunk[ "color_pars_vertex" ],
 			THREE.ShaderChunk[ "color_pars_vertex" ],
 			THREE.ShaderChunk[ "morphtarget_pars_vertex" ],
 			THREE.ShaderChunk[ "morphtarget_pars_vertex" ],
 			THREE.ShaderChunk[ "skinning_pars_vertex" ],
 			THREE.ShaderChunk[ "skinning_pars_vertex" ],
@@ -312,8 +310,6 @@ THREE.ShaderLib = {
 			THREE.ShaderChunk[ "uv2_pars_vertex" ],
 			THREE.ShaderChunk[ "uv2_pars_vertex" ],
 			THREE.ShaderChunk[ "displacementmap_pars_vertex" ],
 			THREE.ShaderChunk[ "displacementmap_pars_vertex" ],
 			THREE.ShaderChunk[ "envmap_pars_vertex" ],
 			THREE.ShaderChunk[ "envmap_pars_vertex" ],
-			THREE.ShaderChunk[ "bsdfs" ],
-			THREE.ShaderChunk[ "lights_pars" ],
 			THREE.ShaderChunk[ "lights_phong_pars_vertex" ],
 			THREE.ShaderChunk[ "lights_phong_pars_vertex" ],
 			THREE.ShaderChunk[ "color_pars_vertex" ],
 			THREE.ShaderChunk[ "color_pars_vertex" ],
 			THREE.ShaderChunk[ "morphtarget_pars_vertex" ],
 			THREE.ShaderChunk[ "morphtarget_pars_vertex" ],
@@ -468,8 +464,6 @@ THREE.ShaderLib = {
 			THREE.ShaderChunk[ "uv2_pars_vertex" ],
 			THREE.ShaderChunk[ "uv2_pars_vertex" ],
 			THREE.ShaderChunk[ "displacementmap_pars_vertex" ],
 			THREE.ShaderChunk[ "displacementmap_pars_vertex" ],
 			THREE.ShaderChunk[ "envmap_pars_vertex" ],
 			THREE.ShaderChunk[ "envmap_pars_vertex" ],
-			THREE.ShaderChunk[ "bsdfs" ],
-			THREE.ShaderChunk[ "lights_pars" ],
 			THREE.ShaderChunk[ "color_pars_vertex" ],
 			THREE.ShaderChunk[ "color_pars_vertex" ],
 			THREE.ShaderChunk[ "morphtarget_pars_vertex" ],
 			THREE.ShaderChunk[ "morphtarget_pars_vertex" ],
 			THREE.ShaderChunk[ "skinning_pars_vertex" ],
 			THREE.ShaderChunk[ "skinning_pars_vertex" ],
@@ -607,8 +601,6 @@ THREE.ShaderLib = {
 			"uniform float scale;",
 			"uniform float scale;",
 
 
 			THREE.ShaderChunk[ "common" ],
 			THREE.ShaderChunk[ "common" ],
-			THREE.ShaderChunk[ "bsdfs" ],
-			THREE.ShaderChunk[ "lights_pars" ],
 			THREE.ShaderChunk[ "color_pars_vertex" ],
 			THREE.ShaderChunk[ "color_pars_vertex" ],
 			THREE.ShaderChunk[ "shadowmap_pars_vertex" ],
 			THREE.ShaderChunk[ "shadowmap_pars_vertex" ],
 			THREE.ShaderChunk[ "logdepthbuf_pars_vertex" ],
 			THREE.ShaderChunk[ "logdepthbuf_pars_vertex" ],