2016-07-06 8 views
0

私はこれが出力マージ段階で起こっているzバッファのようなものだと知っています。 そして、ref値とバッファ値を比較して、ポイントを渡すことができるかどうかを決定します。ステンシルバッファーは何に使用されていますか?

しかし、私が実装できるすべての効果は、常に共通のバッファで実装できると思います。 render to textureをシェーダリソースビューとして使用する場合は、ピクセルシェーダに入力します。 次に、ピクセルを手動でクリップするかどうかを判断して決定します。 コードは次のようになります。 if(値を比較) clip(0); ステンシルバッファは共通バッファで置き換えることができるので、引き続き使用します。 グラフィックスハードウェアのアクセラレーションを使用することができますか?(特別な指示がありますか?)

+1

ステンシルはレンダリングパイプラインの追加ステップであるため、カラーバッファとステンシルバッファにレンダリングするには1回のパスだけが必要です。カラーバッファでは、カラーバッファが同じプロパティ(format、h、w)を持たなければならないという唯一の問題があります。 –

答えて

2

"アウトプットマージャー"はレンダリングの重要なパフォーマンスパスの1つで、固定機能のままです。現代のGPUはプログラマブルになっていますが、アルファブレンディングを行うことができますテストの種類に加えて、あなたが同じパスでステンシルデータと同様の試験を行うことができます。ステンシルバッファのような多くの技術のために使用されている

struct D3D11_DEPTH_STENCIL_DESC 
{ 
    BOOL DepthEnable; 
    D3D11_DEPTH_WRITE_MASK DepthWriteMask; 
    D3D11_COMPARISON_FUNC DepthFunc; 
    BOOL StencilEnable; 
    UINT8 StencilReadMask; 
    UINT8 StencilWriteMask; 
    struct D3D11_DEPTH_STENCILOP_DESC 
    { 
     D3D11_STENCIL_OP StencilFailOp; 
     D3D11_STENCIL_OP StencilDepthFailOp; 
     D3D11_STENCIL_OP StencilPassOp; 
     D3D11_COMPARISON_FUNC StencilFunc; 
    } FrontFace, BackFace; 
}; 

影、反射、デスケーリングなど。wikipediaを参照。

0

最初:はい、ステンシルバッファでできること(あるいは少なくとも普通にはそうすること)は、間違いなく他の方法で行うことができます。グラフィックスカードのほとんどの部分と同様に、問題は余分なハードウェアがあなたに仕事をより速くさせることができるかどうかです(そして、私は答えがしばしばはいであると確信しています)。

たとえば、広告コピーのようなものでは、特に一般的なことの1つは、日没時の海岸のショットのような、あらかじめ定義された形状にクリップされた画像を持ち、一部の輪郭にクリップされています執筆:

http://www.tipsquirrel.com/wp-content/uploads/2011/07/Sunset.jpg

ステンシルバッファは、ハードウェアで、非常に迅速に行うことが、これは全く些細なことができます。ステンシルバッファにテキストをレンダリングし、通常の画像をレンダリングします(ステンシルバッファを有効にして)。

これは、テキストが映画のタイトル/クレジットであり、写真が映画の紹介であり、すべてのフレームを変更する映画タイトルのようなものに特に有効です。この場合、ステンシルバッファを一度設定してから、更新する前に(たとえば、次のクレジットセットを使用して)複数の連続したフレームに再利用することができます。

ここで、同じことを他の方法(たとえば、ピクセルシェーダー)で実行できることは間違いありません。しかし、ステンシルバッファーは、これらの代替品のほとんどよりも高速で安価です。ステンシルバッファはプログラム可能なシェーダよりもはるかに長く永遠に残っているという歴史的事実もあります。

+0

ありがとうございました。 – FireFLO

+0

私はそれを理解しています。つまり、ステンシルバッファはプログラム可能なシェーダよりも早いということです。それは速くて柔軟性がありません。効果を実装するには、最初にステンシルを使用しようとします。高レベルシェーダーの使用を検討しています。 – FireFLO

関連する問題