Version: 2018.1
シェーダー: 頂点とフラグメントプログラム
物理演算

スクリプタブルレンダーパイプライン

スクリプタブルレンダーパイプライン (SRP) は、Unity の 従来のビルトインレンダーパイプライン に替わるものです。SRP を使用すると、C# スクリプトを使用してレンダリングの制御や調整ができます。このようにして、必要に応じてレンダーパイプラインをわずかに変更したり、完全に作成しカスタマイズしたりすることができます。

SRP は、従来のビルトインレンダーパイプラインよりも細かくカスタマイズできるオプションを提供します。 また、事前に構築済みの SRP の 1 つを使用して、ニーズに特化して対応します。

SRP を使用することは、ビルトインレンダーパイプラインを使用することとは異なります。例えば、ビルトインの Unity シェーダーは SRP で使用できないため、構築済み SRP には新しいシェーダーライブラリが付属しています。

注意 これはプレビュー機能であり、変更されることもあります。この機能を使用するスクリプトは、将来のリリースで更新が必要な場合があります。この機能がプレビュー版である間は、本格的な制作に使用しないでください。

構築済み SRP

Unity は、高画質レンダーパイプライン (High Definition Render Pipeline、HDRP) と 軽量レンダーパイプライン (Lightweight Definition Render Pipeline、LWRP) の 2 つの SRP フレームワークを使用するスクリプタブルレンダーパイプラインを構築しました。各レンダーパイプラインは、ユースケースシナリオとハードウェアによる特定の組み合わせを対象としています。構築済みレンダーパイプラインは、新しいプロジェクトのテンプレートとして利用できます。

これらのレンダーパイプラインはいずれもパッケージとして提供され、Shader GraphPost-Processing パッケージが含まれています。

注意: HDRP を使用して作成されたプロジェクトは、LWRP や Unity の従来のビルトインレンダーパイプラインと互換性がありません。開発を開始する前に、プロジェクトで使用するレンダーパイプラインを決める必要があります。

高画質レンダーパイプライン (HDRP)

HDRP は、コンソールや PC のようなハイエンドハードウェアをターゲットとしています。HDRP を利用すると、高レベルを求められるシナリオで現実的なグラフィックスを作成することができます。HDRP はコンピュートシェーダー技術を使用するため、互換性のある GPU ハードウェアが必要です。

HDRP は、AAA 品質のゲーム、自動車のデモ、建築用アプリケーション、その他、パフォーマンスよりも忠実度の高いグラフィックスを求められるものに適しています。HDRP は物理ベースのライティングとマテリアルを使用し、フォワードレンダリングとディファードレンダリングの両方をサポートします。

HDRP は 1 つのテンプレートで提供されます。

HDRP に関して詳細は、SRP GitHub Wiki の HDRP overview を参照してください。

軽量レンダーパイプライン (LWRP)

LWRP は、さまざまなレベルのハードウェアで使用できます。 このテクノロジーはモバイルプラットフォームにスケール可能で、ハイエンドのコンソールや PC にも使用できます。LWRP を利用すると、高速でのレンダリングを高品質で行うことが可能です。LWRP は、単純化された物理的なライティングとマテリアルを使用します。

LWRP は、シングルパスフォワードレンダリングを使用します。このパイプラインを使用すると、複数のプラットフォームでリアルタイムのパフォーマンスを最適化できます。

LWRP は、LWRP と LWRP-VR という 2 つのテンプレートで利用できます。LWRP-VR には、VR 専用の事前に使用可能に用意された設定が付属しています。

注意: ビルトインとカスタム製のライトシェーダーは、LWRP では機能しません。代わりに、LWRP には新しいスタンダードシェーダーが備わっています。 現在のプロジェクトを LWRP にアップグレードすると、ビルトインのシェーダーを新しいものにアップグレードできます。

LWRP の詳細については、 SRP GitHub Wiki の LWRP overview を参照してください。

スクリプタブルレンダーパイプラインの設定

SRP、HDRP、LWRP をインストールするには、いく通りかの方法があります。新規、または作業中のプロジェクトで構築済み SRP を使用したい場合は、このセクションを読み進んでください。Unity に熟練していて、直接 SRP スクリプトを変更したいユーザーは、カスタム SRP の作成 を参照してください。

構築済み SRP を新規プロジェクトと使用

新規プロジェクトで、レンダーパイプラインをカスタマイズせずに HDRP または LWRP を使う場合、テンプレート を利用して新規のプロジェクトを作成できます。

テンプレートを利用してプロジェクトを作成するには、以下の手順を行います。

  1. Unity を起動します。ホームのページで New をクリックして新規プロジェクトを開始します。
  2. Template でレンダーパイプラインの 1 つを選択します。
  3. Create Project をクリックします。Unity は選択したビルトインパイプラインのすべての機能を含め、自動的に新規プロジェクトを作成します。

テンプレートの使用に関する詳細は、プロジェクトテンプレート を参照してください。

既存のプロジェクトに最新の SRP をインストール

HDRP、LWRP、SRP の最新バージョンは、Package Manager システム 経由で既存のプロジェクトにダウンロードしてインストールすることができます。

既存のプロジェクトから SRP に切り替えると、多くの時間とリソースが消費されます。HDRP、LWRP、カスタム SRP はすべて、カスタムシェーダーを使用するため、ビルトインの Unity シェーダーと互換性がありません。手動で多くの要素を変更または変換する必要があります。代わりに、使用したい SRP を選択して新規プロジェクトを開始することを検討してください。

