URP下自定义后处理

URP下自定义后处理
fasty说明
在URP中Unity通过定义
RenderFeature来编写自定义后处理效果,实现SRP渲染管线。
1 | graph LR |
Step1 编写后处理Shader
Setp2 编写Render Feature
Render Feature
Render Feature是一个处理集,继承自
ScriptableRendererFeature,可以包含多个Render Pass。
public override void Create()
用于在RenderFeature创建时调用,一般在这里进行使用到的RenderPass的初始化操作。
public override void AddRenderPasses(ScriptableRenderer renderer, ref RenderingData renderingData)
用于指定渲染队列信息,通过renderer.EnqueuePass(renderpass)方法来将renderpass加入渲染队列。
Render Pass
RenderPass类似于ShaderPass,是一块处理单元,通过继承
ScriptableRenderPass,实现生命周期和处理行为。
1 | graph LR |
-
public override void OnCameraSetup(CommandBuffer cmd, ref RenderingData renderingData)用于初始化RenderPass,完成基础操作。
-
public override void Execute(ScriptableRenderContext context, ref RenderingData renderingData)用于处理Pass逻辑。
-
public override void OnCameraCleanup(CommandBuffer cmd)用于进行收尾操作,释放资源等。
Setp3 编写Volume Component
创建一个类继承自VolumeComponent,实现IPostProcessComponent接口。
定义VolumeComponentMenu菜单路径。
1 | [] |
PS:书写参数时,必须使用经过保证的参数类型,如Float应该使用FloatParameter类型代替。
