うにてぃブログ

UnityやUnreal Engineの記事を書いていきます

【Unity】URP で UI 解像度を他の解像度と分ける方法

確認環境 Unity 2022.3.50f1 URP 14.0.11

UnityのURP環境では、FSR 1.0(FidelityFX Super Resolution)を利用して解像度を変更することができます。

しかし、この機能を使用すると、すべてのカメラ描画の解像度が一括して変更されてしまい、UIも同様に解像度が変わってしまいます。

今回は、UIの解像度を保持しつつ、他の要素の解像度を下げる方法について説明します。

対応方法

UIはCanvasの設定をOverlayにすることで、以下のようにURPの設定に影響を受けず、元の解像度を維持したまま他の描画要素の解像度を変更することが可能です。

簡単に確認する場合、URPのSamplesに含まれているプロジェクトでは、多くの場合、CanvasがScreen Space - Overlayに設定されているため、実例を参照することができます。

注意点

ただし、Canvasを最後に描画するため、これまで途中に差し込んでいた背景のBlurなどの処理が正しく動作しないことがあります。

この問題を回避するために、Canvasをカメラレンダリングに設定し、そのカメラにRenderTextureを適用します。

そして、そのRenderTextureをOverlay Canvasで描画することで、途中のRenderTexture処理を適切に行うことが可能です。