#version 140
uniform vec3 lightPosition;
uniform vec3 skyColor;
uniform vec3 groundColor;
uniform mat4 mvMatrix;
uniform mat4 mvpMatrix;
uniform mat3 normalMatrix;
in vec3 in_position;
in vec3 in_normal;
out vec3 ex_color;
void main(void)
{
vec3 ecPosition = vec3(mvMatrix * vec4(in_position, 1.0));
vec3 tnorm = normalize(normalMatrix * in_normal);
vec3 lightVec = normalize(lightPosition - ecPosition);
float costheta = dot(tnorm, lightVec);
float a = costheta * 0.5 + 0.5;
ex_color = mix(groundColor, skyColor, a);
gl_Position = mvpMatrix * vec4(in_position, 1.0);
}