summaryrefslogtreecommitdiff
path: root/glsl/shader_2d_wired.vert.glsl
diff options
context:
space:
mode:
Diffstat (limited to 'glsl/shader_2d_wired.vert.glsl')
-rw-r--r--glsl/shader_2d_wired.vert.glsl30
1 files changed, 28 insertions, 2 deletions
diff --git a/glsl/shader_2d_wired.vert.glsl b/glsl/shader_2d_wired.vert.glsl
index 97330dc..28cc55f 100644
--- a/glsl/shader_2d_wired.vert.glsl
+++ b/glsl/shader_2d_wired.vert.glsl
@@ -15,16 +15,42 @@
*/
#version 450
+#extension GL_ARB_separate_shader_objects : enable
-layout(location = 0) in vec2 in_position;
+layout(location = 0) out int out_instance_index;
layout(set = 0, binding = 0) uniform UBOView2D
{
mat4 proj;
} ubo_view;
+layout(set = 1, binding = 0) uniform UBORectangles
+{
+ vec4 positions[128];
+} ubo_sprite_positions;
+
void
main()
{
- gl_Position = ubo_view.proj * vec4(in_position, 0.0, 1.0);
+ vec2 coordinate;
+ vec4 position = ubo_sprite_positions.positions[gl_InstanceIndex];
+
+ out_instance_index = gl_InstanceIndex;
+
+ switch(gl_VertexIndex)
+ {
+ case 0:
+ coordinate = vec2(position.x, position.y);
+ break;
+ case 1:
+ coordinate = vec2(position.x, position.w);
+ break;
+ case 2:
+ coordinate = vec2(position.z, position.y);
+ break;
+ case 3:
+ coordinate = vec2(position.z, position.w);
+ break;
+ }
+ gl_Position = ubo_view.proj * vec4(coordinate, 0.0, 1.0);
}