layout(input_attachment_index = 1) SubpassInput subpass_f4 : register(t1); layout(input_attachment_index = 2) SubpassInput subpass_i4; layout(input_attachment_index = 3) SubpassInput subpass_u4; layout(input_attachment_index = 4) SubpassInputMS subpass_ms_f4; layout(input_attachment_index = 5) SubpassInputMS subpass_ms_i4; layout(input_attachment_index = 6) SubpassInputMS subpass_ms_u4; layout(input_attachment_index = 1) SubpassInput subpass_f3; layout(input_attachment_index = 2) SubpassInput subpass_i3; layout(input_attachment_index = 3) SubpassInput subpass_u3; layout(input_attachment_index = 4) SubpassInputMS subpass_ms_f3; layout(input_attachment_index = 5) SubpassInputMS subpass_ms_i3; layout(input_attachment_index = 6) SubpassInputMS subpass_ms_u3; layout(input_attachment_index = 1) SubpassInput subpass_f2; layout(input_attachment_index = 2) SubpassInput subpass_i2; layout(input_attachment_index = 3) SubpassInput subpass_u2; layout(input_attachment_index = 4) SubpassInputMS subpass_ms_f2; layout(input_attachment_index = 5) SubpassInputMS subpass_ms_i2; layout(input_attachment_index = 6) SubpassInputMS subpass_ms_u2; layout(input_attachment_index = 1) SubpassInput subpass_f; layout(input_attachment_index = 2) SubpassInput subpass_i; layout(input_attachment_index = 3) SubpassInput subpass_u; layout(input_attachment_index = 4) SubpassInputMS subpass_ms_f; layout(input_attachment_index = 5) SubpassInputMS subpass_ms_i; layout(input_attachment_index = 6) SubpassInputMS subpass_ms_u; [[vk::input_attachment_index(7)]] SubpassInput subpass_2; struct mystruct_f_t { float c0; float2 c1; float c2; }; struct mystruct_i_t { int c0; int2 c1; int c2; }; struct mystruct_u_t { uint c0; uint2 c1; uint c2; }; // TODO: ... // layout(input_attachment_index = 7) SubpassInput subpass_fs; // layout(input_attachment_index = 8) SubpassInputMS subpass_ms_fs; // layout(input_attachment_index = 7) SubpassInput subpass_is; // layout(input_attachment_index = 8) SubpassInputMS subpass_ms_is; // layout(input_attachment_index = 7) SubpassInput subpass_us; // layout(input_attachment_index = 8) SubpassInputMS subpass_ms_us; float4 main() : SV_Target0 { float4 result00 = subpass_f4.SubpassLoad(); int4 result01 = subpass_i4.SubpassLoad(); uint4 result02 = subpass_u4.SubpassLoad(); float4 result10 = subpass_ms_f4.SubpassLoad(3); int4 result11 = subpass_ms_i4.SubpassLoad(3); uint4 result12 = subpass_ms_u4.SubpassLoad(3); float3 result20 = subpass_f3.SubpassLoad(); int3 result21 = subpass_i3.SubpassLoad(); uint3 result22 = subpass_u3.SubpassLoad(); float3 result30 = subpass_ms_f3.SubpassLoad(3); int3 result31 = subpass_ms_i3.SubpassLoad(3); uint3 result32 = subpass_ms_u3.SubpassLoad(3); float2 result40 = subpass_f2.SubpassLoad(); int2 result41 = subpass_i2.SubpassLoad(); uint2 result42 = subpass_u2.SubpassLoad(); float2 result50 = subpass_ms_f2.SubpassLoad(2); int2 result51 = subpass_ms_i2.SubpassLoad(2); uint2 result52 = subpass_ms_u2.SubpassLoad(2); float result60 = subpass_f.SubpassLoad(); int result61 = subpass_i.SubpassLoad(); uint result62 = subpass_u.SubpassLoad(); float result70 = subpass_ms_f.SubpassLoad(2); int result71 = subpass_ms_i.SubpassLoad(2); uint result72 = subpass_ms_u.SubpassLoad(2); float4 result73 = subpass_2.SubpassLoad(); // TODO: // mystruct_f_t result80 = subpass_fs.SubpassLoad(); // mystruct_i_t result81 = subpass_is.SubpassLoad(); // mystruct_u_t result82 = subpass_us.SubpassLoad(); // mystruct_f_t result90 = subpass_ms_sf.SubpassLoad(2); // mystruct_i_t result91 = subpass_ms_if.SubpassLoad(2); // mystruct_u_t result92 = subpass_ms_uf.SubpassLoad(2); return 0; }