Итак, хорошо. Я пытаюсь реализовать сопоставление нормалей в своем маленьком игровом движке, и я просто не могу заставить его работать.
Когда я делаю освещение только с нормалями для каждой вершины, все в порядке, но если я попытаюсь сделать это с помощью карты нормалей, все развалится.
Я знаю, что у меня есть правильные UV-развертки, потому что текстура выглядит хорошо, но я не знаю, что я делаю неправильно, когда дело доходит до текстуры карты нормалей.
Это часть моего кода в моем пиксельном шейдере (HLSL)....
float3 NormalSample(float3 normalMapSample, float3 unitNormalW, float3 tangentW)
{
//Uncompress each component from [0,1] to [-1,1]
float3 normalT = 2.0f*normalMapSample - 1.0f;
// Build orthonormal basis.
float3 N = unitNormalW;
float3 T = normalize(tangentW - dot(tangentW, N)*N);
float3 B = cross(N, T);
float3x3 TBN = float3x3(T, B, N);
// Transform from tangent space to world space.
float3 bumpedNormalW = mul(normalT, TBN);
return bumpedNormalW;
}
Любые идеи о том, что я могу делать неправильно?