spv.accessChain.frag 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. #version 420
  2. struct S
  3. {
  4. vec3 color;
  5. };
  6. layout(location = 0) out vec3 OutColor;
  7. flat in int u;
  8. void GetColor1(const S i)
  9. {
  10. OutColor += i.color.x;
  11. }
  12. void GetColor2(const S i, int comp)
  13. {
  14. OutColor += i.color[comp];
  15. }
  16. void GetColor3(const S i, int comp)
  17. {
  18. OutColor += i.color[comp].x;
  19. }
  20. void GetColor4(const S i, int comp)
  21. {
  22. OutColor += i.color[comp].x;
  23. }
  24. void GetColor5(const S i, int comp)
  25. {
  26. OutColor += i.color;
  27. }
  28. void GetColor6(const S i, int comp)
  29. {
  30. OutColor += i.color.yx[comp];
  31. }
  32. void GetColor7(const S i, int comp)
  33. {
  34. OutColor.xy += i.color.yxz.yx;
  35. }
  36. void GetColor8(const S i, int comp)
  37. {
  38. OutColor += i.color.yzx.yx.x.x;
  39. }
  40. void GetColor9(const S i, int comp)
  41. {
  42. OutColor.zxy += i.color;
  43. }
  44. void GetColor10(const S i, int comp)
  45. {
  46. OutColor.zy += i.color.xy;
  47. }
  48. void GetColor11(const S i, int comp)
  49. {
  50. OutColor.zxy.yx += i.color.xy;
  51. }
  52. void GetColor12(const S i, int comp)
  53. {
  54. OutColor[comp] += i.color.x;
  55. }
  56. void GetColor13(const S i, int comp)
  57. {
  58. OutColor.zy[comp] += i.color.x;
  59. }
  60. void GetColor14(const S i, int comp)
  61. {
  62. OutColor.zyx[comp] = i.color.x;
  63. }
  64. void main()
  65. {
  66. S s;
  67. OutColor = vec3(0.0);
  68. GetColor1(s);
  69. GetColor2(s, u);
  70. GetColor3(s, u);
  71. GetColor4(s, u);
  72. GetColor5(s, u);
  73. GetColor6(s, u);
  74. GetColor7(s, u);
  75. GetColor8(s, u);
  76. GetColor9(s, u);
  77. GetColor10(s, u);
  78. GetColor11(s, u);
  79. GetColor12(s, u);
  80. GetColor13(s, u);
  81. GetColor14(s, u);
  82. }