Когда реализовывал SSGI на DirectX 11, заметил, что нормали , если их перевести во View Space (mul((float3x3)viewMat, normal) * 0.5 + 0.5), показывают переднюю стену зеленой, но она должна быть голубоватой. Пробовал менять порядок умножения: mul(normal, (float3x3)viewMat), транспонировал матрицу на стороне C++, перерасчитывал Front и Up векторы для функции glm::lookAtLH. Все бестолку. Самое интересное, что во World Space нормали правильные. В чем может быть причина такого поведения?
Внезапно смена знаков нормалей после умножения на матрицу ?
Например было -0.8 стало +0.76
ronniko
воссоздал ситуацию в Unity - передняя стена всегда голубая, как и должно быть
Как вариант ещё может быть, ты у себя мог normal= mul(normal,3x3WorldViewMatrix);
И потом ещё этот результат умножаешь на View Space.
normal= mul(normal,3x3ViewSpace);
Так же может быть не row-major интерпритация матриц или row-major
Renderdoc