ПрограммированиеФорумГрафика

View Space нормали зеленые

#0
(Правка: 16:05) 16:03, 3 апр 2026

Когда реализовывал SSGI на DirectX 11, заметил, что нормали , если их перевести во View Space (mul((float3x3)viewMat, normal) * 0.5 + 0.5), показывают переднюю стену зеленой, но она должна быть голубоватой. Пробовал менять порядок умножения: mul(normal, (float3x3)viewMat), транспонировал матрицу на стороне C++, перерасчитывал Front и Up векторы для функции glm::lookAtLH. Все бестолку. Самое интересное, что во World Space нормали правильные. В чем может быть причина такого поведения?

#1
16:05, 3 апр 2026

Внезапно смена знаков нормалей после умножения на матрицу ?
Например было -0.8 стало +0.76

#2
16:07, 3 апр 2026

ronniko
воссоздал ситуацию в Unity - передняя стена всегда голубая, как и должно быть

#3
(Правка: 18:22) 16:29, 3 апр 2026

Как вариант ещё может быть, ты у себя мог normal= mul(normal,3x3WorldViewMatrix);
И потом ещё этот результат умножаешь на View Space.
normal= mul(normal,3x3ViewSpace);

Так же может быть не row-major интерпритация матриц или row-major

#4
20:02, 3 апр 2026

Renderdoc

ПрограммированиеФорумГрафика