遠近法の正しい補間を無効にする場合(noperspective)


13

GLSLでは、頂点属性の遠近法による正しい補間がデフォルト設定です-noperspective修飾子を使用して、特定の頂点属性に対してそれを無効にできます。後処理シェーダー以外では、パースペクティブの正しい補間が無効になっているのを見たことがありません。他の使用例はありますか?また、パフォーマンス面でも違いはありますか?

回答:


15

ユースケースはあなたの想像力によってのみ制限されます!noperspective三角形が画面の表面で完全に平らであるかのように、属性が三角形全体に補間されます。これでアンチエイリアスワイヤフレームレンダリングを実行できます。最も近いエッジまでのスクリーンスペース距離をnoperspective可変として出力し、それをピクセルシェーダーのカバレッジとして使用します。

または、フォトリアリスティックではないレンダリングを実行していて、ハーフトーンのような画面空間のパターンが必要な場合はnoperspective、テクスチャリングに使用するUVを有効にすることができます。

パフォーマンスに違いはありますか?おそらく、おそらく気付かないでしょう(あまり強力でないグラフィックハードウェアを除いて)。ほとんどのGPUは、並行して実行される一連のパイプラインステージで構成されています。ある意味では、最も高価なステージのコストのみを支払います。ラスタライズが最も制限的な部分である場合は、ピクセルごとにスキップしている分割との違いが見られる場合があります。これはシャドウマップまたはデプスプリパスをレンダリングするときに最も可能性が高いと思いますが、これらも補間する属性が最も少ないです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.