Version: Unity 6.0 (6000.0)
言語 : 日本語
URP のスクリプタブルレンダラー機能の概要
URP でスクリプタブルレンダラー機能を特定のカメラタイプへ適用する

URP でのスクリプタブルレンダラー機能の作成

ScriptableRenderFeature API を使用して、ユニバーサルレンダーパイプライン (URP) のフレームレンダリングループに スクリプタブルレンダーパス を挿入します。

以下の手順に従ってください。

  1. 新しい C# スクリプトを作成します。

  2. コードを ScriptableRendererFeature クラスから継承するクラスに置き換えます。

    using UnityEngine;
    using UnityEngine.Rendering.Universal;
    
    public class MyRendererFeature : ScriptableRendererFeature
    {
    }
    
  3. このクラスで、Create メソッドをオーバーライドします。例:

    public override void Create()
    {
    }
    

    URP は以下のイベントで Create メソッドを呼び出します。

    • スクリプタブルレンダラー機能が最初にロードされたとき。
    • スクリプタブルレンダラー機能を有効または無効にしたとき。
    • レンダラー機能のプロパティを Inspector ウィンドウで変更したとき。
  4. 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;
    }
    
  5. AddRenderPasses メソッドをオーバーライドします。

    public override void AddRenderPasses(ScriptableRenderer renderer, ref RenderingData renderingData)
    {
    }
    

    URP は各フレームで、カメラごとに 1 回、AddRenderPasses メソッドを呼び出します。

  6. 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);
    }
}
URP のスクリプタブルレンダラー機能の概要
URP でスクリプタブルレンダラー機能を特定のカメラタイプへ適用する