14.2.2 Le fragment shader

Maintenant écrivons le fichier texture.frag, qui sera le fragment shader.

Pour commencer, la version du shader :

1
#version 140

Je ne pense pas que ce soit une bonne idée de mélanger les versions entre le vertex shader et le fragment shader.

Ensuite, une entrée du shader (comme il n'y a qu'une sortie au vertex shader) :

1
in vec2 texCoord0;

La sortie du fragment shader :

1
out vec4 out_Color;

Et oui, la seule chose qui nous intéresse en sortie su shader est la couleur du pixel qu'il faudra afficher.

Et bien sur, on oublie pas de passer la texture que l'on veut afficher :

1
uniform sampler2D texture;

Et maintenant la fonction main :

1
2
3
4
void main()
{
	out_Color = texture2D(texture, texCoord0);
}

C'est la fonction texture2D qui s'occupe d'extraire la couleur d'un pixel de la texture, c'est pour cela qu'on ne renvoie que des coordonnées de textures dans le vertex shader et pas des couleurs.

Voici à quoi ressemble le fichier texture.frag une fois fini :

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

in vec2 texCoord0;

out vec4 out_Color;

uniform sampler2D texture;

void main()
{
	out_Color = texture2D(texture, texCoord0);
}

Voici le fichier texture.frag