关于unity shader的StencilBuffer
这几天学了unity shader,不得不说unity shader小小的选择项竟然蕴含了这么多东西,最近看到shaderlab 的stencil buffer真是搞得一头雾水,网上也没有对stencil在untiy 的介绍,有也是很简略的,圣典也还没翻译,就官网那几个字,真不知道写那个的人是怎么想的,就写那几个字怎么让人明白那怎么回事。好了,吐槽这么多,下面来说一下自己对stencil的认识,官网链接如下http://docs.unity3d.com/Manual/SL-Stencil.html,重点介绍那几个例子。
语法介绍
stencil buffer,也是一个buffer(废话),长度是8位,主要用于筛选pixel用,stencil buffer其实是zBuffer其中的一部分,stencil的测试与深度测试也是紧密连接,因为还要用到深度测试的结果。
语法
Stencil {
Ref 2
Comp equal
Pass keep
Fail decrWrap
ZFail keep
}
下面一条一条来:
Ref referenceValue,这个是设定参考值,stencilbuffer里面的值会与他比较
ReadMask readMask,这个是在比较参考值和buffer值的时候用的,用于读取buffer值里面的值。
WriteMask writeMask,这个是写入buffer值用的。
Comp comparisonFunction,这个比较重要,这个是比较方式。大致有Greater,GEqual,Equal等八种比较方式,具体待会列图。
Pass stencilOperation,这个是当stencil测试和深度测试都通过的时候,进行的stencilOperation操作方法。注意是都通过的时候!