aboutsummaryrefslogtreecommitdiffstats
path: root/shaders
diff options
context:
space:
mode:
authorladevieq <ladevie.quentin@gmail.com>2025-01-18 23:48:11 +0100
committerladevieq <ladevie.quentin@gmail.com>2025-01-18 23:48:11 +0100
commitc4a6f4bbaaf86d50d5da103894469a9bc12a1323 (patch)
treee8823d49b1e17f09b4193e53cf3bd311968bf9d0 /shaders
parent7c4abd18f453011c7ad45929f7d0df76d3b3a25a (diff)
Working api prototype
Diffstat (limited to 'shaders')
-rw-r--r--shaders/api-test-ui.frag20
-rw-r--r--shaders/api-test-ui.vert19
2 files changed, 28 insertions, 11 deletions
diff --git a/shaders/api-test-ui.frag b/shaders/api-test-ui.frag
index 57630dc..06553df 100644
--- a/shaders/api-test-ui.frag
+++ b/shaders/api-test-ui.frag
@@ -1,3 +1,4 @@
+#extension GL_EXT_buffer_reference : require
#extension GL_EXT_nonuniform_qualifier : require
layout(location = 0) out vec4 o_Color;
@@ -10,13 +11,24 @@ layout(location = 0) in struct {
layout(set = 0, binding = 0) uniform sampler samplers[];
layout(set = 0, binding = 1) uniform texture2D textures[];
layout(set = 0, binding = 2, rgba32f) uniform image2D images[];
-layout(set = 2, binding = 0) uniform parameters {
- uint vertex_buffer;
+// layout(set = 2, binding = 0) uniform parameters {
+// uint vertex_buffer;
+// vec2 scale;
+// vec2 translate;
+// uint texture_index;
+// } params;
+
+layout(buffer_reference) readonly buffer params {
vec2 scale;
vec2 translate;
uint texture_index;
-} params;
+ uint padding;
+};
+
+layout(push_constant) uniform constants {
+ layout(offset = 16) params ui_params;
+} consts;
void main() {
- o_Color = In.color * texture(sampler2D(textures[nonuniformEXT(params.texture_index)], samplers[nonuniformEXT(0U)]), In.uv.xy);
+ o_Color = In.color * texture(sampler2D(textures[nonuniformEXT(consts.ui_params.texture_index)], samplers[nonuniformEXT(0U)]), In.uv.xy);
}
diff --git a/shaders/api-test-ui.vert b/shaders/api-test-ui.vert
index 4824d23..9592a65 100644
--- a/shaders/api-test-ui.vert
+++ b/shaders/api-test-ui.vert
@@ -8,16 +8,21 @@ struct vertex {
uint color;
};
+layout(buffer_reference) readonly buffer params {
+ vec2 scale;
+ vec2 translate;
+ uint texture_index;
+ uint padding;
+};
+
layout(buffer_reference) readonly buffer vertices {
vertex vertices[];
};
-layout(set = 2, binding = 0) uniform parameters {
+layout(push_constant) uniform constants {
+ layout(offset = 16) params ui_params;
vertices vertex_buffer;
- vec2 scale;
- vec2 translate;
- uint texture_index;
-} params;
+} consts;
out gl_PerVertex {
vec4 gl_Position;
@@ -30,11 +35,11 @@ layout(location = 0) out struct {
void main() {
- vertex v = params.vertex_buffer.vertices[gl_VertexIndex];
+ vertex v = consts.vertex_buffer.vertices[gl_VertexIndex];
Out.color = unpackUnorm4x8(v.color);
Out.uv = vec2(v.uv_x, v.uv_y);
vec2 pos = vec2(v.pos_x, v.pos_y);
- gl_Position = vec4(pos * params.scale + params.translate, 0.0, 1.0);
+ gl_Position = vec4(pos * consts.ui_params.scale + consts.ui_params.translate, 0.0, 1.0);
}