Unityでゲームを作るときは高解像度できれいな画面を作りたいと思うのが一般的です。しかし、レトロ風のゲームを作る場合はわざと解像度を落としたドットの粗い絵作りをしたいこともあります。
そこでここではゲーム画面をレトロな低解像度風の見た目にするテクニックをご紹介します。
ちなみに今回のテクニックを実施したゲーム画面のサンプルは次の通りです(※拡大するとジャギジャギしているのがよく分かります)。
ゲーム画面を低解像度風にする2つの方法
ではさっそくですが、ゲーム画面を低解像度風にする方法について説明していきます。今回の目的を達成するには主に2つの方法があります。
- Render Textureを使う方法
- Post Processingを使う方法(こちらのほうがオススメ)
それぞれ詳しく見ていきましょう。
Render Textureを使う方法
まず一つ目はRender Textureを使う方法です。Render Textureとは「カメラ等の映像をリアルタイムで反映できる特殊なテクスチャ」のことで、これを使えば低解像度風の画面を実現することができます。
ただし初めに断っておくと、この方法は
- 手順が多く面倒
- 描画負荷が高くなる
というデメリットがあるのであまりお勧めはできません。ですが一応作業手順を説明しておきますね。
- 新しいRender Textureを作る(テクスチャサイズは小さくしておく)
- カメラの出力に手順1で作ったRender Textureを指定する
- 新しいCanvasを作り、さらにその子としてRaw Imageを作ってCanvasいっぱいに広げる
- 手順3で作ったRaw Imageに手順1で作ったRender Textureを指定する
つまり普通は「カメラ→スクリーン」という流れで画面が描画されるわけですが、ここでは「カメラ→Render Textureを指定したRaw Image→スクリーン」という感じで間に低解像度のRender Textureを挟むことで疑似的に低解像度の画面を再現しているというわけですね。
しかし先述の通り、Render Textureを更新しないといけないのでその分だけ描画負荷が高くなることには注意してください。ちなみに私のゲームではバッチが100くらい増えたので、この方法によるパフォーマンスへの影響はそれなりにあると言えます。
Post Processingを使う方法
次に二つ目はPost Processingを使う方法です。こちらはカメラの映像に後処理を行うやり方で、カメラエフェクトと言ったらPost Processing!というくらいお馴染みの機能だと思います。
こちらは先ほどの方法と比べるとずっと高速で動くのでお勧めですが、Unity標準のポストプロセスには低解像度風のエフェクトが用意されていないので、自分でアセットを探す必要があります。さらに、Post Processingはレンダーパイプライン(ビルトイン、URP、HDRP)やそのバージョンなどによって機能が違ったりするので各々に合ったものを探さないといけません。
私のゲームの場合はURPを使っているので、「Low resolution effect for Unity URP PPv3」というアセットを使わせていただいています。
ありがたいことに無料ですし、導入も簡単に行えるので便利です。
おわりに
以上、ごく簡単ではありますが「ゲーム画面を低解像度風にする方法」を2つご紹介しました。
低解像度風の表現はローポリモデルとの相性が良いので個人的にはとても重宝します。ローポリモデルをお使いの場合や、レトロなゲーム画面を再現したい場合はぜひ今回ご紹介したテクニックを試してみてください。