| #version 450 | |
| layout(binding = 0) uniform atomic_uint counter; | |
| layout(binding = 0, offset = 4) uniform atomic_uint countArr[4]; | |
| shared uint value; | |
| int arrX[gl_WorkGroupSize.x]; | |
| int arrY[gl_WorkGroupSize.y]; | |
| int arrZ[gl_WorkGroupSize.z]; | |
| uint func(atomic_uint c) | |
| { | |
| return atomicCounterIncrement(c); | |
| } | |
| void main() | |
| { | |
| memoryBarrierAtomicCounter(); | |
| func(counter); | |
| uint val = atomicCounter(countArr[2]); | |
| atomicCounterDecrement(counter); | |
| atomicCounterIncrement(counter); | |
| } | |
| shared int atomi; | |
| shared uint atomu; | |
| layout (std140, binding = 0) restrict buffer dataSSB | |
| { | |
| float f; | |
| ivec4 n_frames_rendered; | |
| } result; | |
| void atoms() | |
| { | |
| int origi = atomicAdd(atomi, 3); | |
| uint origu = atomicAnd(atomu, value); | |
| origu = atomicOr(atomu, 7u); | |
| origu = atomicXor(atomu, 7u); | |
| origu = atomicMin(atomu, value); | |
| origi = atomicMax(atomi, 7); | |
| origi = atomicExchange(atomi, origi); | |
| origu = atomicCompSwap(atomu, 10u, value); | |
| atomicAdd(result.n_frames_rendered.z, 1); | |
| } |