#version 330 core

layout(location = 0) in vec3 position;
layout(location = 1) in vec3 normal;
layout(location = 2) in vec2 inTexCoords;

uniform mat4 Model;
uniform mat4 View;
uniform mat4 Projection;

out vec3 fragNormal;
out vec3 worldPosition;
out vec2 texCoords;

void main() {
    gl_Position = Projection * View * Model * vec4(position, 1.0);
    worldPosition = vec3(Model * vec4(position, 1.0));
    fragNormal = mat3(transpose(inverse(Model))) * normal;
		fragNormal = normalize(normal);
    texCoords = inTexCoords;
}