特定の空間内にある場合にのみ、特定のオブジェクトがレンダリングされるような効果を生み出したいと思います。秘密のオブジェクトが中にあるときにそれを明らかにする「魔法のデコーダーボリューム」を考えてみてください。
秘密のオブジェクトと明らかになるボリュームがすべて球であると仮定しましょう。最初に非秘密オブジェクトをレンダリングします。次に、表示ボリュームの背面を深度バッファーとステンシルバッファーにレンダリングします。デプステストとステンシルテストの両方に合格したシークレットオブジェクトのみをレンダリングすると、それらも表示ボリュームの前に描画されます。公開ボリュームの前に保持する2番目のデプスバッファを作成する機能が必要です。これを行うための標準的な方法はありますか?
おそらく、露出している球の中心を通過するように、近くのクリッピング平面を設定できると思います。次に、ニアクリッピングプレーンを目に近づけ、リビールボリュームの前面をレンダリングし、ファークリッピングプレーンをその中心に設定し、深度テストよりも大きいシークレットオブジェクトの頂点のみをレンダリングしてステンシルテストに合格することができます。 。
この2パスのアプローチは少し醜い感じがします。ボリューム内に秘密のオブジェクトの前にあるはずの非秘密のオブジェクトがある場合、逆の深度テストのために押しつぶされる可能性があります。シェーダーの経験はあまりありませんが、それが道だと思いますか?