Browse Source

Added normals skinning to Phong and Lambert shaders.

Not sure it's entirely the correct way, though it does look better with it than without it.
alteredq 13 years ago
parent
commit
d82d0df724
3 changed files with 16 additions and 1 deletions
  1. 0 0
      build/Three.js
  2. 0 0
      build/custom/ThreeWebGL.js
  3. 16 1
      src/renderers/WebGLShaders.js

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


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


+ 16 - 1
src/renderers/WebGLShaders.js

@@ -1058,6 +1058,20 @@ THREE.ShaderChunk = {
 
 	].join("\n"),
 
+	skinnormal_vertex: [
+
+		"#ifdef USE_SKINNING",
+
+			"mat4 skinMatrix = skinWeight.x * boneGlobalMatrices[ int( skinIndex.x ) ];",
+			"skinMatrix 	+= skinWeight.y * boneGlobalMatrices[ int( skinIndex.y ) ];",
+
+			"vec4 skinnedNormal = skinMatrix * vec4( transformedNormal, 0.0 );",
+			"transformedNormal = skinnedNormal.xyz;",
+
+		"#endif"
+
+	].join("\n"),
+
 	// SHADOW MAP
 
 	// based on SpiderGL shadow map and Fabien Sanglard's GLSL shadow mapping examples
@@ -1657,6 +1671,7 @@ THREE.ShaderLib = {
 				THREE.ShaderChunk[ "color_vertex" ],
 
 				THREE.ShaderChunk[ "morphnormal_vertex" ],
+				THREE.ShaderChunk[ "skinnormal_vertex" ],
 
 				"#ifndef USE_ENVMAP",
 
@@ -1670,7 +1685,6 @@ THREE.ShaderLib = {
 				THREE.ShaderChunk[ "default_vertex" ],
 				THREE.ShaderChunk[ "shadowmap_vertex" ],
 
-
 			"}"
 
 		].join("\n"),
@@ -1783,6 +1797,7 @@ THREE.ShaderLib = {
 				"vViewPosition = -mvPosition.xyz;",
 
 				THREE.ShaderChunk[ "morphnormal_vertex" ],
+				THREE.ShaderChunk[ "skinnormal_vertex" ],
 
 				"vNormal = transformedNormal;",
 

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