2016-08-10 8 views
3

私と友人は、ステンシルバッファに関する議論を継続しています。要するに、私は、ステンシルバッファがOpenGL 3.2以降のプログラマブルパイプラインツールより優れている状況を見つけることができませんでした。最新のOpenGLでステンシルバッファを使用していますか?最新のOpenGLではステンシルバッファーは依然として関連していますか?

[編集]

対象者のすべての入力をありがとうございました。

+2

高価なフラグメントシェーダーの実行を避けるための[Early fragment test](https://www.opengl.org/wiki/Early_Fragment_Test) – genpfault

+0

私はこのリンクが関連していると思ったhttp://gamedev.stackexchange.com/questions/105667/stencil-buffer-vs-conditional-discard-in-fragment-shader – Harish

+2

それはこれまでと同じくらい有用で、プログラム可能なパイプラインを使用するかどうかを決定します。ステンシルテストは、フラグメントシェーダが実行された後に、固定機能のフラグメント単位操作の一部として適用されます。レンダリングパイプラインのその部分はまだプログラム可能ではありません。 –

答えて

11

フラグメントシェイダーからステンシルインデックステクスチャをサンプリングすることができるので、これまで以上に便利です。ステンシルバッファがプログラマブルパイプラインの一部ではないと主張すべきではありません。

深度バッファは、単純な合格/不合格フラグメントの拒否に使用されます。この拒否バッファは、コメントで示唆されているようにステンシルバッファでも実行できます。しかし、ステンシルバッファは、複数回のパスでテスト結果に関する情報を蓄積することもできます。

7

最近の例をAndonの答えに追加するために、GTA Vは、IDバッファのようなステンシルバッファを使用して、プレーヤーをマークしています文字、車、植生など。

その後、たとえばステンシルバッファを使用してキャラクターにのみ地下散乱を適用するか、モーションブラーから彼を除外する。

GTA V Graphics Study(強くお勧めしますが、それは素晴らしい読み取りだ!)を参照してください

編集:あなたがソフトウェアでこれを行うことができます。しかし、ソフトウェアでもラスタライズやテッセレーションを行うことができます...最終的には、私が推測する性能についてです。 depth24stencil8では、ハードウェアでサポートされている形式が優れています。ステンシルテストはフラグメントシェーダで破棄するのが最も早いでしょう。

+0

研究のためのおかげで、非常に興味深い読書と私は前に見たことがなかった。もっと多くのアイデアや意見を集めるために、これを数日間開いたままにしておきますが、これは非常に確かな答えです。ありがとう。 – claudehenry

+1

@claudehenry:[ステンシルルーティングされたA-バッファリング](http://www.humus.name/index.php?page=3D&ID=76)と呼ばれる順序に依存しない透明性のための興味深いテクニックがあります。このテクニックは、ステンシルバッファを使ってソートを延期しますマルチサンプリングされたフレームバッファ内で最終的な解決まで断片化する。 _これは、ピクセルにアイデンティティを割り当てるというkaryonの例を補完するソフトウェアでは不可能なことです._ –

+0

@ AndonM.Colemanは非常にクールで、ありがとう、ありがとう。 – claudehenry

-1

ただ一つの他のユースケースを提供するために、シャドウボリューム(別名「ステンシル影」)はまだ非常に関連していますhttps://en.wikipedia.org/wiki/Shadow_volume

彼らは影がピクセル完璧なことになっている屋内のシーンに便利だし、あなたの」アルファテストされた葉が押し出されたシャドウボリュームを混乱させる可能性は低くなります。

シャドウマップはもっと一般的ですが、脳死のCreateive/3DLabs特許がzfailメソッドで期限切れになると、ステンシルシャドウが復活すると思われます。

+1

これは特許ではなく、必要以上の充填率です。とにかくシャドウマップは単純にスケールが良くなり、鮮明なシャドウは写実的ではありません。 – ybungalobill

関連する問題