除了AGAL中的顶点常量外,顶点寄存器上是否可以存在矩阵?

时间:2012-01-23 15:14:10

标签: flash matrix vertex-shader stage3d agal

我经常看到 Matrix3D 对象作为AS3中的顶点常量寄存器传递给 Context3D 对象的示例。但从未在任何其他类型的寄存器中看到过矩阵( 临时 属性 )。

是否有办法将Matrix顶点常量复制到临时寄存器,然后使用其他提供的值(顶点属性或其他常量)操作该Matrix临时寄存器的单个字段(例如:用于旋转)? / p>

一个简单的mov dest, source操作可以解决这个问题吗?

2 个答案:

答案 0 :(得分:2)

是的,有效(从鼹鼠拿:)。只需确保复制足够的(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等。

答案 1 :(得分:0)

我几乎可以肯定临时寄存器也包含矩阵,并且您的请求是可能的,但您可以从Marco Scabia这样的人那里得到最佳答案:

http://iflash3d.com/

他非常平易近人,对AGAL非常了解。