14.2.1 Le vertex shader

Aller, on commence avec... la version du shader :

1
#version 140

Ensuite les entrées du shaders, ici les vertices à afficher et les coordonnées de textures :

1
2
in vec3 in_Vertex;
in vec2 in_TexCoord0;

En sortie, on veut juste une coordonnée de texture (et pas de couleur, la réponse se trouve dans le fragment shader) :

1
out vec2 texCoord0;

On oublie pas de déclarer la matrice projection et la matrice modelview :

1
2
uniform mat4 projection;
uniform mat4 modelview;

Et enfin on écrit le main :

1
2
3
4
5
void main()
{
	gl_Position = projection * modelview * vec4(in_Vertex, 1.0);
	texCoord0 = in_TexCoord0;
}

Vous vous rappelez, on multiplie le vecteur que l'on veut projeter pas la matrice modelview (pour orienter la caméra comme il faut), et on multiplie le tout par la matrice projection pour projeter le tout sur l'écran, on met le résultat dans la variable gl_Position.

Côté coordonnées de texture, on se contente de les copier.

Voilà à quoi le shader ressemble une fois fini :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#version 140

in vec3 in_Vertex;
in vec2 in_TexCoord0;

out vec2 texCoord0;

uniform mat4 projection;
uniform mat4 modelview;

void main()
{
	gl_Position = projection * modelview * vec4(in_Vertex, 1.0);
	texCoord0 = in_TexCoord0;
}

Voici le fichier texture.vert