How to create a filter with four input textures using GPUImage

838 Views Asked by At

I have a fragment shader code that requires four input textures like this:

 precision lowp float;

 varying highp vec2 textureCoordinate;

 uniform sampler2D inputImageTexture;
 uniform sampler2D inputImageTexture2;
 uniform sampler2D inputImageTexture3;
 uniform sampler2D inputImageTexture4;

 void main()
  {

  vec4 texel = texture2D(inputImageTexture, textureCoordinate);
   vec3 bbTexel = texture2D(inputImageTexture2, textureCoordinate).rgb;

   texel.r = texture2D(inputImageTexture3, vec2(bbTexel.r, texel.r)).r;
   texel.g = texture2D(inputImageTexture3, vec2(bbTexel.g, texel.g)).g;
   texel.b = texture2D(inputImageTexture3, vec2(bbTexel.b, texel.b)).b;

   vec4 mapped;
   mapped.r = texture2D(inputImageTexture4, vec2(texel.r, .16666)).r;
   mapped.g = texture2D(inputImageTexture4, vec2(texel.g, .5)).g;
   mapped.b = texture2D(inputImageTexture4, vec2(texel.b, .83333)).b;
   mapped.a = 1.0;

   gl_FragColor = mapped;
 }

and as the GPUImage only provide GPUImageThreeInputFilter at most, how do I write a filter with four input texture ? I have read the IFImageFilter which is available for more than 3 input textures (up to 6 input textures), but it can not be compiled with latest GPUImage.

0

There are 0 best solutions below