今天主要来讲一下怎么用GPUImage来手撸一个双输入(blend)的滤镜。
那么先说一下为什么要自己手撸多输入的滤镜:
双输入的滤镜其实是三输入(也就是多个输入端滤镜)的简单版,让大家比较容易上手。
在实际上写app的时候,往往一个滤镜效果是不能满足需求的,而像:0.5的亮度+0.87的透明度+柔光混合+RGB调整,这种分开做都比较简单,但是合并起来则会使代码变得超长超恶心的效果才是需求,当然可以是利用现成的GPUImage的Filter来叠加达到效果,教程请看:用GPUImage做难一点点的效果 但是这里我们用一个fsh文件来写,那么代码量就大大滴减少了。
双输入的滤镜可以通过GPUImageTwoInputFilter来实现,只要实现了叠加的算法就可以了。
_downSoftLightBlendFilter = [[GPUImageTwoInputFilter alloc] initWithFragmentShaderFromFile:@"customBlendShader"];
customBlendShader.fsh 代码如下:
varying highp vec2 textureCoordinate;
varying highp vec2 textureCoordinate2;
uniform sampler2D inputImageTexture;
uniform sampler2D inputImageTexture2;
void main()
{
/