📝

[UnityURP]レイヤーごとにポストプロセスの影響をオンオフするには

に公開

ポストプロセスは低コストで画面のクオリティを上げる非常に使い勝手のいい機能ですが、デフォルトでは全ての表示物が影響を受けてしまいます。


UI Button も Bloom 効果を受けてボヤケている

このように UI も影響を受けてしまうのは好ましくないので、「UI だけポストプロセスの影響を受けない」設定について説明します。

🧪カメラを2つにわける

「UI以外を全て表示する」「UIだけ表示する」2つのカメラを作成します。
設定値としては次の通りです。

カメラ Render Type Post Processing Culling Mask Stack
Main Camera Base ✅ON UI 以外にチェック +UI Camera
UI Camera Overlay OFF UI のみチェック

📌2D 表示の例

次に、それぞれのカメラに対応した Canvas を設定します。

Canvas Render Mode Render Camera Layer
Main Canvas Screen Space - Camera Main Camera Default (*子オブジェクトも全て)
UI Canvas Screen Space - Camera UI Camera UI

先ほどの例で言うと、Main Canvas には背景画像、UI Canvas には UI Button を配置すると、次のように UI のポストエフェクトを外すことができます。

📌3D 表示の例

3D は単に、Layer を Default or UI にするだけで OK です。
以下は左が UI、右が Default レイヤーに設定した Cube を表示しています。

📌2カメラそれぞれにポストプロセスをかけたい場合

Main Camera が UI Camera のポストプロセス影響を受けてしまうので、それほど自由度は高くないかもしれませんが、一応紹介します。

まずはカメラの設定値。

カメラ Render Type Post Processing Culling Mask Volume Mask Stack
Main Camera Base ✅ON UI 以外にチェック Default +UI Camera
UI Camera Overlay ✅ON UI のみチェック UI

次に Global Volume です。2つ作成し、レイヤーをそれぞれ Default、UI にすることでカメラごとのポストプロセスを設定できます。

🧪カメラ1つの場合

3D だけ切り替えたい場合はカメラ1つでも出来るようなので、こちらも紹介しておきます。

カメラはテンプレートプロジェクトで自動生成される Main Camera のみで構いません。
変更すべきは PC_Renderer (Universal Render Data) です。

この設定でも、次のように表示されます。

Discussion