60 lines
1.3 KiB
Plaintext
60 lines
1.3 KiB
Plaintext
// Shadow pass
|
|
Pass
|
|
{
|
|
Tags { "LightMode"=${VFXPassShadow} }
|
|
|
|
ZClip [_ZClip]
|
|
ZWrite On
|
|
Blend Off
|
|
|
|
HLSLPROGRAM
|
|
#pragma target 4.5
|
|
#if !USE_ALPHA_TEST && IS_TRANSPARENT_PARTICLE
|
|
#define USE_ALPHA_TEST 1
|
|
#endif
|
|
|
|
struct ps_input
|
|
{
|
|
float4 pos : SV_POSITION;
|
|
float3 offsets : TEXCOORD0;
|
|
|
|
#if VFX_USE_ALPHA_CURRENT || USE_ALPHA_TEST
|
|
// x: alpha
|
|
// y: alpha threshold
|
|
nointerpolation float2 builtInInterpolants : TEXCOORD1;
|
|
#endif
|
|
|
|
nointerpolation uint faceID : TEXCOORD2;
|
|
|
|
UNITY_VERTEX_OUTPUT_STEREO
|
|
};
|
|
|
|
#define VFX_VARYING_PS_INPUTS ps_input
|
|
#define VFX_VARYING_POSCS pos
|
|
#if USE_ALPHA_TEST
|
|
#define VFX_VARYING_ALPHA builtInInterpolants.x
|
|
#define VFX_VARYING_ALPHATHRESHOLD builtInInterpolants.y
|
|
#endif
|
|
#define VFX_VARYING_OFFSETS offsets
|
|
#define VFX_VARYING_FACEID faceID
|
|
|
|
${VFXBegin:VFXVertexAdditionalProcess}
|
|
VFXApplyShadowBias(o.VFX_VARYING_POSCS, vPosWS);
|
|
${VFXEnd}
|
|
|
|
${VFXPassShadowDefine}
|
|
${VFXInclude("Shaders/ParticleHexahedron/Pass.template")}
|
|
|
|
#pragma fragment frag
|
|
float frag(ps_input i) : SV_Target0
|
|
{
|
|
UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(i);
|
|
VFXTransformPSInputs(i);
|
|
float alpha = VFXGetFragmentColor(i).a;
|
|
alpha *= VFXGetTextureColorWithProceduralUV(VFX_SAMPLER(mainTexture),i,VFXCubeGetUV(i)).a;
|
|
VFXClipFragmentColor(alpha,i);
|
|
return 0;
|
|
}
|
|
ENDHLSL
|
|
}
|