Shader molehill
-
12-11-2019 - |
Question
J'essaie de comprendre la taupe et j'aimerais multiple un sommet par deux matrices, disons:
output = theVertex * scaleMatrix * rotationMatrix
Je suppose que mon vertex shader ressemblerait à quelque chose comme:
"m44 vt0, va0, vc0\n" +
"mul op, vt0, vc1\n";
Et je définirais les matrices avec
context3d.setProgramConstantsFromMatrix(Context3DProgramType.VERTEX, 0, scaleMatrix);
context3d.setProgramConstantsFromMatrix(Context3DProgramType.VERTEX, 1, rotationMatrix);
Mais ça ne marche pas. Qu'est-ce que je fais mal?
Je suis conscient que je pouvais multiples la matrice avant de mettre le shader, mais j'essaie de comprendre Agal.
Acclamations
La solution
UN m44
La matrice est 4x4 flottants, il prend 4 registres Comme chaque registre est 128bits (4 flotteurs), vous devez donc charger votre matrice de rotation dans le registre VC4:
"m44 vt0, va0, vc0\n" +
"mul op, vt0, vc4\n";
context3d.setProgramConstantsFromMatrix(Context3DProgramType.VERTEX, 0, scaleMatrix);
context3d.setProgramConstantsFromMatrix(Context3DProgramType.VERTEX, 4, rotationMatrix);
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow