summaryrefslogtreecommitdiff
path: root/graphics/asymptote/base/shaders/sum2.glsl
diff options
context:
space:
mode:
Diffstat (limited to 'graphics/asymptote/base/shaders/sum2.glsl')
-rw-r--r--graphics/asymptote/base/shaders/sum2.glsl24
1 files changed, 24 insertions, 0 deletions
diff --git a/graphics/asymptote/base/shaders/sum2.glsl b/graphics/asymptote/base/shaders/sum2.glsl
new file mode 100644
index 0000000000..1ab03513eb
--- /dev/null
+++ b/graphics/asymptote/base/shaders/sum2.glsl
@@ -0,0 +1,24 @@
+layout(local_size_x=LOCAL_SIZE_X) in;
+
+uniform uint offset2;
+
+layout(binding=2, std430) buffer localSumBuffer
+{
+ uint localSum[];
+};
+
+void main(void)
+{
+ uint id=gl_GlobalInvocationID.x;
+
+ uint row=LOCAL_SIZE_X*id;
+ uint stop=row+LOCAL_SIZE_X;
+
+ uint Sum=localSum[row];
+ for(uint i=row+1u; i < stop; ++i) {
+ Sum += localSum[i];
+ localSum[i]=Sum;
+ }
+
+ localSum[offset2+id+1u]=Sum;
+}