Я работаю над эмуляцией в glsl эффекта, который я видел довольно широко (пример на изображении). Я новичок в glsl, но имею приличный опыт работы с max msp и jitter, поэтому я пытаюсь реализовать его (синтаксис должен быть достаточно похожим, но это glsl версии 2.1).
В настоящее время я беру одну текстуру, а затем возвращаю результат в качестве второй текстуры. Используя порог яркости, я выбираю пиксели для сортировки, но отсюда я не могу понять, как продолжить. Я предполагаю, что мне нужно:
- Возьмите значение цвета из начального выделенного пикселя яркости.
- Примените этот цвет к следующему пикселю вдоль определенной оси.
И теперь я не могу понять, как продолжить. Я включу код, который у меня есть, который, очевидно, просто не имеет ничего после порога яркости. Любые советы или ресурсы будут с благодарностью.
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;
}
}