【Unity】Unity2019.4のURP環境下にてPost Processingが動作しなかった話

先日、Unity2019.4.28f1上で制作していたプロジェクトにおいて、うまくPost Processing（ポストプロセッシング/ポストプロセス）を適応することができず、ネットなどで調べてみても解決しなかった(
検索の仕方が原因でうまく見つからなかった
)問題を解決することができたので備忘録を兼ねて記録することにしました。

# 検証/再現環境
〇 Unity2019.4.28f1
〇 Universal Render Pipeline Version 7.3.1（Package Managerよりインストール）→ 以後URPと記述
〇 Post Processing Version 3.1.1 （Package Managerよりインストール）

# 簡単にまとめると

〇 Unity2019.3以降より、URPの中に標準でポストプロセッシングのためのシステムが組み込まれるようになり、**以前のようにPackage Managerから導入する必要が無くなっていた。**
　→そのため、前の情報を頼りに設定するだけでは動作しないようになっている。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/621451/9910f3be-be1b-b1b6-27ec-e4c556ab9fc3.png)
↑　URPに付属されているポストプロセス（Volume）のコンポーネント

〇 2019.3以前のポストプロセッシングは「Post Processing Stack v2」という名前だったが、URPに搭載されているものはその後継バージョンとなっており、Unityとしてはこちらを推奨していく方針の模様。
(調べてみたところ、**既にUnity2019.4までの互換性となっており、Unity2020.1以降では互換性が打ち切られている**模様。）

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/621451/2370c666-0cc1-d970-b62c-6234aac1c59d.png)
↑ Post Processing Stack V2のポストプロセス（Volume）のコンポーネント


〇以前までポストプロセッシング用として使われていたパッケージは、**URPやHDRP（High Definition Render Pipeline）を使用しないBRP（Built-in Render Pipeline）やSRP（Scriptable Render Pipeline）向けとなった。**

〇URPで「Post Processing Stack v2」が使えないかというとそういうわけではなく、**利用する手段はある。**次の項目にて簡単に手段について記しておきます。
（HDRPの方でも同じことができるのか試そうとしましたが、設定項目的に出来ない可能性が高かったので今回は検証していません。ご了承ください。）

# URP環境下での「Post Processing Stack v2」使用方法

### ①Package ManagerからPost Processingをダウンロードする。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/621451/8649346b-fa89-47a1-d89d-4032f7045769.png)

プレビューパッケージなどには設定されてないのでAdvanced設定はしなくても見つかると思われます。

### ②Project Settingから現在適応されているURPの設定を確認する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/621451/4aec2895-e73b-ec54-3fd9-fac871f9e396.png)
[Edit]→[Project Settings]→[Graphics]→[Scriptable Render Pipeline Settings]の中のファイル名をクリックするとProjectにファイルの場所が表示されるので選択してください。

### ③URPの設定から使用するPost Processingの種類を変更する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/621451/4db73555-94cf-4bbd-9159-c9653d66bd19.png)
URPの設定内にある[Post-processing]のメニューの中の[Fuature Set]を変更することによって、どの種類のポストプロセッシングを利用するか決めることができます。
Integratedを選択することでURPに付属しているポストプロセスが反映されるようになり、Post Processing Stack v2を選択することでPackage Managerから導入した方のポストプロセスが反映されるようになります。
この項目はPost ProcessingのPackageを入れているときのみしか表示されないようです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/621451/a04e96fb-98cd-8d07-1936-803b8c63e5df.png)
（選択すると「UnityはそのうちURPでのPostProcessingV2のサポートをやめるので積極的に使わないでね」というニュアンスの警告文が出ます。）

これで、Post Processing Stack v2のコンポーネントを用いたポストプロセスが可能になります。これを実際に使う人がどれくらいいるかはわかりませんが、URPでのポストプロセスの使用にあたって躓いてしまったところなので、備忘録かねて記述しました。

# 参考にしたサイト

〇Unity公式のURPでのポストプロセッシングのリファレンス
https://docs.unity3d.com/Packages/com.unity.render-pipelines.universal@7.3/manual/integration-with-post-processing.html

〇Unity公式のHDRPでのポストプロセッシングのリファレンス（参考）
https://docs.unity3d.com/Packages/com.unity.render-pipelines.high-definition@13.0/manual/Post-Processing-Main.html

〇Unity公式のPost Processing Stack v2のリファレンス（動作環境の話を見ればすぐ解決したような…？）
https://docs.unity3d.com/Packages/com.unity.postprocessing@3.1/manual/index.html


### 更新履歴

2021年10月12日：投稿
2024年12月24日：マークダウンの一部が正常に機能していなかったのを修正