Files
jogl-compute-shaders-fireworks/src/com/persesgames/jogl/explosion/explosionCleanUp.comp
rnentjes 11ceadd67f Cleanup
2014-01-17 13:19:07 +01:00

31 lines
664 B
Plaintext

#version 430 core
struct explosion {
vec4 positionVelocity;
vec4 color;
};
layout (std430, binding = 0) buffer entities {
explosion e[];
};
layout(binding = 1, offset = 0) uniform atomic_uint lastCounter;
layout (local_size_x = 512) in;
void main() {
uint gid = gl_GlobalInvocationID.x;
uint last = atomicCounter(lastCounter);
if (gid < last && last > 0) {
if (e[gid].color.a == 0.0) {
uint old = atomicCounterDecrement(lastCounter);
e[gid].positionVelocity = e[old].positionVelocity;
e[gid].color = e[old].color;
e[old].color.a = 0;
}
}
}