再同一个Canvas遮罩设置
Stencil
{
Ref [Value]
Comp [CompFunction]
Pass [PassOp]
Fail [FailOp]
ReadMask [Value]
WriteMask [Value]
}
其中:
Ref表示要比较的值;
Comp表示比较方法(等于/不等于/大于/小于等);
Pass/Fail表示当比较通过/不通过时对stencil buffer做什么操作(保留/替换/置0/增加/减少等);
ReadMask/WriteMask表示取stencil buffer的值时用的mask(即可以忽略某些位);
stencil buffer(位运算)的值与操作读出stencil buffer&ReadMask=1(1)
然后和Ref=3(11)进行Comp比较通过对stencil buffer做Pass操作,比如:写入stencil buffer&ReadMask&WriteMask
Shader "UI/Default"
{
Properties
{
……
_StencilComp ("Stencil Comparison", Float) = 8
_Stencil ("Stencil ID", Float) = 0
_StencilOp ("Stencil Operation", Float) = 0
_StencilWriteMask ("Stencil Write Mask", Float) = 255
_StencilReadMask ("Stencil Read Mask", Float) = 255
……
}
SubShader
{
……
Stencil
{
Ref [_Stencil]
Comp [_StencilComp]
Pass [_StencilOp]
ReadMask [_StencilReadMask]
WriteMask [_StencilWriteMask]
}
……
Pass
{
……
}
}
}