// Our buffers are in std140 layout, so the generated code will need to compensate. layout(set=0, binding=1) uniform UniformBuffer { float2x2 u22; float2x3 u23; float2x4 u24; float3x2 u32; float3x3 u33; float3x4 u34; float4x2 u42; float4x3 u43; float4x4 u44; float2x2 au22[3]; float2x3 au23[3]; float2x4 au24[3]; float3x2 au32[3]; float3x3 au33[3]; float3x4 au34[3]; float4x2 au42[3]; float4x3 au43[3]; float4x4 au44[3]; }; layout(set=0, binding=2) buffer StorageBuffer { float2x2 s22; float2x3 s23; float2x4 s24; float3x2 s32; float3x3 s33; float3x4 s34; float4x2 s42; float4x3 s43; float4x4 s44; float2x2 as22[3]; float2x3 as23[3]; float2x4 as24[3]; float3x2 as32[3]; float3x3 as33[3]; float3x4 as34[3]; float4x2 as42[3]; float4x3 as43[3]; float4x4 as44[3]; }; half4 main() { float value = u22[0][0] + u23[0][0] + u24[0][0] + u32[0][0] + u33[0][0] + u34[0][0] + u42[0][0] + u43[0][0] + au44[0][0][0] + au22[0][0][0] + au23[0][0][0] + au24[0][0][0] + au32[0][0][0] + au33[0][0][0] + au34[0][0][0] + au42[0][0][0] + au43[0][0][0] + au44[0][0][0] + s22[0][0] + s23[0][0] + s24[0][0] + s32[0][0] + s33[0][0] + s34[0][0] + s42[0][0] + s43[0][0] + as44[0][0][0] + as22[0][0][0] + as23[0][0][0] + as24[0][0][0] + as32[0][0][0] + as33[0][0][0] + as34[0][0][0] + as42[0][0][0] + as43[0][0][0] + as44[0][0][0]; return half4(value); }