spv.atomic.comp 1.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. #version 450
  2. layout(binding = 0) uniform atomic_uint counter;
  3. layout(binding = 0, offset = 4) uniform atomic_uint countArr[4];
  4. shared uint value;
  5. int arrX[gl_WorkGroupSize.x];
  6. int arrY[gl_WorkGroupSize.y];
  7. int arrZ[gl_WorkGroupSize.z];
  8. uint func(atomic_uint c)
  9. {
  10. return atomicCounterIncrement(c);
  11. }
  12. void main()
  13. {
  14. memoryBarrierAtomicCounter();
  15. func(counter);
  16. uint val = atomicCounter(countArr[2]);
  17. atomicCounterDecrement(counter);
  18. atomicCounterIncrement(counter);
  19. }
  20. shared int atomi;
  21. shared uint atomu;
  22. layout (std140, binding = 0) restrict buffer dataSSB
  23. {
  24. float f;
  25. ivec4 n_frames_rendered;
  26. } result;
  27. void atoms()
  28. {
  29. int origi = atomicAdd(atomi, 3);
  30. uint origu = atomicAnd(atomu, value);
  31. origu = atomicOr(atomu, 7u);
  32. origu = atomicXor(atomu, 7u);
  33. origu = atomicMin(atomu, value);
  34. origi = atomicMax(atomi, 7);
  35. origi = atomicExchange(atomi, origi);
  36. origu = atomicCompSwap(atomu, 10u, value);
  37. atomicAdd(result.n_frames_rendered.z, 1);
  38. }