Skip to main content

ステンシルバッファとは何ですか?

Computer Computer Graphicsプログラミングでは、ステンシルバッファーは、他のグラフィックバッファーに関連して使用して使用してさまざまな効果を達成するか、シーンの領域をマスクして処理またはレンダリングされないメモリの領域です。ステンシルバッファーは、黒と白の画像に似たピクセルあたりのバッファーであり、バッファ内の各位置は、ほとんどの場合1バイトの長さであるが、1ビットほど小さい値を保持できます。バッファーはもともと、実際のステンシルのように真のまたは誤ったマスクとして機能するように設計されていたため、ステンシルバッファーの異なる領域の値をゼロ以外の値に設定することで、シーンの領域を不明瞭にしたり無視したりすることができます。シャドウボリュームの描画、オブジェクトの周りにハローの実装、オブジェクトが互いに重複する領域を見つけるなど、単純なマスキング以外のバッファーには多くの用途があります。多くの場合、バッファーはグラフィックカードのグラフィックメモリに維持されているため、レンダリング中に迅速にアクセスできます。頂点がグラフィックパイプラインを通過すると、3次元(3D)シーンに適用されました。3D頂点の位置がゼロに設定されていないステンシルバッファーの領域に関連する3D頂点の位置が、その頂点を無視し、その残りのパイプライン処理がスキップされる可能性があります。これにより、プログラマーはシーンの小さな部分のみをレンダリングしたり、画像を不規則な形のビューポートにしたりする方法を可能にします。たとえば、より大きなシーン内の小さな鏡の反射など、ミラーの形状がステンシルとして描かれています。バッファー、その後、反射はその形状を通して描画されます。グラフィックカードが開発されると、ほとんどのバッファーは各ピクセルの位置に完全なバイト値を保持できるようになり、プログラマーが場所でより複雑な値を持つことができました。これにより、バッファーを使用して、オブジェクトがラスター化されたときにオブジェクトが画面上でそのピクセルを占有する場合、バッファーの値を場所で増加させることでオブジェクトが重複する領域を検出できます。この操作の後、バッファ内の各ピクセル位置の値は、画面上でそのピクセルを横断するオブジェクトの数に等しくなります。これは、最初に非常に薄暗い照明でシーンをレンダリングすることで実行でき、すべてが日陰になっているように見えます。次に、光源によって照らされているシーン内のすべてのポリゴン表面の位置を決定するために計算が行われ、これらの形状はステンシルバッファーに転送されます。シーンは、すべてのオブジェクトが完全に照らされ、ステンシルの形を介して影のシーンにブレンドされているかのように再びレンダリングされ、影のあるオブジェクトが含まれているように見える画像を効果的に作成します。