Parcourir la 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 il y a 13 ans
Parent
commit
d82d0df724
3 fichiers modifiés avec 16 ajouts et 1 suppressions
  1. 0 0
      build/Three.js
  2. 0 0
      build/custom/ThreeWebGL.js
  3. 16 1
      src/renderers/WebGLShaders.js

Fichier diff supprimé car celui-ci est trop grand
+ 0 - 0
build/Three.js


Fichier diff supprimé car celui-ci est trop grand
+ 0 - 0
build/custom/ThreeWebGL.js


+ 16 - 1
src/renderers/WebGLShaders.js

@@ -1058,6 +1058,20 @@ THREE.ShaderChunk = {
 
 
 	].join("\n"),
 	].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
 	// 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
@@ -1657,6 +1671,7 @@ THREE.ShaderLib = {
 				THREE.ShaderChunk[ "color_vertex" ],
 				THREE.ShaderChunk[ "color_vertex" ],
 
 
 				THREE.ShaderChunk[ "morphnormal_vertex" ],
 				THREE.ShaderChunk[ "morphnormal_vertex" ],
+				THREE.ShaderChunk[ "skinnormal_vertex" ],
 
 
 				"#ifndef USE_ENVMAP",
 				"#ifndef USE_ENVMAP",
 
 
@@ -1670,7 +1685,6 @@ THREE.ShaderLib = {
 				THREE.ShaderChunk[ "default_vertex" ],
 				THREE.ShaderChunk[ "default_vertex" ],
 				THREE.ShaderChunk[ "shadowmap_vertex" ],
 				THREE.ShaderChunk[ "shadowmap_vertex" ],
 
 
-
 			"}"
 			"}"
 
 
 		].join("\n"),
 		].join("\n"),
@@ -1783,6 +1797,7 @@ THREE.ShaderLib = {
 				"vViewPosition = -mvPosition.xyz;",
 				"vViewPosition = -mvPosition.xyz;",
 
 
 				THREE.ShaderChunk[ "morphnormal_vertex" ],
 				THREE.ShaderChunk[ "morphnormal_vertex" ],
+				THREE.ShaderChunk[ "skinnormal_vertex" ],
 
 
 				"vNormal = transformedNormal;",
 				"vNormal = transformedNormal;",
 
 

Certains fichiers n'ont pas été affichés car il y a eu trop de fichiers modifiés dans ce diff