| #version 440 core | |
| struct VertexInfo { | |
| float position[3]; | |
| float normal[3]; | |
| }; | |
| struct TriangleInfo { | |
| VertexInfo v[3]; | |
| }; | |
| buffer VertexCollection { | |
| TriangleInfo t[5]; | |
| uint padding[10]; | |
| }; | |
| buffer MultipleArrays { | |
| TriangleInfo tri[5]; | |
| VertexInfo vert[5]; | |
| float f[5]; | |
| } multiarray; | |
| buffer ArrayedBind { | |
| float a; | |
| float b; | |
| } buffers[3]; | |
| uniform UBO { | |
| VertexInfo verts[2]; | |
| float flt[8]; | |
| uvec4 unused; | |
| float uniform_multi[4][3][2]; | |
| } ubo; | |
| uniform float uniform_multi[4][3][2]; | |
| struct OutputStruct { | |
| float val; | |
| vec3 a; | |
| vec2 b[4]; | |
| mat2x2 c; | |
| }; | |
| out OutputStruct outval; | |
| out float outarr[3]; | |
| void main() | |
| { | |
| float f; | |
| f += t[0].v[0].position[0]; | |
| f += t[gl_InstanceID].v[gl_InstanceID].position[gl_InstanceID]; | |
| f += t[gl_InstanceID].v[gl_InstanceID].normal[gl_InstanceID]; | |
| f += multiarray.tri[gl_InstanceID].v[0].position[0]; | |
| f += multiarray.vert[gl_InstanceID].position[0]; | |
| f += multiarray.f[gl_InstanceID]; | |
| f += ubo.verts[gl_InstanceID].position[0]; | |
| f += ubo.flt[gl_InstanceID]; | |
| f += ubo.uniform_multi[0][0][0]; | |
| f += uniform_multi[gl_InstanceID][gl_InstanceID][gl_InstanceID]; | |
| f += buffers[gl_InstanceID].b; | |
| TriangleInfo tlocal[5] = t; | |
| outval.val = f; | |
| outarr[2] = f; | |
| } |