unity文档ShaderLab: Stencil
1.语法
所有参数都设置时写法及默认值如下
Stencil
{
Ref 0
ReadMask 255
WriteMask 255
Comp Always
Pass Keep
Fail Keep
ZFail Keep
}
2.参数
- Ref 要比较的值,或者叫参考值(如果Comp的值不为always)和要写入缓冲区的值(如果Pass,Fail 或 ZFail 被设为replace时),取值范围[0,255]
- ReadMask
- WirteMask
- Comp 比较参考值和缓冲区当前值的方法,默认为alaways。
方法名 | 描述 |
---|---|
Greater | > |
GEqual | >= |
Less | < |
LEqual | <= |
Equal | == |
NotEqual | != |
Always | 总是 |
Never | 从不 |
- Pass 当模板测试和深度测试都通过时执行操作
- Fail 当模板测试和深度测试都失败时执行操作
- ZFail 当模板测试通过而深度测试失败时执行操作
Pass, Fail, ZFail都是模板操作,其可以设置的操作方式如下
操作 | 描述 |
---|---|
Keep | 保持当前缓冲区的值 |
Zero | 写入0 |
Replace | 写入参考值 |
IncrSat | 缓冲区值+1,不能大于255 |
DecrSat | 缓冲区值-1,不能小于0 |
Invert | 所有位取反 ,相当于 ~ |
IncrWrap | 缓冲区值+1,如果缓冲区 已经是255,则写入0 |
DecrWrap | 缓冲区值-1,如果缓冲区 已经是0,则写入255 |