URP で PostEffect を利用するには ForwardRendererData を作成して UniversalRenderPipeline に登録する必要がある
この手順を記述する
ScriptableRendererFeature の作成
ScriptableRendererFeature は レンダラーにレンダリングパスを追加するためのクラスで
ここにポストエフェクトに必要な処理を書く
Shader を適応するだけのシンプルなクラスが以下になる
using UnityEngine; using UnityEngine.Rendering; using UnityEngine.Rendering.Universal; public class PostEffectTest : ScriptableRendererFeature { private class Pass : ScriptableRenderPass { private readonly string tag = "Test Pass"; private readonly Material _material; public Pass(Shader shader) : base() { _material = new Material(shader); renderPassEvent = RenderPassEvent.AfterRenderingTransparents; } public override void Execute(ScriptableRenderContext context, ref RenderingData renderingData) { var target = renderingData.cameraData.renderer.cameraColorTarget; var buffer = CommandBufferPool.Get(tag); buffer.Blit(target, target, _material); context.ExecuteCommandBuffer(buffer); } } [SerializeField] private Shader _shader; private Pass _pass; public override void Create() { _pass = new Pass(_shader); } public override void AddRenderPasses(ScriptableRenderer renderer, ref RenderingData renderingData) { renderer.EnqueuePass(_pass); } }
ForwardRendererData の作成
ForwardRendererData は 以下のメニューより作成できる
作成後「Add Render Feature」を押すと先程作成したクラス名が表示されるので選択する
その後、PostProcess 用の Shader をセットする
この際に利用する Shader は今まで利用していたものと同じものでよい
UniversalRenderPipeline に登録
- UniversalRP-LowQuality
- UniversalRP-MediumQuality
- UniversalRP-HighQuality
などの名前で URP 用の設定ファイルがあるので
この General / RenderList に先程作成した ForwardRendererData を追加する
カメラの Render を切り替える
ForwardRendererData を追加すると Rendering / Render に先程追加したものが表示されるので切り替える
これにより、PostProcess を適応することができた