Я пытаюсь создать фрагментный шейдер, который будет выполнять ту же работу, что и ползунок вывода уровней Photoshop.Я хотел бы сделать это на определенном канале (в данном случае синий).
У меня есть код, как показано ниже:
varying highp vec2 textureCoordinate;
uniform sampler2D inputImageTexture;
#define GammaCorrection(color, gamma) pow(color, vec3(1.0/gamma))
#define LevelsControlOutputRange(color, minOutput, maxOutput) mix(vec3(minOutput/255), vec3(maxOutput/255), color)
void main()
{
lowp vec4 texel = texture2D(inputImageTexture, textureCoordinate);
lowp vec3 outputColor;
outputColor.rgb = texel.rgb;
lowp vec3 pass3 = LevelsControlOutputRange(outputColor,200,255);
lowp vec4 pass4;
pass4.r = outputColor.r;
pass4.g = outputColor.g;
pass4.b = pass3.b;
gl_FragColor = pass4;
}
Это не влияет на результирующее изображение, поэтому я думаю,что мне, возможно, придется сделать больше со строкой:
pass4.b = pass3.b;
Может ли кто-нибудь помочь направить меня в правильном направлении?
Спасибо