Могут ли матрицы существовать на вершинных регистрах, кроме вершинных констант в AGAL? - PullRequest
1 голос
/ 23 января 2012

В основном я видел примеры, когда объект Matrix3D передается как регистр постоянной вершины в AS3 в объект Context3D .Но никогда не видел матрицы ни в каких других типах регистров ( временные или атрибут ).

Будет лиЛюбой способ скопировать константу вершины Matrix во временный регистр, а затем манипулировать отдельными полями этого временного регистра Matrix (например, для вращения), с другими предоставленными значениями (атрибутами вершин или другими константами)?

Может липростая операция mov dest, source добивается цели?

Ответы [ 2 ]

2 голосов
/ 01 февраля 2012

Да, это работает (возьмите его от Крота :)).Просто убедитесь, что скопировали достаточно (3 или 4) регистров.Также хороший способ думать о матричных операциях состоит в том, что они являются всего лишь ярлыком для 3 или 4-точечных инструкций продукта.В AGAL действительно ничего не набрано, а матрица - это всего лишь несколько последовательных регистров.Функции загрузки матриц удобны только для загрузки до 4 регистров за один вызов.А в шейдере

m44 dest, src, srcmatrix

точно так же, как:

dp4 dest.x srx, srcmatrix  
dp4 dest.y srx, srcmatrix+1  
dp4 dest.z srx, srcmatrix+2  
dp4 dest.w srx, srcmatrix+3

+1 и т.д. здесь означают номер регистра +1 и т. Д.

0 голосов
/ 24 января 2012

Я почти уверен, что временные регистры также содержат матрицы и ваш запрос возможен, но вы можете получить лучший ответ от кого-то вроде Марко Скабиа:

http://iflash3d.com/

Он очень доступен и хорошо осведомлен о AGAL.

...