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图就是越黑越亮
让我突然想起之前抓取崩坏的渲染,一张白色为主的mask图,才明白人家做成这样是有他道理,我自己搞从黑色开始的mask图
最终方案:存储的alpha值越小,bloom效果越强烈
实现难点
2,3,4都比较容易,百度一下就有
关于存储alpha
1.对于Geometry渲染队列的直接在shader输入颜色的alpha直接修改就可以
standard存储alpha值
surface shader存储alpha值
2.对于半透的渲染物体来说(特效)因为输出本来就带alpha值,这个需要我们加一个pass来存储alpha值
第一个pass需要加ColorMask RGB(避免影响alpha存储)
第二个pass需要加ColorMask A(避免影响第一个pass输出颜色)
粒子shader alpha通道存储
(对于粒子系统,如果不用bloom效果就不要用改过可以存储alpha通道的shader,直接用原来没加alpha存储的版本
因为粒子系统,有两个pass的情况,相同材质球不能合并drawcall)
因为我看崩坏那些特效源码都是用两个pass,所以反推是这样用的,在实际项目中确实有效,不过多了pass,不过比之前那个方案渲染多一份来得快得多
建议:最好加个保底的bloom基础上再加单独这个bloom,效果会更好,这样子需要发光的粒子会更少
下面是输出屏幕的图source的alpha通道
下面是旧版的图,我就懒得更新,正常颜色应该和下图相反
这图可以在framedebug里面看到,选中alpha通道就可以
下面是优化过的bloom和扭曲效果
下面是提取出来的demo
链接:https://pan.baidu.com/s/1q4OcQlAFF5Zjm480pwdpPw
提取码:zahv
Unity 关于仿崩坏3部分Bloom(部分泛光)效果实现原理(附源码)相关推荐
- android实现阅读器底部菜单,android仿新闻阅读器菜单弹出效果实例(附源码DEMO下载)...
开发中碰到问题之后实现的,觉得可能有的开发者用的到或则希望独立成一个小功能DEMO,所以就放出来这么一个DEMO. 原本觉得是最后完成后发网站客户端的,可是这样体现不出一个功能一个功能的分析实现效果, ...
- android+仿iphone,Android编程实现仿iphone抖动效果的方法(附源码)
Android编程实现仿iphone抖动效果的方法(附源码) 时间:2021-05-20 本文实例讲述了Android编程实现仿iphone抖动效果的方法.分享给大家供大家参考,具体如下: 布局文件: ...
- Android App开发实战项目之仿喜马拉雅的听说书App实现(超详细 附源码和演示视频)
需要全部源码请点赞关注收藏后评论区留下QQ~~~ 一.需求分析 用户不仅能在平台上收听音频,还能成为内容创作者,总之长音频分享平台需要满足两种角色的使用:一种是作为内容创作者发布自己的音频,另一种是作 ...
- 帝国CMS7.5仿《问答库》题库问答学习平台网站源码 带手机版
简介: 帝国CMS7.5仿<问答库>题库问答学习平台网站源码 带手机版 开发环境:帝国cms 7.5 安装环境:php+mysql 学历考试等各类题库以及一些常见的普通练习的题目题库供大家 ...
- (https专业版)2018年1月5日高仿互站仿友价T5虚拟交易+实物交易商城-站长交易源码送手机版程序10套模版+首页微信登陆+头部下拉导航...
(https专业版)2018年1月5日高仿互站仿友价T5虚拟交易+实物交易商城-站长交易源码送手机版程序10套模版+首页微信登陆+头部下拉导航 首页支持微信登陆,只有第8套模板支持(endv模板),后 ...
- 一款仿网易云音乐Java开源系统(附源码)
嗨喽!Java后端编程的各位小伙伴们,由于公众号做了乱序推送改版,为了保证公众号的推文能够第一时间及时送达到大家手上,大家记得将公众号 加星标置顶 ,公众号每天会送上Java技术干货推文 ! 上篇推文 ...
- 仿翁天信网站旅行足迹地图HTML单页源码
介绍: 本文是仿翁天信网站旅行足迹地图HTML单页源码 index.html第85行修改去过的地方,源码内有标注. 网盘下载地址: http://kekewl.net/HxDxt18Hyaf 图片:
- 仿酷狗音乐播放器开发日志二十二 动态调色板控件第二版(性能大幅提升附源码)...
转载请说明原出处,谢谢~~ 在上次写的博客<仿酷狗音乐播放器开发日志二十一 开发动态调色板控件(附源码)>发布后,我在群里和网友讨论这个控件的性能和优 缺点,发现了他很多不足,还有很多提升 ...
- 【附源码】计算机毕业设计Python安卓仿驾考宝典系统APPye8qu(源码+程序+LW+调试部署)
[附源码]计算机毕业设计Python安卓仿驾考宝典系统APPye8qu(源码+程序+LW+调试部署) 该项目含有源码.文档.程序.数据库.配套开发软件.软件安装教程 项目运行环境配置: Python3 ...
最新文章
- 框架页面jquery装载
- win10 中redis client提示 ERR Client sent AUTH,but no password is set
- 最大流增广路(KM算法) HDOJ 1853 Cyclic Tour
- CSS布局教程:用DIV CSS实现国内经典式三行两列布局-CSS布局实例
- 【转】C#命名空间大全详细教程
- 基于阿里云物联网平台,我们这样实现简易出入监控
- html绘制圆形和弧形的代码,html5 canvas用来绘制弧形的代码实现
- python入门教程 非常详细-Python编程入门教程:从入门到高级,非常详细
- struts2的知识
- android获取手机联系人信息(电话,邮箱,姓名,头像)
- Solaris 11中的变化
- dts双轨制会员积分系统,直销系统,分销系统
- X5WebView使用
- 三节串联锂电池充电管理芯片,IC电路图,BOM表
- 嵌入式linux触摸屏校正命令,[转]基于嵌入式Linux的通用触摸屏校准程序
- 支付宝红包机器人不加好友解决思路
- 输入10个互不相同的数字并分成5对,问有多少种分法。
- CSS | 盒模型的宽度计算规则
- python 拆分excel工作表_Python几行代码轻松拆分表格
- Cadence Allegro PCB添加泪滴的方法
热门文章
- cmake(二十七)Cmake中target再理解
- 512mb内存linux,小谈Windows Phone的“512MB 内存够用理论”
- 现在有好多培训机构都说承诺包就业,是真的还是假的?
- 计算机第一次开机进行重要设置很慢,为何开机加载程序很慢!
- 华为哪些手机最先升级鸿蒙,哪些旧型号能升级鸿蒙系统 华为手机最低Mate 9系列起跳...
- cru测试中的risc-v基础指令
- Go :生成索引和切片边界检查的测试(附完整源码)
- 2010 27寸 imac 升级固态_2020年27英寸iMac的SSD模块已经被焊死 无法自行升级
- 软判决与硬判决的区别
- 51单片机入学第四课——使用在线仿真(以流水灯程序为模板)