用shader做穿透看物体

本文详细介绍了一种在Unity中使用Shader实现深度与模板缓冲的技巧。通过在不同层级的对象上应用特定的Shader代码,可以精确控制哪些部分应该被渲染,从而实现复杂场景的高效绘制。具体步骤包括设置三个层级的物体,分别为前景、中景和背景,并在各自的Shader中添加针对模板缓冲的操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

效果图:

制作思路:放置三个物体分别命名为Front(此处用的是球体)、Middle(此处用的是立方体)、Back(此处用的是球体)

以下的1,2,3中代码均写到Pass下

1、Front的shader中添加

 Stencil {
                Ref 2  //模板通道值为2
                Comp always  //一直可以通过
                Pass replace
            }

2、Middle的shader中添加

	Stencil {
                Ref 2
                Comp NotEqual  //不相等的像素丢弃
                
            }

意为着不与模板通道设定的值相等,像素就丢弃

3、Back的shader中添加

Stencil {
                Ref 2
                Comp Equal  
                
            }

意为着与模板的通道设定值相等,就是我们要看到的内容

4、最后在Front的shader中不把将渲染的物体深度写入深度缓存区添加ZWrite Off

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值