15.10.2012 Views

Actionscript 3 Entwicklerhandbuch

Actionscript 3 Entwicklerhandbuch

Actionscript 3 Entwicklerhandbuch

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Kapitel 67: Adobe Graphics Assembly<br />

Language (AGAL)<br />

Die Adobe Graphics Assembly Language (AGAL) ist eine Shader-Sprache zum Definieren von Vertex- und Fragment-<br />

Renderingprogrammen. Die AGAL-Programme müssen im hier beschriebenen binären Bytecodeformat in den<br />

Renderingkontext hochgeladen werden.<br />

AGAL-Bytecodeformat<br />

AGAL-Bytecode muss das Format Endian.LITTLE_ENDIAN verwenden.<br />

Bytecode-Header<br />

AGAL-Bytecode muss mit einem 7-Byte-Header beginnen:<br />

A0000001A100 -- for a vertex program<br />

A0000001A101 -- for a fragment program<br />

Offset (Bytes) Größe (Bytes) Name Beschreibung<br />

0 1 magic muss 0xa0 sein<br />

1 4 version muss 1 sein<br />

5 1 Shadertyp-ID muss 0xa1 sein<br />

6 1 Shadertyp 0 für ein Vertexprogramm; 1 für ein Fragmentprogramm<br />

Token<br />

Dem Header folgt sofort eine beliebige Anzahl Token. Jedes Token ist 192 Bit (24 Byte) groß und hat immer folgendes<br />

Format:<br />

[opcode][destination][source1][source2 oder sampler]<br />

Nicht jeder Opcode verwendet alle diese Felder. Nicht verwendete Felder müssen auf 0 gesetzt werden.<br />

Opcodes<br />

Das [opcode]-Feld ist 32 Bit groß und kann einen dieser Werte aufweisen:<br />

Name Opcode Methode Beschreibung<br />

mov 0x00 verschieben Daten von source1 nach destination verschieben,<br />

komponentenweise<br />

add 0x01 addieren destination = source1 + source2, komponentenweise<br />

sub 0x02 subtrahieren destination = source1 - source2, komponentenweise<br />

mul 0x03 multiplizieren destination = source1 * source2, komponentenweise<br />

div 0x04 dividieren destination = source1 / source2, komponentenweise<br />

rcp 0x05 Kehrwert destination = 1/source1, komponentenweise<br />

Letzte Aktualisierung 27.6.2012<br />

1206

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!