Shader "ShaderLearn/alpha_01" {
Properties{
_MainTex("MainTex", 2D) = ""{}
_Color ("Color", color) = (1,1,1,1)
}
SubShader{
pass{//遮挡部分
blend srcalpha oneminussrcalpha///混合 1- 源
ztest greater //根据深度值(z)和帧缓存进行判断,满足条件才显示颜色
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#include "UnityCG.cginc"
sampler2D _MainTex;
fixed4 _Color;
struct v2f{
float4 pos : POSITION;
float2 uv :TEXCOORD0;
};
v2f vert(appdata_full v){
v2f o;
o.pos = UnityObjectToClipPos(v.vertex);
o.uv = v.texcoord.xy;
return o;
}
fixed4 frag(v2f IN) : COLOR{
return fixed4(1,1,0,1);
}
ENDCG
}
pass//未遮挡部分
{
blend srcalpha oneminussrcalpha///混合 1- 源
ztest less
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#include "UnityCG.cginc"
sampler2D _MainTex;
fixed4 _Color;
struct v2f
{
float4 pos : POSITION;
float2 uv :TEXCOORD0;
};
v2f vert(appdata_full v)
{
v2f o;
o.pos = UnityObjectToClipPos(v.vertex);
o.uv = v.texcoord.xy;
return o;
}
fixed4 frag(v2f IN) : COLOR{
fixed4 color = tex2D(_MainTex, IN.uv);
color = (color + _Color) / 2;
return color;
}
ENDCG
}
}
FallBack "Diffuse"
}