浏览代码

add ambientocclusion glsl shaders. Separate out uv/uv2 vertex and fragment shaders to make things cleaner.

Ben Houston 10 年之前
父节点
当前提交
dec3cf27f9

+ 5 - 0
src/renderers/shaders/ShaderChunk/ambientocclusionmap_fragment.glsl

@@ -0,0 +1,5 @@
+#ifdef USE_AMBIENTOCCLUSIONMAP
+
+	outgoingLight *= texture2D( ambientOcclusionMap, vUv2 ).xyz;
+
+#endif

+ 5 - 0
src/renderers/shaders/ShaderChunk/ambientocclusionmap_pars_fragment.glsl

@@ -0,0 +1,5 @@
+#ifdef USE_AMBIENTOCCLUSIONMAP
+
+	uniform sampler2D ambientOcclusionMap;
+
+#endif

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

@@ -1,5 +1,5 @@
 #ifdef USE_LIGHTMAP
 
-	outgoingLight *= diffuseColor.xyz * texture2D( lightMap, vUv2 ).xyz;
+	outgoingLight += diffuseColor.xyz * texture2D( lightMap, vUv2 ).xyz;
 
 #endif

+ 0 - 1
src/renderers/shaders/ShaderChunk/lightmap_pars_fragment.glsl

@@ -1,6 +1,5 @@
 #ifdef USE_LIGHTMAP
 
-	varying vec2 vUv2;
 	uniform sampler2D lightMap;
 
 #endif

+ 0 - 5
src/renderers/shaders/ShaderChunk/lightmap_pars_vertex.glsl

@@ -1,5 +0,0 @@
-#ifdef USE_LIGHTMAP
-
-	varying vec2 vUv2;
-
-#endif

+ 0 - 5
src/renderers/shaders/ShaderChunk/lightmap_vertex.glsl

@@ -1,5 +0,0 @@
-#ifdef USE_LIGHTMAP
-
-	vUv2 = uv2;
-
-#endif

+ 0 - 6
src/renderers/shaders/ShaderChunk/map_pars_fragment.glsl

@@ -1,9 +1,3 @@
-#if defined( USE_MAP ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( USE_SPECULARMAP ) || defined( USE_ALPHAMAP )
-
-	varying vec2 vUv;
-
-#endif
-
 #ifdef USE_MAP
 
 	uniform sampler2D map;

+ 5 - 0
src/renderers/shaders/ShaderChunk/uv2_pars_fragment.glsl

@@ -0,0 +1,5 @@
+#if defined( USE_LIGHTMAP ) || defined( USE_AMBIENTOCCLUSIONMAP )
+
+	varying vec2 vUv2;
+
+#endif

+ 5 - 0
src/renderers/shaders/ShaderChunk/uv2_pars_vertex.glsl

@@ -0,0 +1,5 @@
+#if defined( USE_LIGHTMAP ) || defined( USE_AMBIENTOCCLUSIONMAP )
+
+	varying vec2 vUv2;
+
+#endif

+ 5 - 0
src/renderers/shaders/ShaderChunk/uv2_vertex.glsl

@@ -0,0 +1,5 @@
+#if defined( USE_LIGHTMAP ) || defined( USE_AMBIENTOCCLUSIONMAP )
+
+	vUv2 = uv2;
+
+#endif

+ 5 - 0
src/renderers/shaders/ShaderChunk/uv_pars_fragment.glsl

@@ -0,0 +1,5 @@
+#if defined( USE_MAP ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( USE_SPECULARMAP ) || defined( USE_ALPHAMAP )
+
+	varying vec2 vUv;
+
+#endif

+ 0 - 0
src/renderers/shaders/ShaderChunk/map_pars_vertex.glsl → src/renderers/shaders/ShaderChunk/uv_pars_vertex.glsl


+ 0 - 0
src/renderers/shaders/ShaderChunk/map_vertex.glsl → src/renderers/shaders/ShaderChunk/uv_vertex.glsl


+ 25 - 13
src/renderers/shaders/ShaderLib.js

