hlsl.subpass.frag 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. layout(input_attachment_index = 1) SubpassInput<float4> subpass_f4 : register(t1);
  2. layout(input_attachment_index = 2) SubpassInput<int4> subpass_i4;
  3. layout(input_attachment_index = 3) SubpassInput<uint4> subpass_u4;
  4. layout(input_attachment_index = 4) SubpassInputMS<float4> subpass_ms_f4;
  5. layout(input_attachment_index = 5) SubpassInputMS<int4> subpass_ms_i4;
  6. layout(input_attachment_index = 6) SubpassInputMS<uint4> subpass_ms_u4;
  7. layout(input_attachment_index = 1) SubpassInput<float3> subpass_f3;
  8. layout(input_attachment_index = 2) SubpassInput<int3> subpass_i3;
  9. layout(input_attachment_index = 3) SubpassInput<uint3> subpass_u3;
  10. layout(input_attachment_index = 4) SubpassInputMS<float3> subpass_ms_f3;
  11. layout(input_attachment_index = 5) SubpassInputMS<int3> subpass_ms_i3;
  12. layout(input_attachment_index = 6) SubpassInputMS<uint3> subpass_ms_u3;
  13. layout(input_attachment_index = 1) SubpassInput<float2> subpass_f2;
  14. layout(input_attachment_index = 2) SubpassInput<int2> subpass_i2;
  15. layout(input_attachment_index = 3) SubpassInput<uint2> subpass_u2;
  16. layout(input_attachment_index = 4) SubpassInputMS<float2> subpass_ms_f2;
  17. layout(input_attachment_index = 5) SubpassInputMS<int2> subpass_ms_i2;
  18. layout(input_attachment_index = 6) SubpassInputMS<uint2> subpass_ms_u2;
  19. layout(input_attachment_index = 1) SubpassInput<float> subpass_f;
  20. layout(input_attachment_index = 2) SubpassInput<int> subpass_i;
  21. layout(input_attachment_index = 3) SubpassInput<uint> subpass_u;
  22. layout(input_attachment_index = 4) SubpassInputMS<float> subpass_ms_f;
  23. layout(input_attachment_index = 5) SubpassInputMS<int> subpass_ms_i;
  24. layout(input_attachment_index = 6) SubpassInputMS<uint> subpass_ms_u;
  25. [[vk::input_attachment_index(7)]] SubpassInput subpass_2;
  26. struct mystruct_f_t
  27. {
  28. float c0;
  29. float2 c1;
  30. float c2;
  31. };
  32. struct mystruct_i_t
  33. {
  34. int c0;
  35. int2 c1;
  36. int c2;
  37. };
  38. struct mystruct_u_t
  39. {
  40. uint c0;
  41. uint2 c1;
  42. uint c2;
  43. };
  44. // TODO: ...
  45. // layout(input_attachment_index = 7) SubpassInput<mystruct_f_t> subpass_fs;
  46. // layout(input_attachment_index = 8) SubpassInputMS<mystruct_f_t> subpass_ms_fs;
  47. // layout(input_attachment_index = 7) SubpassInput<mystruct_i_t> subpass_is;
  48. // layout(input_attachment_index = 8) SubpassInputMS<mystruct_i_t> subpass_ms_is;
  49. // layout(input_attachment_index = 7) SubpassInput<mystruct_u_t> subpass_us;
  50. // layout(input_attachment_index = 8) SubpassInputMS<mystruct_u_t> subpass_ms_us;
  51. float4 main() : SV_Target0
  52. {
  53. float4 result00 = subpass_f4.SubpassLoad();
  54. int4 result01 = subpass_i4.SubpassLoad();
  55. uint4 result02 = subpass_u4.SubpassLoad();
  56. float4 result10 = subpass_ms_f4.SubpassLoad(3);
  57. int4 result11 = subpass_ms_i4.SubpassLoad(3);
  58. uint4 result12 = subpass_ms_u4.SubpassLoad(3);
  59. float3 result20 = subpass_f3.SubpassLoad();
  60. int3 result21 = subpass_i3.SubpassLoad();
  61. uint3 result22 = subpass_u3.SubpassLoad();
  62. float3 result30 = subpass_ms_f3.SubpassLoad(3);
  63. int3 result31 = subpass_ms_i3.SubpassLoad(3);
  64. uint3 result32 = subpass_ms_u3.SubpassLoad(3);
  65. float2 result40 = subpass_f2.SubpassLoad();
  66. int2 result41 = subpass_i2.SubpassLoad();
  67. uint2 result42 = subpass_u2.SubpassLoad();
  68. float2 result50 = subpass_ms_f2.SubpassLoad(2);
  69. int2 result51 = subpass_ms_i2.SubpassLoad(2);
  70. uint2 result52 = subpass_ms_u2.SubpassLoad(2);
  71. float result60 = subpass_f.SubpassLoad();
  72. int result61 = subpass_i.SubpassLoad();
  73. uint result62 = subpass_u.SubpassLoad();
  74. float result70 = subpass_ms_f.SubpassLoad(2);
  75. int result71 = subpass_ms_i.SubpassLoad(2);
  76. uint result72 = subpass_ms_u.SubpassLoad(2);
  77. float4 result73 = subpass_2.SubpassLoad();
  78. // TODO:
  79. // mystruct_f_t result80 = subpass_fs.SubpassLoad();
  80. // mystruct_i_t result81 = subpass_is.SubpassLoad();
  81. // mystruct_u_t result82 = subpass_us.SubpassLoad();
  82. // mystruct_f_t result90 = subpass_ms_sf.SubpassLoad(2);
  83. // mystruct_i_t result91 = subpass_ms_if.SubpassLoad(2);
  84. // mystruct_u_t result92 = subpass_ms_uf.SubpassLoad(2);
  85. return 0;
  86. }