소스 검색

ShaderChunk: Moved ambient code out of lights_pars.

Mr.doob 9 년 전
부모
커밋
c997a297d7

+ 7 - 0
src/renderers/shaders/ShaderChunk/ambient_pars.glsl

@@ -0,0 +1,7 @@
+uniform vec3 ambientLightColor;
+
+vec3 getAmbientLightIrradiance( const in vec3 ambientLightColor ) {
+
+	return PI * ambientLightColor;
+
+}

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

@@ -1,11 +1,3 @@
-uniform vec3 ambientLightColor;
-
-vec3 getAmbientLightIrradiance( const in vec3 ambientLightColor ) {
-
-	return PI * ambientLightColor;
-
-}
-
 #if NUM_DIR_LIGHTS > 0
 
 	struct DirectionalLight {

+ 1 - 1
src/renderers/shaders/ShaderChunk/lights_template.glsl

@@ -135,6 +135,6 @@ geometry.viewDir = normalize( vViewPosition );
 
 		RE_IndirectSpecular( radiance, geometry, material, reflectedLight );
 
-    }
+	}
 
 #endif

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

@@ -105,6 +105,7 @@ THREE.ShaderLib = {
 
 				THREE.ShaderChunk[ "aomap_fragment" ],
 				THREE.ShaderChunk[ "shadowmap_fragment" ],
+
 				"reflectedLight.indirectDiffuse *= shadowMask;",
 
 				"vec3 outgoingLight = reflectedLight.indirectDiffuse;",
@@ -127,6 +128,7 @@ THREE.ShaderLib = {
 
 			THREE.UniformsLib[ "common" ],
 			THREE.UniformsLib[ "fog" ],
+			THREE.UniformsLib[ "ambient" ],
 			THREE.UniformsLib[ "lights" ],
 			THREE.UniformsLib[ "shadowmap" ],
 
@@ -193,8 +195,6 @@ THREE.ShaderLib = {
 			"uniform vec3 emissive;",
 			"uniform float opacity;",
 
-			"uniform vec3 ambientLightColor;",
-
 			"varying vec3 vLightFront;",
 
 			"#ifdef DOUBLE_SIDED",
@@ -210,6 +210,7 @@ THREE.ShaderLib = {
 			THREE.ShaderChunk[ "map_pars_fragment" ],
 			THREE.ShaderChunk[ "alphamap_pars_fragment" ],
 			THREE.ShaderChunk[ "envmap_pars_fragment" ],
+			THREE.ShaderChunk[ "ambient_pars" ],
 			THREE.ShaderChunk[ "fog_pars_fragment" ],
 			THREE.ShaderChunk[ "shadowmap_pars_fragment" ],
 			THREE.ShaderChunk[ "specularmap_pars_fragment" ],
@@ -219,7 +220,7 @@ THREE.ShaderLib = {
 
 			"	vec3 outgoingLight = vec3( 0.0 );",
 			"	vec4 diffuseColor = vec4( diffuse, opacity );",
-			"	vec3 totalAmbientLight = PI * ambientLightColor;",
+			"	vec3 totalAmbientLight = getAmbientLightIrradiance( ambientLightColor );",
 
 				THREE.ShaderChunk[ "logdepthbuf_fragment" ],
 				THREE.ShaderChunk[ "map_fragment" ],
@@ -268,6 +269,7 @@ THREE.ShaderLib = {
 			THREE.UniformsLib[ "normalmap" ],
 			THREE.UniformsLib[ "displacementmap" ],
 			THREE.UniformsLib[ "fog" ],
+			THREE.UniformsLib[ "ambient" ],
 			THREE.UniformsLib[ "lights" ],
 			THREE.UniformsLib[ "shadowmap" ],
 
@@ -361,6 +363,7 @@ THREE.ShaderLib = {
 			THREE.ShaderChunk[ "envmap_pars_fragment" ],
 			THREE.ShaderChunk[ "fog_pars_fragment" ],
 			THREE.ShaderChunk[ "bsdfs" ],
+			THREE.ShaderChunk[ "ambient_pars" ],
 			THREE.ShaderChunk[ "lights_pars" ],
 			THREE.ShaderChunk[ "lights_phong_pars_fragment" ],
 			THREE.ShaderChunk[ "shadowmap_pars_fragment" ],
@@ -423,6 +426,7 @@ THREE.ShaderLib = {
 			THREE.UniformsLib[ "roughnessmap" ],
 			THREE.UniformsLib[ "metalnessmap" ],
 			THREE.UniformsLib[ "fog" ],
+			THREE.UniformsLib[ "ambient" ],
 			THREE.UniformsLib[ "lights" ],
 			THREE.UniformsLib[ "shadowmap" ],
 
@@ -526,6 +530,7 @@ THREE.ShaderLib = {
 			THREE.ShaderChunk[ "envmap_pars_fragment" ],
 			THREE.ShaderChunk[ "fog_pars_fragment" ],
 			THREE.ShaderChunk[ "bsdfs" ],
+			THREE.ShaderChunk[ "ambient_pars" ],
 			THREE.ShaderChunk[ "lights_pars" ],
 			THREE.ShaderChunk[ "lights_standard_pars_fragment" ],
 			THREE.ShaderChunk[ "shadowmap_pars_fragment" ],

+ 6 - 3
src/renderers/shaders/UniformsLib.js

@@ -85,9 +85,13 @@ THREE.UniformsLib = {
 
 	},
 
-	lights: {
+	ambient: {
+
+		"ambientLightColor" : { type: "fv", value: [] }
+
+	},
 
-		"ambientLightColor" : { type: "fv", value: [] },
+	lights: {
 
 		"directionalLights" : { type: "sa", value: [], properties: {
 			"direction": { type: "v3" },
@@ -120,7 +124,6 @@ THREE.UniformsLib = {
 			"shadow": { type: "i" }
 		} }
 
-
 	},
 
 	points: {

+ 1 - 0
utils/build/includes/common.json

@@ -119,6 +119,7 @@
 	"src/renderers/shaders/ShaderChunk/alphamap_fragment.glsl",
 	"src/renderers/shaders/ShaderChunk/alphamap_pars_fragment.glsl",
 	"src/renderers/shaders/ShaderChunk/alphatest_fragment.glsl",
+	"src/renderers/shaders/ShaderChunk/ambient_pars.glsl",
 	"src/renderers/shaders/ShaderChunk/aomap_fragment.glsl",
 	"src/renderers/shaders/ShaderChunk/aomap_pars_fragment.glsl",
 	"src/renderers/shaders/ShaderChunk/begin_vertex.glsl",