So schreiben Sie einen Fragment-Shader in GLSL, um ein Array mit 9 Gleitkommazahlen zu sortieren

Ich schreibe einen Fragment-Shader, um 9 Bilder im Median zusammenzufassen.

Ich habe noch nie mit GLSL gearbeitet, aber es schien das richtige Werkzeug für diesen Job zu sein, da OpenCL unter iOS nicht verfügbar ist und Medianing auf der CPU ineffizient ist. Folgendes habe ich bisher:

uniform sampler2D frames[9];
uniform vec2 wh;

void main(void)
{
    vec4 sortedFrameValues[9];
    float sortedGrayScaleValues[9];

    for (int i = 0; i < 9; i++)
    {
        sortedFrameValues[i] = texture2D(frames[i], -gl_FragCoord.xy / wh);
        sortedGrayScaleValues[i] = dot(sortedFrameValues[i].xyz, vec3(0.299, 0.587, 0.114));
    }

        // TODO: Sort sortedGrayScaleValues

    float gray = sortedGrayScaleValues[4];
    gl_FragColor = vec4(gray, gray, gray, 0);
}

Antworten auf die Frage(4)

Ihre Antwort auf die Frage