Je suis en train de porter ce GLSL Shaders à Stage3D et AGAL, mais je ne peux pas le faire fonctionner:Stage3D portage GLSL à AGAL
Vertex Shader (GLSL)
attribute vec3 aVertexPosition;
attribute vec4 aVertexColor;
uniform mat4 uMVMatrix;
uniform mat4 uPMatrix;
varying vec4 vColor;
void main(void) {
gl_Position = uPMatrix * uMVMatrix * vec4(aVertexPosition, 1.0);
vColor = aVertexColor;
}
Fragment Shader (GLSL)
precision mediump float;
varying vec4 vColor;
void main(void) {
gl_FragColor = vColor;
}
vu à la suite:
Vertex shader (AGAL)
mov vt0.w, vc0.x
mov vt0.xyz, va0.xyz
mov vt1.xyzw, vc1
mul vt5.xyzw, vt1, vc5
m44 op.xyzw, vt0.xyzw, vt5
mov v0.xyzw, va1.xyzw
Fragment Shader (AGAL)
mov oc.xyzw, v0.xyzw
Ici, il est une trace des instructions que j'exécutons:
(setVertexBufferAt) va0 3 0
(setVertexBufferAt) va1 4 3
(identity setProgramConstantsFromMatrix): vc0 1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1
(setProgramConstantsFromMatrix) vc1 1,0,0,0,0,1,0,0,0,0,1,0,0,0,-2,1
(setProgramConstantsFromMatrix) vc5 1.81066,0,0,0,0,2.4142136573791504,0,0,0,0,-1.0020020008087158,-1,0,0,-0.20020020008087158,0
render drawTriangles + present
Mais je ne vois toujours rien.
Mise à jour: Apparemment, le problème est que le triangle est en cours d'écrêtage. Les valeurs sur le tableau multiplié sont supérieures à 1.0 ce qui les exclut. Donc j'ai besoin de trouver un moyen de normaliser la matrice ou d'étendre le découpage
Une suggestion?
Deux pensées: 1. Que se passerait-il si vous avez supprimé le « .xyzw » d'accès au registre des matrices? 2. Il n'y a pas de composant z dans va0. On dirait qu'il a seulement un x et un y (basé sur votre trace). Est-ce correct? – bwroga
@bwroga Je viens de trouver l'une des causes possibles. –