美文网首页Unity Shader分享
[全屏后处理]Bloom泛光

[全屏后处理]Bloom泛光

作者: 想变的很强的日向彻 | 来源:发表于2019-08-02 17:00 被阅读0次

    前言

    1.计算机硬件

    Unity中颜色值的范围是[0, 255],也就是说, 无论是亮度还是暗度都有个限定值,而这往往和真实世界不符,加入把灯的光线亮度值设置为1,那么要强烈的晃眼的太阳光的值要比1高的多得多,但是毕竟计算机的表示范围是有限的。

    2.人眼的特点

    我们从一个很亮的场景转换到一个很暗的场景的过程中,开始转换到暗场景时好像什么的也看不清了,然后人眼的瞳孔不断适应和调节大小,我们慢慢的又能看清暗场景中的东西了

    目的

    说了半天,Bloom的核心,我们是想达到一个什么样的效果呢?简单来说就是想让亮的地方更亮,从而使得画面看起来更加真实,好像亮的地方的光溢出来,也对暗的地方的物体产生了影响。

    思路

    1.采样全屏图像,适当降低RT分辨率和采样率(减小开销)

    2.设置一个亮度阈值,将低于此阈值的像素剔除掉,生成一张高于此阈值的RT,存储为RT_High, shader中saturate(color - _colorThreshold)

    3.分别对新生成的RT_High进行横向和纵向的模糊(我这里采用的高斯模糊),并存储为RT_new

    4.在shader的片元着色器中将原图像和RT_new按一定的比例混合生成最终的RT并渲染到屏幕中

    5.记得释放声明的RT内存

    相关文章

      网友评论

        本文标题:[全屏后处理]Bloom泛光

        本文链接:https://www.haomeiwen.com/subject/qxtrdctx.html