#version 330 core in vec3 position; in vec3 normal; in vec2 tex_coords; uniform mat4 model; uniform mat4 view; uniform mat4 projection; uniform vec2 uv_offset; uniform vec2 uv_scale; out vec3 v_world_normal; out vec2 v_tex; out vec3 v_world_pos; void main() { mat3 model3 = mat3(model); v_world_normal = normalize(transpose(inverse(model3)) * normal); v_tex = tex_coords * uv_scale + uv_offset; v_world_pos = (model * vec4(position, 1.0)).xyz; gl_Position = projection * view * vec4(v_world_pos, 1.0); }