cpp-vulkan-setup/shaders/shader.vert

45 lines
1.0 KiB
GLSL

#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];
}