#version 430

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[6]	= vec2[6](vec2(0.7, -0.7), vec2(-0.75, 0.8), vec2(0.0, 0.0), vec2(0.3, 0.0), vec2(0.0, -0.3),vec2(0.3, -0.3) );

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

	if (gl_VertexIndex == in_refVertexIndex)
		out_color = in_color;
	else
		out_color = vec4(1.0, 0.0, 0.0, 1.0);
}
