c++ - 实现 Photoshop 玻璃畸变滤镜

标签 c++ opengl shader distortion

<分区>

我有一项作业需要使用 OpenGL 实现玻璃畸变滤镜。基本上我被允许做的是从一幅图像中读取一个像素并将其写入另一幅图像(教师的限制)。

过滤后的结果应该是这样的:

Filter

是否有任何教程或代码解释其工作原理?

最佳答案

尝试位移噪声,例如: new_pic(x,y) = old_pic( x+dx(x,y), y+dy(x,y) ) 其中 dx 和 dy 是一些有界平滑函数,例如: dx(x,y)= 0 dy(x,y)= sin(y)*sin(x)

附注了解主要思想后,您可能需要更好的位移函数,我推荐 Perlin noise,这是 Ken Perlin 的精彩文章: http://www.noisemachine.com/talk1/

关于c++ - 实现 Photoshop 玻璃畸变滤镜,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26161291/

相关文章:

c++ - 如何在 Lua 中处理 C++ 类构造函数失败

opengl - 透视投影矩阵 : how to calculate vertical FoV from just horizontal FoV and aspect-ratio?

opengl-es - 我可以使 GLSL 结构具有 std140 布局吗?

c++ - CPP 线程中的嵌入式 Ruby 崩溃

c++ - 如何在没有 ImageMagick 的情况下将 ImageMagick 图像导入 Qt5 应用程序?

c++ - vim中的映射tab键

opengl - OpenGL3中的虚线?

python - 如何在 QGLWidget 中使用 glutInitDisplayMode() 来获得抗锯齿功能?

c++ - 视差着色器

iphone - glUniform4fv 给出 GL_INVALID_OPERATION