我正在努力在 glsl 中模拟一种我已经看到非常广泛使用的效果(图像中的示例)。我是 glsl 的新手,但在最大 msp 和抖动方面有相当多的经验,所以这就是我试图实现它的地方(虽然语法应该足够相似,但它是 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;
}
}