This implements a recent change to the GLSL specification to enforce this ill-defined situation.
		
			
				
	
	
		
			24 lines
		
	
	
		
			499 B
		
	
	
	
		
			GLSL
		
	
	
	
	
	
			
		
		
	
	
			24 lines
		
	
	
		
			499 B
		
	
	
	
		
			GLSL
		
	
	
	
	
	
#version 450 core
 | 
						|
 | 
						|
in gl_PerVertex {
 | 
						|
    float gl_CullDistance[3];
 | 
						|
} gl_in[gl_MaxPatchVertices];
 | 
						|
 | 
						|
out gl_PerVertex {
 | 
						|
    float gl_CullDistance[3];
 | 
						|
} gl_out[4];
 | 
						|
 | 
						|
void main()
 | 
						|
{
 | 
						|
    gl_out[gl_InvocationID].gl_CullDistance[2] = gl_in[1].gl_CullDistance[2];
 | 
						|
}
 | 
						|
 | 
						|
layout(location = 4) out bName1 {
 | 
						|
    float f;
 | 
						|
    layout(location = 5) float g;
 | 
						|
} bInst1[2];
 | 
						|
layout(location = 6) out bName2 {
 | 
						|
    float f;
 | 
						|
    layout(location = 7) float g;  // ERROR, location on array
 | 
						|
} bInst2[2][3];
 |