#version 330 core
layout (location=0) in vec3 aPos;
layout (location=1) in vec3 aNormal;
layout (location=2) in vec2 aTexCoords;

uniform mat4 model;
uniform mat4 view;
uniform mat4 projection;
uniform mat4 norm;
uniform mat4 light_space_matrix;

uniform vec3 viewPos;

out vec3 frag_normal;
out vec3 fragPos;
out vec4 frag_pos_light_space;

void main()
{
    gl_Position = projection * view * model * vec4(aPos, 1.0);
    fragPos = vec3(model * vec4(aPos, 1.0));
    frag_normal = normalize(mat3(norm) * aNormal);
    frag_pos_light_space = light_space_matrix * model * vec4(aPos, 1);
}
