unity 显示3D模型被遮挡时透明边框效果

本文介绍了如何在Unity中解决3D模型被遮挡时的用户体验问题,通过创建两个PASS来实现透明边框效果。第一个PASS用于绘制透明边框,当模型被遮挡时显示;第二个PASS进行正常纹理渲染。关键在于调整深度测试和深度写入,使用Greater ZTest确保被遮挡部分渲染,并关闭ZWrite避免深度写入。最后展示了实现后的效果。
摘要由CSDN通过智能技术生成

在3D游戏中,地图上的各种物件会对模型照成遮挡。主要是在主角上 体验很不好。让被遮挡的部分有个透明边框显示出来,是个比较好的解决方案。

思路:要分成两个PASS来做,1个就是画出透明边框,另一个是正常的显示纹理。透明边框的PASS需要把在被遮挡时显示,这里需要对深度测试和深度写入做操作。当没被遮挡到时则正常显示模型。

上节做完边缘泛光刚好可以用上,稍微改造下就可以被边缘显示出来。
看图:

在这里插入图片描述
成品效果:
在这里插入图片描述
ZTest 默认是LEqual的 则是相对于摄像机在越靠前的物体优先渲染。则后面的物体会被前面的物体遮挡。而我们需要相反,半透明边框是要在被遮挡住的时候才被渲染,所以使用了Greater。

ZWrite 默认是 On 则默认做深度的写入,这里同理也要关掉。

代码:

Shader "JackyShader/maskShader"
{
	Properties
	{
		_MainTex ("Texture", 2D) = "white" {}
		_maskColor("MaskColor",Color) = (0,1,0)
	}
	
	SubShader
	{
		Tags { "RenderType"="Transparent" "Queue" = "Transp
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值