spv.meshShaderSharedMem.mesh 718 B

12345678910111213141516171819202122232425262728293031323334353637383940
  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 shared memory in mesh shaders:
  13. writeonly uniform image2D uni_image;
  14. uniform block0 {
  15. uint uni_value;
  16. };
  17. shared vec4 mem[10];
  18. void main()
  19. {
  20. uint iid = gl_LocalInvocationID.x;
  21. uint gid = gl_WorkGroupID.x;
  22. for (uint i = 0; i < 10; ++i) {
  23. mem[i] = vec4(i+uni_value);
  24. }
  25. imageStore(uni_image, ivec2(iid), mem[gid]);
  26. imageStore(uni_image, ivec2(iid), mem[gid+1]);
  27. BARRIER();
  28. }