Version: 2021.1
言語: 日本語
レンダーパイプラインの概要
レンダーパイプラインとライティングソリューションの選択と設定

レンダーパイプラインの切り替え

このページでは、Unity が使用しているアクティブなレンダーパイプラインの設定について説明します。このページには、ビルトインレンダーパイプライン 、ユニバーサルレンダーパイプライン (URP)、HD レンダーパイプライン (HDRP)、カスタムレンダーパイプラインに切り替える際の情報が含まれています。

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

Unity エディターでアクティブなレンダーパイプラインを設定すると、Unity はそのパイプラインでレンダリングを開始します。これには、ゲームビュー、シーンビュー、そしてプロジェクトパネルやインスペクターに表示されるマテリアルのプレビューが含まれます。

ビルトインレンダーパイプラインのアクティブ化

アクティブなレンダーパイプラインをビルトインレンダーパイプラインに設定するには、スクリプタブルレンダーパイプラインベースのレンダーパイプラインを使用していないことを Unity に伝える必要があります。プロジェクト設定からこれらの参照をすべて削除すると、Unity はデフォルトでビルトインレンダーパイプラインを使用するようになります。

これは以下の手順で行えます。

  1. Edit > Project Settings > Quality の順に移動して Graphics 設定ウィンドウを開きます。
  2. 各品質レベルについて Render Pipeline フィールドを None に設定します。
  3. Edit > Project Settings > Graphics の順に移動して Graphics 設定ウィンドウを開きます。
  4. Scriptable Render Pipeline Setting フィールドを None に設定します。

URP、HDRP、または SRP に基づくカスタムレンダーパイプラインのアクティブ化

アクティブなレンダーパイプラインを SRP に基づいたものに設定するには、使用するレンダーパイプラインアセットを Unity に伝える必要があります。レンダーパイプラインアセットとは、どのレンダーパイプラインを使用するか、そのレンダーパイプラインをどのように設定するかについてのデータが含まれているアセットのことです。

複数のレンダーパイプラインアセットを用意し、異なる設定で同じレンダーパイプラインを使うように Unity に指示できます。例えば、ハイエンドハードウェアに適した設定を持つアセットと、ローエンドハードウェアに適した設定を持つものを用意することができます。

レンダーパイプラインアセットの概要については、スクリプトレンダーパイプライン概要 を参照してください。URP のレンダーパイプラインアセットについては、ユニバーサルレンダーパイプラインアセット を参照してください。HDRP のレンダーパイプラインアセットについては、HD レンダーパイプラインアセット を参照してください。

Unity エディターで行う場合

  1. Edit > Project Settings > Graphics の順に移動して Graphics 設定ウィンドウを開きます。
  2. Project フォルダーで、使用するレンダーパイプライン用のレンダーパイプラインアセットを見つけます。
  3. レンダーパイプラインアセットを Scriptable Render Pipeline Setting のフィールドにドラッグします。これはデフォルトのレンダーパイプラインを定義します。デフォルトのレンダーパイプラインは一定の品質レベルに対してオーバーライドがない場合に Unity が使用します。
  4. オプションで、さまざまな品質レベルの異なるレンダーパイプラインアセットを使用することができます。Edit > Project Settings > Quality の順に移動して、Quality Settings ウィンドウを開きます。
  5. 品質レベルごとに、レンダーパイプラインアセットを Render Pipeline フィールドにドラッグします。

C# コードで行う場合

C# コードを使ってレンダーパイプラインアセットを設定することができます。このコードは、Unity エディターの編集モードや再生モード、またはビルドされたプレイヤーでランタイムに実行できます。

SRP は設定が非常に柔軟であるため、アクティブなレンダーパイプラインアセットの変更は非常に小さな変更になることもあれば、非常に大きな変更 (URP から HDRP への切り替えなど) になることもあります。ランタイムにレンダーパイプラインアセットを変更する場合のパフォーマンスコストは、それに応じて変化します。

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

下のサンプルコードは、GraphicsSettings.renderPipelineAsset に保存されているデフォルトの レンダーパイプラインアセットを設定する方法を示しています。

プロジェクトの Quality Settings で Quality Level (品質レベル) ごとにレンダーパイプラインアセットが割り当てられている場合は、現在の品質レベルのレンダーパイプラインアセットがデフォルトのレンダーパイプラインアセットをオーバーライドすることに注意してください。これらは、QualitySettings-renderPipeline API を使用して、以下と同じ方法で C# コードで更新できます。

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("Default render pipeline asset is: " + GraphicsSettings.renderPipelineAsset.name);
        }
        else if (Input.GetKeyDown(KeyCode.B)) {
            GraphicsSettings.renderPipelineAsset = exampleAssetB;
            Debug.Log("Default render pipeline asset is: " + GraphicsSettings.renderPipelineAsset.name);
        }
    }
レンダーパイプラインの概要
レンダーパイプラインとライティングソリューションの選択と設定