#version 430 layout(location=0) in vec3 coord3d; layout(location=1) in vec3 v_normal; layout(location=2) in vec3 v_color; out vec3 f_color; uniform mat4 mvp; uniform vec4 LightLocation; uniform vec3 Kd; uniform vec3 Ld; uniform vec3 Ka; uniform vec3 La; uniform vec3 Ks; uniform vec3 Ls; uniform mat3 NormalMatrix; uniform mat4 ModelViewMatrix; void main(void) { vec3 fNormal = normalize(NormalMatrix * v_normal); vec4 pos = ModelViewMatrix * vec4(coord3d, 1.0); vec3 L = normalize(LightLocation.xyz - pos.xyz); vec3 N = fNormal; vec3 V = normalize(-pos.xyz); vec3 R = reflect(-L, N); vec3 diffuse = Kd * Ld * max(dot(L, N), 0.0); vec3 ambient = Ka * La; vec3 specular = Ks * Ls * pow(max(dot(R, V), 0.0), 50.0); f_color = diffuse + ambient + specular; gl_Position = mvp * vec4(coord3d, 1.0f); }