如何在Unity URP中添加画面模糊效果
最近在研究如何利用Unity URP中的Render Feature实现一些有趣的后处理效果,例如添加一定的模糊效果能为整个画面增添朦胧的感觉,或者减弱锯齿带来的影响:
虽然PostProcessing里也有景深这种玩意实现模糊效果,不过它跟物体的深度有关,这里研究的是直接通过添加Render Feature的方式对整个画面进行模糊。
首先需要准备后处理用的材质,shader的话是参考的Unity3D 屏幕后处理模糊效果Shader,大概意思就是有两个pass,第一次模糊水平的,第二次模糊竖直的像素颜色。我在原来shader的基础上稍微修改了一下,加了一个和原图之间的Lerp。另外Youtuber Zii也讲解了如何用ShaderGraph实现模糊效果,于是索性跟着做了一下。我的代码实现和ShaderGraph实现都上传百度网盘了,感兴趣的同学可以戳这个链接, 提取码:jc58
用的话就在该Shader上创建一个材质就好了,BlurSize控制采样的像素位置,越大越模糊,LerpValue控制混合比例,越大则画面越像模糊后的图像:
这里还是像之前一样使用添加Blit Renderer Feature的方式,先把相关代码从Github弄下来,然后可以在UniversalRenderPipelineAsset_Renderer上点击Add Renderer Feature添加一个Blit Feature。这里分别添加两个Blit Feature,使用同一个材质就行了,不过pass index要分别设置为0和1,表示先调用pass0再调用pass1:
如果是用ShaderGraph文件,里面只有一个pass,就只需要创建一个Blit Feature就可以了。除此之外也可以添加多个重复的Blit Feature实现在模糊后的图的基础上再次模糊的效果。
参考链接:
Github URP_BlitRenderFeature
Unity3D 屏幕后处理模糊效果Shader
How to make Blur in Unity URP ShaderGraph