Pārlūkot izejas kodu

fix: inverse tangent sign so generated tangents does not require 0.5 scale

ncannasse 7 gadi atpakaļ
vecāks
revīzija
d152553f0a
2 mainītis faili ar 2 papildinājumiem un 2 dzēšanām
  1. 1 1
      h3d/shader/NormalMap.hx
  2. 1 1
      hxd/fmt/fbx/HMDOut.hx

+ 1 - 1
h3d/shader/NormalMap.hx

@@ -34,7 +34,7 @@ class NormalMap extends hxsl.Shader {
 			var n = transformedNormal;
 			var nf = unpackNormal(texture.get(calculatedUV));
 			var tanX = transformedTangent.xyz.normalize();
-			var tanY = n.cross(tanX) * transformedTangent.w;
+			var tanY = n.cross(tanX) * -transformedTangent.w;
 			transformedNormal = (nf.x * tanX + nf.y * tanY + nf.z * n).normalize();
 		}
 

+ 1 - 1
hxd/fmt/fbx/HMDOut.hx

@@ -228,7 +228,7 @@ class HMDOut extends BaseLibrary {
 					tmpBuf[p++] = round(tangents[k * 4]);
 					tmpBuf[p++] = round(tangents[k * 4 + 1]);
 					tmpBuf[p++] = round(tangents[k * 4 + 2]);
-					if( tangents[k*4+3] > 0 ) {
+					if( tangents[k*4+3] < 0 ) {
 						tmpBuf[p-3] *= 0.5;
 						tmpBuf[p-2] *= 0.5;
 						tmpBuf[p-1] *= 0.5;