У меня есть тангенс и битангенты и т. Д. c, я думаю, что у меня есть правильная математика вплоть до финального материала в пиксельном шейдере.
Я смотрел учебные пособия, но, похоже, не могу заставить его работать в моей собственной программе.
Мой код карты нормалей до сих пор выглядит следующим образом:
float3 normalMap = (nTex.Sample(mySampler, input.UV).rgb);
normalMap = (normalMap * 2) - 1.0f;
input.tangents = normalize(input.tangents - dot(input.tangents, input.normal) * input.normal);
float3 biTang = cross(input.normal, input.tangents);
float3x3 texSpace = float3x3(input.tangents, biTang, input.normal);
//float3 normalWW = float3(normalMap.r, normalMap.g, normalMap.b);
input.normal = normalize(mul(normalMap, texSpace));
float3 plDir = float3(pointLightDir.rgb);
//float final = saturate(dot(-plDir, input.normal));
//float4 finalW = saturate(float4(combined * final));
output.Color = color * combined;
output.Color+= saturate((dot(-plDir, input.normal)*combined)*color);
output.Color.a = 1;
Я еще не назвал вещи в хорошем смысле. «комбинированный» - это моя затенение по фонгу, у меня есть диффузный, зеркальный и эмбиентный сложения. "color" - это просто выборочная диффузная текстура.
Результат ничем не отличается от того, если бы у меня была только первая текстура. если я использую только карту нормалей, она отображается так, что она работает.
Я в DirectX в C ++.