一个Shader遮罩的代码

本文深入探讨了Shader Custom/AlphaMask的实现原理及应用,包括颜色、纹理、遮罩纹理、进度参数等关键元素的使用方法。

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

Shader "Custom/AlphaMask" {
	   Properties
	    {
	    _Color ("Main Color", Color) = (1,1,1,1)
	    _MainTex ("Base (RGB) Trans (A)", 2D) = "white" {}
	    _MaskTex ("Mask (A)", 2D) = "white" {}
	    _Progress ("Progress", Range(0,1)) = 0.5
	    }
	    Category
	    {
	        Lighting Off
	        ZWrite Off
	        Cull back
	        Fog { Mode Off }
	        Tags {"Queue"="Transparent" "IgnoreProjector"="True"}
	        Blend SrcAlpha OneMinusSrcAlpha
	        SubShader
	        {
	            Pass
	            {
	                CGPROGRAM
	                #pragma vertex vert
	                #pragma fragment frag
                    sampler2D _MainTex;
	                sampler2D _MaskTex;
	                fixed4 _Color;
	                float _Progress;
	                struct appdata
	                {
	                    float4 vertex : POSITION;
	                    float4 texcoord : TEXCOORD0;
	                };
	                struct v2f
	                {
                        float4 pos : SV_POSITION;
	                    float2 uv : TEXCOORD0;
	                };
	                v2f vert (appdata v)
	                {
	                    v2f o;
	                    o.pos = mul(UNITY_MATRIX_MVP, v.vertex);
	                    o.uv = v.texcoord.xy;
	                    return o;
                }
	                half4 frag(v2f i) : COLOR
	                {
	                    fixed4 c = _Color * tex2D(_MainTex, i.uv);
	                    fixed ca = tex2D(_MaskTex, i.uv).a;
	                    c.a *= ca >= _Progress ? 0f : 1f;
	                    return c;
	                }
	                ENDCG
	            }
	        }
	        SubShader
	        {          
	             AlphaTest LEqual [_Progress]  
	              Pass  
	              {  
	                 SetTexture [_MaskTex] {combine texture}  
	                 SetTexture [_MainTex] {combine texture, previous}  
	              }  
	        }
	        
	    }
	    Fallback "Transparent/VertexLit"
	}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值