unity urp 自带了一个后处理组件Volume,提供了不少后处理效果:
除此之外,Render Feature 也可以实现类似的效果,并且自由度更高。
使用方式是,在RenderPiplineAsset 中的Renderer中新增Feature,下面举例说明如何通过Feature增加一个KawaseBlur的后处理效果。
首先写一个自定义的Feature脚本:
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Rendering;
using UnityEngine.Rendering.Universal;
public class KawaseBlur : ScriptableRendererFeature
{
[System.Serializable]
public class KawaseBlurSettings
{
public RenderPassEvent renderPassEvent = RenderPassEvent.AfterRenderingTransparents;
public Material blurMaterial = null;
[Range(2,15)]
public int blurPasses = 2;
[Range(1,4)]
public int downsample = 1;
public bool copyToFramebuffer = true;
public string targetName = "_blurTexture";
}
public KawaseBlurSettings settings = new KawaseBlurSettings();
class CustomRenderPass : ScriptableRenderPass
{
public Material blurMaterial;
public int passes;
public int downsample;
public bool copyToFramebuffer;
public string targetName;
string profilerTag;
int tmpId1;
int tmpId2;
RenderTargetIdentifier tmpRT1;
RenderTargetIdentifier tmpRT2