Molehill Shader
-
12-11-2019 - |
Вопрос
Я пытаюсь понять Molehill и хотелось бы нескольким вершинам двумя матрицами, скажем:
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);
.
Но это не работает.Что я делаю не так?
Я знаю, что я могу несколько матрицу, прежде чем надевать шейдер, но я пытаюсь понять агал.
Приветствия
Решение
Генеракодицетагкод матрицы 4x4, это требует 4 регистров , поскольку каждый регистр 128bits (4 float), поэтому вы должны загрузить вашу матрицу поворота в регистр VC4:
.
"m44 vt0, va0, vc0\n" +
"mul op, vt0, vc4\n";
context3d.setProgramConstantsFromMatrix(Context3DProgramType.VERTEX, 0, scaleMatrix);
context3d.setProgramConstantsFromMatrix(Context3DProgramType.VERTEX, 4, rotationMatrix);
. Не связан с StackOverflow