教育事業部の事業内容 演劇、音楽のタレント並びに作詞家、作曲家、編曲家等アーティストの育成及びマネージメント、コンピュータ教室の経営等を行っています。
教育事業 パルテア

〜Unity Graphics カスタム レンダー パイプラインの作成〜 #ゲームプログラミング #ゲーム制作 #unity3d #unity3dgames

カスタム レンダー パイプラインの作成

Unity は、Scriptable Render Pipeline (SRP) に基づいて、High Definition Render Pipeline (HDRP) と Universal Render Pipeline (URP) という 2 つの事前構築済みレンダー パイプラインを提供します。 HDRP と URP は広範なカスタマイズ オプションを提供します。 ただし、レンダリング パイプラインをさらに細かく制御したい場合は、SRP に基づいて独自のカスタム レンダリング パイプラインを作成できます。

これらの手順では、SRP コア パッケージを使用してカスタム レンダー パイプラインを作成する方法を示します。 SRP Core は Unity によって作成されたパッケージで、独自のレンダリング パイプラインの作成に役立つ再利用可能なコードが含まれています。これには、プラットフォーム固有のグラフィックス API を操作するための定型コード、一般的なレンダリング操作用のユーティリティ関数、URP と HDRP が使用するシェーダー ライブラリが含まれます。
新しい Unity プロジェクトを作成します。

Git を使用して、SRP ソース コード リポジトリのクローンを作成します。 SRP ソース コードは、予約されたプロジェクト サブフォルダーのいずれかにない限り、ディスク上の任意の場所に配置できます。

Git を使用して、SRP ソース コードのコピーを、Unity エディターのバージョンと互換性のあるブランチに更新します。

Unity でプロジェクトを開き、ディスク上の SRP ソース コード フォルダーから次のパッケージを次の順序でインストールします。


オプション: com.unity.render-pipelines.shadergraph。 シェーダー グラフを使用する場合、またはカスタム SRP の一部としてシェーダー グラフ ソース コードを変更する場合は、このパッケージをインストールします。

オプション: com.unity.render-pipelines.visualeffectgraph。 Visual Effect Graph を使用する場合、またはカスタム SRP の一部として Visual Effect Graph ソース コードを変更する場合は、このパッケージをインストールします。

ユニバーサル レンダー パイプライン (URP) と高解像度レンダー パイプライン (HDRP) は、必要なグラフィックスとパフォーマンスを実現するための広範なカスタマイズ オプションを提供します。 ただし、さらに細かく制御したい場合は、これらのレンダー パイプラインのいずれかのカスタム バージョンを作成し、ソース コードを変更できます。

上記のセクション「新しいプロジェクトの作成とカスタム SRP に必要なパッケージのインストール」のステップ 1 ~ 3 に従います。 ステップ 4 に到達したら、次のパッケージを次の順序でインストールします。

URP:

com.unity.render-pipelines.core
com.unity.render-pipelines.shadergraph
com.unity.render-pipelines.universal
HDRP:

com.unity.render-pipelines.core
com.unity.render-pipelines.shadergraph
com.unity.render-pipelines.high-defintion

Scriptable Render Pipeline (SRP) に基づいて独自のレンダー パイプラインを作成している場合、プロジェクトには以下が含まれている必要があります。

RenderPipelineAsset を継承し、その CreatePipeline() メソッドをオーバーライドするスクリプト。 このスクリプトは、レンダー パイプライン アセットを定義します。

RenderPipeline から継承し、その Render() メソッドをオーバーライドするスクリプト。 このスクリプトはレンダー パイプライン インスタンスを定義し、カスタム レンダリング コードを記述します。

RenderPipelineAsset スクリプトから作成したレンダー パイプライン アセット。 このアセットは、レンダー パイプライン インスタンスのファクトリ クラスとして機能します。

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

ExampleRenderPipelineInstance.cs という名前の C# スクリプトを作成します。

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

[プロジェクト] ビューで、追加 (+) ボタンをクリックするか、コンテキスト メニューを開いて [作成] に移動し、[レンダリング] / [サンプル レンダー パイプライン アセット] を選択します。 Unity は、プロジェクト ビューに新しいレンダー パイプライン アセットを作成します。

