玩过纪念碑谷的人都知道里面有个很酷炫的效果,可以转动一个盒子看到盒子里面不同的建筑物,很好玩,自己做了个类似的效果。
核心是需要用到Stencil Buffer,这里是官方文档
https://docs.unity3d.com/Manual/SL-Stencil.html
这个功能主要是提供一个遮罩功能,可以由一个数值来决定丢弃或保存在缓冲里面颜色值。
注意,Stencil Buffer跟Depth Buffer不是一个Buffer,需要特定的显卡支持,还有另外有个ColorMask用到的Color Buffer也是单独的Buffer,不要搞混了。
很多高级应用会利用Depth Buffer和Stenci Buffer在图形渲染流水线中的关联关系,例如,Stencil的数值可以按每个像素是否通过Depth Test来自动增加或者减少。一些阴影渲染,轮廓渲染都是Stencil Buffer的高级用法。
注意执行顺序:片元------>裁剪------>透明测试-------->StencilTest----------->depth Test--------> Blender--------->颜色缓冲区。
以下是代码,首先是盒子表面
Shader "Custom/StencilMaskShad