Ver Fonte

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 há 14 anos atrás
pai
commit
d82d0df724
3 ficheiros alterados com 16 adições e 1 exclusões
  1. 0 0
      build/Three.js
  2. 0 0
      build/custom/ThreeWebGL.js
  3. 16 1
      src/renderers/WebGLShaders.js

Diff do ficheiro suprimidas por serem muito extensas
+ 0 - 0
build/Three.js


Diff do ficheiro suprimidas por serem muito extensas
+ 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;",
 
 

Alguns ficheiros não foram mostrados porque muitos ficheiros mudaram neste diff

粤ICP备19079148号