120.vert 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204
  1. #version 120
  2. in vec4 i; // ERROR
  3. out vec4 o; // ERROR
  4. attribute vec2 attv2;
  5. attribute vec4 attv4;
  6. uniform sampler2D s2D;
  7. invariant varying vec2 centTexCoord;
  8. invariant gl_Position;
  9. centroid gl_Position; // ERROR
  10. centroid centroid foo; // ERROR
  11. invariant gl_Position, gl_PointSize;
  12. void main()
  13. {
  14. centTexCoord = attv2;
  15. gl_Position = attv4;
  16. gl_ClipVertex = attv4;
  17. gl_ClipDistance[1] = 0.2; // ERROR
  18. vec3[12] a;
  19. vec4[a.length()] b;
  20. gl_Position = b[b.length()-1];
  21. float f[];
  22. int a1 = f.length(); // ERROR
  23. float f[7];
  24. int aa = f.length();
  25. int a2 = f.length; // ERROR
  26. int a3 = f.length(a); // ERROR
  27. int a4 = f.flizbit; // ERROR
  28. int a4 = f.flizbit(); // ERROR
  29. float md[2][4]; // ERROR
  30. float[2] md2[4]; // ERROR
  31. float[2][4] md3; // ERROR
  32. float md5, md6[2][3]; // ERROR
  33. float[2] md4, md7[4]; // ERROR
  34. float md9[2][3] = float[2][3](1, 2, 3, 4, 5, 6); // ERROR
  35. float md10, md11[2][3] = float[2][3](1, 2, 3, 4, 5, 6); // ERROR
  36. gl_PointSize = 3.8;
  37. }
  38. uniform float initted = 3.4; // okay
  39. const float concall = sin(0.3);
  40. int[2][3] foo( // ERROR
  41. float[2][3] a, // ERROR
  42. float[2] b[3], // ERROR
  43. float c[2][3]); // ERROR
  44. int overloadA(in float f);
  45. int overloadA(out float f); // ERROR, different qualifiers
  46. float overloadA(float); // ERROR, different return value for same signature
  47. float overloadA(out float f, int);
  48. float overloadA(int i);
  49. void overloadB(float, const in float) { }
  50. vec2 overloadC(int, int);
  51. vec2 overloadC(const in int, float);
  52. vec2 overloadC(float, int);
  53. vec2 overloadC(vec2, vec2);
  54. vec3 overloadD(int, float);
  55. vec3 overloadD(float, in int);
  56. vec3 overloadE(float[2]);
  57. vec3 overloadE(mat2 m);
  58. vec3 overloadE(vec2 v);
  59. vec3 overloadF(int);
  60. vec3 overloadF(float);
  61. void foo()
  62. {
  63. float f;
  64. int i;
  65. overloadB(f, f);
  66. overloadB(f, 2);
  67. overloadB(1, i);
  68. overloadC(1); // ERROR
  69. overloadC(1, i);
  70. overloadC(vec2(1), vec2(2));
  71. overloadC(f, 3.0); // ERROR, no way
  72. overloadC(ivec2(1), vec2(2));
  73. overloadD(i, f);
  74. overloadD(f, i);
  75. overloadD(i, i); // ERROR, ambiguous
  76. int overloadB; // hiding
  77. overloadB(1, i); // ERROR
  78. sin(1);
  79. texture2D(s2D, ivec2(0));
  80. clamp(attv4, 0, 1);
  81. clamp(ivec4(attv4), 0, 1);
  82. int a[2];
  83. overloadC(a, 3); // ERROR
  84. overloadE(a); // ERROR
  85. overloadE(3.3); // ERROR
  86. overloadE(vec2(3.3));
  87. overloadE(mat2(0.5));
  88. overloadE(ivec4(1)); // ERROR
  89. overloadE(ivec2(1));
  90. float b[2];
  91. overloadE(b);
  92. overloadF(1, 1); // ERROR
  93. overloadF(1);
  94. }
  95. varying vec4 gl_TexCoord[35]; // ERROR, size too big
  96. // tests for output conversions
  97. void outFun(in float, out ivec2, in int, out float);
  98. int outFunRet(in float, out int, const in int, out ivec4);
  99. ivec2 outFunRet(in float, out ivec4, in int, out ivec4);
  100. void foo2()
  101. {
  102. vec2 v2;
  103. vec4 v4;
  104. float f;
  105. int i;
  106. outFun(i, v2, i, f);
  107. outFunRet(i, f, i, v4);
  108. float ret = outFunRet(i, f, i, v4);
  109. vec2 ret2 = outFunRet(i, v4, i, v4);
  110. bool b = any(lessThan(v4, attv4)); // tests aggregate arg to unary built-in
  111. }
  112. void noise()
  113. {
  114. float f1 = noise1(1.0);
  115. vec2 f2 = noise2(vec2(1.0));
  116. vec3 f3 = noise3(vec3(1.0));
  117. vec4 f4 = noise4(vec4(1.0));
  118. }
  119. // version 130 features
  120. uniform int c;
  121. attribute ivec2 x;
  122. attribute vec2 v2a;
  123. attribute float c1D;
  124. attribute vec2 c2D;
  125. attribute vec3 c3D;
  126. uniform vec4 v4;
  127. void foo213()
  128. {
  129. float f = 3;
  130. switch (c) { // ERRORs...
  131. case 1:
  132. f = sin(f);
  133. break;
  134. case 2:
  135. f = f * f;
  136. default:
  137. f = 3.0;
  138. }
  139. int i;
  140. i << 3 | 0x8A >> 1 & 0xFF; // ERRORs...
  141. vec3 modfOut, modfIn;
  142. vec3 v11 = modf(modfIn, modfOut); // ERRORS...
  143. float t = trunc(f);
  144. vec2 v12 = round(v2a);
  145. vec2 v13 = roundEven(v2a);
  146. bvec2 b10 = isnan(v2a);
  147. bvec4 b11 = isinf(v4);
  148. sinh(c1D) + // ERRORS...
  149. cosh(c1D) * tanh(c2D);
  150. asinh(c4D) + acosh(c4D);
  151. atanh(c3D);
  152. int id = gl_VertexID; // ERROR
  153. gl_ClipDistance[1] = 0.3; // ERROR
  154. }
  155. int gl_ModelViewMatrix[] = 0;
  156. // token pasting (ERRORS...)
  157. #define mac abc##def
  158. int mac;
  159. #define macr(A,B) A ## B
  160. int macr(qrs,tuv);