| #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]; | |
| } |