600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > 聊聊引擎底层如何实现Bloom渲染算法

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

时间:2021-01-04 04:33:44

相关推荐

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

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

/Advanced-Lighting/Bloom

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

实现Bloom渲染效果在引擎中的流程如下所示:

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

/JoeyDeVries/LearnOpenGL

Shader的编写基本都差不多,当然我们用别人的代码不需要照搬,Bloom重点在片段着色器中的的处理。我们一共使用了三个Shader文件,对应上图的三个步骤:

第一步:bright filter

也就是我们的Bloom的实现,没有大家想想的复杂公式,核心代码如下所示:

它主要是对亮度的过滤,几行代码搞定了。再看第二步。

第二步:Blur

该步骤实现的是Blur渲染效果,核心代码如下所示:

第三步:Combine Bloom

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

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

第一步引擎对应代码:

第二步的引擎对应代码:

第三步的引擎对应代码:

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

总结:

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

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。