120.frag 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249
  1. #version 120
  2. float lowp;
  3. float mediump;
  4. float highp;
  5. float precision;
  6. in vec4 i;
  7. out vec4 o;
  8. uniform sampler2D s2D;
  9. centroid varying vec2 centTexCoord;
  10. uniform mat4x2 m;
  11. struct s {
  12. float f;
  13. };
  14. void main()
  15. {
  16. mat2x3 m23 = mat2x3(m);
  17. int a;
  18. bool b;
  19. s sv = s(a);
  20. float[2] ia = float[2](3, i.y);
  21. float f1 = 1;
  22. float f = a;
  23. f = a;
  24. ivec3 iv3;
  25. vec3 v3 = iv3;
  26. f = f + a;
  27. f = a - f;
  28. f += a;
  29. f = a - f;
  30. v3 *= iv3;
  31. v3 = iv3 / 2.0f;
  32. v3 = 3.0 * iv3;
  33. v3 = 2 * v3;
  34. v3 = v3 - 2;
  35. if (f < a ||
  36. a <= f ||
  37. f > a ||
  38. f >= a ||
  39. a == f ||
  40. f != a);
  41. f = b ? a : f;
  42. f = b ? f : a;
  43. f = b ? a : a;
  44. s news = sv;
  45. i.xy + i.xyz; // ERROR
  46. m * i.xyz; // ERROR
  47. m + i; // ERROR
  48. int aoeu = 1.0; // ERROR
  49. f = b; // ERROR
  50. f = a + b; // ERROR
  51. f = b * a; // ERROR
  52. b = a; // ERROR
  53. b = b + f; // ERROR
  54. f |= b; // ERROR
  55. gl_FragColor = texture2D(s2D, centTexCoord);
  56. float flat;
  57. float smooth;
  58. float noperspective;
  59. float uvec2;
  60. float uvec3;
  61. float uvec4;
  62. //packed; // ERROR, reserved word
  63. {
  64. mat4 m;
  65. vec4 v;
  66. bool b;
  67. gl_FragColor += b ? v : m; // ERROR, types don't match around ":"
  68. }
  69. gl_FragColor.xr; // ERROR, swizzlers not from same field space
  70. gl_FragColor.xyxyx.xy; // ERROR, cannot make a vec5, even temporarily
  71. centTexCoord.z; // ERROR, swizzler out of range
  72. (a,b) = true; // ERROR, not an l-value
  73. }
  74. float imageBuffer;
  75. float uimage2DRect;
  76. int main() {} // ERROR
  77. void main(int a) {} // ERROR
  78. const int a; // ERROR
  79. int foo(in float a);
  80. int foo(out float a) // ERROR
  81. {
  82. return 3.2; // ERROR
  83. foo(a); // ERROR
  84. }
  85. bool gen(vec3 v)
  86. {
  87. if (abs(v[0]) < 1e-4F && abs(v[1]) < 1e-4)
  88. return true;
  89. }
  90. void v1()
  91. {
  92. }
  93. void v2()
  94. {
  95. return v1(); // ERROR, no expression allowed, even though void
  96. }
  97. void atest()
  98. {
  99. vec4 v = gl_TexCoord[1];
  100. v += gl_TexCoord[3];
  101. }
  102. varying vec4 gl_TexCoord[6]; // okay, assigning a size
  103. varying vec4 gl_TexCoord[5]; // ERROR, changing size
  104. mat2x2 m22;
  105. mat2x3 m23;
  106. mat2x4 m24;
  107. mat3x2 m32;
  108. mat3x3 m33;
  109. mat3x4 m34;
  110. mat4x2 m42;
  111. mat4x3 m43;
  112. mat4x4 m44;
  113. void foo123()
  114. {
  115. mat2 r2 = matrixCompMult(m22, m22);
  116. mat3 r3 = matrixCompMult(m33, m33);
  117. mat4 r4 = matrixCompMult(m44, m44);
  118. mat2x3 r23 = matrixCompMult(m23, m23);
  119. mat2x4 r24 = matrixCompMult(m24, m24);
  120. mat3x2 r32 = matrixCompMult(m32, m32);
  121. mat3x4 r34 = matrixCompMult(m34, m34);
  122. mat4x2 r42 = matrixCompMult(m42, m42);
  123. mat4x3 r43 = matrixCompMult(m43, m43);
  124. mat3x2 rfoo1 = matrixCompMult(m23, m32); // ERROR
  125. mat3x4 rfoo2 = matrixCompMult(m34, m44); // ERROR
  126. }
  127. void matConst()
  128. {
  129. vec2 v2;
  130. vec3 v3;
  131. mat4 m4b1 = mat4(v2, v3); // ERROR, not enough
  132. mat4 m4b2 = mat4(v2, v3, v3, v3, v3, v2, v2); // ERROR, too much
  133. mat4 m4g = mat4(v2, v3, v3, v3, v3, v3);
  134. mat4 m4 = mat4(v2, v3, v3, v3, v3, v2);
  135. mat3 m3 = mat3(m4);
  136. mat3 m3b1 = mat3(m4, v2); // ERROR, extra arg
  137. mat3 m3b2 = mat3(m4, m4); // ERROR, extra arg
  138. mat3x2 m32 = mat3x2(m4);
  139. mat4 m4c = mat4(m32);
  140. mat3 m3s = mat3(v2.x);
  141. mat3 m3a1[2] = mat3[2](m3s, m3s);
  142. mat3 m3a2[2] = mat3[2](m3s, m3s, m3s); // ERROR, too many args
  143. }
  144. uniform sampler3D s3D;
  145. uniform sampler1D s1D;
  146. uniform sampler2DShadow s2DS;
  147. void foo2323()
  148. {
  149. vec4 v;
  150. vec2 v2;
  151. float f;
  152. v = texture2DLod(s2D, v2, f); // ERROR
  153. v = texture3DProjLod(s3D, v, f); // ERROR
  154. v = texture1DProjLod(s1D, v, f); // ERROR
  155. v = shadow2DProjLod(s2DS, v, f); // ERROR
  156. v = texture1DGradARB(s1D, f, f, f); // ERROR
  157. v = texture2DProjGradARB(s2D, v, v2, v2); // ERROR
  158. v = shadow2DProjGradARB(s2DS, v, v2, v2); // ERROR
  159. }
  160. #extension GL_ARB_shader_texture_lod : require
  161. void foo2324()
  162. {
  163. vec4 v;
  164. vec2 v2;
  165. float f;
  166. v = texture2DLod(s2D, v2, f);
  167. v = texture3DProjLod(s3D, v, f);
  168. v = texture1DProjLod(s1D, v, f);
  169. v = shadow2DProjLod(s2DS, v, f);
  170. v = texture1DGradARB(s1D, f, f, f);
  171. v = texture2DProjGradARB(s2D, v, v2, v2);
  172. v = shadow2DProjGradARB(s2DS, v, v2, v2);
  173. v = shadow2DRectProjGradARB(s2DS, v, v2, v2); // ERROR
  174. }
  175. uniform sampler2DRect s2DRbad; // ERROR
  176. void foo121111()
  177. {
  178. vec2 v2;
  179. vec4 v = texture2DRect(s2DRbad, v2);
  180. }
  181. #extension GL_ARB_texture_rectangle : enable
  182. uniform sampler2DRect s2DR;
  183. uniform sampler2DRectShadow s2DRS;
  184. void foo12111()
  185. {
  186. vec2 v2;
  187. vec3 v3;
  188. vec4 v4;
  189. vec4 v;
  190. v = texture2DRect(s2DR, v2);
  191. v = texture2DRectProj(s2DR, v3);
  192. v = texture2DRectProj(s2DR, v4);
  193. v = shadow2DRect(s2DRS, v3);
  194. v = shadow2DRectProj(s2DRS, v4);
  195. v = shadow2DRectProjGradARB(s2DRS, v, v2, v2);
  196. }
  197. void voidTernary()
  198. {
  199. bool b;
  200. b ? foo121111() : foo12111();
  201. b ? foo121111() : 4; // ERROR
  202. b ? 3 : foo12111(); // ERROR
  203. }
  204. float halfFloat1 = 1.0h; // syntax ERROR