11 gl_Position=
vec4(positions[gl_VertexID], 1.0);
12 texcoord= (positions[gl_VertexID].xy +1) / 2;
17 #ifdef FRAGMENT_SHADER
20 uniform sampler2D ptexture;
21 uniform sampler2D ntexture;
22 uniform sampler2D vtexture;
26 out
vec4 fragment_color;
30 vec3 q= texture(ptexture, texcoord).xyz;
31 vec3 qn= texture(ntexture, texcoord).xyz;
32 float v= texture(vtexture, texcoord).x;
34 vec3 p= texture(ptexture, pixel).xyz;
35 vec3 n= texture(ntexture, pixel).xyz;
42 vec3 color=
vec3(0, 0, cos_theta_p * cos_theta_q / dpq2) + abs(
vec3(cos_theta_p, cos_theta_p, cos_theta_p)) / 8;
44 fragment_color=
vec4(color, 1);
47 fragment_color=
vec4(1, 1, 1, 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 distance(const Point &a, const Point &b)
renvoie la distance etre 2 points.
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.