#version 310 es | |
#extension GL_ARB_gl_spirv : enable | |
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); | |
} | |
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); | |
} |