Начну с того, что AGALMiniAssembler.as который активно используется во всех примерах официально не поддерживается компанией Adobe, вследствие чего содержит небольшие неточности.
Во-первых, в нем описаны инструкции AGAL, которые на самом деле еще не реализованы (исключены). Это:
инструкции ifz, inz, ife, ine, ifg, ifl, ieg, iel, els, eif, rep, erp, brk, sgn.
А во-вторых, в нем нет двух инструкций, которые поддерживаются Flash Player'ом:
seq, sne.
Эти две инструкции аналогичны sge, slt.
Список регистров, которыми можно пользоваться в программе на языке AGAL следующий:
Возможное использование данного регистра (группы регистров) в:
1 - фрагментном шейдере
2 - вершинном шейдере
3 - качестве одного из двух регистров - источников (чтение)
4 - качестве регистра - назначения (запись)
Для полноценной поддержки неуказанных инструкций seq и sne необходимо:
открыть файл AGALMiniAssembler.as в режиме редактирования, найти строку:
OPMAP[ SGN ] = new OpCode( SGN, 2, 0x2b, 0 );
после нее добавить:
OPMAP[ SEQ ] = new OpCode( SEQ, 3, 0x2c, 0 );
OPMAP[ SNE ] = new OpCode( SNE, 3, 0x2d, 0 );
Потом, найти строку:
private static const SGN:String = "sgn";
после нее добавить:
private static const SEQ:String = "seq";
private static const SNE:String = "sne";
Во-первых, в нем описаны инструкции AGAL, которые на самом деле еще не реализованы (исключены). Это:
инструкции ifz, inz, ife, ine, ifg, ifl, ieg, iel, els, eif, rep, erp, brk, sgn.
А во-вторых, в нем нет двух инструкций, которые поддерживаются Flash Player'ом:
seq, sne.
Эти две инструкции аналогичны sge, slt.
Список регистров, которыми можно пользоваться в программе на языке AGAL следующий:
Название
|
Описание
|
F1
|
V2
|
r3
|
w4
|
Кол-во
|
VAx
|
атрибутные (setVertexBufferAt)
|
|
+
|
+
|
|
8
|
VCxxx
|
константные (setProgramConstantsFrom…)
|
|
+
|
+
|
|
128
|
VTx
|
временные
|
|
+
|
+
|
+
|
8
|
OP
|
выходной
|
|
+
|
|
+
|
1
|
Vx
|
переменная
|
+
|
+
|
+
|
+
|
8
|
FCxx
|
константные (setProgramConstantsFrom…)
|
+
|
|
+
|
|
28
|
FTx
|
временные
|
+
|
|
+
|
+
|
8
|
FSx
|
текстурные (setTextureAt)
|
+
|
|
+
|
|
8
|
OC
|
выходной
|
+
|
|
|
+
|
1
|
Возможное использование данного регистра (группы регистров) в:
1 - фрагментном шейдере
2 - вершинном шейдере
3 - качестве одного из двух регистров - источников (чтение)
4 - качестве регистра - назначения (запись)
Для полноценной поддержки неуказанных инструкций seq и sne необходимо:
открыть файл AGALMiniAssembler.as в режиме редактирования, найти строку:
OPMAP[ SGN ] = new OpCode( SGN, 2, 0x2b, 0 );
после нее добавить:
OPMAP[ SEQ ] = new OpCode( SEQ, 3, 0x2c, 0 );
OPMAP[ SNE ] = new OpCode( SNE, 3, 0x2d, 0 );
Потом, найти строку:
private static const SGN:String = "sgn";
после нее добавить:
private static const SEQ:String = "seq";
private static const SNE:String = "sne";
Комментариев нет:
Отправить комментарий