【Unity】Unityでポストエフェクト入門!二つの実装方法とメリット・デメリットを紹介

Unityにおけるポストエフェクトは二つの実装方法が混在していてどちらを使えばいいのか少しわかりづらいです。
この記事ではUnityでポストエフェクトを掛ける二つの方法とそれぞれのメリット・デメリットを紹介します。

ポストエフェクトとは?

ポストエフェクトとはレンダリング結果に対してシェーダを使って掛けるエフェクトのことです。
イメージエフェクトと呼ばれたりもします。

具体的には、下図のように被写界深度の効果を加えたり、

f:id:halya_11:20180906002631p:plain

下図のように、夜の街頭から光が漏れるように明るい物体が発光する効果を掛けられたりします。

f:id:halya_11:20180905235107p:plain

使い方とアイデア次第で見た目のクオリティを格段に上げることもできるのが特徴です。

ポストエフェクトを掛ける二つの方法

さてUnityではポストエフェクトを掛ける方法が二つ存在します。
Post Processing Stackというものを使う方法と使わない方法です。

Post Processing Stackとは、Unity公式が開発しているポストエフェクト制御用のアセット群です。

github.com

デフォルトで高品質なポストエフェクトも組み込まれているので、
シェーダの開発を行わなくてもお手軽にポストエフェクトを使うことができます。

Unityの歴史としては、もともとはPost Processing Stackを使わない方法しかなかったのですが、
途中でこれが開発されたことにより二つの方法が混在する状況となっています。

以下、これら二つの方法についてそれぞれまとめていきます。

Post Processing Stackを使わない方法

まずPost Processing Stackを使わない昔ながらの方法です。
この方法でポストエフェクトを掛ける手順は以下の記事で紹介しています。

light11.hatenadiary.com

この方法のメリットとしては、全部自分で処理を書く分どういう処理が行われているかが理解しやすいので、
処理負荷も含めて理解が深まるという点があります。

これからのUnityではPost Processing Stackが主流になってくるかと思いますが、
一度はこの方法でポストエフェクトを開発してみることをお勧めします。

Post Processing Stackを使う方法

次にPost Processing Stackを使う方法です。
この方法でポストエフェクトを掛ける手順は以下の記事で紹介しています。

light11.hatenadiary.com

これを使うメリットはUnity公式の高品質なポストエフェクトが使える点です。
ただしポストエフェクトは総じて処理負荷が高くなる傾向にあるので、
アルゴリズムを理解せずに使っていると後で痛い目を見ます。
このあたりの話は、モバイルの話が中心になりますが以下の記事で解説しています。

light11.hatenadiary.com

また、Post Processing Stackで独自のポストエフェクトを作ることもできます。
これについては次の記事で紹介しています。

light11.hatenadiary.com

Post Processing Stackを使わない方法に関する記事

Post Processing Stackを使わない方法に関連する当サイトの記事を紹介します。

まず、基本的なぼかしエフェクトの作り方を下記二つの記事で紹介しています。
ぼかしエフェクトは処理負荷が高くなりがちなのでいろんな手法が考案されています。

light11.hatenadiary.com

light11.hatenadiary.com

次の記事は簡単なブルームの実装です。
これもぼかしの応用であるため処理負荷が高くなりがちな処理です。
Post Processing Stackにも組み込まれていますが、自分で書いた方がより軽いものが作れるかもしれません。

light11.hatenadiary.com

次にポストエフェクトでアウトラインを描画する方法です。

light11.hatenadiary.com

次に光芒エフェクトです。
ブルームの応用ともいえる技術ですが、処理負荷もブルームより重いです。

light11.hatenadiary.com

次に色収差です。
もともとはカメラのレンズによる効果を再現するためのエフェクトですが視覚効果の一つとしても使われます。

light11.hatenadiary.com

下記の記事では放射状ブラーのポストエフェクトの作り方を紹介しています。
こちらはPost Processing Stackにはないエフェクトです。

light11.hatenadiary.com

Post Processing Stackを使う方法に関する記事

次にPost Processing Stackを使う方法に関連した当サイトの記事を紹介します。

まず上でも紹介しましたが、次の記事エフェクトの種類を一通り解説しています。
ただバージョンアップに伴っていろいろ変わってそうなのであくまで執筆時のエフェクトの種類の解説になります。

light11.hatenadiary.com

またPost Processing Stackが追加されたことによりUnityでアンチエイリアシングを掛ける方法が多様化しました。
以下の記事ではこのあたりの話をまとめています。

light11.hatenadiary.com

次にこれも上で紹介していますが、次の記事ではPost Processing Stackを使って
独自のポストエフェクトを実装する方法を紹介しています。

light11.hatenadiary.com

まとめ

以上、Unityでポストエフェクトを掛ける手順の紹介をしました。
ポストエフェクト周りはその性質上、記事が体系的にまとまりづらいので、
また情報が煩雑になってきたらこの記事をリライトしていこうと思います。