spv.meshShaderTaskMem.mesh 700 B

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. #version 450
  2. #define MAX_VER 81
  3. #define MAX_PRIM 32
  4. #define BARRIER() \
  5. memoryBarrierShared(); \
  6. barrier();
  7. #extension GL_NV_mesh_shader : enable
  8. layout(local_size_x = 32) in;
  9. layout(max_vertices=MAX_VER) out;
  10. layout(max_primitives=MAX_PRIM) out;
  11. layout(triangles) out;
  12. // test use of task memory in mesh shaders:
  13. taskNV in taskBlock {
  14. float gid1[2];
  15. vec4 gid2;
  16. } mytask;
  17. buffer bufferBlock {
  18. float gid3[2];
  19. vec4 gid4;
  20. } mybuf;
  21. layout(location=0) out outBlock {
  22. float gid5;
  23. vec4 gid6;
  24. } myblk[];
  25. void main()
  26. {
  27. uint iid = gl_LocalInvocationID.x;
  28. myblk[iid].gid5 = mytask.gid1[1] + mybuf.gid3[1];
  29. myblk[iid].gid6 = mytask.gid2 + mybuf.gid4;
  30. }