映像編集等で後々画像を切り分けたいときに使える、CustomStencil を使ったオブジェクトマスクの作り方を紹介します
CustomStencil について#
CustomStencil(CustomDepthStencil)とは、CustomDepth の拡張で、オブジェクトごとに任意の値(1 ~ 255)を書き込むことができる機能です
CustomStencil の使用設定#
ProjectSettings で、 Custom Depth-Stencil Pass を Enabled with Stencil に設定しておきましょう

CustomStencil を設定したい Actor(Mesh)の Render CustomDepth Pass を ON にし、 CustomDepth Stencil Value に値を設定します

PostProcessMaterial の実装#
基本実装はこのような形になります
CustomStencil の出力は 0 ~ 255 に展開された状態で出てくるので、任意のステンシル値と一致したときに 1 を、一致しないときに 0 を出力すれば OK です

RGB で分けたいときは、これを 3 つ用意し、それぞれ別のステンシル値を対象にすれば良いでしょう

画像ではわかりやすいように色と掛け算して Add で合成していますが、MakeFloat3 でまとめたほうが若干スマートになります

チラツキ対策#
PostProcess の適用タイミングが AfterTonemapping の場合、アンチエイリアスによって境界がちらつく場合があります
ちらつきを抑えたい場合は、 BlendableLocation を BeforeTonemapping にしておきましょう
参考資料#
ポストプロセスマテリアル
https://docs.unrealengine.com/5.0/ja/post-process-materials-in-unreal-engine/

