блогер
Регистрация: Dec 2008
Адрес: г. Чебоксары
Сообщений: 2,259
|
Перевести D3D Assembly в AGAL
Помогите перевести код из D3D Assembly в AGAL. Шейдер изначально написан на HLSL, затем конвертирован в D3D Assembly:
Код:
//
// Generated by Microsoft (R) HLSL Shader Compiler 9.22.949.2248
//
// Parameters:
//
// float2 map;
// float2 offset;
// float2 rate;
// float resolution;
// float2 velacity;
//
//
// Registers:
//
// Name Reg Size
// ------------ ----- ----
// resolution c0 1
// rate c1 1
// offset c2 1
// velacity c3 1
// map c4 1
//
vs_2_0
def c5, 0.0199999996, 1, 0.00200000009, -1
def c6, 0, 1, 0, 0
dcl_position v0
dcl_texcoord v1
mul r0.xy, c3, c3
add r0.x, r0.y, r0.x
rsq r0.x, r0.x
rcp r0.y, r0.x
mul r0.xz, r0.x, c3.xyyw
mad r0.w, r0.y, c5.x, c5.y
mad r0.y, r0.y, -c5.z, c5.y
mul r0.y, r0.y, -v0.y
mul r0.w, r0.w, v0.x
mul r1.xy, r0.xzzw, r0.w
mad r0.z, r0.y, -r0.z, r1.x
mad r0.w, r0.y, r0.x, r1.y
mul r0.xy, r0.zwzw, c1
rcp r0.z, c4.x
rcp r0.w, c4.y
mul r0.zw, r0, c2.xyxy
add r0.zw, r0, r0
mad r0.xy, r0, c0.x, r0.zwzw
add oPos.xy, r0, c5.w
mov oPos.zw, c6.xyxy
mov oT0.xy, v1
// approximately 21 instruction slots used
Вот что получилось у меня в AGAL:
Код AS3:
"mov vt7, vc3\n" + // не дает производить действия над 2 константами
"mul vt0.xy, vc3, vt7\n" +
"add vt0.x, vt0.y, vt0.x\n" +
"rsq vt0.x, vt0.x\n" +
"rcp vt0.y, vt0.x\n" +
"mul vt0.xz, vt0.x, vc3.xyyw\n" +
//"mad vt0.w, vt0.y, vc6.x, vc6.y\n" +
"mul vt0.w, vt0.y, vc6.x\n" +
"add vt0.w, vt0.w, vc6.y\n" +
//"mad vt0.y, vt0.y, -vc6.z, vc6.y\n" +
"mul vt0.y, vt0.y, -vc6.z\n" +
"add vt0.y, vt0.y, vc6.y\n" +
"mul vt0.yw, vt0, va0.xyzx\n" +
"mul vt1.xy, vt0.xzzw, vt0.w\n" +
//"mad vt0.z, vt0.y, -vt0.z, vt1.x\n" +
"mul vt0.z, vt0.y, -vt0.z\n" +
"add vt0.z, vt0.z, vt1.x\n" +
//"mad vt0.w, vt0.y, vt0.x, vt1.y\n" +
"mul vt0.w, vt0.y, vt0.x\n" +
"add vt0.w, vt0.w, vt1.y\n" +
"mul vt0.xy, vt0.zwzw, vc1\n" +
"mov vt7, vc4\n" +
"rcp vt0.z, vt7.x\n" +
"rcp vt0.w, vt7.y\n" +
"mul vt0.zw, vt0, vc2.xyxy\n" +
"add vt0.zw, vt0, vt0\n" +
//"mad vt0.xy, vt0, vc0.x, vt0.zwzw\n" +
"mul vt0.xy, vt0, vc0.x\n" +
"add vt0.xy, vt0.xy, vt0.zwzw\n" +
"add op.xy, vt0, vc6.w\n" +
"mov op.zw, vc5.xy\n" +
"mov v1, va1\n" + // На эти не обращайте внимание, просто нужны что-бы код скомпилировался
"mov v0, vc8\n"
Наверное, я не правильно преобразовал операций mad, изначально в виде:
Код AS3:
"mad vt0.xy, vt0, vc0.x, vt0.zwzw\n" +
в это:
Код AS3:
"mul vt0.xy, vt0, vc0.x\n" +
"add vt0.xy, vt0.xy, vt0.zwzw\n" +
__________________
Дети не должны знать о своих родителях
|