我正在尝试创建一个片段着色器,它将与 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;
谁能帮我指出正确的方向?
谢谢