#version 450 // // IN // layout(location = 0) in vec3 in_position; layout(location = 1) in vec3 in_normal; layout(location = 2) in vec2 in_UV; // // OUT // layout(location = 0) out vec2 out_UV; layout(location = 1) out vec3 out_normal; layout(location = 2) out vec3 out_world_position; // // UNIFORMS // layout(set = 0, binding = 0) uniform Camera { mat4 projection; mat4 view; } camera; layout(set = 0, binding = 1) uniform Model { mat4 model; } object; /// ---------------------------------------------------- /// ---------------------------------------------------- void main() { // --- GET WORLD POSITION --- vec4 world_position = object.model * vec4(in_position, 1.0); // --- SHOW POSITION AT --- gl_Position = camera.projection * camera.view * world_position; // --- SET --- out_UV = in_UV; out_normal = mat3(transpose(inverse(object.model))) * in_normal; out_world_position = world_position.xyz; }