#version 450

layout(binding = 0) uniform UniformBufferObject {
    mat4 model;
    mat4 geom_rot;
    mat4 view;
    mat4 proj;
    vec3 camera_pos;
    bool[16] use_geom_shader;
} ubo;


layout(location = 0) in vec3 inPosition;
layout(location = 1) in vec3 inColor;
layout(location = 2) in vec2 inTexCoord;

layout(location = 0) out vec3 geoColor;
layout(location = 1) out vec2 geoTexCoord;

void main() {
    if (ubo.use_geom_shader[0]) {
        gl_Position = ubo.geom_rot * ubo.model *  vec4(inPosition, 1.0);
    } else {
        gl_Position = ubo.proj * ubo.view * ubo.geom_rot * ubo.model *  vec4(inPosition, 1.0);
    }
    geoColor = inColor;
    geoTexCoord = inTexCoord;
}