learnopengl 模板测试
ShaderLab: Stencil 简书
ShaderLab: Stencil 官方链接
CompareFunction 枚举
StencilOp 枚举
Stencil(模板测试)处于片元着色器之后,深度测试之前,过程如下:顶点着色器 —> 片元着色器 —> 模板测试 —> 深度测试。模板测试是根据模板缓冲(Stencil Buffer)来进行,通过模板测试来决定是否丢弃该片段。模板测试可以指定比较函数(CompareFunction)来决定当前缓冲的值与引用值的比较方式,同时可以通过指定的操作函数(StencilOp )来决定比较通过后需要做怎样的操作。
CompareFunction&StencilOp
Unity内置的UI-Default.shader就使用到模板测试,如下:
模板属性
模板测试
这里Unity使用了两个枚举分别代替比较函数(CompareFunction)和操作函数(StencilOp ):
CompareFunctionStencilOp
所以在UI-Default.shader的属性中的数值代表的函数如下:
Comparison Functions
0 - Disabled
1 - Never
2 - Less
3 - Equal
4 - LEqual
5 - Greater
6 - NotEqual
7 - GEqual
8 - Always (Default)
Stencil Operations
0 - Keep (Default)
1 - Zero
2 - Replace
3 - IncrSat
4 - DecrSat
5 - Invert
6 - IncrWrap
7 - DecrWrap
网友评论