#version 450 | |
#extension GL_EXT_buffer_reference : enable | |
#extension GL_EXT_scalar_block_layout : enable | |
layout(buffer_reference, scalar) buffer T1 { | |
vec3 x[]; | |
}; | |
layout(buffer_reference, scalar) buffer T2 { | |
vec3 x[][4][2]; | |
}; | |
struct S | |
{ | |
highp ivec3 a; | |
mediump mat3 b[4]; | |
highp vec4 c; | |
}; | |
layout(buffer_reference, scalar) buffer T3 { | |
S s; | |
}; | |
layout(std430) buffer T4 { | |
T1 t1; | |
T2 t2; | |
T3 t3; | |
} t4; | |
layout(location = 0) flat in int i; | |
void main() | |
{ | |
vec3 y; | |
y = t4.t1.x[i]; | |
y = t4.t2.x[i][i][i]; | |
mat3 z = t4.t3.s.b[0]; | |
} |