Coder Social home page Coder Social logo

Comments (1)

asadm avatar asadm commented on July 23, 2024

My progress so far:

I see that GPUImage can support up to 5 input images to the shader. So I kinda solved it with following fragment shader code:

varying highp vec2 textureCoordinate;
varying highp vec2 textureCoordinate2;
varying highp vec2 textureCoordinate3;
varying highp vec2 textureCoordinate4;
varying highp vec2 textureCoordinate5;

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


// MedianOfFive from http://stackoverflow.com/a/2117018
float MedianOfFive(float a, float b, float c, float d, float e)
{
    return b < a ? d < c ? b < d ? a < e ? a < d ? e < d ? e : d
    : c < a ? c : a
    : e < d ? a < d ? a : d
    : c < e ? c : e
    : c < e ? b < c ? a < c ? a : c
    : e < b ? e : b
    : b < e ? a < e ? a : e
    : c < b ? c : b
    : b < c ? a < e ? a < c ? e < c ? e : c
    : d < a ? d : a
    : e < c ? a < c ? a : c
    : d < e ? d : e
    : d < e ? b < d ? a < d ? a : d
    : e < b ? e : b
    : b < e ? a < e ? a : e
    : d < b ? d : b
    : d < c ? a < d ? b < e ? b < d ? e < d ? e : d
    : c < b ? c : b
    : e < d ? b < d ? b : d
    : c < e ? c : e
    : c < e ? a < c ? b < c ? b : c
    : e < a ? e : a
    : a < e ? b < e ? b : e
    : c < a ? c : a
    : a < c ? b < e ? b < c ? e < c ? e : c
    : d < b ? d : b
    : e < c ? b < c ? b : c
    : d < e ? d : e
    : d < e ? a < d ? b < d ? b : d
    : e < a ? e : a
    : a < e ? b < e ? b : e
    : d < a ? d : a;
}


void main()
{
    mediump vec4 image1 = texture2D(inputImageTexture, textureCoordinate);
    mediump vec4 image2 = texture2D(inputImageTexture2, textureCoordinate2);
    mediump vec4 image3 = texture2D(inputImageTexture3, textureCoordinate3);
    mediump vec4 image4 = texture2D(inputImageTexture4, textureCoordinate4);
    mediump vec4 image5 = texture2D(inputImageTexture5, textureCoordinate5);

    mediump float ra,ga,ba;

    ra = MedianOfFive(image1.r,image2.r,image3.r,image4.r,image5.r);
    ga = MedianOfFive(image1.g,image2.g,image3.g,image4.g,image5.g);
    ba = MedianOfFive(image1.b,image2.b,image3.b,image4.b,image5.b);

    gl_FragColor = vec4(ra, ga, ba, 1.0);
}

and then compiling as suggested in README.md about writing custom filters.

I still don't know if there is a better way of doing this.

from gpuimage2.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.