2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Unityのシェーダでステンシルを使う際のComparison Functionの定義値

Posted at

uGUIのUIにカスタムのシェーダーを適用させる時は基本的に、公式のビルトインシェーダからUI-Defaultを引っ張ってきて、これを下地にコーディングすることでカスタマイズします。
(そうしないとuGUIで用意しているマスク等の機能が働かなくなるのと、実行時にワーニング吐きまくったりする)。
その標準で用意されている機能の中の、ステンシルの比較関数についてですが、外から変更できるようにStencil Comparisonとしてパラメータ化されています。
aaaa.jpg

この値に何が設定されるとどうなるか、ですが、なぜかこちらの公式マニュアルだと、Enumの定義順通りに載っていない罠が仕掛けられており、ちょっと混乱したのでメモしておきます。
※ちなみにStencil Operationについては定義順通りに記載されているようです。

CompareFunction(比較関数)

項目 説明
Disabled 0 ステンシルテストを無効にします。
Never 1 常にステンシルテストを通しません。
Less 2 ピクセルのレファレンス値がバッファの値より小さい場合のみレンダリングします。
Equal 3 ピクセルのレファレンス値がバッファの値と等しい場合のみレンダリングします。
LEqual 4 ピクセルのレファレンス値がバッファの値より小さいか等しい場合のみレンダリングします。
Greater 5 ピクセルのレファレンス値がバッファの値より大きい場合のみレンダリングします。
NotEqual 6 ピクセルのレファレンス値がバッファの値と等しくない場合のみレンダリングします。
GEqual 7 ピクセルのレファレンス値がバッファの値より大きいか等しい場合のみレンダリングします。
Always 8 常にステンシルテストをパスさせます。デフォルト値。

参考リファレンス

Unity マニュアル - ShaderLab:ステンシル
Unity Scripting API - CompareFunction
Unity Scripting API - StencilOp

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?