spv.uint.frag 2.4 KB

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