8 #extension GL_ARB_shader_draw_parameters : require
10 layout(location= 0) in
vec3 position;
11 out
vec3 vertex_position;
13 uniform mat4 modelMatrix;
14 uniform mat4 vpMatrix;
15 uniform mat4 viewMatrix;
18 layout(binding= 0, row_major, std430) readonly buffer modelData
23 layout(binding= 1, std430) readonly buffer remapData
30 uint
id= remap[gl_DrawIDARB];
31 gl_Position= vpMatrix * objectMatrix[id] * modelMatrix *
vec4(position, 1);
34 vertex_position=
vec3(viewMatrix * objectMatrix[
id] * modelMatrix *
vec4(position, 1));
39 #ifdef FRAGMENT_SHADER
41 in
vec3 vertex_position;
43 out
vec4 fragment_color;
54 float cos_theta=
max(0.0, normal.z);
55 color= color * cos_theta;
57 fragment_color=
vec4(color.rgb, 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,...
Vector normalize(const Vector &v)
renvoie un vecteur unitaire / longueur == 1.
Vector cross(const Vector &u, const Vector &v)
renvoie le produit vectoriel de 2 vecteurs.
vecteur generique, utilitaire.
vecteur generique 4d, ou 3d homogene, utilitaire.