diff --git a/Scripts/LightUpdater.cs b/Scripts/LightUpdater.cs index 4ab7796..dedffc7 100644 --- a/Scripts/LightUpdater.cs +++ b/Scripts/LightUpdater.cs @@ -368,7 +368,7 @@ public partial class LightUpdater : UdonSharpBehaviour if (pushShadowMap) VRCShader.SetGlobalFloatArray(UdonID_ShadowMapIndex, _ShadowMapArray); VRCShader.SetGlobalFloat(UdonID_LightCount, currentCount); - Debug.Log($"[MoonlightVRC] Pushed {currentCount} lights to shader."); + //Debug.Log($"[MoonlightVRC] Pushed {currentCount} lights to shader."); // Only now mark them clean if (pushPositions) { _positons_isDirty = false; } diff --git a/Shader/Includes/LightStrength.hlsl b/Shader/Includes/LightStrength.hlsl index 28dcfcb..adc4c57 100644 --- a/Shader/Includes/LightStrength.hlsl +++ b/Shader/Includes/LightStrength.hlsl @@ -6,7 +6,7 @@ { \ float distAtten = max(1.0, distanceFromLight - radius) * invSqMul; \ contrib = _Udon_LightColors[LightCounter].a / max(1e-4, distAtten * distAtten); \ - \ + if (contrib == 0.0) continue;\ dIntensity += contrib; \ } \ else if (typeId == 1) \ @@ -18,6 +18,7 @@ contrib = smoothstep(radius,_Udon_LightDirections[LightCounter].w, contrib); \ \ contrib = contrib * invSq; \ + if (contrib == 0.0) continue;\ dIntensity += contrib; \ } \ half3 LightColor = _Udon_LightColors[LightCounter].xyz; \ diff --git a/Shader/LitParticles_2SP.shader b/Shader/LitParticles_2SP.shader index d0c9a46..6365b79 100644 --- a/Shader/LitParticles_2SP.shader +++ b/Shader/LitParticles_2SP.shader @@ -105,7 +105,7 @@ Shader "DeMuenu/World/Hoppou/Particles/LitParticles_2SP" OutLoopSetup(i, _Udon_PlayerCount) //defines count, N, dmax, dIntensity [loop] - for (int LightCounter = 0; LightCounter < MAX_LIGHTS; LightCounter++) + for (int LightCounter = 0; LightCounter < count; LightCounter++) { InLoopSetup(_Udon_LightPositions, LightCounter, count, i); //defines distanceFromLight, contrib diff --git a/Shader/Standard_2SP.shader b/Shader/Standard_2SP.shader index 25825b7..7945607 100644 --- a/Shader/Standard_2SP.shader +++ b/Shader/Standard_2SP.shader @@ -130,7 +130,7 @@ Shader "DeMuenu/World/Hoppou/Standard_2SP" OutLoopSetup(i, _Udon_PlayerCount) //defines count, N, dmax, dIntensity [loop] - for (int LightCounter = 0; LightCounter < MAX_LIGHTS; LightCounter++) + for (int LightCounter = 0; LightCounter < count; LightCounter++) { InLoopSetup(_Udon_LightPositions, LightCounter, count, i); //defines distanceFromLight, contrib diff --git a/Shader/Standard_Lightmap_2SP.shader b/Shader/Standard_Lightmap_2SP.shader index 137255c..c13071c 100644 --- a/Shader/Standard_Lightmap_2SP.shader +++ b/Shader/Standard_Lightmap_2SP.shader @@ -142,7 +142,7 @@ Shader "DeMuenu/World/Hoppou/Standard_Lightmap_2SP" OutLoopSetup(i, _Udon_PlayerCount) //defines count, N, dmax, dIntensity [loop] - for (int LightCounter = 0; LightCounter < MAX_LIGHTS; LightCounter++) + for (int LightCounter = 0; LightCounter < count; LightCounter++) { InLoopSetup(_Udon_LightPositions, LightCounter, count, i); //defines distanceFromLight, contrib diff --git a/Shader/Water_2SP.shader b/Shader/Water_2SP.shader index 53bf98c..c38fc8b 100644 --- a/Shader/Water_2SP.shader +++ b/Shader/Water_2SP.shader @@ -175,7 +175,7 @@ Shader "DeMuenu/World/Hoppou/WaterFlat_2SP" OutLoopSetup(i, _Udon_PlayerCount) //defines count, N, dmax, dIntensity [loop] - for (int LightCounter = 0; LightCounter < MAX_LIGHTS; LightCounter++) + for (int LightCounter = 0; LightCounter < count; LightCounter++) { InLoopSetup(_Udon_LightPositions, LightCounter, count, i); //defines distanceFromLight, contrib