ステンシルテストの各プロパティ解説
今回は、ステンシルテストにおける主要なプロパティである Ref、ReadMask、Comp、WriteMask について、例とともにわかりやすく解説します。
Ref(リファレンス値)
Ref は、ステンシルバッファの値と比較する基準値です。
0〜255 の範囲で指定され、内部ではビット単位で扱われます。
Ref = 3; // 0000 0011(2進表記)
この値と、ステンシルバッファの値が ReadMask と Comp の条件に基づいて比較されます。
ReadMask(リードマスク)
ReadMask は、比較に使うビット位置を指定します。
1 のビットのみが比較対象になり、0 のビットは無視されます。
Ref = 3; // 0000 0011
ReadMask = 1; // 0000 0001
この例では、最下位ビット(ビット0) のみが比較対象です。
つまり、ステンシルバッファ & 1 == Ref & 1 の条件で比較されます。
Comp(比較条件)
Comp は、Ref とステンシルバッファの値をどのように比較するかを指定します。
代表的な比較条件は以下のとおりです:
Equal: 一致する場合に合格NotEqual: 一致しない場合に合格Less: バッファの値がRefより小さい場合に合格Greater: バッファの値がRefより大きい場合に合格
例:Equal 条件
Comp = Equal;
Ref = 2; // 0000 0010
ReadMask = 3; // 0000 0011
この場合、下位2ビットが 10 と一致するかどうかで判定されます。
WriteMask(ライトマスク)
WriteMask は、ステンシルテストに合格した場合に書き込むビット位置を指定します。
WriteMask の各ビットが 1 になっている場所のみが書き込み対象となり、他のビットは変更されません。
WriteMask = 2; // 0000 0010
この場合、Ref のビット 1 のみがステンシルバッファに反映されます。