2013-02-12 2 views
0

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?

+0

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

+0

@bwroga Je viens de trouver l'une des causes possibles. –

Répondre