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)
b). Bloom算法实现(Unity)
C#部分
调用OnRenderImage函数获取纹理和传输参数给Shader:
Shader部分
使用4个Pass计算Bloom效果:
第一个Pass提取较亮区域
第二个、第三个Pass分别在竖直和水平方向上计算高斯模糊
最后一个Pass将计算的结果与原图像进行混合
c). Bloom算法应用
配合自发光贴图使用
配合特效(如烟花)
GodRay(基于径向的后处理)
使用HDR时,配合Tonemapping(配合色调映射的bloom效果更加柔和)
Homework
带Mask的Bloom效果
实现思路:
修改对应物体fragment返回的Alpha值作为Bloom遮罩
黑为Bloom效果最强,白为无Bloom(因为点光源会使得后处理中Alpha通道比FS返回的大,因此采用黑色Bloom效果最强,待验证)