mirror of
https://github.com/DeMuenu/MoonlightVRC.git
synced 2025-12-13 11:33:54 +00:00
Replaced usage of GetCosHalfAngle() with spotAngleDeg for spot light calculations in both editor and runtime scripts. Updated shader logic to use smoothstep for light contribution falloff, improving spot light edge smoothness.
25 lines
1.1 KiB
HLSL
25 lines
1.1 KiB
HLSL
#ifndef LightTypeCalculations
|
|
#define LightTypeCalculations(_Udon_LightColors ,LightCounter, i, NdotL, dIntensity, radius, Lightposition) \
|
|
float invSqMul = max(1e-4, _InverseSqareMultiplier); \
|
|
\
|
|
if(_Udon_LightType[LightCounter] == 0) \
|
|
{ \
|
|
contrib = _Udon_LightColors[LightCounter].a / max(1e-4, max(0, max(1, distanceFromLight - radius) * invSqMul) * max(0, max(1, distanceFromLight - radius) * invSqMul)); \
|
|
\
|
|
dIntensity += contrib; \
|
|
} \
|
|
else if (_Udon_LightType[LightCounter] == 1) \
|
|
{ \
|
|
float invSq = _Udon_LightColors[LightCounter].a / max(1e-4, (distanceFromLight * invSqMul) * (distanceFromLight * invSqMul)); \
|
|
float threshold = (-1 + _Udon_LightDirections[LightCounter].w / 180); \
|
|
\
|
|
contrib = min(dot(normalize(i.worldPos - Lightposition), -normalize(_Udon_LightDirections[LightCounter].xyz)), 0); \
|
|
contrib= 1 - smoothstep(threshold, threshold + radius / 180, contrib); \
|
|
\
|
|
contrib = contrib * invSq; \
|
|
dIntensity += contrib; \
|
|
} \
|
|
float3 LightColor = _Udon_LightColors[LightCounter].xyz; \
|
|
|
|
|
|
#endif |