type
status
date
slug
summary
tags
category
icon
password
这篇文章是很久之前,在公司项目中实现Bloom的时候整理的,当时是为了做哥归纳,顺便给同事做分享。
主要参考的是知乎的一篇文章,写的相当不错。关于模糊算法参考了毛星云的模糊算法文章。

什么样的Bloom是好看的

光晕要足够大

下图是光晕太小的结果
notion image

不该亮的地方不亮亮

不该亮的地方亮,画面会很脏
notion image

光晕的亮度要有渐变

没渐变的光源看上去非常违和
notion image

影响光晕大小的因素

1,模糊卷积核的大小

如果卷积核的大越大,高亮颜色所影响的范围就越大,即光晕越大

2,模糊次数

模糊次数越多,高亮颜色扩散的范围就越大,即光晕越大

3,颜色强度

当颜色强度比较弱,颜色可能在模糊的过程中很快的被“分”完,影响光晕的大小

如何让光晕有渐变

在逐渐模糊画面去做bloom的扩散的过程中,也就得到了一组范围逐渐扩大的亮度信息。
notion image
那么如果我们把这些信息进行叠加,就可以得到一个类似高随分布的bloom,也就有了我们想要的渐变过程
notion image
左边是只保留最后的扩散结果的效果,右边是进行叠加的效果。
notion image

大致实现流程

notion image

为何选择升降采样

这是一个优化方案,我们在进行模糊的时候,会使用到 贴图名_TexelSize的数据,是一个四维向量,前两个值是宽高的倒数,后两个值是宽高,我们会只用前两个值去偏移UV。那么显而易见的是,如果贴图尺寸越小,我们偏移的就越快。并且模糊的时候扩散的相对范围就越广。也就更加快速的达到了我们增加模糊范围的目的。既节约了带宽,也提高了效率。

参考资料

我的UE4地编作品HBAO从论文到工程