array.frag 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. #version 130
  2. float gu[];
  3. float g4[4];
  4. float g5[5];
  5. uniform int a;
  6. float[4] foo(float a[5])
  7. {
  8. return float[](a[0], a[1], a[2], a[3]);
  9. }
  10. void bar(float[5]) {}
  11. void main()
  12. {
  13. {
  14. float gu[2]; // okay, new scope
  15. gu[2] = 4.0; // ERROR, overflow
  16. }
  17. gu[2] = 4.0; // okay
  18. gu[3] = 3.0;
  19. gu[a] = 5.0; // ERROR
  20. g4 = foo(g5);
  21. g5 = g4; // ERROR
  22. gu = g4; // ERROR
  23. foo(gu); // ERROR
  24. bar(g5);
  25. if (float[4](1.0, 2.0, 3.0, 4.0) == g4)
  26. gu[0] = 2.0;
  27. float u[];
  28. u[2] = 3.0; // okay
  29. float u[5];
  30. u[5] = 5.0; // ERROR
  31. foo(u); // okay
  32. gl_FragData[1000] = vec4(1.0); // ERROR
  33. gl_FragData[-1] = vec4(1.0); // ERROR
  34. gl_FragData[3] = vec4(1.0);
  35. const int ca[] = int[](3, 2);
  36. int sum = ca[0];
  37. sum += ca[1];
  38. sum += ca[2]; // ERROR
  39. const int ca3[3] = int[](3, 2); // ERROR
  40. int ica[] = int[](3, 2);
  41. int ica3[3] = int[](3, 2); // ERROR
  42. ica[3.1] = 3; // ERROR
  43. ica[u[1]] = 4; // ERROR
  44. }
  45. int[] foo213234(); // ERROR
  46. int foo234234(float[]); // ERROR
  47. int foo234235(vec2[] v); // ERROR
  48. vec3 guns[];
  49. float f = guns[7];
  50. void foo()
  51. {
  52. int uns[];
  53. uns[3] = 40;
  54. uns[1] = 30;
  55. guns[2] = vec3(2.4);
  56. float unsf[];
  57. bar(unsf); // ERROR
  58. }
  59. float[] foo2() // ERROR
  60. {
  61. float f[];
  62. return f;
  63. float g[9];
  64. return g; // ERROR
  65. }
  66. float gUnusedUnsized[];
  67. void foo3()
  68. {
  69. float resize1[];
  70. resize1[2] = 4.0;
  71. resize1.length(); // ERROR
  72. float resize1[3];
  73. resize1.length();
  74. float resize2[];
  75. resize2[5] = 4.0;
  76. float resize2[5]; // should be ERROR, but is not
  77. resize2.length();
  78. resize2[5] = 4.0; // ERROR
  79. }
  80. int[] i = int[](); // ERROR, need constructor arguments
  81. float emptyA[];
  82. float b = vec4(emptyA); // ERROR, array can't be a constructor argument
  83. uniform sampler2D s2d[];
  84. void foo4()
  85. {
  86. s2d[a]; // ERROR, can't variably index unsized array
  87. float local[] = gUnusedUnsized; // ERROR, can initialize with runtime-sized array
  88. }