游戏中的辉光效果实现
链接: 图形 4.1 Bloom算法 游戏中的辉光效果实现.
Bloom效果的实现
原图:没有Bloom效果的图片
最简单的实现
实现原理:如笔记所说,提取原图像,给定一个阈值,使用高斯模糊阈值范围上的图像。再与原图相加,获得bloom效果
代码查看:
使用Mask蒙版的Bloom
对屏幕显示时使用
实现方式:普通Bloom中挂载在摄像机的脚本会用来计算高斯模糊,挂在脚本上的shader用来渲染图像。因此,只要在摄像机的Bloom脚本中添加Mask蒙版。同时在Shader上添加Mask贴图位置并计算即可。
**效果:**这里使用原图的红通道作为蒙版,可以看出,效果时比较明显(但不好看)
**缺点:**不能随时调整图像。对
使用左黑右白贴图作为蒙版
对场景本身的有选择Bloom效果
因为现在只是一个面片,所以不好表现多物体有前后强落对比时候的提供使用屏幕深度图做为蒙版,或者使用alpha(透明物体的Bloom效果应该更强),选择性的表现Bloom效果。
使用Alpha的例子:
链接: Unity 关于仿崩坏3部分Bloom(部分泛光)效果实现原理(附源码).
说这么多,不如动手画。
在之前链接: 几何细分着色器.里有写过一个通过屏幕绘制的方式只做mask。理论上也时可以套用,就是脚本太多出现套娃情况,对一个代码苦手(ctrl+c+v玩家),整理起来有点困难啊。
过去的案例
小总结
bloom效果太好用了,本身的迷离感与幻想感很容易在作品中被过量使用。虽然现在还存在性能上的问题。但未来会成为手机游戏的常用效果(已经是了)。总的来看,效果是复制美术表示的技术手段,在学习时候也看出已经在脚本上遇到越来越多问题。之后需要相同学习一波
一条看完BloomMask(看答疑后总结)
使用Alpha值计算
链接: 利用alpha值(0或1)来选取bloom的区域.
补充::Gold Ray也在链接中,使用径向模糊
使用SRP创建BloomMask
链接: ScriptableRenderPass创建BloomMask.
这个是比较推荐的方法,因为要是使用alpha通道作为BloomMask,对美术资产制作是多一个步骤,同时,当资源数量特别庞大以后,对整个优化也有很大影响。
使用Command Buffer
链接: Command Buffer创建BloomMask.
·通常bloom作为后期处理作用在相机上,但是,摄像机的纹理是管道中已经发生的所有渲染的融合
·为了在渲染管线中获得关于像素的更多信息,我们需要将该像素的信息编码到缓冲区中
·因此我们需要将我们想要实现发光的对象到一个缓冲区中,当需要实现bloom效果时,只需要读我们的glow buffer,模糊我们想要实现bloom效果的像素
结论:没有SRP时候可以考虑使用
直接使用贴图贴在屏幕上
常用于二维游戏,但缺少拓展性,看情况使用,何必绕一大圈(安慰自己。。)