テラシュールブログ

旧テラシュールウェアブログUnity記事。主にUnityのTipsやAR・VR、ニコニコ動画についてのメモを残します。

【Unity】LWRPで特定のモデルのみポストプロセスがかからないようにする

f:id:tsubaki_t1:20191010195816j:plain
一部のモデルにだけ、色あせるポストプロセスをかけない
昨日の応用で、一部のモデルにだけポストプロセスがかからないようにします。

一部のモデルだけポストプロセスの影響をかけないようにする

 以前に紹介した方法はカメラのスタックが現在使えない関係上、使用できなくなりました。そのため、一部にのみポストプロセスをかけないといった設定を実現するには、少しアプローチを変える必要があります。

 とはいえ悪い話ではありません。以前のアプローチはレイヤーを何度も変える関係上、パフォーマンス(特にPhysics関連のコンポーネントを持っている場合)に影響がある可能性がありましたが、今回はレイヤーを何度も変えないので多分問題は無いでしょう。

 基本的には昨日のアプローチと殆ど同じです。つまり レンダリングしてポストプロセス描画後に特定のレイヤーに所属するメッシュを描画する という事です。ただし今回は不透明を指定しCameraのDepthを上書きしません。これにより 奥行判定も綺麗に出る事が期待出来ます。

f:id:tsubaki_t1:20191010200823j:plain
ポストプロセスの影響を受けるモデルにさえぎられても、ちゃんと描画できている

手順

 手順は殆どが昨日の焼き直しです。

  1. Create > Rendering > ***Pipeline > Forward Renderer でCustom Forward Rendererアセットを作ります。その後、Lightweight Renderer Pipeline AssetのRender TypeをCustomに設定し、Custom Forward Rendererアセットを登録。
  2. Project Settings> Tag and Layer を選択し、WithoutPostProcess(任意の名前)的なレイヤーを作る。
  3. ポストプロセス対象外にしたいGameObjectをWithoutPostProcess所属にする
  4. 1で作成したCustom Forward Rendererアセットを選択。
  5. Default Layer Mask から WithoutPostProcess を外す。
  6. Render Features+ を押す。追加するパスは Rendere Object を選択。
  7. NameWOPP(任意)に変更。
  8. EventAfter Rendering に変更。

f:id:tsubaki_t1:20191010201459p:plain
レイヤーを追加

f:id:tsubaki_t1:20191010201922j:plain
Custom Forward Rendererの設定を変更

 半透明も使用したい場合、追加でRenderer Feature+を押し、パスを追加。上の手順の7.8.を設定後、Filters>QueueTransparentにすればよいです。

f:id:tsubaki_t1:20191010202410j:plain
半透明がある場合でも問題なく表現出来ている

注意点

「ポストプロセスの影響を受けない」は、単純なカラーコレクション等なら多分問題はないのですが、DOFやBloomといった色を滲ませる表現がある場合は微妙な表現になるかもしれません。