summaryrefslogtreecommitdiff
path: root/glsl
diff options
context:
space:
mode:
Diffstat (limited to 'glsl')
-rw-r--r--glsl/shader_2d_wired.frag.glsl11
-rw-r--r--glsl/shader_2d_wired.vert.glsl30
2 files changed, 35 insertions, 6 deletions
diff --git a/glsl/shader_2d_wired.frag.glsl b/glsl/shader_2d_wired.frag.glsl
index 0671223..569b950 100644
--- a/glsl/shader_2d_wired.frag.glsl
+++ b/glsl/shader_2d_wired.frag.glsl
@@ -15,16 +15,19 @@
*/
#version 450
+#extension GL_ARB_separate_shader_objects : enable
+
+layout(location = 0) in flat int in_instance_index;
layout(location = 0) out vec4 out_color;
-layout(set = 1, binding = 0) uniform UBOModel2D
+layout(set = 1, binding = 1) uniform UBOColors
{
- vec3 color;
-} ubo_model_2d;
+ vec3 colors[128];
+} ubo_colors;
void
main()
{
- out_color = vec4(ubo_model_2d.color, 1.0);
+ out_color = vec4(ubo_colors.colors[in_instance_index], 1.0);
}
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);
}