attribute vec3 position;
attribute vec2 texcoord;
attribute vec3 normal;
attribute vec3 tangent;

uniform mat4 ModelViewProjectionMatrix;
uniform mat4 NormalMatrix;

varying vec2 TextureCoord;
varying mat4 TangentToEyeMatrix;

void main(void)
{
    TextureCoord = texcoord;

    // Calculate bitangent
    vec3 bitangent = normalize(cross(normal, tangent));

    // Calculate tangent space to eye space transformation matrix.
    // We need this matrix in the fragment shader to transform the data
    // from the normal map, which is in tangent space, to eye space,
    // so that we can perform meaningful lighting calculations. Alternatively,
    // we could have used an EyeToTangentMatrix, to convert light direction etc
    // to tangent space.

    // First calculate a tangent space to object space transformation matrix.
    mat4 TangentToObject = mat4(tangent.x, tangent.y, tangent.z, 0.0,
                                bitangent.x, bitangent.y, bitangent.z, 0.0,
                                normal.x, normal.y, normal.z, 0.0,
                                0.0, 0.0, 0.0, 1.0);

    // Multiply with the NormalMatrix to further transform from object
    // space to eye space (we are manipulating normals, so we can't use
    // the ModelView matrix for this step!).
    TangentToEyeMatrix = NormalMatrix * TangentToObject;

    // Transform the position to clip coordinates
    gl_Position = ModelViewProjectionMatrix * vec4(position, 1.0);
}
