Shader "Custom/ARShadow"
{
Properties
{
_ShadowColor("Shadow Color", Color) = (0.1, 0.1, 0.1, 0.53)
}
SubShader
{
Tags{ "Queue" = "Geometry+2" //"RenderType" = "Transparent" //
}
//Tags{ "RenderType" = "Opaque" }//通过使用tags来告诉渲染引擎在什么时候该如何渲染他们所期望的效果。
Blend SrcAlpha OneMinusSrcAlpha// 最终颜色 = 源颜色 * 源透明值 + 目标颜色*(1 - 源透明值)最常用的透明混合方式。贴图alpha值高的部分,显示得实,而混合的背景很淡。而alpha值高的部分,贴图显示得淡,而背景现实得实。
Tags { "RenderType"="Opaque" "Queue"="Overlay"}
//LOD 100
//ColorMask 0
Pass
{
Tags{ "LightMode" = "ForwardBase" }//传递4个顶点光,环境光和第一个像素光(方向灯)。用于正向渲染,环境主要方向灯和定点光/SH 等的应用 ,第一个像素光所在的反射通道标记为Forward
//Tag{ "LightMode" = "Vertex" }//用于顶点光照渲染,当物体没有光照映射时,所有顶点光照被应用
CGPROGRAM
pragma vertex vert
pragma fragment frag
pragma multi_compile_fwdbase
include "UnityCG.cginc"//引包unity
include "AutoLight.cginc" //引包Light
struct appdata
{
float4 vertex : POSITION;
};
struct v2f
{
float4 pos : SV_POSITION;
SHADOW_COORDS(2)
};
fixed4 _ShadowColor;//阴影颜色
v2f vert(appdata v)
{
v2f o;
o.pos = UnityObjectToClipPos(v.vertex);
TRANSFER_SHADOW(o);
return o;
}
fixed4 frag(v2f i) : SV_Target//类似COLOR
{
fixed atten = SHADOW_ATTENUATION(i);
return fixed4(_ShadowColor.rgb,saturate(1 - atten)*_ShadowColor.a);//最终颜色 = 源颜色 * 源透明值 + 目标颜色*(1 - 源透明值)
}
ENDCG
}
}
FallBack "Diffuse"
}