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"http://引包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"
}