#version 450 layout(push_constant) uniform VertexUniformBufferObject { mat4 model; mat4 view; mat4 proj; } ubo; layout(location = 0) out vec3 fragColor; vec3 positions[12] = vec3[]( vec3(0.0, -1.0, 1.0), // 1 vec3(1.0, 1.0, 1.0), // 2 vec3(-1.0, 1.0, 1.0), // 3 vec3(-1.0, 1.0, 1.0), // 3 vec3(0.0, 0.0, -1.0), // 4 vec3(0.0, -1.0, 1.0), // 1 vec3(0.0, -1.0, 1.0), // 1 vec3(0.0, 0.0, -1.0), // 4 vec3(1.0, 1.0, 1.0), // 2 vec3(1.0, 1.0, 1.0), // 2 vec3(0.0, 0.0, -1.0), // 4 vec3(-1.0, 1.0, 1.0) // 3 ); vec3 colors[12] = vec3[]( vec3(1.0, 0.0, 0.0), vec3(0.0, 1.0, 0.0), vec3(0.0, 0.0, 1.0), vec3(0.0, 0.0, 1.0), vec3(1.0, 1.0, 1.0), vec3(1.0, 0.0, 0.0), vec3(1.0, 0.0, 0.0), vec3(1.0, 1.0, 1.0), vec3(0.0, 1.0, 0.0), vec3(0.0, 1.0, 0.0), vec3(1.0, 1.0, 1.0), vec3(0.0, 0.0, 1.0) ); void main() { gl_Position = ubo.proj * ubo.view * ubo.model * vec4(positions[gl_VertexIndex], 1.0); fragColor = colors[gl_VertexIndex]; }