void vertShadowCaster (VertexInput v, | |
#ifdef UNITY_STANDARD_USE_SHADOW_OUTPUT_STRUCT | |
out VertexOutputShadowCaster o, | |
#endif | |
out float4 opos : SV_POSITION) | |
{ | |
#if PLANE_CLIPPING_ENABLED | |
float4 posWorld = mul(_Object2World, v.vertex); | |
o.posWorld = posWorld.xyz; | |
#endif | |
TRANSFER_SHADOW_CASTER_NOPOS(o,opos) | |
#if defined(UNITY_STANDARD_USE_SHADOW_UVS) | |
o.tex = TRANSFORM_TEX(v.uv0, _MainTex); | |
#endif | |
} | |
half4 fragShadowCaster ( | |
#ifdef UNITY_STANDARD_USE_SHADOW_OUTPUT_STRUCT | |
VertexOutputShadowCaster i | |
#endif | |
#ifdef UNITY_STANDARD_USE_DITHER_MASK | |
, UNITY_VPOS_TYPE vpos : VPOS | |
#endif | |
) : SV_Target | |
{ | |
PLANE_CLIP(i.posWorld) | |
#if defined(UNITY_STANDARD_USE_SHADOW_UVS) | |
half alpha = tex2D(_MainTex, i.tex).a * _Color.a; | |
#if defined(_ALPHATEST_ON) | |
clip (alpha - _Cutoff); | |
#endif | |
#if defined(_ALPHABLEND_ON) || defined(_ALPHAPREMULTIPLY_ON) | |
#if defined(UNITY_STANDARD_USE_DITHER_MASK) | |
// Use dither mask for alpha blended shadows, based on pixel position xy | |
// and alpha level. Our dither texture is 4x4x16. | |
half alphaRef = tex3D(_DitherMaskLOD, float3(vpos.xy*0.25,alpha*0.9375)).a; | |
clip (alphaRef - 0.01); | |
#else | |
clip (alpha - _Cutoff); | |
#endif | |
#endif | |
#endif // #if defined(UNITY_STANDARD_USE_SHADOW_UVS) | |
SHADOW_CASTER_FRAGMENT(i) | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment