15 layout(std430, binding= 0) readonly buffer vertexData
20 uniform mat4 mvpMatrix;
21 uniform mat4 mvMatrix;
22 uniform mat4 normalMatrix;
24 out
vec3 vertex_position;
25 out
vec3 vertex_normal;
26 out
vec2 vertex_texcoord;
30 vec3 p= data[gl_VertexID].position;
31 vec3 n= data[gl_VertexID].normal;
32 vec2 t= data[gl_VertexID].texcoord;
34 gl_Position= mvpMatrix *
vec4(p, 1);
36 vertex_position=
vec3(mvMatrix *
vec4(p, 1));
37 vertex_normal= mat3(normalMatrix) * n;
42 #ifdef FRAGMENT_SHADER
44 uniform sampler2D diffuse_color;
46 in
vec3 vertex_position;
47 in
vec3 vertex_normal;
48 in
vec2 vertex_texcoord;
50 out
vec4 fragment_color;
55 vec3 color= texture(diffuse_color, vertex_texcoord).rgb * cos_theta;
56 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.
representation de l'indexation complete d'un sommet