
7.3. The GL sha d in g language 283
// Vertex Shader - for traditional image mapping
#version 330 core
layout(location = 0) in vec3 Vertex;
layout(location = 1) in vec3 Normal;
layout(location = 2) in vec2 Texture;
uniform mat4 MVP;
uniform mat4 MV;
uniform mat4 NM;
uniform vec3 LightPos;
out float Diffuse; // diffuse light intensity
out vec2 TexCoord; // texture coordinate (u,v)
void main(){
gl_Position = MVP * vec4(Vertex,1); // buit in variable
vec3 PP = MV * vec4(Vertex,1); // vertex position world coodinates
vec3 PN = normalize(NM * Normal);// normal vector
// light direction vector
vec3 LV = normalize(LightPos-PV);
Diffuse = max(dot(LV, PN), 0.0); // diffuse ...