【Unity】URPでゲーム画面を「低解像度風」にする方法!レトロゲームのような見た目を実現しよう

Unity ゲーム画面を低解像度風にする方法 ゲーム開発

今回は久しぶりにUnityでのゲーム開発に関する話題で

URPでゲーム画面をあえて「低解像度風」にする方法

をわかりやすくご紹介するという内容になっております。

Unityでゲームを作るときは基本的にゲーム画面を綺麗な高解像度の設定にすると思います。しかし例えばレトロ風(PS1のような3Dグラフィックなど)のゲームを作りたい場合は高解像度だと逆に雰囲気を損ねるので、あえて低解像度のゲーム画面にしたいと思うことでしょう。

Unityで低解像度のグラフィックを実現するためには、従来はわざわざ「Render Texture」を使うなどトリッキーなやり方を使う必要がありました。しかし最近のURPではもっと簡単かつ軽い処理で低解像度の画面を実現できるようになったので、ここではそのやり方を解説しますね。

前提:低解像度のグラフィックとはどんな感じ?

まず前提として、低解像度のグラフィックとはどのような感じなのか?というイメージをつかんでいただくためにサンプル画像をご用意しました。下記は今回ご紹介する方法で低解像度化したゲーム画面です。

低解像度のゲームグラフィックの例

低解像度化していない普通のグラフィックは下記のとおりです。

高解像度のゲームグラフィックの例

見比べてみると低解像度版のほうはジャギジャギしていてレトロな感じがしますよね。一般的にゲームは高解像度のほうがよいとされていますが、あえてレトロな雰囲気を目指して作るゲームの場合は低解像度化すると一気にそれっぽい雰囲気が出ますし、ついでにグラフィックの「粗」を誤魔化せるので開発が楽になるといったメリットもあります。うまく使うと効果抜群です。

URPで低解像度のグラフィックを実現する簡単な方法2つ

ではここからが本題で、URPで低解像度のグラフィックを実現するための簡単な方法を2つご紹介します。

  1. Render Scaleを変更する方法(一番簡単で処理も軽い)
  2. Fullscreen Pass Renderer Featureを使う方法(やや複雑だが便利)

それぞれ詳しく見ていきましょう。

方法1:Render Scaleを変更する(最も簡単&高速)

まず一つ目はRender Scale(レンダースケール)を変更する方法です。

URPには「Universal Render Pipeline Asset」というグラフィック設定を行えるファイルがあります。この設定ファイルの項目に「Render Scale」という項目があり、これを変更することでかなり簡単に低解像度のグラフィックにすることができます。

Unity URP Render Scaleの設定項目

例えばRender Scaleをデフォルトの半分の「0.5」にすると、ゲームの描画解像度を半分にすることができます。この方法は設定が簡単でしかも画面の描画解像度を実際に下げるので描画処理が高速になるというメリットがあります。迷ったらこちらの方法を使うといいでしょう。

設定のポイントですが、デフォルト設定で単にRender Scaleを下げただけだと画面がボケボケになってしまうので「Upscale Filter」(アップスケールフィルター)を「Nearest-Neighbor」(ニアレストネイバー法のフィルター)にするとぼかしがなくなってよりレトロな見た目になります。

なおこの設定で解像度を変更できるのはゲーム画面だけで、「ScreenSpace – Overlay」になっているUIの解像度を変更することはできません。

方法2:Fullscreen Pass Renderer Featureを使う

二つ目はFullscreen Pass Renderer Featureを使い、独自のシェーダーを適用してゲーム画面を「低解像度っぽく」見せる方法です。

まず、Shader Graphで「全画面シェーダーグラフ」を作成します(プロジェクトウィンドウ右クリック→「作成」→「シェーダーグラフ」→「URP」→「全画面シェーダーグラフ」)。シェーダーエディタが開いたら下記のようにノードを組みましょう。

低解像度風シェーダーのノードの組み方

※1:「URP Sample Buffer」の「Source Buffer」は「Blit Source」にしてください。

※2:「Shader Graphの使い方が分かんないんだけど…」という方は、古い記事ですが下記でシェーダーグラフの使い方を丁寧に解説していますのでそちらも併せてご覧ください。

さてシェーダーを作って保存したらこのシェーダーのマテリアルを作ります。設定項目の「Resolution」に好きな解像度を記入しましょう(下記では640*360になってますがもっと低い解像度にしておくと違いが分かりやすいです)。

低解像度風シェーダーのマテリアル

そうしたら次に、URPには「Universal Renderer Data」という設定ファイルがあるので、これをインスペクターで開いて一番下の「Renderer Feature」に新しいRenderer Featureを追加します。

新しいRenderer Featureを追加する方法

「Add Renderer Feature」ボタンを押し「Fullscreen Pass Renderer Feature」を選びます。すると画面の色が変わりますが、これはRenderer Featureのサンプルマテリアルが適用されているだけなのでこれを先ほど作ったマテリアルに変更しましょう。

新しく追加した、画面を低解像度風にするFullscreen Pass Renderer Feature

これで画面が低解像度風になるはずです。こちらのやり方は高解像度の画面を加工しているだけなので高速化はできませんが、シェーダーで見え方をいろいろ弄れるのがメリットです。先ほどの方法1とうまく使い分けましょう。

おわりに

以上、URPで手っ取り早くゲーム画面を低解像度風にする方法をご紹介しました。低解像度風のゲーム画面を作れるようになると表現の幅が広がって楽しいので、ぜひ皆さんも試してみてください。

この記事がUnityでのゲーム開発のお役に立てば幸いです。