Как ортогонализировать неортогональную матрицу, используя HLSL?

Мне просто интересно, можно ли это сделать в шейдере ps. У меня есть неортогональная матрица, и я должен ортогонализировать ее и использовать результат обратной транспонирования. Я обратился за помощью к matlab, но нашел их инструкции немного сложными для Это может повлиять на производительность. Так что есть решение? Спасибо за любой ответ:)

1 ответ

Это может быть довольно сложной задачей в общем случае для произвольной матрицы, но для матрицы 3х3, которая немного утратила свою ортогональность, вы можете использовать процесс Грамма-Шмидта для ортогонализации первых двух осей вашей матрицы и перекрестного произведения для получения третьей оси:

Xx Xy Xz
Yx Yy Yz
Zx Zy Zz

X' = X/|X|
Y' = Y"/|Y"|, Y" = Y - X'*dot(X',Y)
Z' = cross(X',Y')  
Другие вопросы по тегам