白黒羊

【Unity】実機でポストプロセスが使えなくなる

対処法

Pixel Perfect Camera の Crop Frame で Stretch Fill 以外を使う。

環境

  • Unity Editor 2023.2.0f1
  • Universal RP (URP) 16.0.4
  • Game画面サイズ Full HD (1920×1080)

問題

エディタでは問題なく動いていたのに、コンソール機で動かしてみるとPost ProcessのBloomが効かなくなってしまう現象が発生しました。

Post Process なし

青い背景の上に白い円と三角形を並べました。
マテリアルやシェーダーの問題かなと思っていたので、ふたつのオブジェクトには異なるマテリアル / シェーダーが使われています(ので若干色が違います)。
URPのPixel Perfect Cameraはすでに設定されており、Crop FrameはNoneになっています。

Post Process (Volume) の設定

上の状態にPost Processを加えてみます。変化がわかりやすそうな以下の3つを選びました。

  • Bloom (ぼんやりと光らせる)
  • Color Adjustments (黄色のフィルター)
  • Vignette (周りの黒い部分)

Crop Frame: None

Crop Frame: Pillarbox

Crop Frame: Stretch Fill (200×181)

ポストプロセスがまったく働かなくなってしまいました。
しかし、Reference Resolution をかえてみると、

Crop Frame: Stretch Fill (200×180)

ポストプロセスが復活しています。
逆に200×181 のまま、画面サイズをFree Aspectにして色々変化させてみると、エフェクトがきくアスペクト比にあたることもあります。

本記事のタイトルには「実機で」と書いたのですが、実際には実機でおこる問題というわけではなくて、特定の解像度で発生する問題のようです。Reference Resolution と 画面アスペクトの兼ね合いですね。コンソール機のフォーラムで検索しても何も出てこないわけです……。

Pixel Perfect Camera も Post Process も同じURPパッケージ内のコンポーネントなので、協調してほしいような、バグのような、と思う一方で、Bloomさせちゃったら本当の Pixel Perfect ではなくなるような。