Unity Shader 实现遮罩效果
发表于2018-02-09
shader遮罩原理就是利用alhpa通道改变纹理的区域透明度,添加多层贴图就可以实现纹理多个区域不同的透明情况。考虑到有些场景中会需要用到,本篇文章就给大家介绍下在Unity中基于shader遮罩效果实现。
效果:

shader代码:
Shader "Custom/Mask" {
Properties {
_MainTex ("Base (RGB)", 2D) = "white" {}//目标图片,即需要被遮罩的图片
_MaskLayer("Culling Mask",2D) = "white"{}//混合的图片,设置为白色的图片,任何颜色与白色混合,其颜色不变
_Cutoff("Alpha cutoff",Range(0,1)) = 0
}
SubShader {
Tags {
"Queue"="Transparent"
}//渲染队列设置为 以从后往前的顺序渲染透明物体
Lighting off //关闭光照
ZWrite off //关闭深度缓存
Blend off //关闭混合
AlphaTest GEqual[_Cutoff] //启用alpha测试
Pass{
SetTexture[_MaskLayer]{combine texture}//混合贴图
//混合贴图,previous为放置在前一序列这样在进行AlphaTest的时候会以这个图片为主来进行混合
SetTexture[_MainTex]{combine texture,previous}
}
}
}
新建一个材质球,然后将目标图片和遮挡图片赋予一下,即可看到效果

