[Add] All in one shader
This commit is contained in:
+78
@@ -0,0 +1,78 @@
|
||||
#ifndef ALLIN13DSHADER_SHADOW_CASTER_PASS_INCLUDED
|
||||
#define ALLIN13DSHADER_SHADOW_CASTER_PASS_INCLUDED
|
||||
|
||||
FragmentDataShadowCaster BasicVertexShadowCaster(VertexData v)
|
||||
{
|
||||
FragmentDataShadowCaster o;
|
||||
|
||||
UNITY_SETUP_INSTANCE_ID(v);
|
||||
UNITY_TRANSFER_INSTANCE_ID(v, o);
|
||||
UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(o);
|
||||
|
||||
#ifdef _USE_CUSTOM_TIME
|
||||
float3 shaderTime = allIn13DShader_globalTime.xyz + ACCESS_PROP_FLOAT(_TimingSeed);
|
||||
#else
|
||||
float3 shaderTime = _Time.xyz + ACCESS_PROP_FLOAT(_TimingSeed);
|
||||
#endif
|
||||
|
||||
v.vertex = ApplyVertexEffects(v.vertex, v.normal, shaderTime);
|
||||
|
||||
|
||||
float2 uv = v.uv;
|
||||
uv = ApplyUVEffects_VertexStage(uv, o.positionWS, 0, shaderTime);
|
||||
|
||||
o.mainUV.xy = SIMPLE_CUSTOM_TRANSFORM_TEX(uv, _MainTex);
|
||||
o.positionOS = v.vertex;
|
||||
o.positionWS = GetPositionWS(v.vertex);
|
||||
o.uv2 = v.uvLightmap;
|
||||
o.shaderTime = shaderTime;
|
||||
o.normalOS = v.normal;
|
||||
o.normalWS = GetNormalWS(v.normal);
|
||||
|
||||
|
||||
o = GetClipPosShadowCaster(v, o);
|
||||
|
||||
return o;
|
||||
}
|
||||
|
||||
float4 BasicFragmentShadowCaster(FragmentDataShadowCaster i) : SV_Target
|
||||
{
|
||||
UNITY_SETUP_INSTANCE_ID(i);
|
||||
UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(i);
|
||||
|
||||
|
||||
#if !defined(_CAST_SHADOWS_ON)
|
||||
#if defined(BIRP_PASS)
|
||||
if (unity_LightShadowBias.z != 0.0) discard;
|
||||
#else
|
||||
discard;
|
||||
#endif
|
||||
#endif
|
||||
|
||||
EffectsData data = CalculateEffectsData_ShadowCaster(i);
|
||||
data = ApplyUVEffects_FragmentStage(data);
|
||||
|
||||
float4 col = SAMPLE_TEX2D(_MainTex, i.mainUV.xy);
|
||||
|
||||
|
||||
float camDistance = distance(i.positionWS, _WorldSpaceCameraPos);
|
||||
|
||||
float4 screenPos = ComputeScreenPos(i.pos);
|
||||
|
||||
col = ApplyAlphaEffects(col,
|
||||
i.mainUV, i.uv2, data.vertexWS,
|
||||
1.0, camDistance, screenPos);
|
||||
|
||||
col.a *= ACCESS_PROP_FLOAT(_GeneralAlpha);
|
||||
|
||||
float alphaClip = saturate(col.a);
|
||||
#ifdef _ALPHA_CUTOFF_ON
|
||||
alphaClip -= ACCESS_PROP_FLOAT(_AlphaCutoffValue);
|
||||
#endif
|
||||
|
||||
clip(alphaClip - 0.001);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user