blob: 8098ce4f8e961b2519d0c3e6f95ed2234145bbce [file] [log] [blame]
uniform mat4 projection;
uniform mat4 modelview;
uniform mat3 normalMatrix;
varying vec3 vertex_normal;
varying vec4 vertex_position;
varying vec3 eye_direction;
attribute vec3 vertex;
attribute vec3 normal;
vec3 unitvec(vec4 v1, vec4 v2)
{
if (v1.w == 0.0 && v2.w == 0.0)
return vec3(v2 - v1);
if (v1.w == 0.0)
return vec3(-v1);
if (v2.w == 0.0)
return vec3(v2);
return v2.xyz/v2.w - v1.xyz/v1.w;
}
void main()
{
vec4 curVertex = vec4(vertex.x, vertex.y, vertex.z, 1.0);
gl_Position = projection * modelview * curVertex;
vertex_normal = normalMatrix * normal;
vertex_position = modelview * curVertex;
eye_direction = normalize(unitvec(vertex_position, vec4(0.0, 0.0, 0.0, 1.0)));
}