Я не очень разбираюсь в шейдерах, это моя попытка написать шейдер, который выбирает определенный цвет и изменяет оттенок в противоположном направлении.
// convert to YCC color model color
vec2 RGBToCC(vec4 rgba) {
float Y = 0.299 * rgba.r + 0.587 * rgba.g + 0.114 * rgba.b;
return vec2((rgba.b - Y) * 0.565, (rgba.r - Y) * 0.713);
}
vec2 RGBAToCC (float r, float g, float b) {
float y = 0.299 * r + 0.587 * g + 0.114 * b;
return vec2((b - y) * 0.565, (r - y) * 0.713);
}
void main() {
texture2D( tex , uvCoord );
vec4 src1Color = texture2D(u_tex, texCoord);
keyCC = RGBAToCC( colorToPick.r , colorToPick.g , colorToPick.b );
vec2 CC = RGBToCC(src1Color);
float myCol = sqrt(pow(keyCC.x - CC.x, 2.0) + pow(keyCC.y - CC.y, 2.0));
myCol = smoothstep(range.x, range.y, mask);
if (myCol == 0.0)
{
// i want to shift the hue of the color to opposite direction
// if it is green than shift it toward magenta
}
}
Я могу выбрать цвет, но не могу способен понять, как изменить оттенок цвета в противоположном направлении.