2

古いクライアントをエミュレートしていますが、ほとんどのテクスチャは 128x128 です。テクスチャの切り替えとレンダリング呼び出しはコストがかかることを知っているので、実行時にすべての小さなテクスチャの非常に大きなテクスチャ アトラスを作成することを回避できますか。

そこから大きなテクスチャをバインドし、シェーダーを介してアトラスのテクスチャ オフセットでレンダリングできますか? これにより、どのようなパフォーマンス ヒットが発生しますか? 2 番目の質問は、並べ替えに関するものです。レベル ファイルは、BSP ツリーの小さなチャンクに分割されます。それらは非常に小さく、多くの場合、レベルごとに数千あります。明らかに遅い現在の方法は、錐台と PVS (Quake 3 スタイル) にある各 BSP リーフのテクスチャの各グループをレンダリングすることです。これに対するアイデアの修正は何ですか?

見ることができる各領域を (後ろから前に) 実行し、表示されているすべての三角形をテクスチャごとにグループ化し、一度にすべてレンダリングしたいと思いますか。何らかの理由で、これは遅くなるかもしれないといつも感じています。最初に並べ替えて一度にすべてをレンダリングするか、並べ替えをスキップして一度に各領域をレンダリングする方が理にかなっていますか?

4

1 に答える 1

1

はい、テクスチャ アトラスにテクスチャを詰め込むことができるはずです。テクスチャがタイル化されているかどうか、ミップマップとフィルタリングで何をしたいかなどの問題については、慎重に検討する必要があります。

ジオメトリが整理されるまで、それを保留することをお勧めします。ドローコールの数を適切な数に減らすだけで十分です。テクスチャを変更するコストは、最新のハードウェアでは必ずしもそれほど悪くはありません。

レベルのレンダリングに関しては、最新のハードウェアでは、Z バッファと早期カリングを利用するために、後ろから前ではなく前から後ろにレンダリングするのがより一般的です (つまり、カメラのすぐ前に壁がある場合)。 、そして z バッファリングを有効にして最初にそれを描画すると、ハードウェアは、その背後に描画しようとするものを拒否するのにかなり優れています)。

考えられるアプローチの 1 つは、BSP を単純なグリッド (またはクワッド ツリーまたはオクト ツリー) などのより粗い構造に再処理することです。ポリゴンをきれいに分割する必要さえありません。周囲にバウンディング ボックスを配置した多数のセクターを用意し、フラスタム カリングを行ってボックスを大まかに (前から後ろに) 並べ替えるだけです。このアプローチでも PVS を保持できますが、レンダリング チャンクが大きく粗くなると、その有用性が低下する可能性があります。

ただし、これを行う前に、いくつかのベンチマーク テストを設定し、パフォーマンス情報を記録することを強くお勧めします。実際にパフォーマンスを分析しない限り、正しいことを行っているかどうかはわかりません。実行している最悪のパフォーマンスが何であるかを正確に特定できる場合は、それを修正するだけです。

于 2012-12-06T07:23:59.110 に答える