HPP_Graphics_4.1 Bloom算法

a). Bloom算法介绍

模拟光辉效果的算法
简单思路:提取较亮的部分进行模糊,然后与原图叠加后输出
HDR:使用HDR可以使提取到亮度大于1的区域
高斯模糊:使用高斯函数得到的高斯核去卷积图像
二维高斯核:将运算的复杂度从 N x N x W x H 减少到了 2 x N x W x H (对称性使N可减少到N/2+1)

Bloom思路

b). Bloom算法实现(Unity)

C#部分

调用OnRenderImage函数获取纹理和传输参数给Shader:

Shader部分

使用4个Pass计算Bloom效果:

第一个Pass提取较亮区域
第二个、第三个Pass分别在竖直和水平方向上计算高斯模糊
最后一个Pass将计算的结果与原图像进行混合

c). Bloom算法应用

配合自发光贴图使用
配合特效(如烟花)
GodRay(基于径向的后处理)
使用HDR时,配合Tonemapping(配合色调映射的bloom效果更加柔和)

Homework

带Mask的Bloom效果

noBloom_HW

Bloom_HW

Bloom_Mask

  • 实现思路:

    • 修改对应物体fragment返回的Alpha值作为Bloom遮罩

      Debug

    • 黑为Bloom效果最强,白为无Bloom(因为点光源会使得后处理中Alpha通道比FS返回的大,因此采用黑色Bloom效果最强,待验证