// Upgrade NOTE: replaced '_Projector' with 'unity_Projector'
|
// Upgrade NOTE: replaced '_ProjectorClip' with 'unity_ProjectorClip'
|
// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'
|
|
Shader "DynamicShadowProjector/Projector/Mipmapped Shadow" {
|
Properties {
|
_ShadowTex ("Cookie", 2D) = "gray" {}
|
_ClipScale ("Near Clip Sharpness", Float) = 100
|
_Alpha ("Shadow Darkness", Range (0, 1)) = 1.0
|
_Ambient ("Ambient", Range (0, 1)) = 0.3
|
_DSPMipLevel ("Max Mip Level", float) = 4.0
|
_Offset ("Offset", Range (-1, -10)) = -1.0
|
}
|
Subshader {
|
Tags {"Queue"="Transparent-1"}
|
Pass {
|
Name "PASS"
|
ZWrite Off
|
ColorMask RGB
|
Blend DstColor Zero
|
Offset -1, [_Offset]
|
|
CGPROGRAM
|
#pragma vertex DSPProjectorVertMipmap
|
#pragma fragment DSPProjectorFragMipmap
|
#pragma multi_compile_fog
|
#pragma target 3.0
|
#include "UnityCG.cginc"
|
#include "DSPProjector.cginc"
|
|
uniform half _DSPMipLevel;
|
|
DSP_V2F_PROJECTOR DSPProjectorVertMipmap(float4 vertex : POSITION, float3 normal : NORMAL)
|
{
|
DSP_V2F_PROJECTOR o;
|
o.pos = UnityObjectToClipPos (vertex);
|
o.uvShadow = mul (unity_Projector, vertex);
|
float z = mul(unity_ProjectorClip, vertex).x;
|
o.uvShadow.z = _DSPMipLevel * z;
|
o.alpha.x = _ClipScale * z;
|
o.alpha.y = DSPCalculateDiffuseShadowAlpha(vertex, normal);
|
UNITY_TRANSFER_FOG(o, o.pos);
|
return o;
|
}
|
|
fixed4 DSPGetMipmappedShadowTex(DSP_V2F_PROJECTOR i)
|
{
|
float3 uv;
|
uv.xy = saturate(i.uvShadow.xy/i.uvShadow.w);
|
uv.z = i.uvShadow.z;
|
return tex2Dlod(_ShadowTex, uv.xyzz);
|
}
|
|
fixed4 DSPProjectorFragMipmap(DSP_V2F_PROJECTOR i) : SV_Target
|
{
|
fixed4 shadow = DSPGetMipmappedShadowTex(i);
|
return DSPCalculateFinalShadowColor(shadow, i);
|
}
|
ENDCG
|
}
|
}
|
}
|