こんにちは、Quake レベルのレンダラーを書いています。透明性を考慮に入れる必要があるところまで来ています。バイナリ スペース パーティショナー (BSP) ツリーは、データが距離で並べ替えられるようにフォーマットされていることを知っています。または、少なくともそれは私が聞いたことですが、これを達成する方法がわかりません。BSP ツリーを構築し、PVS をデコードしました。
やるべきこと: 1. 自分がどのリーフにいるのかを把握します。たとえば、6 です。2. 最大から葉 6 までレンダリングします。ただし、これらの葉は私の錐台と PVS にあります。3. 再び PVS と錐台を考慮して、最小からリーフ 6 までレンダリングします。
これが BSP ツリーのしくみではないでしょうか。
これが質問 1 です。質問 2 は PVS を扱います。スペースが問題だった昔、PVS は圧縮されていたので優れていました。私が今持っている方法では、フレームをレンダリングするたびに PVS を解凍するのではなく、一度それを行い、レンダリング中にトラバースするベクトルに葉の可視性を保存します。これは理にかなっていますか、それとも逆効果ですか?
要約すると、BSP ツリーが構造化されており、リーフが既に距離によってソートされており、リーフ 6 (合計 9 リーフのうち) で、9、8、7、6、1、2、3 をレンダリングする必要があると仮定できますか? 4、5 (リーフ 6 の PVS に 9 つすべてが表示されていると仮定) は、同様に PVS と錐台を考慮します。
ありがとうございました。