summaryrefslogtreecommitdiffstats
path: root/tests/manual/rhi/computebuffer/buffer.comp
diff options
context:
space:
mode:
Diffstat (limited to 'tests/manual/rhi/computebuffer/buffer.comp')
-rw-r--r--tests/manual/rhi/computebuffer/buffer.comp41
1 files changed, 41 insertions, 0 deletions
diff --git a/tests/manual/rhi/computebuffer/buffer.comp b/tests/manual/rhi/computebuffer/buffer.comp
new file mode 100644
index 0000000000..a0d0350e37
--- /dev/null
+++ b/tests/manual/rhi/computebuffer/buffer.comp
@@ -0,0 +1,41 @@
+#version 440
+
+layout (local_size_x = 256) in;
+
+struct Data
+{
+ vec2 pos;
+ float dir;
+};
+
+layout(std140, binding = 0) buffer StorageBuffer
+{
+ Data d[];
+} buf;
+
+layout(std140, binding = 1) uniform UniformBuffer
+{
+ float step;
+ uint count;
+} ubuf;
+
+void main()
+{
+ uint index = gl_GlobalInvocationID.x;
+ if (index < ubuf.count) {
+ vec2 p = buf.d[index].pos;
+ float dir = buf.d[index].dir;
+
+ p.x += dir * ubuf.step * 0.01;
+ if (p.x > 1.0) {
+ p.x = 1.0;
+ buf.d[index].dir *= -1.0;
+ }
+ if (p.x < -1.0) {
+ p.x = -1.0;
+ buf.d[index].dir *= -1.0;
+ }
+
+ buf.d[index].pos = p;
+ }
+}