mirror of
https://github.com/DeMuenu/MoonlightVRC.git
synced 2026-05-06 10:22:20 +00:00
optimisations skipping empty for loops
This commit is contained in:
@@ -368,7 +368,7 @@ public partial class LightUpdater : UdonSharpBehaviour
|
|||||||
if (pushShadowMap) VRCShader.SetGlobalFloatArray(UdonID_ShadowMapIndex, _ShadowMapArray);
|
if (pushShadowMap) VRCShader.SetGlobalFloatArray(UdonID_ShadowMapIndex, _ShadowMapArray);
|
||||||
|
|
||||||
VRCShader.SetGlobalFloat(UdonID_LightCount, currentCount);
|
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
|
// Only now mark them clean
|
||||||
if (pushPositions) { _positons_isDirty = false; }
|
if (pushPositions) { _positons_isDirty = false; }
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
{ \
|
{ \
|
||||||
float distAtten = max(1.0, distanceFromLight - radius) * invSqMul; \
|
float distAtten = max(1.0, distanceFromLight - radius) * invSqMul; \
|
||||||
contrib = _Udon_LightColors[LightCounter].a / max(1e-4, distAtten * distAtten); \
|
contrib = _Udon_LightColors[LightCounter].a / max(1e-4, distAtten * distAtten); \
|
||||||
\
|
if (contrib == 0.0) continue;\
|
||||||
dIntensity += contrib; \
|
dIntensity += contrib; \
|
||||||
} \
|
} \
|
||||||
else if (typeId == 1) \
|
else if (typeId == 1) \
|
||||||
@@ -18,6 +18,7 @@
|
|||||||
contrib = smoothstep(radius,_Udon_LightDirections[LightCounter].w, contrib); \
|
contrib = smoothstep(radius,_Udon_LightDirections[LightCounter].w, contrib); \
|
||||||
\
|
\
|
||||||
contrib = contrib * invSq; \
|
contrib = contrib * invSq; \
|
||||||
|
if (contrib == 0.0) continue;\
|
||||||
dIntensity += contrib; \
|
dIntensity += contrib; \
|
||||||
} \
|
} \
|
||||||
half3 LightColor = _Udon_LightColors[LightCounter].xyz; \
|
half3 LightColor = _Udon_LightColors[LightCounter].xyz; \
|
||||||
|
|||||||
@@ -105,7 +105,7 @@ Shader "DeMuenu/World/Hoppou/Particles/LitParticles_2SP"
|
|||||||
OutLoopSetup(i, _Udon_PlayerCount) //defines count, N, dmax, dIntensity
|
OutLoopSetup(i, _Udon_PlayerCount) //defines count, N, dmax, dIntensity
|
||||||
|
|
||||||
[loop]
|
[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
|
InLoopSetup(_Udon_LightPositions, LightCounter, count, i); //defines distanceFromLight, contrib
|
||||||
|
|||||||
@@ -130,7 +130,7 @@ Shader "DeMuenu/World/Hoppou/Standard_2SP"
|
|||||||
OutLoopSetup(i, _Udon_PlayerCount) //defines count, N, dmax, dIntensity
|
OutLoopSetup(i, _Udon_PlayerCount) //defines count, N, dmax, dIntensity
|
||||||
|
|
||||||
[loop]
|
[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
|
InLoopSetup(_Udon_LightPositions, LightCounter, count, i); //defines distanceFromLight, contrib
|
||||||
|
|
||||||
|
|||||||
@@ -142,7 +142,7 @@ Shader "DeMuenu/World/Hoppou/Standard_Lightmap_2SP"
|
|||||||
OutLoopSetup(i, _Udon_PlayerCount) //defines count, N, dmax, dIntensity
|
OutLoopSetup(i, _Udon_PlayerCount) //defines count, N, dmax, dIntensity
|
||||||
|
|
||||||
[loop]
|
[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
|
InLoopSetup(_Udon_LightPositions, LightCounter, count, i); //defines distanceFromLight, contrib
|
||||||
|
|
||||||
|
|||||||
@@ -175,7 +175,7 @@ Shader "DeMuenu/World/Hoppou/WaterFlat_2SP"
|
|||||||
OutLoopSetup(i, _Udon_PlayerCount) //defines count, N, dmax, dIntensity
|
OutLoopSetup(i, _Udon_PlayerCount) //defines count, N, dmax, dIntensity
|
||||||
|
|
||||||
[loop]
|
[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
|
InLoopSetup(_Udon_LightPositions, LightCounter, count, i); //defines distanceFromLight, contrib
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user