40 lines
		
	
	
		
			718 B
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			40 lines
		
	
	
		
			718 B
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| #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();
 | |
| }
 | 
