58 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			GLSL
		
	
	
	
			
		
		
	
	
			58 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			GLSL
		
	
	
	
| #version 420 core
 | |
| 
 | |
| layout(depth_any) out float gl_FragDepth;
 | |
| layout(depth_greater) out float gl_FragDepth; // ERROR: redeclaration with different qualifier
 | |
| 
 | |
| void main()
 | |
| {
 | |
|     gl_FragDepth = 0.3;
 | |
| }
 | |
| 
 | |
| layout(depth_less) in float depth; // ERROR: depth_less only applies to gl_FragDepth
 | |
| layout(depth_any) out float gl_FragDepth;  // ERROR, done after use
 | |
| 
 | |
| layout(binding=0) uniform atomic_uint a[];
 | |
| 
 | |
| uniform writeonly image2D      i2D;
 | |
| ivec2 iv2dim = imageSize(i2D); // ERROR: imageSize called without enabling GL_ARB_shader_image_size extension
 | |
| #extension GL_ARB_shader_image_size : enable
 | |
| ivec2 iv2dim1 = imageSize(i2D);
 | |
| 
 | |
| #extension GL_ARB_shader_storage_buffer_object : enable
 | |
| 
 | |
| layout(binding = 0,std430) buffer Buffer
 | |
| {
 | |
|     int atomi;
 | |
|     uint atomu;
 | |
| };
 | |
| 
 | |
| void atomicOpPass()
 | |
| {
 | |
|     int origi = atomicAdd(atomi, 3);
 | |
|     uint origu = atomicAnd(atomu, 7u);
 | |
|     origi = atomicExchange(atomi, 4);
 | |
|     origu = atomicCompSwap(atomu, 10u, 8u);
 | |
| }
 | |
| 
 | |
| layout(binding = 2,std430) buffer ssboElem01
 | |
| {
 | |
|     int member01;
 | |
|     int memberArr01[2];
 | |
|     int memberUnsizedArr01[];
 | |
| } ssboStd430Arr[2];
 | |
| 
 | |
| // if turns on EShReflectionSharedStd140SSBO, SPIR-V would be different
 | |
| layout(binding = 3,shared) buffer ssboElem02
 | |
| {
 | |
|     int member02;
 | |
|     int memberArr02[2];
 | |
|     int memberUnsizedArr02[];
 | |
| } ssboSharedArr[2];
 | |
| 
 | |
| #extension GL_ARB_shader_storage_buffer_object : disable
 | |
| 
 | |
| layout(binding = 1,std430) buffer BufferFail // Error std430 and "buffer" block support disabled 
 | |
| {
 | |
|     int atom1i;
 | |
| };
 |