具体的实现如下:
1,生成ShadowMap
2,根据ShadowmMap实现阴影的绘制
ShadowMap的生成:
v2f vert (appdata v)
{
v2f o;
o.vertex = mul(unity_ObjectToWorld, v.vertex);
float3 normal = normalize(mul(v.normal, unity_WorldToObject));
//o.vertex.xyz -= normal * _gShadowNormalBias;
o.vertex = UnityWorldToClipPos(o.vertex);
#if defined(SHADER_TARGET_GLEL)
o.vertex.z += _gShadowBias * 2;
#elif defined(UNITY_REVERSED_Z)
o.vertex.z -= _gShadowBias;
#else
o.vertex.z += _gShadowBias;
#endif
o.depth = o.vertex.zw;
return o;
}
float4 frag (v2f i) : SV_Target
{
float depth = i.depth.x / i.depth.y;
#if defined(SHADER_TARGET_GLEL)
depth = depth * 0.5 + 0.5;
#el