HDRP を 5.x から Unity 6.x にアップグレードする
HD レンダーパイプライン (High Definition Render Pipeline、HDRP) では、主要バージョン間で作用が異なる機能がいくつかあります。このドキュメントは、HDRP を Unity 5.x から 6.x にアップグレードする際に役立ちます。
カスタムシェーダー
6.x では、HDRP マテリアルフレームワーク向けの Shader コードが改善され、Shader を制作する際の自由度が増しました。作成したカスタム Shader があり、HDRP プロジェクトを Unity 6.x にアップグレードしたい場合は、Shader を更新して新しいフレームワークに適応させる必要があります。
- 6.x では、HDRP のライティングモデルは
EvaluateBSDF()
を使いますが、5.x はBSDF()
を使います。EvaluateBSDF()
がCBSDF
を返す、反射、透過拡散、および鏡面ライト情報を含む構造体を使います。6.x 以前は、HDRP はランベルトの余弦則を自動的に適用していました。6.x からは、EvaluateBSDF()
内に手動で適用しなければなりません。IsNonZeroBSDF
を使って、BSDF を評価する必要があるかを確認してください。 - 6.x では、
GetBSDFAngles
関数は依然と異なるパラメーターを容認します。またNdotV
およびNdotV
は返さなくなったため、関数とは別に手動で 固定 しなければなりません。 - 6.x には、LightEvaluation および SurfaceShading ファイルにはヘルパー関数が含まれており、Unity プロジェクトに含めるか除外するかを選ぶことができます。ヘルパー関数は、すべての HDRP マテリアルが呼び出すジェネリック Material とライト評価コードに対応します (StackLit および Lit も含みます)。
#define
を使って各ヘルパー関数を含めるか、または除外してください。 - 6.x では、
GetAmbientOcclusionForMicroShadowing()
メソッドがComputeMicroShadowing()
に置き換わりました。GetAmbientOcclusionForMicroShadowing()
はマクロシャドウイングのアンビエントオクルージョンプロパティーを使いますが、ComputeMicroShadowing() は マイクロシャドウ 値を使っていました。 - WorldToTangent は誤った名前が付けられていたため TangentToWorld に変更されました。
シェーダーグラフ
6.x では、HDRP は SurfaceType、BlendMode、および DoubleSided といったプロパティーを、シェーダーグラフではなく Material 内に格納します。現在このようなプロパティーを使う Material はすべて、マスターノード設定 の値と一致しないため、シーン内で正しく表示されない場合があります。この変更はすべてのシェーダーグラフマスターノードに関連しますが、PBR および Unlit クロスパイプライン Master Node は例外となります。
Material でこれらのプロパティーを変更する際、HDRP は生成された Shader 内でローカルシェーダーキーワードを切り替えます。Master Node 自体は Setting View でプロパティーを引き続き表示します。Master Nodes はこれらのプロパティー値を格納しますが、新たに Shader および Material のデフォルト値として機能するようになりました。Material のプロパティー値はデフォルト値をオーバーライドします。
つまりこの変更により、HDRP が Shader に依存してレンダリング状態コントロールをするようになったため、生成する Shader バリアントがより少なくて済みます。さらにこの変更により、HDRP は Shader ストリッピングをより効率的に処理できます。
アップグレード
プロジェクト内ですべてのシェーダーグラフをアップグレードするには、Edit > Render Pipelines > Reset All Shader Graphs Scene Material Properties (Project) を選択します。これにより自動的に以下が行われます。
- プロジェクト内のすべての Material がイテレーションされます。
- Material プロパティーと Master Node 値を同期化するために必要なすべてのキーワードをコピーします。
- HDRP マテリアルキーワードリセット関数を呼び出します。
Material のレンダラーキューをシェーダーグラフのものと一致するように設定します。
シーンでシェーダーグラフのみをアップグレードするには、Edit > Render Pipelines > Reset All Shader Graphs Scene Material Properties (Scene) を代わりに選択します。