Мать их через ногу. Проклятые фошысты.
Короче. В glm указывают fov в радианах с версии 0.9.5. А на сайте дока старая. А старая моя множилка корректно все умножает, попробовал и вращать и скейлить. С парентами пока не проверял.
Стас
GLM это специально для OpenGL мат либа. Правостороннюю.
А нафига тебе glm если у тебя есть твой собственный код?
Какой собственный код? Я вышку прогуливал. Я через glm все операции с матрицами и кватернионами провожу.
Dampire
> Все матрицы кешируются. Перересчет происходит когда была изменена
> позиция/угол/etc. Я уже писал об этом. GetWorldMatrix(Inv) проверяет на dirty
> флаг, при необходимости перерасчитывает и возвращает переменную matrix(Inv)
> матрицу.
Я за такое на работе руки обычно отрываю. Эта твоя проверка на dirty флаг в несколько раз дороже, чем те вычисления, которые ты ей "оптимизируешь".
Срочно повышать квалификацию:
http://research.scee.net/files/presentations/gcapaustralia09/Pitf… g_GCAP_09.pdf
http://macton.smugmug.com/gallery/8936708_T6zQX#!i=593426709&k=BrHWXdJ
Стас
> Операция inverse сама по себе очень тяжелая, а те ее еще и с умножением
> комбинируешь... Да еще не факт что правильно.
Да ладно, тяжелая? Тяжелее, чем кешмисс?
https://github.com/g-truc/glm/blob/0.9.5/glm/detail/intrinsic_matrix.inl #sse_inverse_fast_ps #sse_inverse_ps
https://github.com/g-truc/glm/blob/0.9.5/glm/gtc/matrix_inverse.inl
bazhenovc
> Да ладно, тяжелая? Тяжелее, чем кешмисс?
Достаточно тяжелая для того чтобы не делать ее для каждого объекта, тебе инверсивная матрица зачем-то в каждом объекте нужна?
Стас
> Достаточно тяжелая для того чтобы не делать ее для каждого объекта, тебе
> инверсивная матрица зачем-то в каждом объекте нужна?
А вдруг нужна? Но вообще я про dirty flag говорил, это до ужаса плохо.
bazhenovc
Т.е. надо постоянно пересчитывать матрицы? Че-то меня такая перспектива пугает.
Стас
Инверсивка считается только при запросе инверсной матрицы.
Dampire
> Т.е. надо постоянно пересчитывать матрицы? Че-то меня такая перспектива пугает.
Да, потому что память намного медленнее, чем процессор. Посмотри те 2 ссылки, которые я тебе скинул.
bazhenovc
Я почитал. 25 тактов на проверку булки это сурово.
Dampire
Да нет, он имеет ввиду группировать данные, в свое время у сони была призентация, где они советовали групировать данные тоесть не так:
class Object
{
mat4 m_local;
mat4 m_global;
mat4 m_parent;
};
а как то так:
class Object { vector<mat4> m_locals; vector<mat4> m_globals; mat4 * m_local; mat4 * m_global; mat4 m_parent; }
Честно говоря не уверен как правильно должно выглядеть, но идея примерно такая. Тоесть если ты апдейтишь объект ты апдейтишь и всех дочерних объектов.
Стас
> Да нет, он имеет ввиду группировать данные, в свое время у сони была
> призентация, где они советовали групировать данные тоесть не так:
AoS/SoA это отдельная тема, перед тем, как начинать курить её - надо разобратся, как работает кэш.
Если ты хочешь, чтобы вправо было +, а налево -, то измени матрицу проекции:
glm::projection(90.f, -4/3, 0.1f, 100.f)
bazhenovc
> Срочно повышать квалификацию:
Вот, кстати, как теперь это дело на новых конзолях ? Ну все эти заморочки про Pitfall OOP
>http://research.scee.net/files/presentations/gcapaustralia09/Pitf… g_GCAP_09.pdf
Вот эта вот команда __dcbt это вообще только для плойки3 или на ПК тоже так можно?
И вообще есть тоже самое только на русском ? А то что-то я про кеш промахи вообще ничего не понял.
codingmonkey
> Вот эта вот команда __dcbt это вообще только для плойки3 или
Это для пиписи