このページでは、Universal Render Pipeline (ユニバーサルレンダーパイプライン、URP) の旧バージョンからバージョン 12.0.x にアップグレードする方法を説明します。
ビルトインレンダーパイプラインのプロジェクト用に作成したアセットを、URP に対応するアセットに変換する方法については、レンダーパイプラインコンバータ のページを参照してください。
フォワードレンダラーアセットの名称が、ユニバーサルレンダラーアセットに変わりました。URP 12 が含まれている Unity エディターで既存のプロジェクトを開くと、フォワードレンダラーアセットがユニバーサルレンダラーアセットに更新されます。
ユニバーサルレンダラーアセットに含まれている Rendering Path プロパティで、フォワードレンダリングパスまたはディファードレンダリングパスを選択できます。
ClearFlag.Depth メソッドでステンシルバッファが暗示的に消去されることはなくなりました。新しいメソッド ClearFlag.Stencil を使用してください。
URP 12 には レンダーパイプラインコンバータ 機能が実装されています。これは、これまで Edit > Render Pipeline > Universal Render Pipeline > Upgrade… から使用できたアセットアップグレード機能に替わる機能です。
新しいファイル名にはスペースが含まれません。新しいファイル名にはスペースが含まれません。Autodesk InteractiveAutodesk Interactive MaskedAutodesk Interactive Transparent
コードで Shader.Find() メソッドを使用してシェーダーを検索する場合は、Shader.Find("AutodeskInteractive) のように、シェーダー名からスペースを削除してください。
バージョン 10.0.x 以降では、URP が _CameraNormalsTexture という法線テクスチャを生成できます。カスタムシェーダーでこのテクスチャにレンダリングするには、DepthNormals というパスを加えます。例については、Lit.shader での実装を参照してください。
URP 10.0.x には、スクリーンスペースアンビエントオクルージョン (SSAO) エフェクトが実装されています。
カスタムシェーダーで SSAO エフェクトを使用する場合は、SSAO に関連する以下のエンティティを考慮してください。
_SCREEN_SPACE_OCCLUSION キーワード。
Input.hlsl の InputData 構造体には、新しい宣言 float2 normalizedScreenSpaceUV が含まれています。
Lighting.hlsl の AmbientOcclusionFactor 構造体には、間接オクルージョンと直接オクルージョンを計算するための変数が含まれています。
struct AmbientOcclusionFactor
{
half indirectAmbientOcclusion;
half directAmbientOcclusion;
};
Lighting.hlsl には、SSAO テクスチャをサンプリングするための以下の関数が含まれています。
half SampleAmbientOcclusion(float2 normalizedScreenSpaceUV)
Lighting.hlsl には、以下の関数が含まれています。
AmbientOcclusionFactor GetScreenSpaceAmbientOcclusion(float2
normalizedScreenSpaceUV)
カスタムシェーダーで SSAO をサポートするには、DepthNormals パスと _SCREEN_SPACE_OCCLUSION キーワードをシェーダーに追加します。例については、Lit.shader を参照してください。
カスタムシェーダーがカスタムライティング関数を実装する場合は、GetScreenSpaceAmbientOcclusion(float2 normalizedScreenSpaceUV) 関数を使用してライティング計算の AmbientOcclusionFactor 値を取得します。
11.0.x では、シャドウ法線バイアスを適用する式が、パンクチュアルライトへの適用改善のために若干修正されました。そのため、シーンによっては、以前のリビジョンのシャドウアウトラインと正確に一致させるために、このパラメーターが調整されることがあります。通常は、ディレクショナルライトで 1.0 の代わりに 1.4 を使用すれば十分です。
以前のバージョンの URP では、レンダラーにアクティブな Renderer Feature がある場合に、URP は中間レンダラーを使用してレンダリングしていました。これは、一部のプラットフォームではパフォーマンスに大きな影響を与えます。このリリースでは、URP はこの問題を以下の方法で緩和します。URP は、Renderer Feature が ScriptableRenderPass.ConfigureInput メソッドを使用して入力を宣言することを想定しています。このメソッドは、中間テクスチャを使用したレンダリングが必要かどうかを自動的に判断するための情報を提供します。
ユニバーサルレンダラーには、互換性のための新しいプロパティ Intermediate Texture があります。このプロパティで Always を選択すると、URP は中間テクスチャを使用します。Auto を選択すると、新しい動作が有効になります。Renderer Feature が ScriptableRenderPass.ConfigureInput メソッドを使用して入力を宣言しない場合にのみ、Always オプションを使用するようにしてください。
既存のプロジェクトが正常に機能するように、Renderer Feature (URP に含まれているものを除く) を使用していたすべての既存のユニバーサルレンダラーアセットでは、Intermediate Texture プロパティで Always オプションが選択されています。新しく作成されたユニバーサルレンダラーアセットでは、Auto オプションが選択されます。
まず、URP 7.2.0 にアップグレードします。ユニバーサルレンダーパイプラインのバージョン 7.2.0 にアップグレードする を参照してください。
URP 8.x.x は Post-Processing Stack v2 パッケージをサポートしていません。プロジェクトで Post-Processing Stack v2 パッケージを使用している場合は、まずそのパッケージを使用するエフェクトを移行します。