diff --git a/Shader/BlendinShader.shader b/Shader/BlendinShader.shader index 1de969c..ec85d5e 100644 --- a/Shader/BlendinShader.shader +++ b/Shader/BlendinShader.shader @@ -15,12 +15,13 @@ Shader "DeMuenu/World/Hoppou/RevealStandart" //Moonlight _InverseSqareMultiplier ("Inverse Square Multiplier", Float) = 1 _LightCutoffDistance ("Light Cutoff Distance", Float) = 100 - //Moonlight END + _shadowCasterTex ("Shadow Caster Texture", 2D) = "white" {} _shadowCasterColor ("Shadow Caster Color", Color) = (1,1,1,1) _OutSideColor ("Outside Color", Color) = (1,1,1,1) _MinBrightnessShadow ("Min Brightness for Shadows", Range(0,1)) = 0 + //Moonlight END @@ -91,12 +92,6 @@ Shader "DeMuenu/World/Hoppou/RevealStandart" MoonlightGlobalVariables - float4x4 _Udon_WorldToLocal; - sampler2D _shadowCasterTex; - float4 _shadowCasterColor; - float4 _OutSideColor; - float _MinBrightnessShadow; - v2f vert (appdata v) { diff --git a/Shader/Includes/Variables.hlsl b/Shader/Includes/Variables.hlsl index 95e74a8..bb89d05 100644 --- a/Shader/Includes/Variables.hlsl +++ b/Shader/Includes/Variables.hlsl @@ -11,4 +11,12 @@ float _Udon_ShadowMapIndex[MAX_LIGHTS];\ float _Udon_PlayerCount; /* set via SetFloat */ \ + + float4x4 _Udon_WorldToLocal; \ + sampler2D _shadowCasterTex; \ + float4 _shadowCasterColor; \ + float4 _OutSideColor; \ + float _MinBrightnessShadow; \ + + #endif \ No newline at end of file diff --git a/Shader/LitParticles.shader b/Shader/LitParticles.shader index e4debd5..ba6d357 100644 --- a/Shader/LitParticles.shader +++ b/Shader/LitParticles.shader @@ -9,6 +9,12 @@ Shader "DeMuenu/World/Hoppou/Particles/LitParticles" //Moonlight _InverseSqareMultiplier ("Inverse Square Multiplier", Float) = 1 _LightCutoffDistance ("Light Cutoff Distance", Float) = 100 + + + _shadowCasterTex ("Shadow Caster Texture", 2D) = "white" {} + _shadowCasterColor ("Shadow Caster Color", Color) = (1,1,1,1) + _OutSideColor ("Outside Color", Color) = (1,1,1,1) + _MinBrightnessShadow ("Min Brightness for Shadows", Range(0,1)) = 0 //Moonlight END @@ -36,6 +42,7 @@ Shader "DeMuenu/World/Hoppou/Particles/LitParticles" #include "Includes/Lambert.hlsl" #include "Includes/DefaultSetup.hlsl" #include "Includes/Variables.hlsl" + #include "Includes/Shadowcaster.cginc" @@ -118,7 +125,14 @@ Shader "DeMuenu/World/Hoppou/Particles/LitParticles" LightTypeCalculations(_Udon_LightColors, LightCounter, i, NdotL, dIntensity, _Udon_LightPositions[LightCounter].a, _Udon_LightPositions[LightCounter].xyz); - dmax = dmax + contrib * float4(LightColor, 1) * NdotL; // accumulate light contributions + float4 ShadowCasterMult = float4(1,1,1,1); + if (_Udon_ShadowMapIndex[LightCounter] > 0.5) { + ShadowCasterMult = SampleShadowcasterPlane(_Udon_WorldToLocal, _shadowCasterTex, _Udon_LightPositions[LightCounter].xyz, i.worldPos, _OutSideColor); + ShadowCasterMult *= _shadowCasterColor; + ShadowCasterMult = float4(ShadowCasterMult.rgb * (1-ShadowCasterMult.a), 1); + } + + dmax = dmax + contrib * float4(LightColor, 1) * 1 * max(ShadowCasterMult, _MinBrightnessShadow); }