#version 330 core

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

out vec3 vert_normal;
out vec3 frag_position;
out vec2 uv_coords;

uniform mat3 normal_mat;
uniform mat4 model;
uniform mat4 view;
uniform mat4 projection;

void main() {
  vert_normal   = normal_mat * normal;
  frag_position = vec3(model * vec4(position, 1.0));
  uv_coords     = uv;
  gl_Position   = projection * view * model * vec4(position, 1.0);
};