AdditionalLightが破綻していた問題を修正

This commit is contained in:
notargs
2023-04-27 14:31:14 +09:00
parent c9e62eb7ad
commit 35b39df95d
2 changed files with 45 additions and 1 deletions

View File

@@ -61,7 +61,7 @@ half4 MToonFragment(const FragmentInput fragmentInput) : SV_Target
for (uint lightIndex = 0u; lightIndex < pixelLightCount; ++lightIndex)
{
UnityLighting additionalUnityLighting = GetAdditionalUnityLighting(input, normalWS, lightIndex);
col.rgb += GetMToonLighting(additionalUnityLighting, mtoonInput).rgb;
col.rgb += GetMToonURPAdditionalLighting(additionalUnityLighting, mtoonInput).rgb;
}
#endif
#endif

View File

@@ -211,4 +211,48 @@ half4 GetMToonLighting(const UnityLighting unityLight, const MToonInput input)
}
}
#ifdef MTOON_URP
inline half GetMToonURPAdditionalLighting_Shadow(const UnityLighting lighting, const half dotNL)
{
if (MToon_IsPbrCorrectOn())
{
return lighting.directLightAttenuation.x * step(0, dotNL);
}
return lighting.directLightAttenuation.x * 0.5 * (min(0, dotNL) + 1);
}
inline half GetMToonURPAdditionalLighting_Shade(const UnityLighting lighting, const MToonInput input, const half dotNL)
{
const half shadeShift = GetMToonLighting_Reflectance_ShadingShift(input);
const half shadeToony = _ShadingToonyFactor;
if (MToon_IsPbrCorrectOn())
{
const half shadeInput = dotNL;
return mtoon_linearstep(-1.0 + shadeToony, +1.0 - shadeToony, shadeInput + shadeShift);
}
const half shadeInput = dotNL;
return mtoon_linearstep(-1.0 + shadeToony, +1.0 - shadeToony, shadeInput + shadeShift);
}
half4 GetMToonURPAdditionalLighting(const UnityLighting unityLight, const MToonInput input)
{
const half dotNL = GetMToonLighting_DotNL(unityLight, input);
const half shade = GetMToonURPAdditionalLighting_Shade(unityLight, input, dotNL);
const half shadow = GetMToonURPAdditionalLighting_Shadow(unityLight, dotNL);
const half3 direct = GetMToonLighting_DirectLighting(unityLight, input, shade, shadow);
const half3 lighting = direct;
const half3 baseCol = lighting;
return half4(baseCol, input.alpha);
}
#endif
#endif