Version: 2020.2
言語: 日本語
レンダーパイプラインアセットとレンダーパイプラインインスタンスの作成
スクリプタブルレンダーパイプラインのレンダリングコマンドのスケジューリングと実行

アクティブなレンダーパイプラインアセットの設定

スクリプタブルレンダーパイプライン (SRP) では、プロジェクトにアクティブな レンダーパイプラインアセット が必要です。このページには、Unity エディターとランタイムでプロジェクトのレンダリングパイプラインアセットを設定するための情報が含まれています。

互換性とパフォーマンス

SRP は、設定が非常に柔軟であるため、アクティブなレンダーパイプラインアセットの変更は、異なる品質層を使ったおなじレンダーパイプラインインスタンスを使用するようなとてもマイナーな変更の場合もあれば、ユニバーサルレンダーパイプライン (URP) から HD レンダーパイプライン (HDRP) へ切り替えるような、とても大きな変更の場合もあります。

アクティブなレンダーパイプラインアセットを別のレンダーパイプラインインスタンスを使用するものに変更する場合は、プロジェクトのアセットとコードが新しいレンダーパイプラインインスタンスと互換性があることを確認する必要があります。そうしないと、エラーや意図しない視覚効果が発生する可能性があります。

また、新しいレンダーパイプラインアセットに切り替えると、Unity は現在のレンダーパイプラインインスタンスを破棄し、新しいレンダーパイプラインアセットの CreatePipeline() メソッドを呼び出します。SRP のコードによっては、これは計算上リソースに負担が高い操作になる場合があります。

Unity エディターでレンダーパイプラインアセットを設定

プロジェクトの編集中にスクリプタブルレンダーパイプライン (SRP) を使用できるように、Unity エディターでレンダーパイプラインアセットを設定する必要があります。エディターで設定したレンダーパイプラインアセットは、ビルドされたプレイヤーで Unity がデフォルトで使用するものです。

Graphics Settings ウィンドウでプロジェクトのレンダーパイプラインアセットを設定します。

  1. Edit > Project Settings > Graphics の順に移動して Graphics 設定ウィンドウを開きます。
  2. Project フォルダーで、使用するレンダーパイプラインアセットを見つけます。
  3. レンダーパイプラインアセットを Scriptable Render Pipeline Setting フィールドにドラッグします。Unity はすぐに、レンダーパイプラインアセットで定義した設定を使用して SRP でレンダリングを開始します。これには、ゲームビュー、シーンビュー、Project ウィンドウとインスペクターに表示されるマテリアルのプレビューが含まれます。

ランタイムでのレンダリングパイプラインアセットの設定

レンダーパイプラインアセット間で切り替えをしたい場合は、ランタイムにレンダーパイプラインアセットを設定できます。これは、ビルドしたプレイヤーやエディターの再生モードで行えます。

ランタイムに、GraphicsSettings.renderPipelineAsset API を使用してレンダーパイプラインアセットを設定します。

以下のコード例は、2 つのレンダーパイプラインアセットを切り替える方法を示しています。

using UnityEngine;
using UnityEngine.Rendering;
 
public class SwitchRenderPipelineAsset : MonoBehaviour
{
    public RenderPipelineAsset exampleAssetA;
    public RenderPipelineAsset exampleAssetB;
 
    void Update()
    {
        if (Input.GetKeyDown(KeyCode.A)) {
            GraphicsSettings.renderPipelineAsset = exampleAssetA;
            Debug.Log("Active render pipeline asset is: " + GraphicsSettings.renderPipelineAsset.name);
        }
        else if (Input.GetKeyDown(KeyCode.B)) {
            GraphicsSettings.renderPipelineAsset = exampleAssetB;
            Debug.Log("Active render pipeline asset is: " + GraphicsSettings.renderPipelineAsset.name);
        }
    }
レンダーパイプラインアセットとレンダーパイプラインインスタンスの作成
スクリプタブルレンダーパイプラインのレンダリングコマンドのスケジューリングと実行