Молехилл Шейдер - PullRequest
       33

Молехилл Шейдер

3 голосов
/ 28 марта 2011

Я пытаюсь понять кротовину и хотел бы умножить вершину на две матрицы, скажем:

output = theVertex * scaleMatrix * rotationMatrix

Полагаю, мой вершинный шейдер будет выглядеть примерно так:

"m44 vt0, va0, vc0\n" +
"mul op, vt0, vc1\n";

И я бы установил матрицы с

context3d.setProgramConstantsFromMatrix(Context3DProgramType.VERTEX, 0, scaleMatrix);
context3d.setProgramConstantsFromMatrix(Context3DProgramType.VERTEX, 1, rotationMatrix);

Но это не работает. Что я делаю не так?

Я знаю, что мог бы умножить матрицу перед тем, как надеть шейдер, но я пытаюсь понять AGAL.

Приветствия

1 Ответ

4 голосов
/ 28 марта 2011

A m44 матрица имеет 4x4 числа с плавающей запятой, она принимает 4 регистра , поскольку каждый регистр имеет 128 бит (4 числа с плавающей запятой), поэтому вам необходимо загрузить свою матрицу вращения в регистр vc4:

"m44 vt0, va0, vc0\n" +
"mul op, vt0, vc4\n";

context3d.setProgramConstantsFromMatrix(Context3DProgramType.VERTEX, 0, scaleMatrix);
context3d.setProgramConstantsFromMatrix(Context3DProgramType.VERTEX, 4, rotationMatrix);
...