6 layout(location= 0) in
vec3 position;
7 layout(location= 1) in
vec2 texcoord;
8 layout(location= 2) in
vec3 normal;
10 uniform mat4 mvpMatrix;
11 uniform mat4 mvMatrix;
13 out
vec3 vertex_position;
14 out
vec2 vertex_texcoord;
15 out
vec3 vertex_normal;
20 gl_Position= mvpMatrix *
vec4(position, 1);
24 vertex_uv= uv[gl_VertexID%3];
26 vertex_position=
vec3(mvMatrix *
vec4(position, 1));
27 vertex_texcoord= texcoord;
28 vertex_normal= mat3(mvMatrix) * normal;
34 #ifdef FRAGMENT_SHADER
36 uniform
float flat_shading;
37 uniform
vec4 diffuse_color;
38 uniform sampler2D diffuse_texture;
40 in
vec3 vertex_position;
41 in
vec2 vertex_texcoord;
42 in
vec3 vertex_normal;
45 out
vec4 fragment_color;
55 vec3 color= diffuse_color.rgb * cos_theta;
59 vec4 color_texture= texture(diffuse_texture, vertex_texcoord);
60 if(color_texture.a < 0.3)
64 vec3 color= diffuse_color.rgb * color_texture.rgb * cos_theta;
70 fragment_color=
vec4(color, 1);
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, utilitaire.
vecteur generique 4d, ou 3d homogene, utilitaire.