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} } } }
新建一个材质球,然后将目标图片和遮挡图片赋予一下,即可看到效果
