跟月影学可视化
月影
前奇虎 360 奇舞团团长,可视化 UI 框架 SpriteJS 核心开发者,《JavaScript 王者归来》作者
30206 人已学习
新⼈⾸单¥68
登录后,你可以任选4讲全文学习
课程目录
已完结/共 54 讲
跟月影学可视化
15
15
1.0x
00:00/00:00
登录|注册

17 | 如何使用后期处理通道增强图像效果?

跟随鼠标移动轨迹扩散
风向和风速
实现探照灯效果
实现其他效果
改进烟雾扩散效果
增加噪声
使用扩散模型
输出到FBO
输出到画布
创建FBO对象
使用bloomFragment着色器进行效果混合
对特定元素进行高斯模糊
执行多次渲染,一次对x轴,一次对y轴
使用blurFragment对第一次渲染后生成的纹理进行高斯模糊
执行WebGLProgram
绑定帧缓冲对象
创建帧缓冲对象
最后输出结果
可以进行一次或循环多次
将输出的结果再作为纹理,送入另一个WebGLProgram进行处理
执行WebGLProgram
将数据送入缓冲区
一种二次加工的手段
渲染出来的图像作为纹理输入给新着色器处理
后期处理通道的其他功能
小试牛刀
后期处理通道的核心原理
实现烟雾效果
实现辉光效果
实现Blur滤镜
一般过程
后期处理通道
要点总结
怎么使用后期处理通道增强图像效果

该思维导图由 AI 生成,仅供参考

你好,我是月影。
前面几节课,我们学习了利用向量和矩阵公式,来处理像素和生成纹理的技巧,但是这些技巧都有一定的局限性:每个像素是彼此独立的,不能共享信息。
为什么这么说呢?因为 GPU 是并行渲染的,所以在着色器的执行中,每个像素的着色都是同时进行的。这样一来,我们就不能获得某一个像素坐标周围坐标点的颜色信息,也不能获得要渲染图像的全局信息。
这会导致什么问题呢?如果我们要实现与周围像素点联动的效果,比如给生成的纹理添加平滑效果滤镜,就不能直接通过着色器的运算来实现了。
因此,在 WebGL 中,像这样不能直接通过着色器运算来实现的效果,我们需要使用其他的办法来实现,其中一种办法就是使用后期处理通道。所谓后期处理通道,是指将渲染出来的图像作为纹理输入给新着色器处理,是一种二次加工的手段。这么一来,虽然我们不能从当前渲染中获取周围的像素信息,却可以从纹理中获取任意 uv 坐标下的像素信息,也就相当于可以获取任意位置的像素信息了。
使用后期处理通道的一般过程是,我们先正常地将数据送入缓冲区,然后执行 WebGLProgram。只不过,在执行了 WebGLProgram 之后,我们要将输出的结果再作为纹理,送入另一个 WebGLProgram 进行处理,这个过程可以进行一次,也可以循环多次。最后,经过两次 WebGLProgram 处理之后,我们再输出结果。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文介绍了如何在WebGL中使用后期处理通道来增强图像的视觉效果。通过具体的代码示例和渲染流程,生动地展示了后期处理通道的应用方法,包括实现Blur滤镜、辉光效果和烟雾效果。核心原理是将第一次渲染后的内容输出到帧缓冲对象FBO中,再将其作为纹理图片进行下一次渲染,重复若干次后输出到屏幕上。读者可以通过本文快速了解并实践该技术,掌握处理图像的细节,包括颜色表示、滤镜处理、纹理造型等。此外,文章还提出了小试牛刀的挑战,鼓励读者改进烟雾扩散效果,并探索后期处理通道的更多功能,如实现类似探照灯效果。整体而言,本文对读者快速了解并实践后期处理通道技术具有一定的指导意义。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《跟月影学可视化》
新⼈⾸单¥68
立即购买
登录 后留言

全部留言(4)

  • 最新
  • 精选
  • 阿鑫
    探照灯效果: https://codepen.io/dajiangjun/pen/KKzNqLj。貌似不用后期通道处理更加简单

    作者回复: 探照灯效果可以用很多方式实现的,后期处理通道当然不只能实现探照灯,关键是能实现其他更复杂效果。

    2020-08-21
    2
  • 胡浩
    好秀啊
    2020-08-08
    1
  • 有一种踏实
    后处理方式实现探照灯效果:https://github.com/IDonotK/graphics/blob/master/homework/h17/index3.html 光场函数有待优化,真实的手电筒光场函数是怎么样的?
    2023-12-26归属地:上海
  • 樊瑞
    update 中的 renderer.uniforms.tMap = fbo.texture; 出现了两次,虽然不影响效果,但是干扰了学习;想了半天也没想到有什么特殊用处??? 第二次可以删了吧
    2021-03-04
    1
收起评论
显示
设置
留言
4
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部