runtimeArray.vert 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. #version 450 core
  2. buffer bn {
  3. int a[];
  4. float b[];
  5. } buf;
  6. uniform un {
  7. int a[];
  8. float b[];
  9. } ubuf;
  10. buffer bna {
  11. int a[];
  12. float b[];
  13. } bufa[4];
  14. uniform una {
  15. int a[];
  16. float b[];
  17. } ubufa[4];
  18. buffer abn {
  19. int aba[];
  20. float abb[];
  21. };
  22. uniform aun {
  23. int aua[];
  24. float aub[];
  25. };
  26. layout(binding=1) uniform samplerBuffer uniformTexelBufferDyn[];
  27. layout(binding=2, r32f) uniform imageBuffer storageTexelBufferDyn[];
  28. layout(binding=3) uniform uname { float a; } uniformBuffer[];
  29. layout(binding=4) buffer bname { float b; } storageBuffer[];
  30. layout(binding=5) uniform sampler2D sampledImage[];
  31. layout(binding=6, r32f) uniform image2D storageImage[];
  32. layout(binding=8) uniform samplerBuffer uniformTexelBuffer[];
  33. layout(binding=9, r32f) uniform imageBuffer storageTexelBuffer[];
  34. int i;
  35. void main()
  36. {
  37. ubuf.a[3];
  38. ubuf.b[3];
  39. buf.a[3];
  40. buf.b[3];
  41. ubufa[3].a[3];
  42. ubufa[3].b[3];
  43. bufa[3].a[3];
  44. bufa[3].b[3];
  45. aua[3];
  46. aub[3];
  47. aba[3];
  48. abb[3];
  49. ubuf.a[i]; // ERROR
  50. ubuf.b[i]; // ERROR
  51. buf.a[i]; // ERROR
  52. buf.b[i];
  53. ubuf.a.length(); // ERROR
  54. ubuf.b.length(); // ERROR
  55. buf.a.length(); // ERROR
  56. buf.b.length();
  57. ubufa[1].a[i]; // ERROR
  58. ubufa[1].b[i]; // ERROR
  59. bufa[1].a[i]; // ERROR
  60. bufa[1].b[i];
  61. ubufa[1].a.length(); // ERROR
  62. ubufa[1].b.length(); // ERROR
  63. bufa[1].a.length(); // ERROR
  64. bufa[1].b.length();
  65. aua[i]; // ERROR
  66. aub[i]; // ERROR
  67. aba[i]; // ERROR
  68. abb[i];
  69. aua.length(); // ERROR
  70. aub.length(); // ERROR
  71. aba.length(); // ERROR
  72. abb.length();
  73. uniformTexelBufferDyn[1];
  74. storageTexelBufferDyn[1];
  75. uniformBuffer[1];
  76. storageBuffer[1];
  77. sampledImage[1];
  78. storageImage[1];
  79. uniformTexelBuffer[1];
  80. storageTexelBuffer[1];
  81. uniformTexelBufferDyn[i]; // ERROR, need extension
  82. storageTexelBufferDyn[i]; // ERROR, need extension
  83. uniformBuffer[i]; // ERROR, need extension
  84. storageBuffer[i]; // ERROR, need extension
  85. sampledImage[i]; // ERROR, need extension
  86. storageImage[i]; // ERROR, need extension
  87. uniformTexelBuffer[i]; // ERROR, need extension
  88. storageTexelBuffer[i]; // ERROR, need extension
  89. float local[] = ubuf.b; // ERROR, can initialize with runtime-sized array
  90. }