Selaa lähdekoodia

Fixed skinned normals.

alteredq 13 vuotta sitten
vanhempi
commit
cd5e0fd176
3 muutettua tiedostoa jossa 31 lisäystä ja 12 poistoa
  1. 0 2
      build/Three.js
  2. 0 2
      build/custom/ThreeWebGL.js
  3. 31 8
      src/renderers/WebGLShaders.js

Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 2
build/Three.js


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 2
build/custom/ThreeWebGL.js


+ 31 - 8
src/renderers/WebGLShaders.js

@@ -1096,12 +1096,6 @@ THREE.ShaderChunk = {
 
 			"morphedNormal += normal;",
 
-			"vec3 transformedNormal = normalMatrix * morphedNormal;",
-
-		"#else",
-
-			"vec3 transformedNormal = normalMatrix * normal;",
-
 		"#endif"
 
 	].join("\n"),
@@ -1113,13 +1107,40 @@ THREE.ShaderChunk = {
 			"mat4 skinMatrix = skinWeight.x * boneMatX;",
 			"skinMatrix 	+= skinWeight.y * boneMatY;",
 
-			"vec4 skinnedNormal = skinMatrix * vec4( transformedNormal, 0.0 );",
-			"transformedNormal = skinnedNormal.xyz;",
+			"vec4 skinnedNormal = skinMatrix * vec4( normal, 0.0 );",
 
 		"#endif"
 
 	].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
 
 	// 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[ "skinbase_vertex" ],
 				THREE.ShaderChunk[ "skinnormal_vertex" ],
+				THREE.ShaderChunk[ "defaultnormal_vertex" ],
 
 				"#ifndef USE_ENVMAP",
 
@@ -1857,6 +1879,7 @@ THREE.ShaderLib = {
 				THREE.ShaderChunk[ "morphnormal_vertex" ],
 				THREE.ShaderChunk[ "skinbase_vertex" ],
 				THREE.ShaderChunk[ "skinnormal_vertex" ],
+				THREE.ShaderChunk[ "defaultnormal_vertex" ],
 
 				"vNormal = transformedNormal;",
 

Kaikkia tiedostoja ei voida näyttää, sillä liian monta tiedostoa muuttui tässä diffissä