#version 450 core
#extension GL_ARB_shader_draw_parameters : require

layout(location = 0) in vec4 in_position;
layout(location = 1) in vec4 in_color;
layout(location = 2) in int  in_refVertexIndex;

layout(location = 0) out vec4 out_color;

out gl_PerVertex {
    vec4 gl_Position;
};

void main() {
    vec2 perVertex         = vec2(in_position.x, in_position.y);
    vec2 perInstance[5]    = vec2[5](vec2(0.0, 0.0), vec2(-0.3, 0.0), vec2(0.0, 0.3), vec2(0.5, 0.5), vec2(0.75, -0.8));
    vec4 colors[4]         = vec4[4](vec4(1.0), vec4(0.0, 0.0, 1.0, 1.0), vec4(0.0, 1.0, 0.0, 1.0), vec4(0.0, 1.0, 1.0, 1.0));
    int  baseInstanceIndex = gl_InstanceIndex - gl_BaseInstanceARB;

    gl_Position = vec4(perVertex + perInstance[baseInstanceIndex], 0.0, 1.0);

    if ((gl_VertexIndex - gl_BaseVertexARB) == in_refVertexIndex && gl_DrawIDARB == 0)
        out_color = in_color * colors[baseInstanceIndex];
    else
        out_color = vec4(1.0, 0.0, 0.0, 1.0);
}
