ScriptableRenderFeature API を使用して、ユニバーサルレンダーパイプライン (URP) のフレームレンダリングループに スクリプタブルレンダーパス を挿入します。
以下の手順に従ってください。
新しい C# スクリプトを作成します。
コードを ScriptableRendererFeature クラスから継承するクラスに置き換えます。
using UnityEngine;
using UnityEngine.Rendering.Universal;
public class MyRendererFeature : ScriptableRendererFeature
{
}
このクラスで、Create メソッドをオーバーライドします。例:
public override void Create()
{
}
URP は以下のイベントで Create メソッドを呼び出します。
Create メソッドで、スクリプタブルレンダーパスのインスタンスを作成し、レンダラーに挿入します。
例えば、RedTintRenderPass というスクリプタブルレンダーパスを使用するとします。
// Define an instance of the Scriptable Render Pass
private RedTintRenderPass redTintRenderPass;
public override void Create()
{
// Create an instance of the Scriptable Render Pass
redTintRenderPass = new RedTintRenderPass();
// Inject the render pass after rendering the skybox
redTintRenderPass.renderPassEvent = RenderPassEvent.AfterRenderingSkybox;
}
AddRenderPasses メソッドをオーバーライドします。
public override void AddRenderPasses(ScriptableRenderer renderer, ref RenderingData renderingData)
{
}
URP は各フレームで、カメラごとに 1 回、AddRenderPasses メソッドを呼び出します。
EnqueuePass API を使用して、スクリプタブルレンダーパスをフレームレンダリングループに挿入します。
public override void AddRenderPasses(ScriptableRenderer renderer, ref RenderingData renderingData)
{
renderer.EnqueuePass(redTintRenderPass);
}
これで、アクティブな URP アセットにスクリプタブルレンダラー機能を追加できます。詳細については、 レンダラー機能をレンダラーに追加する方法 を参照してください。
以下は、RedTintRenderPass というスクリプタブルレンダーパスを使用した、スクリプタブルレンダラー機能の完全なコード例です。
using UnityEngine;
using UnityEngine.Rendering;
using UnityEngine.Rendering.Universal;
public class MyRendererFeature : ScriptableRendererFeature
{
private RedTintRenderPass redTintRenderPass;
public override void Create()
{
redTintRenderPass = new RedTintRenderPass();
redTintRenderPass.renderPassEvent = RenderPassEvent.AfterRenderingSkybox;
}
public override void AddRenderPasses(ScriptableRenderer renderer, ref RenderingData renderingData)
{
renderer.EnqueuePass(redTintRenderPass);
}
}