rabidus-test/Assets/Amazing Assets/Advanced Dissolve/Shaders/Universal/Particles/AdvancedDissolveParticlesUn...

105 lines
3.5 KiB
HLSL
Raw Normal View History

2023-09-18 20:09:22 +03:00
#ifndef UNIVERSAL_PARTICLES_UNLIT_INPUT_INCLUDED
#define UNIVERSAL_PARTICLES_UNLIT_INPUT_INCLUDED
//Lines below are moved to the main shader file
//#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl"
//#include "Packages/com.unity.render-pipelines.universal/Shaders/Particles/ParticlesInput.hlsl"
//// NOTE: Do not ifdef the properties here as SRP batcher can not handle different layouts.
//CBUFFER_START(UnityPerMaterial)
// float4 _SoftParticleFadeParams;
// float4 _CameraFadeParams;
// float4 _BaseMap_ST;
// half4 _BaseColor;
// half4 _EmissionColor;
// half4 _BaseColorAddSubDiff;
// half _Cutoff;
// half _DistortionStrengthScaled;
// half _DistortionBlend;
// half _Surface;
//CBUFFER_END
#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Particles.hlsl"
#define SOFT_PARTICLE_NEAR_FADE _SoftParticleFadeParams.x
#define SOFT_PARTICLE_INV_FADE_DISTANCE _SoftParticleFadeParams.y
#define CAMERA_NEAR_FADE _CameraFadeParams.x
#define CAMERA_INV_FADE_DISTANCE _CameraFadeParams.y
#define _BumpScale 1.0
half4 SampleAlbedo(float2 uv, float3 blendUv, half4 color, float4 particleColor, float4 projectedPosition, TEXTURE2D_PARAM(albedoMap, sampler_albedoMap), float4 cutoutSource)
{
half4 albedo = BlendTexture(TEXTURE2D_ARGS(albedoMap, sampler_albedoMap), uv, blendUv) * color;
// No distortion Support
half4 colorAddSubDiff = half4(0, 0, 0, 0);
#if defined (_COLORADDSUBDIFF_ON)
colorAddSubDiff = _BaseColorAddSubDiff;
#endif
albedo = MixParticleColor(albedo, half4(particleColor), colorAddSubDiff);
float cutout = _Cutoff;
//Advanced Dissolve/////////////////////////////////////////
#if defined(_AD_STATE_ENABLED) && defined(_ALPHATEST_ON)
AdvancedDissolveCalculateAlphaAndClip(cutoutSource, albedo.a, cutout);
#endif
AlphaDiscard(albedo.a, cutout);
albedo.rgb = AlphaModulate(albedo.rgb, albedo.a);
#if defined(_SOFTPARTICLES_ON)
albedo = SOFT_PARTICLE_MUL_ALBEDO(albedo, half(SoftParticles(SOFT_PARTICLE_NEAR_FADE, SOFT_PARTICLE_INV_FADE_DISTANCE, projectedPosition)));
#endif
#if defined(_FADING_ON)
ALBEDO_MUL *= CameraFade(CAMERA_NEAR_FADE, CAMERA_INV_FADE_DISTANCE, projectedPosition);
#endif
return albedo;
}
half4 SampleAlbedo(TEXTURE2D_PARAM(albedoMap, sampler_albedoMap), ParticleParams params, float4 cutoutSource)
{
half4 albedo = BlendTexture(TEXTURE2D_ARGS(albedoMap, sampler_albedoMap), params.uv, params.blendUv) * params.baseColor;
// No distortion Support
#if defined (_COLORADDSUBDIFF_ON)
half4 colorAddSubDiff = _BaseColorAddSubDiff;
#else
half4 colorAddSubDiff = half4(0, 0, 0, 0);
#endif
albedo = MixParticleColor(albedo, half4(params.vertexColor), colorAddSubDiff);
float cutout = _Cutoff;
//Advanced Dissolve/////////////////////////////////////////
#if defined(_AD_STATE_ENABLED) && defined(_ALPHATEST_ON)
AdvancedDissolveCalculateAlphaAndClip(cutoutSource, albedo.a, cutout);
#endif
AlphaDiscard(albedo.a, cutout);
albedo.rgb = AlphaModulate(albedo.rgb, albedo.a);
#if defined(_SOFTPARTICLES_ON)
albedo = SOFT_PARTICLE_MUL_ALBEDO(albedo, half(SoftParticles(SOFT_PARTICLE_NEAR_FADE, SOFT_PARTICLE_INV_FADE_DISTANCE, params)));
#endif
#if defined(_FADING_ON)
ALBEDO_MUL *= CameraFade(CAMERA_NEAR_FADE, CAMERA_INV_FADE_DISTANCE, params.projectedPosition);
#endif
return albedo;
}
#endif // UNIVERSAL_PARTICLES_PBR_INCLUDED