Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- uniform int is_r_on;
- uniform int is_g_on;
- uniform int is_b_on;
- uniform int is_c_on;
- uniform int is_m_on;
- uniform int is_y_on;
- varying vec2 v_vTexcoord;
- varying vec4 v_vColour;
- bool IsColor(vec4 rgb)
- {
- return (rgb.r != rgb.g) || (rgb.g != rgb.b) || (rgb.b != rgb.r);
- }
- float GetHue(vec4 rgb)
- {
- float rgbMin;
- float rgbMax;
- rgbMin = rgb.r < rgb.g ? (rgb.r < rgb.b ? rgb.r : rgb.b) : (rgb.g < rgb.b ? rgb.g : rgb.b);
- rgbMax = rgb.r > rgb.g ? (rgb.r > rgb.b ? rgb.r : rgb.b) : (rgb.g > rgb.b ? rgb.g : rgb.b);
- if (rgbMax == 0.0)
- {
- return 0.0;
- }
- if ((rgbMax - rgbMin) / rgbMax == 0.0)
- {
- return 0.0;
- }
- if (rgbMax == rgb.r)
- {
- return 0.0 + 43.0 * (rgb.g - rgb.b) / (rgbMax - rgbMin);
- }
- else if (rgbMax == rgb.g)
- {
- return 85.0 + 43.0 * (rgb.b - rgb.r) / (rgbMax - rgbMin);
- }
- else
- {
- return 171.0 + 43.0 * (rgb.r - rgb.g) / (rgbMax - rgbMin);
- }
- }
- void main()
- {
- float hue;
- gl_FragColor = v_vColour * texture2D(gm_BaseTexture, v_vTexcoord);
- if (IsColor(gl_FragColor))
- {
- hue = GetHue(gl_FragColor) + 255.0 / 12.0;
- if (hue < (255.0 / 6.0))
- {
- if (is_r_on == 0)
- {
- gl_FragColor = vec4(0.0, 0.0, 0.0, gl_FragColor.a);
- }
- }
- else if (hue < (255.0 / 6.0 * 2.0))
- {
- if (is_y_on == 0)
- {
- gl_FragColor = vec4(0.0, 0.0, 0.0, gl_FragColor.a);
- }
- }
- else if (hue < (255.0 / 6.0 * 3.0))
- {
- if (is_g_on == 0)
- {
- gl_FragColor = vec4(0.0, 0.0, 0.0, gl_FragColor.a);
- }
- }
- else if (hue < (255.0 / 6.0 * 4.0))
- {
- if (is_c_on == 0)
- {
- gl_FragColor = vec4(0.0, 0.0, 0.0, gl_FragColor.a);
- }
- }
- else if (hue < (255.0 / 6.0 * 5.0))
- {
- if (is_b_on == 0)
- {
- gl_FragColor = vec4(0.0, 0.0, 0.0, gl_FragColor.a);
- }
- }
- else
- {
- if (is_m_on == 0)
- {
- gl_FragColor = vec4(0.0, 0.0, 0.0, gl_FragColor.a);
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement