#version 450 vec2 temp_pos; vec4 temp_color; // layout(location = 0) out vec4 out_var_TEXCOORD0; layout(location = 0) out vec4 outColor; void main() { vec4 color; vec2 pos; if (uint(gl_VertexIndex) == 0u) { color = vec4(1.0, 0.0, 0.0, 1.0); pos = vec2(-0.5); } else { vec4 vert_color; vec2 vert_pos; if (uint(gl_VertexIndex) == 1u) { vert_color = vec4(0.0, 1.0, 0.0, 1.0); vert_pos = vec2(0.5, -0.5); } else { bool index_exists = uint(gl_VertexIndex) == 2u; vert_color = mix(temp_color, vec4(0.0, 0.0, 1.0, 1.0), bvec4(index_exists)); vert_pos = mix(temp_pos, vec2(0.0, 0.5), bvec2(index_exists)); } color = vert_color; pos = vert_pos; } // out_var_TEXCOORD0 = color; outColor = color; gl_Position = vec4(pos, 0.0, 1.0); }