白黒羊

【Unity】URP Post-processing実装

URPでPost-processingする

通常のポストプロセス実装手順をURPプロジェクトに適用しようとしたらしたらうまくいかなかったのでメモです。

なお、デフォルトのビルトインレンダーパイプラインでポストプロセスを使うときはこちらを参照してください。

まずURPプロジェクトではPost-processing packageのインストールが必要ありません。

シーンに置いたCamera GameObject に UniversalAdditionalCameraData Component をアタッチして、Cameraの Rendering ▶︎ Post Processing にチェックを入れます。

Volume Componentを持った別のGameObjectを作成します。 ProfileのNewを選択することで、新たなProfileを作ることができます。Add Overrideを選択して作ったそれぞれのEffectの中身を操作することでPost-processingを実装することができます。

これだけなので、Built-in Render Pipelineのときよりも簡単ですね。

反映されないなと思ったら

Volume GameObjectのLayerCamera Component の Environment ▶︎ Volume Mask で指定しているLayerが一致しているかどうかを確認してみてください。

SetValueを使う

Vignette | Universal RP | 12.0.0

.color propertyにダイレクトに値を入れようとしたらできなかったのですが、 SetValue 関数を使ったら適切に設定できました。

var volume = GetComponent<Volume>();
volume.profile.TryGet(out var vignette);
var color = new Color();
vignette.color.SetValue(new ColorParameter(color));
// this doesn't work
// _vignette.color = new ColorParameter(color);

参考

【Unity】URPでポストプロセス(Post-processing)を使う手順 – はなちるのマイノート

Effect List | Universal RP | 12.0.0

https://forum.unity.com/threads/urp-post-processing-not-showing.768098/