Shader "AlphaMaskNotGray"
{
Properties
{
_MainTex("Base (RGB)", 2D) =
"white" {}
_AlphaTex("Alpha mask (R)", 2D)
= "white" {}
_StencilComp("Stencil
Comparison", Float) = 8
_Stencil("Stencil ID", Float) =
0
_StencilOp("Stencil Operation",
Float) = 0
_StencilWriteMask("Stencil
Write Mask", Float) = 255
_StencilReadMask("Stencil Read
Mask", Float) = 255
_ColorMask("Color Mask", Float)
= 15
}
SubShader{
Tags{ "Queue" = "Transparent"
"IgnoreProjector" = "True" "RenderType" = "Transparent" }
LOD 100
ZWrite Off
Blend SrcAlpha
OneMinusSrcAlpha
Stencil
{
Ref[_Stencil]
Comp[_StencilComp]
Pass[_StencilOp]
ReadMask[_StencilReadMask]
WriteMask[_StencilWriteMask]
}
ColorMask[_ColorMask]
Pass{
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#include "UnityCG.cginc"
struct appdata_t {
float4 vertex : POSITION;
float2 texcoord :
TEXCOORD0;
};
struct v2f {
float4 vertex :
SV_POSITION;
half2 texcoord :
TEXCOORD0;
};
sampler2D _MainTex;
sampler2D _AlphaTex;
float4 _MainTex_ST;
v2f vert(appdata_t v)
{
v2f o;
o.vertex =
mul(UNITY_MATRIX_MVP, v.vertex);
o.texcoord =
TRANSFORM_TEX(v.texcoord, _MainTex);
return o;
}
fixed4 frag(v2f i) : SV_Target
{
fixed4 col = tex2D(_MainTex,
i.texcoord);
//col.rgb = (col.r * 299 + col.g * 587 + col.b * 114) / 1000;//灰度
fixed4 col2 = tex2D(_AlphaTex, i.texcoord);
return fixed4(col.r, col.g,
col.b, col.a * col2.a);
}
ENDCG
}
}
}