Files
MoonlightVRC/Shader/Includes/LightStrength.hlsl
2026-03-28 17:15:19 +01:00

27 lines
1.0 KiB
HLSL

#ifndef LightTypeCalculations
#define LightTypeCalculations(_Udon_LightColors ,LightCounter, i, NdotL, dIntensity, radius, Lightposition) \
half typeId = _Udon_LightType[LightCounter]; \
\
if(typeId == 0) \
{ \
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) \
{ \
float distAtten = distanceFromLight * invSqMul; \
float invSq = _Udon_LightColors[LightCounter].a / max(1e-4, distAtten * distAtten); \
\
contrib = dot(-L, normalize(_Udon_LightDirections[LightCounter].xyz)); \
contrib = smoothstep(radius,_Udon_LightDirections[LightCounter].w, contrib); \
\
contrib = contrib * invSq; \
if (contrib == 0.0) continue;\
dIntensity += contrib; \
} \
half3 LightColor = _Udon_LightColors[LightCounter].xyz; \
#endif