AGAL 命令

 名称opcode 操作 说明 
 mov 0×00移动  将数据从 source1 移动到 destination
 add0×01 相加  destination = source1 + source2
 sub0×02 相减  destination = source1 – source2
 mul 0×03相乘 destination = source1 * source2
 div 0×04 除以 destination = source1 / source2
 rcp 0×05 倒数 destination = 1/source1
 min 0×06 最小值 destination = minimum(source1,source2)
 max 0×07 最大值 destination = maximum(source1,source2)

destination = maximum(source1,source2)

 frc 0×08 分数 destination = source1 – (float)floor(source1)

destination = source1 – (float)floor(source1)

 sqt 0×09 平方根 destination = sqrt(source1)
 rsq 0x0a 平方根倒数 destination = 1/sqrt(source1)
 pow 0x0b 幂 destination = pow(source1,source2)
 log 0x0c 对数 destination = log_2(source1)
 exp 0x0d 指数 destination = 2^source1
 nrm 0x0e 标准化 destination = normalize(source1)
 sin 0x0f 正弦 destination = sin(source1)
 cos 0×10 余弦 destination = cos(source1)
 crs 0×11 向量积 destination.x = source1.y * source2.z – source1.z * source2.y

 destination.y = source1.z * source2.x – source1.x * source2.z

 destination.z = source1.x * source2.y – source1.y * source2.x

 dp3 0×12 点积 destination = source1.x*source2.x + source1.y*source2.y + source1.z*source2.z
 dp4 0×13 点积 destination = source1.x*source2.x + source1.y*source2.y + source1.z*source2.z + source1.w*source2.w

 abs

 0×14 取绝对值 destination = abs(source1),按组件
 neg 0×15  求反 destination = -source1,按组件
 sat 0×16 饱和 destination = maximum(minimum(source1,1),0),按组件
 m33 0×17 矩阵连乘3×3 destination.x = (source1.x * source2[0].x) + (source1.y * source2[0].y) + (source1.z * source2[0].z)

 destination.y = (source1.x * source2[1].x) + (source1.y * source2[1].y) + (source1.z * source2[1].z)

 destination.z = (source1.x * source2[2].x) + (source1.y * source2[2].y) + (source1.z * source2[2].z)

 m44 0×18 矩阵连乘4×4 destination.x = (source1.x * source2[0].x) + (source1.y * source2[0].y) + (source1.z * source2[0].z) + (source1.w * source2[0].w)

 destination.y = (source1.x * source2[1].x) + (source1.y * source2[1].y) + (source1.z * source2[1].z) + (source1.w * source2[1].w)

 destination.z = (source1.x * source2[2].x) + (source1.y * source2[2].y) + (source1.z * source2[2].z) + (source1.w * source2[2].w)

 destination.w = (source1.x * source2[3].x) + (source1.y * source2[3].y) + (source1.z * source2[3].z) + (source1.w *source2[3].w)

 m34 0×19 矩阵连乘3×4 destination.x = (source1.x * source2[0].x) + (source1.y * source2[0].y) + (source1.z * source2[0].z) + (source1.w * source2[0].w)

 destination.y = (source1.x * source2[1].x) + (source1.y * source2[1].y) + (source1.z * source2[1].z) + (source1.w * source2[1].w)

 destination.z = (source1.x * source2[2].x) + (source1.y * source2[2].y) + (source1.z * source2[2].z) + (source1.w * source2[2].w)

 kil 0×27 丢弃 如果单个标量源组件小于零,则将丢弃片段并不会将其绘制到帧缓冲区。 (目标寄存器必须全部设置为 0
 tex 0×28 纹理取样 destination 等于从坐标 source1 上的纹理 source2 进行加载。在这种情况下, source2 必须采用取样器格式
 sge 0×29 大于等于时设置 destination = source1 >= source2 ? 1 : 0
 slt 0x2a 小于时设置 destination = source1 < source2 ? 1 : 0
 seq 0x2c 相等时设置 destination = source1 == source2 ? 1 : 0
 sne 0x2d 不相等时设置

destination = source1 != source2 ? 1 : 0

 

 va 属性寄存器

很多人看到这个名字的时候都会认为va中应该存的是某一个对象的属性,或者一些其他什么东西。但实事并非如此。当你上载一些顶点数据之后,我们通过AS3来制定这些顶点所存在的位置,那么你就可以通过va来直接使用。举个简单的例子,在上一篇文章中,我们使用了va0,而va0的数据又是从etVertexBufferAt来直接指定的,所以在你编写代码的时候,你的AGAL和AS3有着直接的联系。

 vc 常量寄存器

顾名思义,与程序中的常量概念类似,这部分数据是从外部直接传递进来的,至于你如何使用完全取决于你自己。关于用法我们在后面会涉及到。

 vt 临时寄存器

应该说vt的概念最接近于我们程序中的变量,因为他可以被你临时读取,并且允许你在AGAL运行时来动态改变其中的数值。

 op 输出寄存器

好吧,当你吧所有的操作都完成后,那么你的结果应该有一个归宿,这个op就是你顶点数据最后的归宿。每次运行顶点数据后,你都应该看到op,否则你的程序运行后没有任何效果。

----------------------------------------------------------HOHO--------------------------------------------------------------

 fs 纹理采样寄存器

 教程到目前位置,我们还没有看到任何和贴图有关系的内容。不错,笔者打算将这部分内容放在后面讲解。因为还有不少好东西放在后面等着大家呢。这里简单解释一下,所谓纹理采样,则是调用你显存中的纹理数据。纹理我们可以理解为贴图,或者理解为你上载到GPU的那张图片。

 fc 常量寄存器

又遇到常量了。这里和刚才的vc其实是一样的,因为顶点和纹理这两部分的程序不可交叉访问,所以贴图也有自己的常量寄存器。

 ft 临时寄存器

和vt概念相同,但只用于纹理操作。

 oc 输出寄存器

和op相同,但只能用于纹理操作。

----------------------------------------------------------HOHO--------------------------------------------------------------

 v 插值寄存器

这是比较特殊的一个寄存器,因为刚才我们所说的8个寄存器类型只能在自己负责的领域操作,顶点的寄存器不可访问纹理的内容,同样,纹理操作中也无法访问顶点数据,那么如果他们的数据有交集如何呢?这里就体现了v的作用(当然,在微博中,v也是一种身份的象征)。v可以在在顶点操作中使用,也可以在纹理操作中使用。

转:http://ashan.org/post-309.html#comment-17360

 

转载于:https://www.cnblogs.com/mattins/archive/2013/01/21/2869549.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值