请输入您要查询的百科知识:

 

词条 AGAL
释义

AGAL(Adobe Graphics Assembly Language)是Adobe开发的图形汇编语言,汇编语言是仅高于计算机二进制机器码的低级语言,可以精确地操控机器硬件比如可编程显卡,PC的Dirext9、MAC的OpenGL以及移动设备中的OpenGL ES 2都是可编程显卡,并且都支持AGAL。通过Adobe官方提供的编译器AGALMiniAssembler(实际上是一个AS类库),我们可以通过字符串指令来获得一个AGAL二进制流,再通过context3D上传给显卡的编程管线。对于顶点以及片段的运算都是通过AGAL交由显卡来处理的,这就是传说中的GPU硬件加速。

),最新的测试版flash player 11中提供了可调用显卡资源来渲染图形API,即Molehill

下面摘取了一些AGAL的函数

add 0×01 add destination = source1 + source2, componentwise

sub 0×02 subtract destination = source1 – source2, componentwise

mul 0×03 multiply destination = source1 * source2, componentwise

div 0×04 divide destination = source1 / source2, componentwise

…..

摘抄一段AGAL的寄存器解释,有助于理解AGAL

1。属性寄存器

这些寄存器参考顶点着色器的VertexBuffer输入。因此,他们只能在顶点着色器中可用。

要通过正确的索引分配一个VertexBuffer到一个特定的属性寄存器,使用方法

Context3D:setVertexBufferAt()

在着色器中,访问属性寄存器的语法:va<n>,其中<n>是属性寄存器的索引号。

有一共有8个属性寄存器用于顶点着色器。

2。常量寄存器

这些寄存器是用来从ActionScript传递参数到着色的。这是通过Context3D::setProgramConstants()系列函数来实现。

在着色器中,这些寄存器的访问语法:

vc<n>,用于顶点着色器

fc<n>,用于像素着色器

其中<n>是常量寄存器的索引值。

有128个常量寄存器用于顶点着色器和28常量寄存器用于像素着色器。

3。临时寄存器

这些寄存器在着色器中,可以用于临时计算。

这些寄存器的访问语法:

vt<n> (vertex),用于顶点着色器

ft<n> (pixel),用于像素着色器

<n>是寄存器编号。

有8个用于顶点着色器,8个用于像素着色器。

4。输出寄存器

输出寄存器是在顶点和像素着色器存储其计算输出。此输出用于顶点着色器是顶点的剪辑空间位置。用于像素着色器是该像素的颜色。

访问这些寄存器运算的语法:

op,用于顶点着色器

oc,用于像素着色器

但显然只能一个输出寄存器用于顶点和像素着色器。

5。变寄存器

这些寄存器用来从顶点着色器传递数据到像素着色器。传递数据被正确地插入图形芯片,从而使像素着色器接收到正确的正在处理的像素的值。

以这种方式获取传递的典型数据是顶点颜色,或 纹理UV 坐标。

这些寄存器可以被访问的语法v <n>,其中<n>是寄存器编号。

有8个变寄存器可用。

6。纹理取样器

纹理采样寄存器是用来基于UV坐标从纹理中获取颜色值。

纹理是通过ActionScriptcall指定方法Context3D::setTextureAt()。

纹理样本的使用语法是:fs<n> <flags>,其中<n>是取样指数,<flags>是由一个或多个标记,用于指定如何进行采样。

<flags>是以逗号分隔的一组字符串,它定义:

纹理尺寸。可以是:二维,三维,多维数据集

纹理映射。可以是:nomip,mipnone,mipnearest,mipnone

纹理过滤。可以是:最近点采样,线性

纹理重复。可以是:重复,包装,夹取。

因此,举例来说,一个标准的2D纹理没有纹理映射,并进行线性过滤,可以进行采样到临时寄存器FT1,使用以下命令:

“tex ft1, v0, fs0 <2d,linear,nomip> “

变寄存器v0持有插值的纹理 UVs。

随便看

 

百科全书收录4421916条中文百科知识,基本涵盖了大多数领域的百科知识,是一部内容开放、自由的电子版百科全书。

 

Copyright © 2004-2023 Cnenc.net All Rights Reserved
更新时间:2025/1/27 22:02:15