gKit2 light
Loading...
Searching...
No Matches
min_atomic.glsl
Go to the documentation of this file.
1
3
4#version 430
5
6#ifdef COMPUTE_SHADER
7
8layout(binding= 0, std430) readonly buffer inputData
9{
10 int data[];
11};
12
13layout(binding= 1, std430) coherent buffer tmpData
14{
15 int tmp[];
16};
17
18uniform uint N;
19
20#if 1
21shared int min_group;
22
23layout(local_size_x= 1024) in;
24void main( )
25{
26 uint id= gl_GlobalInvocationID.x;
27
28 if(gl_LocalInvocationID.x == 0)
29 min_group= 1000000; // max int
30
31 barrier();
32 memoryBarrierShared();
33
34 if(id < N)
35 atomicMin(min_group, data[id]);
36
37 if(gl_LocalInvocationID.x == 0)
38 atomicMin(tmp[1], min_group);
39}
40#else
41layout(local_size_x= 1024) in;
42void main( )
43{
44 uint id= gl_GlobalInvocationID.x;
45
46 if(id < N)
47 atomicMin(tmp[1], data[id]);
48}
49#endif
50
51#endif
52