プロジェクトで使用されるユースケース、ターゲットプラットフォーム、レンダラー、機能の種類は多岐にわたるため、特定の URP 設定ではシェーダーバリアントの数が多くなる可能性があります。そのため、コンパイル時間が長くなることがあります。
シェーダーコンパイル時間が長いと、プレイヤーのビルド時間とシーンがエディターで描画する時間の両方に影響します。
カメラごとの可視ライト制限値は、各 Lit シェーダーバリアントおよび Complex Lit シェーダーバリアントのコンパイル時間に影響します。フォワード+ レンダリングパスでは、デスクトッププラットフォームでの制限は 256 です。
このセクションでは、カメラごとのデフォルトの最大可視ライト数を変更することで、シェーダーのコンパイル時間を短縮する方法について説明します。
ノート:ここでは、URP 設計の制限の回避策について説明します。この制限は、将来の Unity バージョンのいずれかで緩和される予定です。
ユニバーサルレンダーパイプライン (URP) 設定パッケージには、最大可視ライト数を定義する設定があります。以下の手順では、これらの設定を変更する方法について説明します。
ノート:プロジェクトの Unity バージョンをアップグレードする場合は、この手順を繰り返してください。
プロジェクトフォルダーで、URP 設定パッケージフォルダーを /Library/PackageCache/com.unity.render-pipelines.universal-config から /Packages/com.unity.render-pipelines.universal-config にコピーします。
ファイル /com.unity.render-pipelines.universal-config/Runtime/ShaderConfig.cs.hlsl を開きます。
ファイルには、MAX_VISIBLE_LIGHT_COUNT で始まりターゲットプラットフォーム名で終わる複数の定義が含まれています。角かっこ内の値は、プロジェクトに適したカメラごとの錐台内ライトの最大数 (例えば MAX_VISIBLE_LIGHT_COUNT_DESKTOP (32)) に変更します。
フォワード+ レンダリングパスでは、値にメインライトが含まれます。フォワードレンダリングパスでは、値にメインライトは含まれません。
ファイル /com.unity.render-pipelines.universal-config/Runtime/ShaderConfig.cs を開きます。
ファイルには、k_MaxVisibleLightCount で始まりプラットフォーム名で終わる複数の定義が含まれています。ShaderConfig.cs.hlsl ファイルで設定された値と一致するように値を変更します (例えば k_MaxVisibleLightCountDesktop = 32;)。
編集したファイルを保存し、Unity エディターを再起動します。Unity は、新しい設定を使うようにプロジェクトおよびシェーダーを自動的に設定します。
これで、各シェーダーバリアントのコンパイル時間が短縮されたため、プレイヤーのビルド時間が短くなります。