summaryrefslogtreecommitdiffstats
path: root/tests/manual/rhi/computebuffer/buffer.comp
diff options
context:
space:
mode:
authorAlexandru Croitor <alexandru.croitor@qt.io>2019-07-11 17:17:13 +0200
committerAlexandru Croitor <alexandru.croitor@qt.io>2019-07-11 17:17:51 +0200
commit4dac45c9ee59ff6586d90d423654da91523ab679 (patch)
treecd4a4adf2cbc9e77bf86d2d11e71ec66afdf3be4 /tests/manual/rhi/computebuffer/buffer.comp
parent078cd61751aeaa310d35a3d596a21a36004a1a0f (diff)
parentf44850b5c3464cdda0ee9b1ee858d95f3ffaa3e2 (diff)
Merge remote-tracking branch 'origin/wip/qt6' into wip/cmake
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;
+ }
+}