AGAL

destin destin destin

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。

相關詞條

相關搜尋

熱門詞條

聯絡我們