HoloprojStreaming/Assets/lilToon/Shader/Includes/lil_common_frag_alpha.hlsl

66 lines
2.6 KiB
HLSL

//------------------------------------------------------------------------------------------------------------------------------
// Alpha in PS
// This is included in the subpass fragment shader
#define LIL_ALPHA_PS
#if LIL_RENDER > 0
#if defined(LIL_OUTLINE)
BEFORE_ANIMATE_OUTLINE_UV
OVERRIDE_ANIMATE_OUTLINE_UV
#else
BEFORE_ANIMATE_MAIN_UV
OVERRIDE_ANIMATE_MAIN_UV
#endif
//------------------------------------------------------------------------------------------------------------------------------
// Main Color
#if defined(LIL_OUTLINE)
BEFORE_OUTLINE_COLOR
OVERRIDE_OUTLINE_COLOR
#else
BEFORE_MAIN
OVERRIDE_MAIN
#endif
//------------------------------------------------------------------------------------------------------------------------------
// Alpha Mask
BEFORE_ALPHAMASK
#if !defined(LIL_LITE) && defined(LIL_FEATURE_ALPHAMASK)
OVERRIDE_ALPHAMASK
#endif
//------------------------------------------------------------------------------------------------------------------------------
// Dissolve
BEFORE_DISSOLVE
#if !defined(LIL_LITE) && defined(LIL_FEATURE_DISSOLVE)
float dissolveAlpha = 0.0;
OVERRIDE_DISSOLVE
#endif
//------------------------------------------------------------------------------------------------------------------------------
// Fur
BEFORE_FUR
#if defined(LIL_FUR) && defined(LIL_V2F_FURLAYER)
OVERRIDE_FUR
#endif
//------------------------------------------------------------------------------------------------------------------------------
// Cutout
clip(fd.col.a - _Cutoff);
#if LIL_RENDER == 2 && !defined(SHADER_API_GLES)
// Dither
float alphaRef = fd.col.a;
#if defined(LIL_FUR) && defined(LIL_V2F_FURLAYER) && defined(SHADERPASS) && (SHADERPASS == SHADERPASS_SHADOWS)
fd.col.a = saturate(fd.col.a*5.0);
#endif
#if LIL_SUBPASS_TRANSPARENT_MODE == 1 || defined(SHADERPASS) && (SHADERPASS == SHADERPASS_SHADOWS)
alphaRef = lilSampleDither(_DitherMaskLOD, input.positionCS.xy, fd.col.a);
#elif LIL_SUBPASS_TRANSPARENT_MODE == 0 && defined(LIL_PASS_SHADOWCASTER_INCLUDED)
#if defined(SHADOWS_DEPTH)
if(LIL_MATRIX_P._m33 != 0.0)
#endif
alphaRef = lilSampleDither(_DitherMaskLOD, input.positionCS.xy, fd.col.a);
#endif
clip(alphaRef - _SubpassCutoff);
#endif
#endif
#undef LIL_ALPHA_PS