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 в оп, а четвертая строка АЛОС не использовал его.
так что это значит?
благодаря
Да, так нет связи между первой и второй? могу ли я интерпретироваться так, что, наконец, GPU будет работать с данными в операционных и oc-регистрах? во второй демонстрационной версии, верхняя 3 строка в vertexShader уже выполнила вычисление и поместила результат в op, четвертая строка - для размещения данных в v0, которые будут использоваться в фрагментеShader, а затем в файле fragShader все данные будут храниться в oc. после этого GPU может начать работать с данными в op и oc? я правильно? спасибо – Tunied
Нет связи, обе линии делают разные вещи. Оба пиксельных и вершинных шейдера выполняются на графическом процессоре в таком порядке: vertex shaders> отсечение вершины (сделано внутри GPU)> пиксельные шейдеры. Поэтому GPU работает все, начиная с момента запуска первого вершинного шейдера. – Varnius