mirror of
https://github.com/DeMuenu/MoonlightVRC.git
synced 2025-12-13 11:33:54 +00:00
Moved light type calculation logic from BlendinShader.shader to a new include file, LightStrength.hlsl, for better modularity and maintainability. Updated the shader to use the new macro for light calculations, improving code clarity and reducing duplication.
23 lines
1016 B
HLSL
23 lines
1016 B
HLSL
#ifndef LightTypeCalculations
|
|
#define LightTypeCalculations(_LightColors ,LightCounter, i, NdotL, dIntensity, radius, Lightposition) \
|
|
if(_LightType[LightCounter] == 0) \
|
|
{ \
|
|
contrib = _LightColors[LightCounter].a / max(1e-4, max(0, max(1, distanceFromLight - radius) * invSqMul) * max(0, max(1, distanceFromLight - radius) * invSqMul)); \
|
|
\
|
|
dIntensity += contrib * NdotL; \
|
|
} \
|
|
else if (_LightType[LightCounter] == 1) \
|
|
{ \
|
|
float invSq = _LightColors[LightCounter].a / max(1e-4, (distanceFromLight * invSqMul) * (distanceFromLight * invSqMul)); \
|
|
float threshold = (-1 + _LightDirections[LightCounter].w / 180); \
|
|
\
|
|
contrib = min(dot(normalize(i.worldPos - Lightposition), -normalize(_LightDirections[LightCounter].xyz)), 0); \
|
|
contrib= 1 - step(threshold, contrib); \
|
|
\
|
|
contrib = contrib * invSq; \
|
|
dIntensity += contrib * NdotL; \
|
|
} \
|
|
float3 LightColor = _LightColors[LightCounter].xyz; \
|
|
|
|
|
|
#endif |