GPUImage:将过滤器应用于输入的一部分

时间:2013-06-20 19:29:40

标签: opengl-es gpuimage

我是OpenGL和GPUImage的新手,所以我不确定这是OpenGL还是GPUImage问题。

我编写了一个片段着色器,通过将颜色偏移应用于输出颜色,将输入分成颜色成分。

NSString *const kRGBShiftShaderString = SHADER_STRING
(
 varying highp vec2 textureCoordinate;

 uniform sampler2D inputImageTexture;

 uniform highp vec2 redOffset;
 uniform highp vec2 greenOffset;
 uniform highp vec2 blueOffset;

 void main()
 {
     highp vec4 textureColor      = texture2D(inputImageTexture, textureCoordinate);

     highp vec4 redOffsetColor    = texture2D(inputImageTexture, textureCoordinate + redOffset);
     highp vec4 greenOffsetColor  = texture2D(inputImageTexture, textureCoordinate + greenOffset);
     highp vec4 blueOffsetColor   = texture2D(inputImageTexture, textureCoordinate + blueOffset);

     highp vec4 outputColor;

     outputColor.r         = redOffsetColor.r;
     outputColor.g         = greenOffsetColor.g;
     outputColor.b         = blueOffsetColor.b;
     outputColor.a         = 1.0;

     gl_FragColor = outputColor;

 }
);

除了textureCoordinate + offset是>的情况之外,这是我想要的。 1或者<在其一个或多个组件中为0。在这种情况下,颜色会夹在输入纹理边缘的任何颜色处。

我希望发生的是当textureCoordinate + offset为>时,过滤器无效。 1或> 0。

我认为通过在着色器中添加条件来实现这一点非常愚蠢。相反,我宁愿告诉GPUImage过滤器仅适用于textureCoordinate + offset在[0,1]中的片段。我该怎么做?

0 个答案:

没有答案