создание типа сортировки пикселей в gsll

Я работаю над эмуляцией в glsl эффекта, который я видел довольно широко (пример на изображении). Я новичок в glsl, но имею приличный опыт работы с max msp и jitter, поэтому я пытаюсь реализовать его (синтаксис должен быть достаточно похожим, но это glsl версии 2.1).

В настоящее время я беру одну текстуру, а затем возвращаю результат в качестве второй текстуры. Используя порог яркости, я выбираю пиксели для сортировки, но отсюда я не могу понять, как продолжить. Я предполагаю, что мне нужно:

  1. Возьмите значение цвета из начального выделенного пикселя яркости.
  2. Примените этот цвет к следующему пикселю вдоль определенной оси.

И теперь я не могу понять, как продолжить. Я включу код, который у меня есть, который, очевидно, просто не имеет ничего после порога яркости. Любые советы или ресурсы будут с благодарностью.

введите здесь описание изображения

        uniform sampler2DRect tex0;
        uniform sampler2DRect tex1;

        varying vec2 texcoord0;
        varying vec2 texcoord1;

        uniform float thresh;
        const vec4 lumcoeff = vec4(0.299,0.587,0.114,0.0);

        void main()
        {
            vec4 input0 = texture2DRect(tex0, texcoord0);
            vec4 input1 = texture2DRect(tex1, texcoord1);

            float luma = dot(input0,lumcoeff);

            if(luma > thresh){
                gl_FragColor 
            }else{ 
                gl_FragColor = input0;
            }
        }

person aceslowman    schedule 29.01.2016    source источник
comment
Не уверен, что вы пытаетесь сделать, но могу поспорить, что вам нужно направить луч в определенном направлении, чтобы интегрировать цвета из исходной текстуры, пока не будет достигнуто пороговое значение. Очень похоже на этот световой эффект 2D raycasting, просто используйте постоянное направление луча (как некоторый унифицированный) вместо направления источника света (фрагмент -позиция мыши) и изменить уравнение комбинирования цветов...   -  person Spektre    schedule 30.01.2016


Ответы (1)


Я на самом деле сделал исходное изображение, которое вы разместили выше. Сортировка на графическом процессоре может быть сложной задачей, потому что мы не можем легко проводить сравнения, как это делает процессор.

Я бы взглянул на этот документ nvidia по битоновской сортировке слиянием. Я реализовал это в glsl здесь, если вы хотите взглянуть, хотя я думаю, что автоматическое воспроизведение Chrome убило так что вам, возможно, придется попробовать в FF или Safari.

Также есть несколько примеров на shadertoy, если поискать. Я думаю, что это может быть довольно близко к тому, на что вы надеетесь

Удачи!

person aferriss    schedule 29.08.2018