#version 330 core layout (location = 0) in vec3 inPos; layout (location = 1) in vec3 inNormal; layout (location = 2) in vec3 inTangent; layout (location = 3) in vec3 inBitangent; layout (location = 4) in vec2 inTextCoords; out vec4 outPos; out vec3 outNormal; out vec3 outTangent; out vec3 outBitangent; out vec2 outTextCoords; uniform mat4 projectionMatrix; uniform mat4 modelMatrix; uniform mat4 viewMatrix; void main() { vec4 worldPos = modelMatrix * vec4(inPos,1); gl_Position = projectionMatrix * viewMatrix * modelMatrix * vec4(inPos, 1.0); mat3 mNormal = transpose(inverse(mat3(modelMatrix))); outPos = worldPos; outNormal = mNormal * normalize(inNormal); outTangent = mNormal * normalize(inTangent); outBitangent = mNormal * normalize(inBitangent); outTextCoords = inTextCoords; }