#version 330 core uniform sampler2D diffuseTex; uniform sampler2D bumpTex; uniform bool useDiffuse; uniform bool useBumpMap; in Vertex { vec4 colour; vec2 texCoord; vec3 normal; vec3 tangent; vec3 binormal; vec3 worldPos; vec3 fragPos; } IN; out vec4 fragColour[3]; void main(void) { vec3 normal; if(useBumpMap) { mat3 TBN = mat3(IN.tangent, IN.binormal, IN.normal); normal = normalize(TBN * normalize((texture(bumpTex, IN.texCoord).rgb) * 2.0 - 1.0)); } else { normal = normalize(IN.normal); } vec4 diffuse = vec4(1.0, 0.0, 1.0, 1.0); if(useDiffuse) { diffuse = texture(diffuseTex, IN.texCoord); } fragColour[0] = texture(diffuseTex, IN.texCoord); fragColour[1] = vec4(normal.xyz * 0.5 + 0.5, 1.0); fragColour[2] = vec4(IN.worldPos.xyz * 0.5 + 0.5, 1.0); }