spv.conversion.frag 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. #version 140
  2. bool u_b;
  3. bvec2 u_b2;
  4. bvec3 u_b3;
  5. bvec4 u_b4;
  6. int u_i;
  7. ivec2 u_i2;
  8. ivec3 u_i3;
  9. ivec4 u_i4;
  10. float u_f;
  11. vec2 u_f2;
  12. vec3 u_f3;
  13. vec4 u_f4;
  14. bool i_b;
  15. bvec2 i_b2;
  16. bvec3 i_b3;
  17. bvec4 i_b4;
  18. flat in int i_i;
  19. flat in ivec2 i_i2;
  20. flat in ivec3 i_i3;
  21. flat in ivec4 i_i4;
  22. in float i_f;
  23. in vec2 i_f2;
  24. in vec3 i_f3;
  25. in vec4 i_f4;
  26. void main()
  27. {
  28. bool b = bool(u_i) ^^ bool(u_f);
  29. bvec2 b2 = bvec2(u_i, u_f);
  30. bvec3 b3 = bvec3(u_i, u_f, i_i);
  31. bvec4 b4 = bvec4(u_i, u_f, i_i, i_f);
  32. int i = int(u_f) + int(b);
  33. ivec2 i2 = ivec2(u_f2) + ivec2(b2);
  34. ivec3 i3 = ivec3(u_f3) + ivec3(b3);
  35. ivec4 i4 = ivec4(u_f4) + ivec4(b4);
  36. float f = i;
  37. vec2 f2 = i2;
  38. vec3 f3 = i3;
  39. vec4 f4 = i4;
  40. f += (float(i) + float(b));
  41. f2 -= vec2(i2) + vec2(b2);
  42. f3 /= vec3(i3) + vec3(b3);
  43. f4 += vec4(i4) + vec4(b4);
  44. f4 += vec4(bvec4(i_i4));
  45. f4 += vec4(bvec4(u_f4));
  46. f += f - i;
  47. f2 += vec2(f, i) + i2;
  48. f3 += i3 + vec3(f, i, f);
  49. f4 += vec4(b, i, f, i) + i4;
  50. f2 += vec2(f, i) * i;
  51. f3 += vec3(f, i, f) + i;
  52. f4 += i - vec4(b, i, f, i);
  53. i2 += ivec2(f, i);
  54. i3 += ivec3(f, i, f);
  55. i4 += ivec4(b, i, f, i);
  56. if (f < i || i < f ||
  57. f2 == i2 ||
  58. i3 != f3)
  59. f = (b ? i : f2.x) + (b2.x ? f3.x : i2.y);
  60. gl_FragColor =
  61. b ||
  62. b2.x ||
  63. b2.y ||
  64. b3.x ||
  65. b3.y ||
  66. b3.z ||
  67. b4.x ||
  68. b4.y ||
  69. b4.z ||
  70. b4.w ? vec4(
  71. i +
  72. i2.x +
  73. i2.y +
  74. i3.x +
  75. i3.y +
  76. i3.z +
  77. i4.x +
  78. i4.y +
  79. i4.z +
  80. i4.w +
  81. f +
  82. f2.x +
  83. f2.y +
  84. f3.x +
  85. f3.y +
  86. f3.z +
  87. f4.x +
  88. f4.y +
  89. f4.z +
  90. f4.w) : vec4(1.0);
  91. // with constants...
  92. ivec4 cv2 = ivec4(1.0);
  93. bvec4 cv5 = bvec4(cv2);
  94. gl_FragColor += float(cv5);
  95. }