From 1cd2d838bf1682e125d52d12ac6f2960df65c7e0 Mon Sep 17 00:00:00 2001 From: Frederico Linhares Date: Wed, 21 Dec 2022 14:46:09 -0300 Subject: refa Merge Rectangle into Vector4D --- glsl/shader_2d_wired.frag.glsl | 11 +++++++---- glsl/shader_2d_wired.vert.glsl | 30 ++++++++++++++++++++++++++++-- 2 files changed, 35 insertions(+), 6 deletions(-) (limited to 'glsl') 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); } -- cgit v1.2.3