Jelajahi Sumber

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 14 tahun lalu
induk
melakukan
d82d0df724
3 mengubah file dengan 16 tambahan dan 1 penghapusan
  1. 0 0
      build/Three.js
  2. 0 0
      build/custom/ThreeWebGL.js
  3. 16 1
      src/renderers/WebGLShaders.js

File diff ditekan karena terlalu besar
+ 0 - 0
build/Three.js


File diff ditekan karena terlalu besar
+ 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;",
 

Beberapa file tidak ditampilkan karena terlalu banyak file yang berubah dalam diff ini

粤ICP备19079148号