Stencil Shader¶
自己做的游戏有一个切换世界的功能,打算用模版缓冲来实现。由于每次做了之后容易忘,决定把Shader实现的思路记录下来方便以后直接使用
标准模版¶
由三部分组成 + ref:写入模版缓冲区的值 + comp:模版测试比较的方式 + pass:通过后执行的操作
ref¶
材质写入模版缓冲区的参考,范围为0~255
comp¶
模版测试比较的方式 + Comp Alawys:永远通过 + Comp Greater:大于模版缓冲区的值通过 + Comp Equal:等于模版缓冲区的通过 + Comp Less:小于模版缓冲区的值通过 + Comp GEqual: + Comp LEqual: + Comp NotEqual:
pass¶
模版测试通过后的行为 + Pass Replace: 成功的模版缓冲区域用ref值替代 + Pass Keep:保持ref值不变 + Pass Zero: 该区域ref设为0 + Pass IncrSat: + Pass DecrSat: + Pass Invert: + Pass IncrWrap:
一个例子¶
Stencil{
ref 1 //缓冲区写入1
comp always //比较永远成功
pass replace //成功后替换为1
}
其他帮助指令¶
Color Mask 0
一个指令,可以强制忽略掉RGBA通道的信息。将遮罩变成透明的物体,这非常简单- Zwrite Off 关闭深度写入,这样就可以保证遮罩始终有效。