Bloom渲染是游戏中常用的,在Unity和UE4中也有Bloom渲染算法如果我们自己实现Bloom渲染算法,该如何实现呢?网上关于Bloom的实现算法讲述的也比较多,但是我们本篇实现的Bloom渲染算法相对来说比较简单,但是效果也不赖。我们讲述的同样是引擎底层实现的Bloom渲染算法,我们在实现渲染算法之前都会查阅相关资料,那我们自己编写Bloom渲染算法,参考的网址:
https://learnopengl.com/Advanced-Lighting/Bloom

引擎底层编写的Bloom重点参考的是该篇关于Bloom的实现,作为后处理算法,其实就是对整个渲染场景的图片做二次加工。如下图所示:
实现Bloom渲染效果在引擎中的流程如下所示:

其实,我们参考的Bloom渲染它的Shader实现也是遵从上面三个步骤,它的源码下载地址:
https://github.com/JoeyDeVries/LearnOpenGL

Shader的编写基本都差不多,当然我们用别人的代码不需要照搬,Bloom重点在片段着色器中的的处理。我们一共使用了三个Shader文件,对应上图的三个步骤:
第一步:bright filter
也就是我们的Bloom的实现,没有大家想想的复杂公式,核心代码如下所示:
它主要是对亮度的过滤,几行代码搞定了。再看第二步。
第二步:Blur
该步骤实现的是Blur渲染效果,核心代码如下所示:

第三步:Combine Bloom
就是把前两步是西安的渲染效果组合在一起形成最终效果,Shader代码如下所示:

这样我们需要的Shader代码就完成了,下面就在引擎中调用它们了,我们还是按照上面提到的三步法进行。
第一步引擎对应代码:

第二步的引擎对应代码:

第三步的引擎对应代码:

代码写完了,肯定要看一下效果是不是我们想要的,引擎也提供了如下所示:

总结:
本篇博客并没有讲述复杂的算法,只是将Bloom的实现分成了三个步骤,其实我们在实现某些效果时,如果自己没有思路,要参考网上提供的资源,首先我们要学会查找资源,找到自己想要的,其次要会利用别人的资源为我所用,要去理解人家怎么实现的,最后将它们应用到我们的项目中,通过调整得到想要的效果。当然在加入到我们自己的项目时要活学活用,不能一股脑的搬过来,取其精华弃其糟粕。

聊聊引擎底层如何实现Bloom渲染算法相关推荐

  1. 聊聊引擎底层如何实现BRDF渲染算法

    BRDF作为比较流行的渲染算法,但凡成熟的引擎的都有此功能,我们自己写引擎也不例外,我在编写引擎时也会参考网上的一些资料,这也是学习的过程,先介绍BRDF,它是双向反射分布函数,说白了它是对于物体表面 ...

  2. 聊聊引擎底层如何实现SSAO渲染

    网上关于SSAO渲染介绍的很多,本篇博客也是将现有算法应用到我们自己研发的3D引擎中,SSAO被称为屏幕空间环境光遮蔽,它的原理是:对于铺屏四边形(Screen-filled Quad)上的每一个片段 ...

  3. [引擎开发] 深入GPU和渲染优化(基础篇)

    GPU/渲染优化是引擎开发中非常重要的一个环节,实际上在工程中做任何渲染相关的内容,都需要考虑到背后的原理和性能.另一方面,GPU/渲染优化是一个非常宽泛的课题,它不仅涉及到针对底层GPU的架构做出的 ...

  4. 虚幻引擎学习之路:渲染模块之光照系统

    原文链接:https://blog.uwa4d.com/archives/Study_unreal4_Rendering_1.html 写在前面 "UWA什么时候可以支持Unreal引擎?& ...

  5. 高糊视频秒变4K!Facebook发布低分辨率视频实时渲染算法,网友:是好东西,但是玩不起...

    贾浩楠 发自 凹非寺 量子位 报道 | 公众号 QbitAI 还记得那个引来巨大争议,最后把LeCun逼退推特的低分辨率图像还原算法PULSE吗? PULSE是针对低分辨率图像进行还原的,而就在PUL ...

  6. Scratch上传作品加载之分析(封面获取),base64转blob 前后端方案,前端 后端 解析base64为Blob,2021年较底层进行sb3作品渲染

    采坑的初衷: 考虑到作品的私有性.用户上传的作品必须是私有的,当且仅当用户设置作品公开 (理论上得提交给管理员,进行审核,管理员进行操作).那么才能够通过projectHost的方式去请求. 也就是说 ...

  7. Unity3D 海水多线程渲染算法实现

    笔者介绍:姜雪伟,IT公司技术合伙人,IT高级讲师,CSDN社区专家,特邀编辑,畅销书作者,已出版书籍:<手把手教你架构3D游戏引擎>电子工业出版社和<Unity3D实战核心技术详解 ...

  8. 简要评说Adobe的FlashPlayer的渲染算法

    前些时候看到CSDN上一篇文章介绍FlashPlayer的渲染效能是HTML 5的数倍文章,回想起几年来对Adobe的FlashPlayer研究,想从理论上探究一下为什么会有这样的结果,同时也解释一下 ...

  9. 虚幻引擎学习之路:渲染模块之全局光照明

    虚幻引擎学习之路:渲染模块之全局光照明 https://zhuanlan.zhihu.com/p/31791392 原文链接:虚幻引擎学习之路:渲染模块之全局光照明 - UWA Blog 之前UWA为 ...

最新文章

  1. document.getElementsByTagName()方法的返回值
  2. spring boot + zookeeper 注册中心
  3. springMVC 几种页面跳转方式
  4. Codeforces Round #359 (Div. 2) C. Robbers' watch 搜索
  5. 小程序模仿通讯录制作
  6. Vivado 查看HLS生成IP的资源和最高频率
  7. ADASIS_v2:根据车辆位置和数字地图描述车辆前方的道路几何及其相关属性(use)
  8. ubuntu安装微信linux电脑版
  9. 计算机械效率的简便公式,机械效率公式
  10. iOS绘制1像素的线
  11. 安装应用宝统一链接服务器,数据互通|安卓应用宝部分区服服务器数据互通维护公告...
  12. python控制苹果手机触摸屏失灵怎么办_iPhone手机触屏不灵敏怎么办 触屏失灵乱跳等问题解决方法大全必看...
  13. 数字货币&区块链动态
  14. 在vue里面使用eval()函数
  15. 2021年中国皮革行业市场现状分析,PU合成革趋势明显,汽车皮革是关键需求「图」
  16. 路由器dns服务器怎么才能自动改变,路由器服务器dns怎么设置技巧教程 路由器如何设置修改dns最好...
  17. 中文分词_数据分析之中文分词
  18. 武大计算机专业薪酬,2018大学毕业生薪酬排行榜公布:武大输给华科,更意想不到的高校是它...
  19. 设置Ajax为同步请求
  20. java 克隆有什么用_java中的克隆技术具体有什么应用?

热门文章

  1. zookeeper操作封装——curator使用分布式锁使用
  2. 卸载高版本的labview的vision模块和VAS采集模块装低版本
  3. oracle用户密码不被锁,Oracle用户密码过期和用户被锁解决方法【转】
  4. (转)美国FBI的变态心理学测试
  5. elastic-job VS xxl-job
  6. 浙江大学计算机2016年推免录取名单,浙江大学2017年计算机科学与技术学院推免生名单...
  7. python里不能调用random库_Python标准库教程—random模块
  8. QQ音乐7.0换新上线: 轻简风带来全新听歌体验
  9. Python_pymysql
  10. CVE-2014-6271-bash shellshock-破壳漏洞复现