先展示一下效果:![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/7caf236f4712b3fa1afd8a01856cb24e.png)
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/8eb163d8a6c4e85e3c99a6559ac47bb7.png)
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/ae82ab3d33e24651bc44b85bec521761.png)
原理
(1)首先渲染后面的不透明物体(图中绿色和白色)
(2)然后渲染透明遮罩,第一个Pass记录透明遮罩的深度之后在绘制透明颜色,混合
(3)到绘制被遮住物体时,只要开启ZTest就可以使其深度测试失败,透明遮罩罩住的位置不绘制。
具体实现
遮罩部分
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/87a70408ac41f34005dff9bbedc94842.png)
Shader "MyStudy/OpacityMask"
{
Properties
{
_Color ("Color", Color) = (0,0,0,0)
}
SubShader
{
Tags{
"Queue" = "Transparent" "IgnoreProjector"=