フォトショップレベルの出力スライダーと同じ仕事をするフラグメントシェーダーを作成しようとしています。特定のチャンネル(この場合は青)でこれを実行したいと思います。
私は以下のようなコードを持っています:
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;
誰かが私を正しい方向に向けるのを手伝ってもらえますか?
ありがとう