Stencil Buffer (ステンシルバッファ)は、ゲームグラフィックスのレンダリングや最適化(テクニカルアート)において極めて重要となる技術用語です。画面のピクセルごとに任意の整数(マスク値)を書き込み、特定の形状の範囲内でのみオブジェクトを描画する切り抜きシェーダー技術の解説。

現実世界での例え:スプレーアートで使う『切り抜き型紙(ステンシル板)』のマスキング

ステンシルバッファは、「スプレーアートで星型を描くために、壁に当てる『型紙(マスクシート)』」です。まず、型紙を壁に当てて、星型の部分だけ壁を露出させます(ステンシルバッファへの書き込み)。その上からどんな色のスプレー(描画オブジェクト)を吹き付けても、型紙の穴が空いた星型の部分(ステンシル値が一致したピクセル)だけに塗料が乗り、枠の外側には絶対に塗料がはみ出しません。これにより、極めて複雑な形状での描画切り抜きが実現します。

Stencil Buffer (ステンシルバッファ) concept infographic diagram

図:Stencil Buffer (ステンシルバッファ)の基本的な処理フローと仕組みを日本語表記で分かりやすく図解したインフォグラフィック

詳細な仕組みと動作原理

ポータルの「枠(マスク板)」のシェーダーでステンシルバッファに特定のID(例:1)を書き込み、ポータルの「中身」のシェーダーで「ステンシル値が1のピクセルのみ描画を許可」する比較テストを設定します。