uint.frag 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. #version 300 es
  2. in uvec2 badu; // ERROR
  3. flat in uvec2 t;
  4. in highp float f;
  5. in highp vec2 tc;
  6. in bool bad; // ERROR
  7. uniform uvec4 v;
  8. uniform int i;
  9. uniform bool b;
  10. out uvec4 c;
  11. uniform lowp usampler2D usampler;
  12. void main()
  13. {
  14. int count = 1;
  15. uint u = t.y + 3u;
  16. const uint cu1error = 0xFFFFFFFF; // ERROR
  17. const uint cu1 = 0xFFFFFFFFU;
  18. const uint cu2 = -1u; // 0xFFFFFFFF
  19. const uint cu3 = 1U;
  20. const uint cu4error = 1; // ERROR
  21. const uint cu4 = 1u;
  22. if (cu1 == cu2)
  23. count *= 2; // done
  24. if (cu3 == cu4)
  25. count *= 3; // done
  26. if (cu2 == cu3)
  27. count *= 5; // not done
  28. const uint cushiftediierror = 0xFFFFFFFF >> 10; // ERROR
  29. const int cshiftedii = 0xFFFFFFFF >> 10;
  30. const uint cushiftedui = 0xFFFFFFFFu >> 10;
  31. const uint cushiftediuerror = 0xFFFFFFFF >> 10u; // ERROR
  32. const int cshiftediu = 0xFFFFFFFF >> 10u;
  33. const uint cushifteduu = 0xFFFFFFFFu >> 10u;
  34. if (cshiftedii == cshiftediu)
  35. count *= 7; // done
  36. if (cushiftedui == cushifteduu)
  37. count *= 11; // done
  38. if (cshiftedii == int(cushiftedui))
  39. count *= 13; // not done
  40. uint shiftediierror = 0xFFFFFFFF >> 10; // ERROR
  41. int shiftedii = 0xFFFFFFFF >> 10;
  42. uint shiftedui = 0xFFFFFFFFu >> 10;
  43. uint shiftediuerror = 0xFFFFFFFF >> 10u; // ERROR
  44. int shiftediu = 0xFFFFFFFF >> 10u;
  45. uint shifteduu = 0xFFFFFFFFu >> 10u;
  46. if (shiftedii == shiftediu)
  47. c = texture(usampler, tc);
  48. if (shiftedui == shifteduu)
  49. c = texture(usampler, tc + float(1u));
  50. if (shiftedii == int(shiftedui))
  51. c = texture(usampler, tc - vec2(2u));
  52. if (t.x > 4u) {
  53. float af = float(u);
  54. bool ab = bool(u);
  55. int ai = int(u);
  56. c += uvec4(uint(af), uint(ab), uint(ai), count);
  57. }
  58. const uint cmask1 = 0x0A1u;
  59. const uint cmask2 = 0xA10u;
  60. const uint cmask3 = cmask1 << 4;
  61. const uint cmask4 = 0xAB1u;
  62. if (cmask3 == cmask2)
  63. count *= 17; // done
  64. if ((cmask3 & cmask1) != 0u)
  65. count *= 19; // not done
  66. if ((cmask1 | cmask3) == cmask4)
  67. count *= 23; // done
  68. if ((cmask1 ^ cmask4) == 0xA10u)
  69. count *= 27; // done
  70. uint mask1 = 0x0A1u;
  71. uint mask2 = 0xA10u;
  72. uint mask3 = mask1 << 4;
  73. uint mask4 = 0xAB1u;
  74. if (mask3 == mask2)
  75. count *= 100;
  76. if ((mask3 & mask1) != 0u)
  77. count *= 101;
  78. if ((mask1 | mask3) == mask4)
  79. count *= 102;
  80. if ((mask1 ^ mask4) == 0xA10u)
  81. count *= 103;
  82. c += uvec4(count);
  83. }