ステンシルバッファー (stencil buffer) とは、コンピュータグラフィックスにおいて、カメラからは陰になって見えない部分などの必要ではない部分の表示を省きGPUCPUの負荷を減らす手法。

この画像には白い領域と黒い領域があり、それぞれステンシル・バッファの1と0を表している。次に、ステンシルバッファの値を反転させることによって、縞の上に図形が描かれる。そのピクセルのバッファの値が0(黒)であれば、そのピクセルを白(1)に着色し、その逆も同様である。

ちなみにステンシルとは英語で型紙などを意味しており、その名の通り指定した領域(型紙に該当)しか描画しないことからこの名がつけられた。

Zバッファーとともかれた技術であり、2023年現在販売されているほぼすべてのGPUで使用できる技術である

概要

編集

ステンシルバッファは描画の際にその部分を画面に表示するかしないかを決める「型紙」の役目を成す。これはポリゴンの前後関係を保持するZバッファよりももっと具体的にどこを描画しなくていいか決められる。しかも時間通りに可変的にマスクを変更できる、通常静的に用意するマスクは変更が難しいが、ステンシルバッファであればそれを自由に行えるのである。

ステンシルバッファーはもっぱらカラーバッファーやZバッファーと同じVRAMのメモリ空間内に格納されており、ステンシルバッファーに与えられるビット数は8ビットであることが多い。

与えられたビットは、[0, 2n-1] の範囲の数値を表すために使用する、またブール行列 (n は割り当てられたビット数) としても使用でき、それぞれを使用して、シーンの特定の部分の陰面を処理する。