Browse Source

Fixed skinned normals.

alteredq 13 years ago
parent
commit
cd5e0fd176
3 changed files with 31 additions and 12 deletions
  1. 0 2
      build/Three.js
  2. 0 2
      build/custom/ThreeWebGL.js
  3. 31 8
      src/renderers/WebGLShaders.js

File diff suppressed because it is too large
+ 0 - 2
build/Three.js


File diff suppressed because it is too large
+ 0 - 2
build/custom/ThreeWebGL.js


+ 31 - 8
src/renderers/WebGLShaders.js

@@ -1096,12 +1096,6 @@ THREE.ShaderChunk = {
 
 
 			"morphedNormal += normal;",
 			"morphedNormal += normal;",
 
 
-			"vec3 transformedNormal = normalMatrix * morphedNormal;",
-
-		"#else",
-
-			"vec3 transformedNormal = normalMatrix * normal;",
-
 		"#endif"
 		"#endif"
 
 
 	].join("\n"),
 	].join("\n"),
@@ -1113,13 +1107,40 @@ THREE.ShaderChunk = {
 			"mat4 skinMatrix = skinWeight.x * boneMatX;",
 			"mat4 skinMatrix = skinWeight.x * boneMatX;",
 			"skinMatrix 	+= skinWeight.y * boneMatY;",
 			"skinMatrix 	+= skinWeight.y * boneMatY;",
 
 
-			"vec4 skinnedNormal = skinMatrix * vec4( transformedNormal, 0.0 );",
-			"transformedNormal = skinnedNormal.xyz;",
+			"vec4 skinnedNormal = skinMatrix * vec4( normal, 0.0 );",
 
 
 		"#endif"
 		"#endif"
 
 
 	].join("\n"),
 	].join("\n"),
 
 
+	defaultnormal_vertex: [
+
+		"vec3 transformedNormal;",
+
+		"#ifdef USE_SKINNING",
+
+			"transformedNormal = skinnedNormal.xyz;",
+
+		"#endif",
+
+		"#ifdef USE_MORPHNORMALS",
+
+			"transformedNormal = morphedNormal;",
+
+		"#endif",
+
+		"#ifndef USE_MORPHNORMALS",
+		"#ifndef USE_SKINNING",
+
+			"transformedNormal = normal;",
+
+		"#endif",
+		"#endif",
+
+		"transformedNormal = normalMatrix * transformedNormal;",
+
+	].join("\n"),
+
 	// SHADOW MAP
 	// SHADOW MAP
 
 
 	// based on SpiderGL shadow map and Fabien Sanglard's GLSL shadow mapping examples
 	// based on SpiderGL shadow map and Fabien Sanglard's GLSL shadow mapping examples
@@ -1730,6 +1751,7 @@ THREE.ShaderLib = {
 				THREE.ShaderChunk[ "morphnormal_vertex" ],
 				THREE.ShaderChunk[ "morphnormal_vertex" ],
 				THREE.ShaderChunk[ "skinbase_vertex" ],
 				THREE.ShaderChunk[ "skinbase_vertex" ],
 				THREE.ShaderChunk[ "skinnormal_vertex" ],
 				THREE.ShaderChunk[ "skinnormal_vertex" ],
+				THREE.ShaderChunk[ "defaultnormal_vertex" ],
 
 
 				"#ifndef USE_ENVMAP",
 				"#ifndef USE_ENVMAP",
 
 
@@ -1857,6 +1879,7 @@ THREE.ShaderLib = {
 				THREE.ShaderChunk[ "morphnormal_vertex" ],
 				THREE.ShaderChunk[ "morphnormal_vertex" ],
 				THREE.ShaderChunk[ "skinbase_vertex" ],
 				THREE.ShaderChunk[ "skinbase_vertex" ],
 				THREE.ShaderChunk[ "skinnormal_vertex" ],
 				THREE.ShaderChunk[ "skinnormal_vertex" ],
+				THREE.ShaderChunk[ "defaultnormal_vertex" ],
 
 
 				"vNormal = transformedNormal;",
 				"vNormal = transformedNormal;",
 
 

Some files were not shown because too many files changed in this diff