Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
有可能得到这个吗;“色度偏移”;OpenGL着色器的效果_Opengl_Bitmap_Shader - Fatal编程技术网

有可能得到这个吗;“色度偏移”;OpenGL着色器的效果

有可能得到这个吗;“色度偏移”;OpenGL着色器的效果,opengl,bitmap,shader,Opengl,Bitmap,Shader,我希望能够产生这种效果,具体来说,就是颜色爬行/颜色偏移 OpenGL着色器是否可以实现这一点,或者我是否需要使用其他技术 我是OpenGL新手,我想尝试一下作为入门练习,但是如果有更好的方法,最终我想产生这种效果 仅供参考,我正在使用Cinder作为我的OpenGL框架 我知道这并不是很多信息,但我甚至很难找到这个效果的真正名称,所以我无法在谷歌上搜索它。我无法帮助您确定效果的名称,但我有一个产生这种效果的想法。我的理解是,每个颜色分量都有一定程度的偏移。将单个颜色分量从右向左简单平移,即可

我希望能够产生这种效果,具体来说,就是颜色爬行/颜色偏移

OpenGL着色器是否可以实现这一点,或者我是否需要使用其他技术

我是OpenGL新手,我想尝试一下作为入门练习,但是如果有更好的方法,最终我想产生这种效果

仅供参考,我正在使用Cinder作为我的OpenGL框架


我知道这并不是很多信息,但我甚至很难找到这个效果的真正名称,所以我无法在谷歌上搜索它。

我无法帮助您确定效果的名称,但我有一个产生这种效果的想法。我的理解是,每个颜色分量都有一定程度的偏移。将单个颜色分量从右向左简单平移,即可生成黑白原始图像:

获取所需图像的步骤
  • 获取纹理中的源黑白图像。如果是其他渲染的结果,请将其复制到纹理
  • 使用从(0,0)到(1,1)的纹理坐标并附加纹理渲染全屏四边形(或所需大小)
  • 应用片段着色器,该着色器使用纹理坐标的不同偏移对输入纹理进行3次采样。e、 g.-2 texel、0 texel和+2 texel偏移。如果需要,可以在不同的偏移量下过期并尝试更多示例
  • 通过仅保留每个样本的一个颜色分量来组合这三个样本
  • 如果性能无关紧要或着色器不可用,则可选择此选项
    不要使用像素着色器,而是在OpenGL上使用ADD函数进行混合。在附加纹理的情况下渲染3次相同的全屏四边形,每次使用纹理矩阵偏移查找。每个过程都会对输出颜色蒙版进行不同的遮罩,得到相同的结果:过程1=>红色,过程2=>绿色,过程3=>蓝色。

    您要寻找的效果称为“色度放大”,您可以在维基百科上查到它。你们已经得到了一个解决方案,但我认为作为一名物理学家,我有责任让你们对正在发生的事情有更深入的理解,以及如何将效应推广

    请记住,每个相机都有一些光圈,光通常被描述为波。波与孔径的相互作用称为衍射,但从数学上讲,它只是波函数与孔径函数的傅里叶变换的卷积。衍射取决于波长,因此这会根据颜色产生空间偏移。另一个影响因素是色散,即依赖于波长的折射。同样,衍射可以用卷积来描述

    现在卷积可以链接起来,产生一个完整的卷积内核。在高斯模糊滤波器的情况下,卷积核是在所有信道中相同的高斯分布。但是每个目标通道可以有不同的卷积核。@bernie建议的实际上是盒卷积核,在每个通道中移动几个像素

    这是一个很好的关于GLSL卷积滤波的教程。也可以使用for循环,而不是展开循环。


    我建议你使用一些高斯形状的内核,红色和蓝色的模糊度比绿色强,当然中心点会稍微移动。

    GeexLab有一个彩色缩写的演示,源代码在他们的着色器库中。

    仅供参考:你要找的名称是“彩色条纹”、“色差”和“颜色移动”。这三个词都指同一件事。很难找到关于如何产生这种效果的信息,但是有很多关于如何移除它的信息。幸运的是我找到了这个@米格尔-我也见过它被称为色度爬行或色度偏移,但那是很久以前的事了,1983年左右。它被称为色度缩写,它也适用于彩色图像。我希望我能把这两个回答都标记为答案,谢谢。