メインシーンがあり、その上にレンダリングしたいシーンがあります。パフォーマンスのために初期の深度テストを使用したいので、すべてを前から後ろに一緒にレンダリングしたいと思います。ただし、各シーンをデプスバッファの半分に分離することはできません。これは、その精度が制限されるためです。
通常、24ビットのデプスバッファ精度があります。これを半分に分割すると、23ビットの精度が得られます。どういうわけか、それが大きな問題になるのではないかと思います。もしそうなら、フロントオーバーレイに与えるスペースを少なくすることで、いつでもそれを取り戻すことができます。たとえば、深度範囲の5%だけです。
これは、FPSゲームが「ビューモデル」(プレーヤーの手と銃)オーバーレイを実行する方法です。プロがすることをしなさい。
どういうわけか、オーバーレイシーンをレンダリングし、深度バッファーの値を1ではなく-1に変更してから、メインシーンをレンダリングできますか?
-1は有効なデプスバッファ値ではありません。だから私はあなたが代わりに0と言ったふりをします。
はい、できます。シーンをデプステクスチャにレンダリングできます。次に、テクスチャから深度値を取得し、それを1と比較するフルスクリーンのクワッドをレンダリングします。正確に1.0でない場合は、1.0ではなく0を書き込みます。
しかし、この演習の要点はパフォーマンスですよね?私が今言ったことを機能させるために何が起こらなければならないかを考えてください。
GPUは、最初のシーンのレンダリングが完了するまで、そのフルスクリーンクワッドをレンダリングできません。つまり、レンダリングパイプライン全体を完全にフラッシュする必要があり、貴重な時間を無駄にします。
ソリューションと比較するとglDepthRange
、これはおそらく遅くなります。