Unity Shader 实现遮罩效果

发表于2018-02-09
评论0 3.2k浏览
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}
        } 
    }
}

新建一个材质球,然后将目标图片和遮挡图片赋予一下,即可看到效果

如社区发表内容存在侵权行为,您可以点击这里查看侵权投诉指引

0个评论