Просмотр исходного кода

initialize tangents to (1,0,0,0) before passing them to mikktspace (some tangents are not written by the lib)

Nicolas Cannasse 5 лет назад
Родитель
Сommit
200c32dece
3 измененных файлов с 7 добавлено и 1 удалено
  1. 3 0
      hxd/fmt/fbx/HMDOut.hx
  2. 3 0
      tools/mikktspace/Mikktspace.hx
  3. 1 1
      tools/mikktspace/build_msvc.bat

+ 3 - 0
hxd/fmt/fbx/HMDOut.hx

@@ -52,6 +52,7 @@ class HMDOut extends BaseLibrary {
 		m.indices = index.vidx.length;
 		m.indices = index.vidx.length;
 
 
 		m.tangents = new hl.Bytes(4 * 4 * index.vidx.length);
 		m.tangents = new hl.Bytes(4 * 4 * index.vidx.length);
+		(m.tangents:hl.Bytes).fill(0,4 * 4 * index.vidx.length,0);
 		m.tangentStride = 4;
 		m.tangentStride = 4;
 		m.tangentPos = 0;
 		m.tangentPos = 0;
 
 
@@ -70,6 +71,8 @@ class HMDOut extends BaseLibrary {
 			m.buffer[out++] = uvs[0].values[uidx*2];
 			m.buffer[out++] = uvs[0].values[uidx*2];
 			m.buffer[out++] = uvs[0].values[uidx*2+1];
 			m.buffer[out++] = uvs[0].values[uidx*2+1];
 
 
+			m.tangents[i<<2] = 1;
+
 			m.indexes[i] = i;
 			m.indexes[i] = i;
 		}
 		}
 
 

+ 3 - 0
tools/mikktspace/Mikktspace.hx

@@ -22,6 +22,9 @@ class Mikktspace {
 		m.indexes = input.read(m.indices * 4);
 		m.indexes = input.read(m.indices * 4);
 
 
 		var tangents = haxe.io.Bytes.alloc(4 * 4 * vertCount);
 		var tangents = haxe.io.Bytes.alloc(4 * 4 * vertCount);
+		tangents.fill(0,tangents.length,0);
+		for( i in 0...vertCount )
+			tangents.setFloat(i * 16, 1);
 		m.tangents = tangents;
 		m.tangents = tangents;
 		m.tangentStride = 4;
 		m.tangentStride = 4;
 		m.tangentPos = 0;
 		m.tangentPos = 0;

+ 1 - 1
tools/mikktspace/build_msvc.bat

@@ -1,4 +1,4 @@
 @echo off
 @echo off
 haxe mikktspace.hxml -D no-compilation
 haxe mikktspace.hxml -D no-compilation
-vcvarsall.bat
+vcvarsall.bat x64
 cl /Ox /Femikktspace.exe -I %HASHLINK% -I out out/main.c %HASHLINK_BIN%/libhl.lib %HASHLINK_BIN%/fmt.lib
 cl /Ox /Femikktspace.exe -I %HASHLINK% -I out out/main.c %HASHLINK_BIN%/libhl.lib %HASHLINK_BIN%/fmt.lib