Unity中Shader模板测试使用到的二进制
Ref Comp StencilBufferValue
Ref:Shader中自定义的值
StencilBufferValue:模板缓冲区中的值
比较的结果,只有通过和不通过两种结果
(Ref & ReadMask) Comp (StencilBufferVallue & ReadMask)
前半部分:Shader中自定义的值 和 ReadMask 中的值进行 与运算
后半部分:模板缓冲区中的值 和 ReadMask 中的值进行 与运算
比较的结果,只有通过和不通过两种结果
最左边的这一位一般用来表示这个数是正数 还是 负数,这样的话这个数就是有符号整数。
如果最左边这一位不用来表示正负数,而是和后面的连在一起表示整数,那么就不能区分这个数是正还是负,就只能是正数,这就是无符号整数。

https://tool.oschina.net/hexconvert
例:(给ReadMask赋值为 3,则在Ref值为 1,5···时显示出的效果是我们想要的效果)
Stencil
{
Ref [_Ref]
//以下两个属性一般不做修改
ReadMask 3//[_StencilReadMask]
//WriteMask [_StencilWriteMask]
Comp [_StencilComp]
Pass [_StencilOp]
//Fail [_Fail]
//ZFail [_ZFail]
}
模板缓冲区中的值(1) 01
ReadMask的值(3) 11
01 & 11 = 01
Ref的值(5): 101
ReadMask :011
101 & 011 = 001
当Comp使用Equal时,左右两边的值相等
Ref为1(001 & 011 = 001)

Ref为5 (101 & 011 = 001)
