300.frag 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162
  1. #version 300 es
  2. void nodef1(float f); // ERROR, no default precision
  3. uniform sampler2D s2D;
  4. uniform lowp sampler3D s3D;
  5. uniform samplerCube sCube;
  6. uniform lowp samplerCubeShadow sCubeShadow;
  7. uniform lowp sampler2DShadow s2DShadow;
  8. uniform lowp sampler2DArray s2DArray;
  9. uniform lowp sampler2DArrayShadow s2DArrayShadow;
  10. uniform lowp isampler2D is2D;
  11. uniform lowp isampler3D is3D;
  12. uniform lowp isamplerCube isCube;
  13. uniform lowp isampler2DArray is2DArray;
  14. uniform lowp usampler2D us2D;
  15. uniform lowp usampler3D us3D;
  16. uniform lowp usamplerCube usCube;
  17. uniform lowp usampler2DArray us2DArray;
  18. precision lowp float;
  19. in float c1D;
  20. in vec2 c2D;
  21. in vec3 c3D;
  22. smooth vec4 c4D;
  23. flat in int ic1D;
  24. flat in ivec2 ic2D;
  25. flat in ivec3 ic3D;
  26. flat in ivec4 ic4D;
  27. noperspective in vec4 badv; // ERROR
  28. in sampler2D bads; // ERROR
  29. precision lowp uint; // ERROR
  30. struct s {
  31. int i;
  32. sampler2D s;
  33. };
  34. in s badout; // ERROR, can't contain a sampler
  35. // ERROR, can't have int in struct without flat
  36. struct S2 {
  37. vec3 c;
  38. float f;
  39. };
  40. in S2 s2;
  41. out vec3 sc;
  42. out float sf;
  43. uniform sampler2D arrayedSampler[5];
  44. void main()
  45. {
  46. float f;
  47. vec4 v;
  48. v = texture(s2D, c2D);
  49. v = textureProj(s3D, c4D);
  50. v = textureLod(s2DArray, c3D, 1.2);
  51. f = textureOffset(s2DShadow, c3D, ic2D, c1D); // ERROR, offset argument not constant
  52. v = texelFetch(s3D, ic3D, ic1D);
  53. v = texelFetchOffset(arrayedSampler[2], ic2D, 4, ic2D); // ERROR, offset argument not constant
  54. f = textureLodOffset(s2DShadow, c3D, c1D, ic2D);
  55. v = textureProjLodOffset(s2D, c3D, c1D, ic2D);
  56. v = textureGrad(sCube, c3D, c3D, c3D);
  57. f = textureGradOffset(s2DArrayShadow, c4D, c2D, c2D, ic2D);
  58. v = textureProjGrad(s3D, c4D, c3D, c3D);
  59. v = textureProjGradOffset(s2D, c3D, c2D, c2D, ic2D);
  60. v = texture(arrayedSampler[ic1D], c2D); // ERROR
  61. ivec4 iv;
  62. iv = texture(is2D, c2D);
  63. iv = textureProjOffset(is2D, c4D, ic2D);
  64. iv = textureProjLod(is2D, c3D, c1D);
  65. iv = textureProjGrad(is2D, c3D, c2D, c2D);
  66. iv = texture(is3D, c3D, 4.2);
  67. iv = textureLod(isCube, c3D, c1D);
  68. iv = texelFetch(is2DArray, ic3D, ic1D);
  69. iv.xy = textureSize(sCubeShadow, 2);
  70. float precise;
  71. double boo; // ERROR
  72. dvec2 boo2; // ERROR
  73. dvec3 boo3; // ERROR
  74. dvec4 boo4; // ERROR
  75. f += gl_FragCoord.y;
  76. gl_FragDepth = f;
  77. sc = s2.c;
  78. sf = s2.f;
  79. sinh(c1D) +
  80. cosh(c1D) * tanh(c2D);
  81. asinh(c4D) + acosh(c4D);
  82. atanh(c3D);
  83. }
  84. uniform multi {
  85. int[2] a[3]; // ERROR
  86. int[2][3] b; // ERROR
  87. int c[2][3]; // ERROR
  88. } multiInst[2][3]; // ERROR
  89. out vec4 colors[4];
  90. void foo()
  91. {
  92. colors[2] = c4D;
  93. colors[ic1D] = c4D; // ERROR
  94. }
  95. uniform s st1;
  96. uniform s st2;
  97. void foo13(s inSt2)
  98. {
  99. if (st1 == st2); // ERROR
  100. if (st1 != st2); // ERROR
  101. st1.s == st2.s; // ERROR
  102. inSt2 = st1; // ERROR
  103. inSt2 == st1; // ERROR
  104. }
  105. void foo23()
  106. {
  107. textureOffset(s2DShadow, c3D, ivec2(-8, 7), c1D);
  108. textureOffset(s2DShadow, c3D, ivec2(-9, 8), c1D);
  109. }
  110. void foo324(void)
  111. {
  112. float p = pow(3.2, 4.6);
  113. p += sin(0.4);
  114. p += distance(vec2(10.0, 11.0), vec2(13.0, 15.0)); // 5
  115. p += dot(vec3(2,3,5), vec3(-2,-1,4)); // 13
  116. vec3 c3 = cross(vec3(3,-3,1), vec3(4,9,2)); // (-15, -2, 39)
  117. c3 += faceforward(vec3(1,2,3), vec3(2,3,5), vec3(-2,-1,4)); // (-1,-2,-3)
  118. c3 += faceforward(vec3(1,2,3), vec3(-2,-3,-5), vec3(-2,-1,4)); // (1,2,3)
  119. vec2 c2 = reflect(vec2(1,3), vec2(0,1)); // (1,-3)
  120. c2 += refract(vec2(1,3), vec2(0,1), 1.0); // (1,-3)
  121. c2 += refract(vec2(1,3), vec2(0,1), 3.0);
  122. c2 += refract(vec2(1,0.1), vec2(0,1), 5.0); // (0,0)
  123. mat3x2 m32 = outerProduct(vec2(2,3), vec3(5,7,11));// rows: (10, 14, 22), (15, 21, 33)
  124. }
  125. uniform mediump; // ERROR
  126. layout(early_fragment_tests) in; // ERROR
  127. #ifndef GL_FRAGMENT_PRECISION_HIGH
  128. #error missing GL_FRAGMENT_PRECISION_HIGH
  129. #endif
  130. invariant in; // ERROR
  131. invariant in vec4; // ERROR
  132. invariant in vec4 fooinv; // ERROR
  133. float imageBuffer; // ERROR, reserved
  134. float uimage2DRect; // ERROR, reserved