CSC8502_Advanced_Graphics_For_Games / Shaders / BumpVertex.glsl
BumpVertex.glsl
Raw
#version 330 core
uniform mat4 modelMatrix;
uniform mat4 viewMatrix;
uniform mat4 projMatrix;

in vec3 position;
in vec4 colour;
in vec3 normal; 
in vec4 tangent; 
in vec2 texCoord;

out Vertex{
	vec4 colour;
	vec2 texCoord;
	vec3 normal;
	vec3 tangent; 
	vec3 binormal; 
	vec3 worldPos;
} OUT;

void main ( void ) {
	OUT.colour = colour;
	OUT.texCoord = texCoord;

	mat3 normalMatrix = transpose ( inverse ( mat3 ( modelMatrix )));

	vec3 wNormal = normalize ( normalMatrix * normalize ( normal ));
	vec3 wTangent = normalize ( normalMatrix * normalize ( tangent.xyz ));

	OUT.normal = wNormal;
	OUT.tangent = wTangent;
	OUT.binormal = cross ( wTangent , wNormal ) * tangent.w;
	
	vec4 worldPos = ( modelMatrix * vec4 (position,1));

	OUT.worldPos = worldPos.xyz;

	gl_Position = ( projMatrix * viewMatrix ) * worldPos;
}