@@ -22,8 +22,8 @@ THREE.ShaderLib = {
 		vertexShader: [
 
 			THREE.ShaderChunk[ "common" ],
-			THREE.ShaderChunk[ "map_pars_vertex" ],
-			THREE.ShaderChunk[ "lightmap_pars_vertex" ],
+			THREE.ShaderChunk[ "uv_pars_vertex" ],
+			THREE.ShaderChunk[ "uv2_pars_vertex" ],
 			THREE.ShaderChunk[ "envmap_pars_vertex" ],
 			THREE.ShaderChunk[ "color_pars_vertex" ],
 			THREE.ShaderChunk[ "morphtarget_pars_vertex" ],
@@ -33,8 +33,8 @@ THREE.ShaderLib = {
 
 			"void main() {",
 
-				THREE.ShaderChunk[ "map_vertex" ],
-				THREE.ShaderChunk[ "lightmap_vertex" ],
+				THREE.ShaderChunk[ "uv_vertex" ],
+				THREE.ShaderChunk[ "uv2_vertex" ],
 				THREE.ShaderChunk[ "color_vertex" ],
 				THREE.ShaderChunk[ "skinbase_vertex" ],
 
@@ -66,8 +66,11 @@ THREE.ShaderLib = {
 
 			THREE.ShaderChunk[ "common" ],
 			THREE.ShaderChunk[ "color_pars_fragment" ],
+			THREE.ShaderChunk[ "uv_pars_fragment" ],
+			THREE.ShaderChunk[ "uv2_pars_fragment" ],
 			THREE.ShaderChunk[ "map_pars_fragment" ],
 			THREE.ShaderChunk[ "alphamap_pars_fragment" ],
+			THREE.ShaderChunk[ "ambientocclusionmap_pars_fragment" ],
 			THREE.ShaderChunk[ "lightmap_pars_fragment" ],
 			THREE.ShaderChunk[ "envmap_pars_fragment" ],
 			THREE.ShaderChunk[ "fog_pars_fragment" ],
@@ -89,7 +92,8 @@ THREE.ShaderLib = {
 
 			"	outgoingLight = diffuseColor.rgb;", // simple shader
 
-				THREE.ShaderChunk[ "lightmap_fragment" ],		// TODO: Light map on an otherwise unlit surface doesn't make sense.
+				THREE.ShaderChunk[ "ambientocclusionmap_fragment" ],
+				THREE.ShaderChunk[ "lightmap_fragment" ],
 				THREE.ShaderChunk[ "envmap_fragment" ],
 				THREE.ShaderChunk[ "shadowmap_fragment" ],		// TODO: Shadows on an otherwise unlit surface doesn't make sense.
 
@@ -134,8 +138,8 @@ THREE.ShaderLib = {
 			"#endif",
 
 			THREE.ShaderChunk[ "common" ],
-			THREE.ShaderChunk[ "map_pars_vertex" ],
-			THREE.ShaderChunk[ "lightmap_pars_vertex" ],
+			THREE.ShaderChunk[ "uv_pars_vertex" ],
+			THREE.ShaderChunk[ "uv2_pars_vertex" ],
 			THREE.ShaderChunk[ "envmap_pars_vertex" ],
 			THREE.ShaderChunk[ "lights_lambert_pars_vertex" ],
 			THREE.ShaderChunk[ "color_pars_vertex" ],
@@ -146,8 +150,8 @@ THREE.ShaderLib = {
 
 			"void main() {",
 
-				THREE.ShaderChunk[ "map_vertex" ],
-				THREE.ShaderChunk[ "lightmap_vertex" ],
+				THREE.ShaderChunk[ "uv_vertex" ],
+				THREE.ShaderChunk[ "uv2_vertex" ],
 				THREE.ShaderChunk[ "color_vertex" ],
 
 				THREE.ShaderChunk[ "morphnormal_vertex" ],
@@ -183,8 +187,11 @@ THREE.ShaderLib = {
 
 			THREE.ShaderChunk[ "common" ],
 			THREE.ShaderChunk[ "color_pars_fragment" ],
+			THREE.ShaderChunk[ "uv_pars_fragment" ],
+			THREE.ShaderChunk[ "uv2_pars_fragment" ],
 			THREE.ShaderChunk[ "map_pars_fragment" ],
 			THREE.ShaderChunk[ "alphamap_pars_fragment" ],
+			THREE.ShaderChunk[ "ambientocclusionmap_pars_fragment" ],
 			THREE.ShaderChunk[ "lightmap_pars_fragment" ],
 			THREE.ShaderChunk[ "envmap_pars_fragment" ],
 			THREE.ShaderChunk[ "fog_pars_fragment" ],
@@ -220,6 +227,7 @@ THREE.ShaderLib = {
 
 			"	#endif",
 
+				THREE.ShaderChunk[ "ambientocclusionmap_fragment" ],
 				THREE.ShaderChunk[ "lightmap_fragment" ],
 				THREE.ShaderChunk[ "envmap_fragment" ],
 				THREE.ShaderChunk[ "shadowmap_fragment" ],
@@ -269,8 +277,8 @@ THREE.ShaderLib = {
 			"#endif",
 
 			THREE.ShaderChunk[ "common" ],
-			THREE.ShaderChunk[ "map_pars_vertex" ],
-			THREE.ShaderChunk[ "lightmap_pars_vertex" ],
+			THREE.ShaderChunk[ "uv_pars_vertex" ],
+			THREE.ShaderChunk[ "uv2_pars_vertex" ],
 			THREE.ShaderChunk[ "envmap_pars_vertex" ],
 			THREE.ShaderChunk[ "lights_phong_pars_vertex" ],
 			THREE.ShaderChunk[ "color_pars_vertex" ],
@@ -281,8 +289,8 @@ THREE.ShaderLib = {
 
 			"void main() {",
 
-				THREE.ShaderChunk[ "map_vertex" ],
-				THREE.ShaderChunk[ "lightmap_vertex" ],
+				THREE.ShaderChunk[ "uv_vertex" ],
+				THREE.ShaderChunk[ "uv2_vertex" ],
 				THREE.ShaderChunk[ "color_vertex" ],
 
 				THREE.ShaderChunk[ "morphnormal_vertex" ],
@@ -325,8 +333,11 @@ THREE.ShaderLib = {
 
 			THREE.ShaderChunk[ "common" ],
 			THREE.ShaderChunk[ "color_pars_fragment" ],
+			THREE.ShaderChunk[ "uv_pars_fragment" ],
+			THREE.ShaderChunk[ "uv2_pars_fragment" ],
 			THREE.ShaderChunk[ "map_pars_fragment" ],
 			THREE.ShaderChunk[ "alphamap_pars_fragment" ],
+			THREE.ShaderChunk[ "ambientocclusionmap_pars_fragment" ],
 			THREE.ShaderChunk[ "lightmap_pars_fragment" ],
 			THREE.ShaderChunk[ "envmap_pars_fragment" ],
 			THREE.ShaderChunk[ "fog_pars_fragment" ],
@@ -351,6 +362,7 @@ THREE.ShaderLib = {
 
 				THREE.ShaderChunk[ "lights_phong_fragment" ],
 
+				THREE.ShaderChunk[ "ambientocclusionmap_fragment" ],
 				THREE.ShaderChunk[ "lightmap_fragment" ],
 				THREE.ShaderChunk[ "envmap_fragment" ],
 				THREE.ShaderChunk[ "shadowmap_fragment" ],

+ 45 - 41
utils/build/includes/common.json

@@ -84,59 +84,63 @@
 	"src/scenes/Fog.js",
 	"src/scenes/FogExp2.js",
 	"src/renderers/shaders/ShaderChunk.js",
-	"src/renderers/shaders/ShaderChunk/common.glsl",
+	"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/lights_lambert_vertex.glsl",
-	"src/renderers/shaders/ShaderChunk/map_particle_pars_fragment.glsl",
+	"src/renderers/shaders/ShaderChunk/ambientocclusionmap_fragment.glsl",
+	"src/renderers/shaders/ShaderChunk/ambientocclusionmap_pars_fragment.glsl",
+	"src/renderers/shaders/ShaderChunk/bumpmap_pars_fragment.glsl",
+	"src/renderers/shaders/ShaderChunk/color_fragment.glsl",
+	"src/renderers/shaders/ShaderChunk/color_pars_fragment.glsl",
+	"src/renderers/shaders/ShaderChunk/color_pars_vertex.glsl",
+	"src/renderers/shaders/ShaderChunk/color_vertex.glsl",
+	"src/renderers/shaders/ShaderChunk/common.glsl",
 	"src/renderers/shaders/ShaderChunk/default_vertex.glsl",
-	"src/renderers/shaders/ShaderChunk/map_pars_fragment.glsl",
-	"src/renderers/shaders/ShaderChunk/skinnormal_vertex.glsl",
-	"src/renderers/shaders/ShaderChunk/logdepthbuf_pars_vertex.glsl",
-	"src/renderers/shaders/ShaderChunk/lightmap_pars_vertex.glsl",
-	"src/renderers/shaders/ShaderChunk/lights_phong_fragment.glsl",
-	"src/renderers/shaders/ShaderChunk/fog_pars_fragment.glsl",
-	"src/renderers/shaders/ShaderChunk/morphnormal_vertex.glsl",
+	"src/renderers/shaders/ShaderChunk/defaultnormal_vertex.glsl",
+	"src/renderers/shaders/ShaderChunk/envmap_fragment.glsl",
 	"src/renderers/shaders/ShaderChunk/envmap_pars_fragment.glsl",
-	"src/renderers/shaders/ShaderChunk/logdepthbuf_fragment.glsl",
-	"src/renderers/shaders/ShaderChunk/normalmap_pars_fragment.glsl",
-	"src/renderers/shaders/ShaderChunk/lights_phong_pars_vertex.glsl",
+	"src/renderers/shaders/ShaderChunk/envmap_pars_vertex.glsl",
+	"src/renderers/shaders/ShaderChunk/envmap_vertex.glsl",
+	"src/renderers/shaders/ShaderChunk/fog_fragment.glsl",
+	"src/renderers/shaders/ShaderChunk/fog_pars_fragment.glsl",
+	"src/renderers/shaders/ShaderChunk/lightmap_fragment.glsl",
 	"src/renderers/shaders/ShaderChunk/lightmap_pars_fragment.glsl",
-	"src/renderers/shaders/ShaderChunk/shadowmap_vertex.glsl",
+	"src/renderers/shaders/ShaderChunk/lights_lambert_pars_vertex.glsl",
+	"src/renderers/shaders/ShaderChunk/lights_lambert_vertex.glsl",
+	"src/renderers/shaders/ShaderChunk/lights_phong_fragment.glsl",
+	"src/renderers/shaders/ShaderChunk/lights_phong_pars_fragment.glsl",
+	"src/renderers/shaders/ShaderChunk/lights_phong_pars_vertex.glsl",
 	"src/renderers/shaders/ShaderChunk/lights_phong_vertex.glsl",
-	"src/renderers/shaders/ShaderChunk/map_fragment.glsl",
-	"src/renderers/shaders/ShaderChunk/lightmap_vertex.glsl",
-	"src/renderers/shaders/ShaderChunk/map_particle_fragment.glsl",
-	"src/renderers/shaders/ShaderChunk/color_pars_fragment.glsl",
-	"src/renderers/shaders/ShaderChunk/color_vertex.glsl",
-	"src/renderers/shaders/ShaderChunk/skinning_vertex.glsl",
-	"src/renderers/shaders/ShaderChunk/envmap_pars_vertex.glsl",
 	"src/renderers/shaders/ShaderChunk/linear_to_gamma_fragment.glsl",
-	"src/renderers/shaders/ShaderChunk/color_pars_vertex.glsl",
-	"src/renderers/shaders/ShaderChunk/lights_lambert_pars_vertex.glsl",
-	"src/renderers/shaders/ShaderChunk/map_pars_vertex.glsl",
-	"src/renderers/shaders/ShaderChunk/envmap_fragment.glsl",
-	"src/renderers/shaders/ShaderChunk/specularmap_pars_fragment.glsl",
+	"src/renderers/shaders/ShaderChunk/logdepthbuf_fragment.glsl",
+	"src/renderers/shaders/ShaderChunk/logdepthbuf_pars_fragment.glsl",
+	"src/renderers/shaders/ShaderChunk/logdepthbuf_pars_vertex.glsl",
 	"src/renderers/shaders/ShaderChunk/logdepthbuf_vertex.glsl",
+	"src/renderers/shaders/ShaderChunk/map_fragment.glsl",
+	"src/renderers/shaders/ShaderChunk/map_pars_fragment.glsl",
+	"src/renderers/shaders/ShaderChunk/map_particle_fragment.glsl",
+	"src/renderers/shaders/ShaderChunk/map_particle_pars_fragment.glsl",
+	"src/renderers/shaders/ShaderChunk/morphnormal_vertex.glsl",
 	"src/renderers/shaders/ShaderChunk/morphtarget_pars_vertex.glsl",
-	"src/renderers/shaders/ShaderChunk/specularmap_fragment.glsl",
-	"src/renderers/shaders/ShaderChunk/fog_fragment.glsl",
-	"src/renderers/shaders/ShaderChunk/bumpmap_pars_fragment.glsl",
-	"src/renderers/shaders/ShaderChunk/defaultnormal_vertex.glsl",
-	"src/renderers/shaders/ShaderChunk/lights_phong_pars_fragment.glsl",
-	"src/renderers/shaders/ShaderChunk/skinbase_vertex.glsl",
-	"src/renderers/shaders/ShaderChunk/map_vertex.glsl",
-	"src/renderers/shaders/ShaderChunk/lightmap_fragment.glsl",
-	"src/renderers/shaders/ShaderChunk/shadowmap_pars_vertex.glsl",
-	"src/renderers/shaders/ShaderChunk/color_fragment.glsl",
 	"src/renderers/shaders/ShaderChunk/morphtarget_vertex.glsl",
-	"src/renderers/shaders/ShaderChunk/envmap_vertex.glsl",
+	"src/renderers/shaders/ShaderChunk/normalmap_pars_fragment.glsl",
 	"src/renderers/shaders/ShaderChunk/shadowmap_fragment.glsl",
-	"src/renderers/shaders/ShaderChunk/worldpos_vertex.glsl",
 	"src/renderers/shaders/ShaderChunk/shadowmap_pars_fragment.glsl",
+	"src/renderers/shaders/ShaderChunk/shadowmap_pars_vertex.glsl",
+	"src/renderers/shaders/ShaderChunk/shadowmap_vertex.glsl",
+	"src/renderers/shaders/ShaderChunk/skinbase_vertex.glsl",
 	"src/renderers/shaders/ShaderChunk/skinning_pars_vertex.glsl",
-	"src/renderers/shaders/ShaderChunk/logdepthbuf_pars_fragment.glsl",
-	"src/renderers/shaders/ShaderChunk/alphamap_fragment.glsl",
-	"src/renderers/shaders/ShaderChunk/alphamap_pars_fragment.glsl",
+	"src/renderers/shaders/ShaderChunk/skinning_vertex.glsl",
+	"src/renderers/shaders/ShaderChunk/skinnormal_vertex.glsl",
+	"src/renderers/shaders/ShaderChunk/specularmap_fragment.glsl",
+	"src/renderers/shaders/ShaderChunk/specularmap_pars_fragment.glsl",
+	"src/renderers/shaders/ShaderChunk/uv2_pars_fragment.glsl",
+	"src/renderers/shaders/ShaderChunk/uv2_pars_vertex.glsl",
+	"src/renderers/shaders/ShaderChunk/uv2_vertex.glsl",
+	"src/renderers/shaders/ShaderChunk/uv_pars_fragment.glsl",
+	"src/renderers/shaders/ShaderChunk/uv_pars_vertex.glsl",
+	"src/renderers/shaders/ShaderChunk/uv_vertex.glsl",
+	"src/renderers/shaders/ShaderChunk/worldpos_vertex.glsl",
 	"src/renderers/shaders/UniformsUtils.js",
 	"src/renderers/shaders/UniformsLib.js",
 	"src/renderers/shaders/ShaderLib.js",