デフォルトでは、レンダー パイプライン アセットには、レンダリングに使用するレンダー パイプライン インスタンス、およびエディターで使用するデフォルトのマテリアルとシェーダーに関する情報が保存されます。 RenderPipelineAsset スクリプトでは、追加データを保存するようにレンダー パイプライン アセットを拡張でき、プロジェクト内に異なる構成を持つ複数の異なるレンダー パイプライン アセットを含めることができます。 たとえば、レンダー パイプライン アセットを使用して、ハードウェアの異なる層ごとに構成データを保持できます。 High Definition Render Pipeline (HDRP) と Universal Render Pipeline (URP) には、この例が含まれています。

次の例は、インスペクターを使用してインスタンスごとに設定できるパブリック データを含むレンダー パイプライン アセットを定義する RenderPipelineAsset スクリプトと、コンストラクターでレンダー パイプライン アセットを受け取り、そのレンダーからのデータを使用するレンダー パイプライン インスタンスを作成する方法を示しています。 パイプライン資産。

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

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

ExampleRenderPipelineInstance.cs という名前の C# スクリプトを作成します。

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

UnityEngine を使用する。

[プロジェクト] ビューで、追加 (+) ボタンをクリックするか、コンテキスト メニューを開いて [作成] に移動し、[レンダリング] / [サンプル レンダー パイプライン アセット] を選択します。 Unity は、プロジェクト ビューに新しいレンダー パイプライン アセットを作成します。

レンダー ループは、単一のフレーム内で実行されるすべてのレンダリング操作を表す用語です。 このページには、Unity のスクリプト可能レンダー パイプラインに基づくカスタム レンダー パイプラインでの単純なレンダー ループの作成に関する情報が含まれています。

このページのコード例は、Scriptable Render Pipeline の使用の基本原則を示しています。 この情報を使用して、独自のカスタム スクリプト可能レンダー パイプラインを構築したり、Unity の事前構築されたスクリプト可能レンダー パイプラインがどのように機能するかを理解したりできます。

レンダリング ループのコードを書き始める前に、プロジェクトを準備する必要があります。

手順は次のとおりです。

SRP 互換のシェーダを作成します。
レンダリングする 1 つ以上の GameObject を作成します。
カスタム SRP の基本構造を作成します。
オプション: 単純なカスタム SRP を拡張して、より複雑な機能を追加する予定がある場合は、SRP コア パッケージをインストールします。 SRP Core パッケージには SRP Core シェーダが含まれています
ライブラリ (シェーダを SRP Batcher と互換性のあるものにするために使用できます)、および一般的な操作のためのユーティリティ関数。

Scriptable Render Pipeline では、LightMode Pass タグを使用してジオメトリの描画方法を決定します。

このタスクでは、LightMode Pass タグ値 ExampleLightModeTag を持つ非常に単純な unlit Shader オブジェクトを作成する方法を示します。

プロジェクトに新しいシェーダー アセットを作成します。

プロジェクト ビューでシェーダー アセットをダブルクリックし、テキスト エディターでシェーダー ソース コードを開きます。

既存のコードを次のものに置き換えます。

レンダリング ループが機能することをテストするには、レンダリングするものを作成する必要があります。 このタスクでは、前のタスクで作成した SRP 互換シェーダーを使用するゲームオブジェクトをシーンに配置する方法を示します。

Unity プロジェクトに新しいマテリアル アセットを作成します。

シェーダー アセットをマテリアル アセットに割り当てます。

シーン内に立方体を作成します。

そこにマテリアルを割り当てます。

準備の最終段階では、カスタム SRP に必要な基本的なソース ファイルを作成し、カスタム SRP を使用してレンダリングを開始するように Unity に指示します。

「レンダー パイプライン インスタンスとレンダー パイプライン アセットの作成」の手順に従って、RenderPipeline と互換性のあるレンダー パイプライン アセットを継承するクラスを作成します。

「アクティブなレンダー パイプラインを取得、設定、構成する方法」の手順に従って、アクティブなレンダー パイプライン アセットを設定します。 Unity はカスタム SRP を使用してレンダリングをすぐに開始します。つまり、カスタム SRP にコードを追加するまで、シーン ビューとゲーム ビューは空白になります。

単純なレンダリング ループの基本的な操作は次のとおりです。

レンダー ターゲットをクリアします。これは、最後のフレーム中に描画されたジオメトリを削除することを意味します。

カリング。カメラに表示されないジオメトリをフィルタリングして除外することを意味します。

描画。これは、描画するジオメトリとその描画方法を GPU に指示することを意味します。

    unity

  • 日時:// ~ //
  • 名称:
  • 場所:
  • 料金:¥0 (消費税込)