プロジェクトをビルトインレンダラーから HD レンダーパイプラインへ変換する
HD レンダーパイプライン (High Definition Render Pipeline、HDRP) は新しい シェーダー および ライト単位 を使いますが、両方ともビルトインレンダラーとの互換性がありません。Unity プロジェクトを HDRP にアップグレードするには、まず最初にすべての マテリアル とシェーダーを変換し、個々の ライト 設定を適切に調整しなければなりません。
このドキュメントでは、3D With Extras テンプレートプロジェクトを HDRP に変換する方法について説明していますが、同じワークフローを使って独自のプロジェクトを変換することができます。このドキュメントに従って 3D With Extras プロジェクトをアップグレードするには、3D With Extras テンプレートを使うプロジェクトを作成します。その手順は以下の通りです。
Unity Hub を開きます。
Projects タブで New を選択します。
Template セクションで 3D With Extras を選択します。
Project Name を入力し、Unity にプロジェクトを保存する Location を設定します。
Create をクリックします。
Unity エディターが開き、以下のように表示されます。
HDRP の設定
まず最初に HDRP をインストールしてから、Unity プロジェクトに High Definition RP パッケージを追加します。
- Unity エディターで Package Manager ウィンドウを開きます (メニュー: Window > Package Manager)。
- High Definition RP パッケージを見つけて選択し、Install をクリックします。
これでプロジェクトで HDRP を利用できるようになります。なお HDRP をインストールする際、Unity はシーンのゲームオブジェクトに 2 つの HDRP 専用コンポーネントを自動設定します。ライトには HD Additional Light Data コンポーネントが、そしてカメラには HD Additional Camera Data コンポーネントがそれぞれ設定されます。プロジェクトが HDRP を使うように設定せずにシーンに HDRP コンポーネントが存在すると、Unity はエラーを出します。このエラーを修正するには、プロジェクトで HDRP を設定する方法に関する、次の指示を参照してください。
HDRP を設定するには、Render Pipeline ウィザード を使います。
Render Pipeline Wizard ウィンドウを開きます (メニュー Window > Render Pipeline > HD Render Pipeline Wizard)。
Configuration Checking セクションで HDRP タブへ移動し Fix All をクリックします。これでプロジェクトに関わるすべての HDRP 設定問題が修正されます。
これで HDRP がプロジェクト内に設定されますが、シーンは正しくレンダリングせず、マゼンタのエラーシェーダーでゲームオブジェクトを表示します。これはシーンのゲームオブジェクトが、引き続きビルトインレンダラー受けのシェーダーを使っているからです。ビルトインシェーダーを HDRP シェーダーにアップグレードする方法については、Upgrading Materials セクションを参照してください。
HDRP には専用の ポストプロセス用の実装 が含まれており、ポストプロセスパッケージはサポートしません。3D With Extras プロジェクトを変換する場合、もしくは独自のプロジェクトがポストプロセスパッケージを使う場合は、プロジェクトからポストプロセスパッケージを削除します。この手順は以下の通りです。
Unity エディターで Package Manager ウィンドウを開きます (メニュー: Window > Package Manager)。
Post Processing パッケージを見つけて選択し、Remove をクリックします。
テンプレートプロジェクトにポストプロセスエフェクトを追加およびカスタマイズする方法に関する詳細は、post-processing セクションを参照してください。
マテリアルのアップグレード
シーンのマテリアルを HDRP と互換性のあるマテリアルにアップグレードするには、以下のいずれかの方法を使います。
Upgrade Project Materials to High Definition Materials: プロジェクト内の互換性のあるマテリアルすべてを HDRP マテリアルに変換します。
Upgrade Selected Materials to High Definition Materials: プロジェクト内で現在選択されている、互換性のあるマテリアルすべてを HDRP マテリアルに変換します。
Upgrade Scene Terrains to High Definition Terrains: シーン中のすべての Terrain (地形) にあるビルトインのデフォルト標準 Terrain (地形) マテリアルを HDRP デフォルト Terrain (地形) マテリアルに置き換えます。
これらのオプションは、以下のいずれかから見つけられます。
Edit > Render Pipeline メニュー
Project Migration Quick-links セクション内の Render Pipeline ウィザードウィンドウ
このプロセスはカスタムマテリアルまたはシェーダーを HDRP に自動アップグレードすることはできません。代わりに カスタムマテリアルおよびシェーダーを手動変換 しなければなりません。また、HDRP はより多くのハイトマップディスプレイスメント技法と解凍オプションをサポートするため、このプロセスはハイトマップ関連のプロパティーを正しくアップグレードすることができません。つまり、ハイトマップマテリアルは不適切に見える場合があります。ハイトマップを使うマテリアルをアップグレードする場合は、ビルトインレンダラーの結果により近くなるまでマテリアルの Amplitude および Base プロパティーを変更します。
またこのプロセスは、パーティクルシェーダーのアップグレードもできません。HDRP はパーティクルシェーダーをサポートしませんが、ビルトインパーティクルシステム と互換性のあるシェーダーグラフを供給しています。これらのシェーダーグラフは、ビルトインパーティクルシェーダーと同じように機能します。これらのシェーダーグラフは、Particle System Shader Samples のサンプルをインポートして使います。
- Package Manager ウィンドウを開きます (メニュー: Window > Package Manager)。
- High Definition RP エントリーを見つけてクリックします。
- High Definition RP のパッケージ情報で、Samples セクションへ移動し Particle System Shader Samples の隣にある Import into Project ボタンをクリックします。
マテリアルの手動変換
HDRP マテリアルコンバーターは、ビルトイン標準を HDRP Lit に、Unlit マテリアルを HDRP Unlit マテリアルにそれぞれ自動変換します。プロセスではオーバーレイ関数を使い、Photoshop のような画像編集ソフトウェアと同様に、カラーチャンネルを混合させます。カスタムマテリアルの手動変換に役立つよう、このセクションではコンバーターがビルトインマテリアルから作成するマップについて解説します。
マスクマップ
ビルトインシェーダーから HDRP シェーダーへの変換プロセスでは、ビルトイン標準シェーダーの様々なマテリアルマップを HDRP Lit マテリアル にあるマスクマップの個別の RGBA チャンネルに組み合わせます。各マップがどのカラーチャンネルに行くかについては、マスクマップ を参照してください。
ディテールマップ
ビルトインシェーダーから HDRP シェーダーへの変換プロセスでは、ビルトイン標準シェーダーの様々なディテールマップを HDRP Lit マテリアル にあるディテールマップの個別の RGBA チャンネルに組み合わせます。さらにスムースネスディテールも追加します。各マップがどのカラーチャンネルに行くかについては、ディテールマップ を参照してください。
ライトの調整
HDRP は 物理ライト単位 を使ってライトの強度を制御します。これらの単位はビルトインレンダーパイプラインが使用する任意の単位とは一致しません。
ライト強度単位に関しては、ディレクショナル Lights は ルクス を使い、その他すべての Lights は ルーメン、カンデラ、 EV を使うか、またはある一定の距離でルクスをシミュレーションできます。
HDRP プロジェクトでライティングを設定する手順は以下の通りです。
- シーンにデフォルトスカイ Volume を追加し、環境光を設定します (メニュー GameObject > Volume > Sky and Fog Volume)。
環境ライティング を設定して新しいスカイを使います。
Lighting ウィンドウを開きます (メニュー: Window > Rendering > Lighting Settings)。
Profile プロパティーに、Sky と Fog Volume と同じ Volume プロファイル を選択します。
Static Lighting Sky プロパティーに、PhysicallyBasedSky を選択します。
このセクションで他の変更を行う際に、Unity にシーンのライティングを再ベイキングさせたくない場合は、任意で、ウィンドウの下部にある Auto Generate チェックボックスを無効にすることができます。
現在、シャドウは低品質です。品質を向上させるには、シャドウプロパティーを変更します。
新しい Global Volume ゲームオブジェクトを作成し (メニュー: GameObject > Volume > Global Volume)、Global Settings と名付けます。
この Volume に新しい Volume Profile を作成します。これを実行するには、Volume の Inspector を開いて、New ボタンをクリックします。
Shadows オーバーライドを追加し (Add Override > Shadowing > Shadows)、Max Distance を有効にして 50 に設定します。
- 太陽を表現する Light で (Directional Light ゲームオブジェクトの Light コンポーネント)、Intensity を 100000 に、Color を white に設定します。それから空で太陽を表示するために、Shape セクションへ移動し Angular Diameter を 3 に設定します。
- これでシーンが露出過度になります。これを修正するためには、 ステップ 3a で作成した Global Settings ゲームオブジェクトを選択して Exposure オーバーライドを Volume コンポーネントに追加します (Add Override > Exposure)。それから Mode を Automatic に設定します。
- シーンビューへ移動し Animate Materials を有効にして、露出を更新します。
HDRP は色の付いたライトクッキーをサポートし、ビルトインライトクッキーはアルファのみを含むテクスチャフォーマットを使うため、以下の手順でライトクッキーを修正します。
Project ウィンドウで Assets > ExampleAssets> Textures > Light_Cookies > Spotlight_Cookie を選択します。
Inspector でインポートタイプを Cookie から Default に変更します。
Wrap Mode を Clamp に設定します。
コンストラクション Light は以下の手順で修正します。
Hierarchy ウィンドウで ExampleAssets > Props > ConstructionLight > Spot Light を選択し、Inspector で Light コンポーネントを表示します。
Intensity を 17000 Lumen に変更します。これは 2 つの 8500 ルーメン電球を表します。
Emission セクションで 追加オプション を有効にします。
Reflector チェックボックスを有効にします。これはスポット Light の背後の反射面をシミュレーションして、ビジュアル強度を調整します。
電球 Material を以下の手順でエミッシブにします。
Project ウィンドウで Assets/ExampleAssets/Materials/Lightbulb_Mat.mat を選択します。
Inspector の Emission Inputs セクションで Use Emission Intensity を有効にし、Emissive Color を white に設定して Emission Intensity を 8500 Luminance に設定します。
- 最後に、ステップ 2d で Auto Generate を無効にした場合は、Lighting ウィンドウに行って Generate Lighting ボタンを押します。また Auto Generate を再有効化することもできます。
ポストプロセス
HDRP は Post Processing パッケージをサポートしませんが、代わりに独自の ポストプロセス用の実装 が含まれています。シーンを HDRP ポストプロセスに変換する手順は、以下の通りです。
Hierarchy で Post-process Volume ゲームオブジェクトを削除します。
- プロジェクトがポストプロセスエフェクトを編集するために、Post Processing のパッケージの Scripting API を使った場合は、スクリプトを更新して、新しいポストプロセスエフェクトと作用するようにします。
- 新しい Global Volume ゲームオブジェクトを作成し (メニュー: GameObject > Volume > Global Volume)、"Post-processes" と名付けます。Volume Inspector で Add Override を選択すると、Post-processing サブメニューですべてのポストプロセスを見つけることができます。
- Volume に Tonemapping オーバーライドを追加し (Add Override > Post-processing > Tonemapping)、Mode を有効にして ACES に設定します。
- Volume に Bloom オーバーライドを追加し (Add Override > Post-processing > Bloom)、Intensity を有効にして 0.2 に設定します。 ブルームの結果は Post Processing パッケージとものとは一致しませんので注意してください。これは HDRP のブルームエフェクトは物理的に正確で、カメラレンズの品質を模倣するためです。
Volume に Motion Blur オーバーライドを追加し (Add Override > Post-processing > Motion Blur)、Intensity を有効にして 0.1 に設定します。
Volume に Vignette オーバーライドを追加し (Add Override > Post-processing > Vignette)、以下のプロパティー値を設定します。
Intensity を有効にし 0.55 に設定します。
Smoothness を有効にし 0.4 に設定します。
Roundness を有効にし 0 に設定します。
Volume に Depth Of Field オーバーライドを追加し (Add Override > Post-processing > Depth Of Field)、以下のプロパティー値を設定します。
Focus Mode を有効にし Manual に設定します。
Near Blur セクションで Start を有効にし 0 に設定してから、End を有効にし 0.5 に設定します。
Far Blur セクションで Start を有効にし 2 に設定してから、End を有効にし 10 に設定します。 このエフェクトは Game ビューのみで表示されますので注意してください。
- 最後に Global Settings ゲームオブジェクトを選択して Inspector 内で表示します。Volume コンポーネントで Ambient Occlusion オーバーライドを追加し (Add Override > Lighting > Ambient Occlusion)、Intensity を有効にして 0.5 に設定します。
結果
これで Game ビューのシーンは次のように見えるはずです。