SRP を既存のプロジェクトにインストールするには、以下の手順を行います。

  1. Unity でプロジェクトを開きます。
  2. In the Unity menu bar, go to Window > Package Manager to open the Package Manager window.
  3. All をクリックします。すると、現在、実行中の Unity のバージョンで使用可能なパッケージのリストが表示されます。
  4. パッケージリストから使用したいレンダーパイプラインを選択します。ウィンドウの右上の Install をクリックします。これにより、レンダーパイプラインは、直接プロジェクトにインストールされます。

構築済みレンダーパイプラインの設定と使用

構築済みレンダーパイプラインのいずれかを使用する前に、Render Pipeline Asset を作成しプロジェクト設定に加える必要があります。以下のセクションでは、 SRP Asset の作成方法と、それを HDRP または LWRP に加える方法を説明します。

スクリプタブルレンダーパイプラインアセットの作成

選択した SRP を正しく使用するために、スクリプタブルレンダーパイプラインアセットを作成する必要があります。

スクリプタブルレンダーパイプラインアセットはプロジェクトのグローバルなレンダリング品質設定を制御し、レンダーパイプラインのインスタンスを作成します。レンダーパイプラインインスタンスには中間リソースとレンダーパイプライン実装が含まれます。

複数のパイプラインアセットを作成して、異なるプラットフォームや異なるテスト環境の設定を保存することができます。

レンダーパイプラインアセットの作成は以下の手順で行います。

  1. エディター内で Project ウィンドウに移動し、Scriptable Render Pipeline フォルダーの外のディレクトリに移動します。
  2. Project ウィンドウ内で右クリックし、Create > Render Pipeline の順に選択します。
  3. ニーズに合わせて High DefinitionLightweight のいずれかを選択します。Render Pipeline/Pipeline Asset をクリックします。

HDRP の設定と使用

HDRP を使用するには、プロジェクトの PlayerGraphics の設定を以下のように変更します。

  1. エディターで Edit > Project Settings > Player の順に移動します。Color Space ドロップダウンで Linear を選択します。HDRP は Gamma ライティングをサポートしません。
  2. Project ウィンドウで、Scriptable Render Pipeline フォルダーの外のディレクトリに移動します。
  3. Project ウィンドウ内で右クリックし、 Create > Render Pipeline > High Definition > Render Pipeline の順に選択します。
  4. Edit > Project Settings > Graphics の順に移動します。
  5. Scriptable Render Pipeline Settings フィールドで以前作成した High Definition Render Pipeline Asset を加えます。

ヒント: High Definition Render Pipeline Asset は常に Scriptable Render Pipeline フォルダーの外に保存します。こうすることによって、SRP GitHub リポジトリから新しい変更をマージする際に HDRP 設定を失わずに済みます。

LWRP の設定と使用

LWRP を使用するには、プロジェクトの Graphics 設定を以下のように変更します。

  1. Project ウィンドウで、Scriptable Render Pipeline フォルダーの外のディレクトリに移動します。
  2. Project ウィンドウ内で右クリックし、Create > Render Pipeline > Lightweight > Pipeline Asset の順に選択します。
  3. Edit > Project Settings > Graphics の順に移動します。
  4. Scriptable Render Pipeline Settings フィールドで以前作成した Lightweight Render Pipeline Asset を加えます。

ヒント: Lightweight Render Pipeline Asset は常に Scriptable Render Pipeline フォルダーの外に保存します。こうすることによって、SRP GitHub リポジトリから新しい変更をマージする際に LWRP 設定を失わずに済みます。

カスタム SRP の作成

SRP は GitHub のオープンプロジェクトで利用可能です。SRP を複製を作成しローカルのものを変更できます。

新規、または既存の Unity プロジェクトのローカルのスクリプトファイルを設定するには以下の手順で行います。

  1. SRP リポジトリの複製を作成します。Project ディレクトリのルートで Assets フォルダーのとなりに複製を置きます。リポジトリの複製に関する情報は GitHub Help の リポジトリをクローンする を参照してください。

  2. Unity のバージョンと一致するブランチをチェックアウトします。git checkout コマンドを使用し、ブランチ名をタイプします。

  3. git submodule update --init コマンドを使用して、SRP に関連するすべてのサブモジュールを見つけて初期化します。

  4. プロジェクトマニフェストで、dependencies を更新すると、SRP パッケージを指します。 プロジェクトマニフェストに関して詳しくは Package Manager ドキュメント を参照してください。以下はスクリプトの 1 例です。

        
    {
    
       "dependencies": {
           "com.unity.postprocessing": "file:../ScriptableRenderPipeline/com.unity.postprocessing",
    
           "com.unity.render-pipelines.core": "file:../ScriptableRenderPipeline/com.unity.render-pipelines.core",
    
           "com.unity.shadergraph": "file:../ScriptableRenderPipeline/com.unity.shadergraph",
    
           "com.unity.render-pipelines.lightweight": "file:../ScriptableRenderPipeline/com.unity.render-pipelines.lightweight"
    
       }
    }
    
  5. Unity でプロジェクトを開きます。パッケージはローカルにインストールされています。統合された開発環境で Project Solution を開くと、スクリプトを直接デバッグし修正することができます。


シェーダー: 頂点とフラグメントプログラム
物理演算