ちょっとFrame Debuggerで確認してみましたところ、後段の和服男はリニアカラー用のバッファ(だと思います...私の場合では「_CameraColorTexture_320x240_B10G11R11_UFloatPack32_Tex2D」という名称のようでした)にレンダリングされ、最後にトーンマッピングが行われてスクリーンに出力されているように見えました。
どうやらリニアカラーバッファにはエフェクト処理前の青空が残ってしまっており、そこに和服男をレンダリングするという描画過程のために青い空が復活してしまうようでした。
そこで、試しに和服男用のカメラの「HDR」をオフにしたところ...
下図のように描画過程が変化しました。和服男がスクリーンへダイレクトにレンダリングされるようになり、灰色の空を背景に色付きの和服男が描かれました。
もしHDRをオフにしたくないとかの理由があったり、あるいはその他うまくいかなくなる条件を見つけましたらコメントください。恥ずかしながら未だにURPは不慣れでして自信がありませんが、可能であれば回避方法を考えてみようと思います。
RenderObjectsRendererFeature案
別案として、下記のような手順はどうでしょうか。
- 和服男用のカメラは使用せず(非アクティブにするか削除してしまう)、青空用カメラ単独とする。
- 青空用カメラのCulling Maskは青空も和服男も両方対象にする(今回の場合はTransparentFXとIgnore Raycast)。
- レンダラーアセット(私の場合は
Assets/Settings/Renderer2D.asset
に置かれていました)のインスペクター末尾にある「Add Renderer Feature」ボタンで「Render Objects (Experimental)」を追加する。
- EventをAfterRendering、またはAfterRenderingPostProcessingにする(Nameはそのままでもいいですが、役割に即した名前を付けておくとFrame Debuggerで確認するときだとかに区別が付きやすいかもしれません)。
- FiltersのQueueをTransparentにする(スプライトなら普通はTransparentでしょうが、特殊なシェーダーを使っていたり不透明オブジェクトを使いたい場合はOpaqueにする必要があるかもしれません)。
- FiltersのLayer Maskを追加描画したいオブジェクトのレイヤー(今回の和服男の場合はIgnore Raycast)にする。
以上のような措置を加えたところ、描画過程は下図のようになりました。
和服男がメインのレンダリングパスと追加パスで合わせて2回描画されるのが若干無駄かもしれませんが、とりあえず色付きになりました。
ただしキャラクター側に半透明部分があると、この2回描画の仕様のせいで半透明部分が濃くなってしまうかもしれません。それが困るようでしたら、また別案を検討する(独自のRendererFeatureを作るとか?)ことになるかと思います。