Sorting 在glsl中构建一种类型的像素排序
我正致力于在glsl中进行模拟,这是一种我已经看到广泛使用的效果(如图所示)。我是glsl新手,但在最大msp和抖动方面有相当丰富的经验,因此我正试图实现它(虽然语法应该足够相似,但它是glsl 2.1版) 目前,我正在接收一个纹理,然后将输出作为第二个纹理返回。使用luma阈值,我选择要排序的像素,但从这里开始,我不知道如何继续。我认为我需要:Sorting 在glsl中构建一种类型的像素排序,sorting,opengl,video,glsl,max-msp-jitter,Sorting,Opengl,Video,Glsl,Max Msp Jitter,我正致力于在glsl中进行模拟,这是一种我已经看到广泛使用的效果(如图所示)。我是glsl新手,但在最大msp和抖动方面有相当丰富的经验,因此我正试图实现它(虽然语法应该足够相似,但它是glsl 2.1版) 目前,我正在接收一个纹理,然后将输出作为第二个纹理返回。使用luma阈值,我选择要排序的像素,但从这里开始,我不知道如何继续。我认为我需要: 从初始的luma选定像素获取颜色值 沿特定轴将该颜色应用于后续像素 现在我不知道如何继续。我将包含我确实拥有的代码,很明显,在luma阈值之后没有任何
实际上,我制作了你在上面发布的原始图像。在GPU上进行排序可能是一项复杂的任务,因为我们不能像CPU那样轻松地进行比较 我会在一张纸上看一看这篇nvidia的论文。如果你想看一看,尽管我认为chrome auto play扼杀了它,所以你可能需要尝试FF或Safari 如果你四处搜索,也有一些例子。我想
祝你好运 不确定你想做什么,但我打赌你需要在特定方向投射光线,以整合源纹理中的颜色,直到达到treshold为止。与此非常相似的是,只需使用恒定的光线方向(如某些均匀方向)而不是光源方向(片段鼠标位置),并更改颜色组合方程。。。
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;
}
}