Unity 关于仿崩坏3部分Bloom(部分泛光)效果实现原理(附源码)

之前写每个物体的材质球控制屏幕bloom效果,由于性能问题,换了另外一种实现方式

部分泛光的功能,这个是之前写的,不过性能不行,如果简单的游戏还可以,如果大场景的话就不行了

 

原理分析

我这边就研究崩坏3编译过的源码,下面是分析崩坏bloom效果实现

1.我看崩坏编译过的源码基本所有shader都会有一个_BloomFactor,这个用于控制泛光强度,用于存储输入屏幕那张图的alpha通道上

2.泛光强弱图:通过source的rendertexture的alpha乘以source的RGB,就得到一张泛光强弱图

3.泛光图:根据泛光的亮度阈值来获取一张那些地方需要发光的图

4.泛光图模糊:按照泛光图4个大小依次递半的(1/4,1/8,1/16,1/32)尺寸的rendertexture来进行高斯模糊,得到的四张图进行叠加

5.最终效果图:原图+泛光模糊图

PS:最近遇到一个问题就是点光源(顶点模式除外),影响rendertexture的alpha通道(会使alpha通道变大)

之前的方案是alpha值越大就越亮,加了点光源,本来暗的东西都变亮,所以为了解决点光源问题,我们就反过来写,alpha值为1就没有bloom效果,就是alpha越小就越亮,mask图就是越黑越亮</

评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值