0
나는 레지스터에 대해 약간 혼란스러워합니다. 이 문서의 Adboe AGAL이 레지스터에 대해 혼동을 못했습니다.
, http://www.adobe.com/devnet/flashplayer/articles/what-is-agal.html이 첫 번째 줄은 연산 레지스터에 계산 결과를 넣어
m44 op, va0, vc0
mov v0, va1
두 라인 AGAL 코드를 가지고 있지만, 두 번째 줄은 에게 연산 레지스터를 작동하지 않았다,
첫 번째 줄을 수행하는 의미는 무엇입니까?
또한 나는 데모 발견 vertexShader에서//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"
];
, 세 가지 라인이 또한 연산에 reslut을 넣어하지만, 네 번째 줄은 ALOS를 사용하지.
그게 무슨 뜻입니까?
감사
예, 첫 번째 줄과 두 번째 줄 사이에 연결이 없습니까? 마침내 GPU가 op 및 oc 레지스터에서 데이터를 조작 할 것이라고 해석 할 수 있습니까? 두 번째 데모에서 vertexShader의 3 행을 이미 계산 한 다음 op에 결과를 넣습니다. 네 번째 행은 fragmentShader에서 사용할 데이터를 v0에 넣고 fragmentShader에서 모든 데이터를 oc에 저장합니다. 해당 GPU가 op 및 oc에서 데이터를 실행할 수있게 된 후에? 내가 올바르게? 덕분에 – Tunied
연결이 없으므로 두 줄이 다른 작업을 수행합니다. 픽셀 쉐이더와 버텍스 쉐이더 모두 GPU에서 버텍스 쉐이더> 버텍스 클리핑 (GPU 내부에서 수행)> 픽셀 쉐이더 순서로 실행됩니다. 따라서 GPU는 첫 번째 버텍스 쉐이더가 실행 된 시점부터 모든 작업을 수행합니다. – Varnius