Version: 2019.4
言語: 日本語
カスタムのスクリプタブルレンダーパイプラインの作成
アクティブなレンダーパイプラインアセットの設定

レンダーパイプラインアセットとレンダーパイプラインインスタンスの作成

独自の Scriptable Render Pipeline (スクリプタブルレンダーパイプライン (SRP)) を作成する場合は、プロジェクトに以下が必要です。

  • RenderPipelineAsset を継承し、 CreatePipeline() メソッドをオーバーライドするスクリプト。このスクリプトはレンダーパイプラインアセットを定義します。
  • RenderPipeline を継承し、Render() メソッドをオーバーライドするスクリプト。このスクリプトはレンダーパイプラインインスタンスを定義します。
  • RenderPipelineAsset スクリプトから作成したレンダーパイプラインアセット。このアセットはレンダーパイプラインインスタンスの Factory クラスとして機能します。

これらの要素は密接に関連しているため、同時に作成する必要があります。

基本的なレンダーパイプラインアセットとレンダーパイプラインインスタンスの作成

次の例は、レンダー パイプラインインスタンスをインスタンス化する基本的なカスタムのレンダーパイプライン アセットのスクリプト、レンダーパイプラインインスタンスを定義するスクリプト、そしてレンダーパイプラインアセット自体を作成する方法を示しています。

  1. ExampleRenderPipelineAsset.cs という C# スクリプトを作成します。

  2. 次のコードをコピーして新しいスクリプトに貼り付けます。

    using UnityEngine;
    using UnityEngine.Rendering;
    
    // CreateAssetMenu 属性によって Unity Editor にこのクラスのインスタンスの作成が可能になります。
    [CreateAssetMenu(menuName = "Rendering/ExampleRenderPipelineAsset")]
    public class ExampleRenderPipelineAsset : RenderPipelineAsset
    {
        // 最初のフレームをレンダリングする前に、Unity によってこのメソッドが呼び出されます。
        //レンダーパイプラインアセットの設定が変更された場合は、Unity は現在のレンダーパイプラインインスタンスを破棄し、次のフレームをレンダリングする前に再度、このメソッドを呼び出します。 
        protected override RenderPipeline CreatePipeline() {
            // このカスタムの SRP がレンダリングのために使うレンダーパイプラインをインスタンス化します。
            return new ExampleRenderPipelineInstance();
        }
    }
    
  3. ExampleRenderPipelineInstance.cs という C# スクリプトを作成します。

  4. 次のコードをコピーして新しいスクリプトに貼り付けます。

    ```C# using UnityEngine; using UnityEngine.Rendering;

    public class ExampleRenderPipelineInstance : RenderPipeline { public ExampleRenderPipelineInstance() { }

    // Unity calls this method once per frame for each現在レンダリングを行っている各 CameraType に対し、フレームごとに 1 回このメソッドを呼び出します。
    protected override void Render (ScriptableRenderContext context, Camera[] cameras) {
        // ここにカスタムのレンダリングコードを記述します。このメソッドをカスタム化して、SRP をカスタム化します。
    }
    

    }

```

  1. Project ウィンドウで、追加 (+) ボタンをクリックするか、コンテキストメニューを開いて 作成 に移動し、Rendering > Example Render Pipeline Asset を選択します。Project ウィンドウに新しいレンダーパイプラインアセットが作成されます。
カスタムのスクリプタブルレンダーパイプラインの作成
アクティブなレンダーパイプラインアセットの設定