46 lines
937 B
GLSL
46 lines
937 B
GLSL
|
|
#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;
|
||
|
|
}
|