7 layout(location= 0) in
vec3 position;
8 layout(location= 2) in
vec3 normal;
10 uniform mat4 mvpMatrix;
11 uniform mat4 mvMatrix;
12 uniform mat4 decalMatrix;
14 out
vec4 decal_position;
16 out
vec3 vertex_position;
17 out
vec3 vertex_normal;
21 gl_Position= mvpMatrix *
vec4(position, 1);
22 decal_position= decalMatrix *
vec4(position, 1);
24 vertex_position=
vec3(mvMatrix *
vec4(position, 1));
25 vertex_normal= mat3(mvMatrix) * normal;
29 #ifdef FRAGMENT_SHADER
30 out
vec4 fragment_color;
32 uniform sampler2D decal;
33 in
vec4 decal_position;
35 in
vec3 vertex_position;
36 in
vec3 vertex_normal;
42 float cos_theta=
max(0,
dot(n, l));
65 vec3 decal_color= textureProj(decal, decal_position).rgb;
67 fragment_color=
vec4(color * decal_color, 1);
Point max(const Point &a, const Point &b)
renvoie la plus grande composante de chaque point. x, y, z= max(a.x, b.x), max(a.y,...
float dot(const Vector &u, const Vector &v)
renvoie le produit scalaire de 2 vecteurs.
Vector normalize(const Vector &v)
renvoie un vecteur unitaire / longueur == 1.
vecteur generique, utilitaire.
vecteur generique 4d, ou 3d homogene, utilitaire.