【Unity】URPで特定のオブジェクトだけポストエフェクトをかからないようにする(特定オブジェクトの描画順を変更する)

はじめに

今回はURPで特定のオブジェクトだけポストエフェクトをかからないように方法を紹介します

環境は Unity 2019.4.22f1

Universal Render Pipeline(テンプレートのプロジェクトです)

やり方

結果をわかりやすくするために変化がわかりやすいようにポストエフェクトのパラメータを設定します f:id:Brave345:20220105141608p:plain

1.レイヤーの追加

ポストエフェクトをかけないオブジェクト用のレイヤーを作成し、ポストエフェクトをかけないオブジェクトに設定します

f:id:Brave345:20220105141627p:plain

2.ForwardRendererの修正

SettingsファイルにあるForwardRendererを以下のように修正します

f:id:Brave345:20220105141638p:plain

変更する点としては不透明オブジェクトに適用させたいならOpaque Layer Maskをポストエフェクトをかからないようにするレイヤーにチェックします。

f:id:Brave345:20220105141657j:plain

さらにAdd Render Featureを押し、Render Featureを追加します

Eventでレンダリングのタイミングを指定(ここでポストエフェクト後にレンダリングすることを決めます)

Queueで半透明か透明オブジェクトの指定

Layer Maskでレイヤーを指定します

f:id:Brave345:20220105141706p:plain

完成

試しに右の壁だけポストエフェクトをかからないようにしてみました f:id:Brave345:20220105141731p:plain