Unity Stencilテンプレートのテスト概要

2127 ワード

テンプレートテストは、透明度テストや深さテストと同様に、ピクセルポイントがレンダリングされるかどうかを決定するためのプロセスです.ここで使用するテンプレートバッファは、色バッファおよび深さバッファと同様に、テンプレートバッファは、画面上のピクセルポイントごとに符号なし整数値(通常は8ビット整数)を保存することができる.テンプレートテストは、透明度テスト(alpha test)の後、深さテスト(depth test)の前に発生します.すべてのテストに合格した場合、カラーバッファのカラーが更新されます.
一般的にstencilの完全な構文フォーマットは次のとおりです.
stencil{
	Ref referenceValue
	ReadMask  readMask
	WriteMask writeMask
	Comp comparisonFunction
	Pass stencilOperation
	Fail stencilOperation
	ZFail stencilOperation
}

キーワード
実際の意味.
デフォルト
Ref
を参照してください.
なし
ReadMask
(ref&readMask Comp関数stencilBuffer&readMask)のbool値はテンプレートテストに合格するかどうかを決定します
255
WriteMask
(ref&writeMask)の値は、修正方法がreplaceの場合、整数値がbufferを上書きし、その他の修正方法は無効です
255
Comp
参照値をテンプレート値と比較する方法を定義します.すなわち、テンプレートテストが合格するかどうかを決定します.
Always
Pass
テンプレートテストと深さテストの両方が合格した場合、参照値に基づいてテンプレート値を変更する方法を定義します.
Keep
Fail
テンプレートテストに失敗した場合の、参照値に基づくテンプレート値の変更方法を定義します.
Keep
ZFail
テンプレートテストが合格し、深さテストが合格しなかった場合のテンプレート値の変更方法を定義します.
Keep
 
ComparisonFunctionオプション:
Greater
左側>右側のみ、テンプレートテストに合格し、ピクセルをレンダリングする
GEqual
左>=右の場合のみ、テンプレートテストに合格し、ピクセルをレンダリングします.
Less
に相当
LEqual
左側の<=右側のみ、テンプレートテストに合格し、ピクセルをレンダリングする「<=」操作に相当します.
Equal
左=右の場合のみ、テンプレートテストにパスし、ピクセルをレンダリングします.
NotEqual
「!=」操作に相当します.つまり、左のみです.=右側、テンプレートテストに合格し、ピクセルをレンダリング
Always
数式の両側の値にかかわらず、テンプレートテストは常にパスし、ピクセルをレンダリングします.
Never
数式の両側がなぜ値するのか分からないが、テンプレートテストはいつも失敗し、ピクセルは捨てられた.
 
StencilOperationオプション:
Keep
現在のバッファの内容を保持します.stencilBufferValueは変更されません.
Zero
0をバッファに書き込みます.stencilBufferValueが0になります.
Replace
参照値をバッファに書き込み、stencilBufferValueにreferenceValueを割り当てる
IncrSat
stencilBufferValueに1を加え、stencilBufferValueが255を超えた場合、255を超えないままにします.
DecrSat
stencilBufferValueは1を減らし、stencilBufferValueが0を超えた場合、0に保持されます.つまり、0より小さくありません.
Invert
現在のテンプレートバッファ値をビット単位で反転
IncrWrap
現在のバッファ値に1を加算し、バッファ値が255を超えると0になります(その後、自己増加を続けます).
DecrWrap
現在のバッファ値は1減少し、バッファ値が0の場合は255になります(その後、自己減少を続けます).