Advertisement
Guest User

Untitled

a guest
May 26th, 2019
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.91 KB | None | 0 0
  1. uniform int is_r_on;
  2. uniform int is_g_on;
  3. uniform int is_b_on;
  4. uniform int is_c_on;
  5. uniform int is_m_on;
  6. uniform int is_y_on;
  7.  
  8. varying vec2 v_vTexcoord;
  9. varying vec4 v_vColour;
  10.  
  11. bool IsColor(vec4 rgb)
  12. {
  13. return (rgb.r != rgb.g) || (rgb.g != rgb.b) || (rgb.b != rgb.r);
  14. }
  15.  
  16. float GetHue(vec4 rgb)
  17. {
  18. float rgbMin;
  19. float rgbMax;
  20.  
  21. rgbMin = rgb.r < rgb.g ? (rgb.r < rgb.b ? rgb.r : rgb.b) : (rgb.g < rgb.b ? rgb.g : rgb.b);
  22. rgbMax = rgb.r > rgb.g ? (rgb.r > rgb.b ? rgb.r : rgb.b) : (rgb.g > rgb.b ? rgb.g : rgb.b);
  23.  
  24. if (rgbMax == 0.0)
  25. {
  26. return 0.0;
  27. }
  28.  
  29. if ((rgbMax - rgbMin) / rgbMax == 0.0)
  30. {
  31. return 0.0;
  32. }
  33.  
  34. if (rgbMax == rgb.r)
  35. {
  36. return 0.0 + 43.0 * (rgb.g - rgb.b) / (rgbMax - rgbMin);
  37. }
  38. else if (rgbMax == rgb.g)
  39. {
  40. return 85.0 + 43.0 * (rgb.b - rgb.r) / (rgbMax - rgbMin);
  41. }
  42. else
  43. {
  44. return 171.0 + 43.0 * (rgb.r - rgb.g) / (rgbMax - rgbMin);
  45. }
  46. }
  47.  
  48. void main()
  49. {
  50. float hue;
  51.  
  52. gl_FragColor = v_vColour * texture2D(gm_BaseTexture, v_vTexcoord);
  53.  
  54. if (IsColor(gl_FragColor))
  55. {
  56. hue = GetHue(gl_FragColor) + 255.0 / 12.0;
  57. if (hue < (255.0 / 6.0))
  58. {
  59. if (is_r_on == 0)
  60. {
  61. gl_FragColor = vec4(0.0, 0.0, 0.0, gl_FragColor.a);
  62. }
  63. }
  64. else if (hue < (255.0 / 6.0 * 2.0))
  65. {
  66. if (is_y_on == 0)
  67. {
  68. gl_FragColor = vec4(0.0, 0.0, 0.0, gl_FragColor.a);
  69. }
  70. }
  71. else if (hue < (255.0 / 6.0 * 3.0))
  72. {
  73. if (is_g_on == 0)
  74. {
  75. gl_FragColor = vec4(0.0, 0.0, 0.0, gl_FragColor.a);
  76. }
  77. }
  78. else if (hue < (255.0 / 6.0 * 4.0))
  79. {
  80. if (is_c_on == 0)
  81. {
  82. gl_FragColor = vec4(0.0, 0.0, 0.0, gl_FragColor.a);
  83. }
  84. }
  85. else if (hue < (255.0 / 6.0 * 5.0))
  86. {
  87. if (is_b_on == 0)
  88. {
  89. gl_FragColor = vec4(0.0, 0.0, 0.0, gl_FragColor.a);
  90. }
  91. }
  92. else
  93. {
  94. if (is_m_on == 0)
  95. {
  96. gl_FragColor = vec4(0.0, 0.0, 0.0, gl_FragColor.a);
  97. }
  98. }
  99. }
  100. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement