・実現したいこと
現在、Levelに配置したActorから作られたシーンと、背景生成Libraryで生成した背景用のColor Texture, Depth TextureをSceneViewExtensionで合成してScene ColorとScene Depthを生成して表示を行っています。
今後、背景部分にColor Correct Regionを使用して色補正をかけられるようにしたいと考えています。
(詳細は添付画像を参照ください)
・質問事項
Custom Depth BufferとCustom Stencil Bufferの値を、色補正したい範囲に合わせて更新することができれば、Color Correct Regionで指定した背景Assetだけに色補正をかけることができるのではないかと考えています。
1. C++で実装したPluginから、Custom Depth BufferとCustom Stencil Bufferを更新することは可能でしょうか。
2. 更新可能な場合は、どのような実装をすれば更新できるか情報をいただけると助かります。
3. 更新できない場合は、指定した領域だけ色補正をかける機能を実現するために、どのようなアプローチができるかアドバイスをいただけると助かります。
[Attachment Removed]
お世話になっております。
具体的な実装状況が分かりかねますので推測を交えての回答となりますが、
基本的には描画コマンドの直前に DepthStencilState を設定しておくことによりステンシル値の更新が行われるようになります。
GraphBuilder.AddPass 等としている場合は Draw コマンドの手前で
FRHIDepthStencilState* DepthStencilState = TStaticDepthStencilState<
true, CF_DepthNearOrEqual,
true, CF_Always, SO_Keep, SO_Keep, SO_Replace,
false, CF_Always, SO_Keep, SO_Keep, SO_Keep,
0xFF, 0xFF
>::GetRHI();
uint32 StencilValue = 128; // 書き込みStencil値
RHICmdList.SetDepthStencilState(DepthStencilState, StencilValue);
のようなものを追加することでステンシルの設定を変更できます。
TStaticDepthStencilState のテンプレートパラメータについては必要に応じて調整して下さい。
AddDrawScreenPass 関数を利用している場合は DepthStencilState を受け取るオーバーロードを用いるようにし、上記と同様に取得した DepthStencilState をパラメータとして渡すようにすることで対応できるかと思います。
よろしくお願いいたします。
[Attachment Removed]
ご回答ありがとうございました。
こちら解決いたしましたので、closeよろしくお願いいたします
[Attachment Removed]