1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
| #version 330
///////////////////////////////
// Attributs de vertex RENTRANTS
in vec3 aVertex;
in vec3 aNormal;
//
///////////////////////////////
///////////////////////////////
// Données passées au FRAGMENT SHADER
out vec4 vColor;
//
///////////////////////////////
///////////////////////////////
// Variables Uniforms
uniform mat4 modelview;
uniform mat4 projection;
uniform vec3 lightpos; //je l'ai défini à 0,0,-1 dans mon programme, comme un rayon de soleil de midi
//
///////////////////////////////
///////////////////////////////
// Variables constantes
const vec4 AMBIENT_COLOR = vec4 (0.2, 0.2, 0.2 , 1);
//
///////////////////////////////
mat3 NormalMatrix(mat4 mdv)
{
return inverse(transpose(mat3( mdv[0][0],mdv[0][1],mdv[0][2],
mdv[1][0],mdv[1][1],mdv[1][2],
mdv[2][0],mdv[2][1],mdv[2][2])));
}
void main()
{
gl_Position = projection * modelview * vec4( aVertex, 1.0 );
mat3 nMatrix = NormalMatrix(modelview);
vec3 Normal = nMatrix * aNormal;
float light = max(dot(aNormal, lightpos), 0);
vColor = vec4(1,1,1, 1) * light + AMBIENT_COLOR;
} |
Partager