0

プログラムでテッセレーションされたメッシュから目をそらすと、フレーム時間が大幅に短縮され、画面に表示されていないメッシュでテッセレーションが発生していないことがわかりました。(カスタムカリングコードはありません)

ただし、私の目的では、ジオメトリシェーダーで、画面上にあるかどうかに関係なく、テッセレーションされた頂点にアクセスする必要があります。

これらのテッセレーションされた三角形は、ジオメトリシェーダーステージに到達していますか?または、テッセレーション評価者の段階に到達する前に、それらが淘汰されているのでしょうか。

4

1 に答える 1

0

テッセレーションされたメッシュから目をそらすと、フレーム時間が大幅に短縮され、画面に表示されていないメッシュでテッセレーションが発生していないことがわかります。

さて、あなたの問題があります。より速い速度はテッセレーションの欠如を意味するという信念。

画面外のポリゴンが画面上のポリゴンよりも高速になる理由はたくさんあります。たとえば、速度の点で部分的または完全にフラグメントシェーダーおよび/またはピクセルバウンドである可能性があります。したがって、これらのフラグメントが完全に画面外にあることによってカリングされると、レンダリング時間が短縮されます。

要するに、すべてが大丈夫です。OpenGLもD3Dも、テッセレーションステージでジオメトリを任意に破棄することはできません。覚えておいてください:クリップスペースでテッセレーションする必要はないので、三角形が「オフスクリーン」であるかどうかをシステムが知る方法はありません。GSは、画面外の三角形を画面上に表示できる可能性があります。そのため、その時点では、画面外にあるものと画面外にないものを判断するための十分な情報がありません。

おそらく、何が起こっているのかというと、レンダラーのパフォーマンスは、頂点処理ではなく、ラスタライザー/フラグメントシェーダーにバインドされていたということです。したがって、頂点がまだ処理されている場合でも、三角形が画面外にあるため、高価なフラグメントごとの操作は実行されていません。したがって、パフォーマンスが向上します。

于 2012-10-18T05:22:16.260 に答える