12345678910111213141516171819202122232425262728293031323334353637383940 |
- #version 450
- #define MAX_VER 81
- #define MAX_PRIM 32
- #define BARRIER() \
- memoryBarrierShared(); \
- barrier();
- #extension GL_NV_mesh_shader : enable
- layout(local_size_x = 32) in;
- layout(max_vertices=MAX_VER) out;
- layout(max_primitives=MAX_PRIM) out;
- layout(triangles) out;
- // test use of shared memory in mesh shaders:
- writeonly uniform image2D uni_image;
- uniform block0 {
- uint uni_value;
- };
- shared vec4 mem[10];
- void main()
- {
- uint iid = gl_LocalInvocationID.x;
- uint gid = gl_WorkGroupID.x;
- for (uint i = 0; i < 10; ++i) {
- mem[i] = vec4(i+uni_value);
- }
- imageStore(uni_image, ivec2(iid), mem[gid]);
- imageStore(uni_image, ivec2(iid), mem[gid+1]);
- BARRIER();
- }
|