#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); // outTextCoords = inTextCoords; mat4 modelViewMatrix = viewMatrix * modelMatrix; vec4 mvPosition = modelViewMatrix * vec4(inPos, 1.0); gl_Position = projectionMatrix * mvPosition; outPos = mvPosition; outNormal = normalize(modelViewMatrix * vec4(inNormal, 0.0)).xyz; outTangent = inNormal * normalize(inTangent); outBitangent = inNormal * normalize(inBitangent); outTextCoords = inTextCoords; }