聊聊引擎底层如何实现Bloom渲染算法

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/jxw167/article/details/85691401

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的实现分成了三个步骤,其实我们在实现某些效果时,如果自己没有思路,要参考网上提供的资源,首先我们要学会查找资源,找到自己想要的,其次要会利用别人的资源为我所用,要去理解人家怎么实现的,最后将它们应用到我们的项目中,通过调整得到想要的效果。当然在加入到我们自己的项目时要活学活用,不能一股脑的搬过来,取其精华弃其糟粕。

没有更多推荐了,返回首页

私密
私密原因:
请选择设置私密原因
  • 广告
  • 抄袭
  • 版权
  • 政治
  • 色情
  • 无意义
  • 其他
其他原因:
120
出错啦
系统繁忙,请稍后再试