uniform vec3 CamPos;
uniform mat3 ModelRotateMatrix;
uniform vec3 ModelTranslateVector;

attribute vec3 Tangent;
attribute vec3 Binormal;

varying vec2 texCoord;
varying vec3 camVec;
varying vec3 lightVec;
varying vec3 vertexPos;

void main()
{
	vec4 realVertexPos = vec4(ModelRotateMatrix * gl_Vertex.xyz + ModelTranslateVector, 1.0);
	gl_Position = gl_ModelViewProjectionMatrix * realVertexPos;
	
	texCoord = gl_MultiTexCoord0.st;
	
	vec3 lVec = normalize(gl_LightSource[0].position.xyz);
	vec3 cVec = (CamPos - gl_Vertex.xyz);
	
	vertexPos = gl_Vertex.xyz;
	
	mat3 rot;
	rot[0] = normalize(Tangent);
	rot[1] = normalize(Binormal);
	rot[2] = normalize(gl_Normal.xyz);
	
	rot = ModelRotateMatrix * rot;

	lightVec = lVec * rot;
	camVec =  cVec * rot;
	
}