2012-12-13 4 views
0

i hava немного смущенно о регистрах.Adboe AGAL путают о регистрах

в этой статье, http://www.adobe.com/devnet/flashplayer/articles/what-is-agal.html

там есть две строки гал код

m44 op, va0, vc0 
mov v0, va1 

первая строка положить результат вычислим операционный регистр, но вторая линия не работают регистра оп,

так что значит делать первую строчку?

также я нашел демо:

//compile vertex shader 
var vertexShader:Array = 
    [ 
    "dp4 op.x, va0, vc0", //4x4 matrix transform from 0 to output clipspace 
    "dp4 op.y, va0, vc1", 
    "dp4 op.z, va0, vc2", 
    "dp4 op.w, va0, vc3", 
    "mov v0, va1.xyzw" //copy texcoord from 1 to fragment program 
    ]; 
var vertexAssembler:AGALMiniAssembler = new AGALMiniAssembler(); 
vertexAssembler.assemble(flash.display3D.Context3DProgramType.VERTEX, vertexShader.join("\n")); 

//compile fragment shader 
var fragmentShader:Array = 
    [ 
    "mov ft0, v0\n", 
    "tex ft1, ft0, fs1 <2d,clamp,linear>\n", //sample texture 1  
    "mov oc, ft1\n" 
    ]; 

в vertexShader, топ три линии также положить reslut в оп, а четвертая строка АЛОС не использовал его.

так что это значит?

благодаря

ответ

1

Первая строка просто умножает текущую позицию вершины и матрицы Model-View-проекционной и записывает результат в выходной регистр.

Вторая строка использует переменный регистр для передачи некоторых данных в пиксельные шейдеры. Поскольку эти две строки - это весь код, который я вижу, все, что я могу сказать, это то, что va1, вероятно, содержит текстурные УФ-координаты.

+0

Да, так нет связи между первой и второй? могу ли я интерпретироваться так, что, наконец, GPU будет работать с данными в операционных и oc-регистрах? во второй демонстрационной версии, верхняя 3 строка в vertexShader уже выполнила вычисление и поместила результат в op, четвертая строка - для размещения данных в v0, которые будут использоваться в фрагментеShader, а затем в файле fragShader все данные будут храниться в oc. после этого GPU может начать работать с данными в op и oc? я правильно? спасибо – Tunied

+0

Нет связи, обе линии делают разные вещи. Оба пиксельных и вершинных шейдера выполняются на графическом процессоре в таком порядке: vertex shaders> отсечение вершины (сделано внутри GPU)> пиксельные шейдеры. Поэтому GPU работает все, начиная с момента запуска первого вершинного шейдера. – Varnius

Смежные вопросы