Files
UnrealEngine/Engine/Shaders/Private/Lumen/LumenReflectionsCombine.ush
2025-05-18 13:04:45 +08:00

35 lines
1.3 KiB
HLSL

// Copyright Epic Games, Inc. All Rights Reserved.
#pragma once
float MaxRoughnessToTrace;
float MaxRoughnessToTraceForFoliage;
float InvRoughnessFadeLength;
// Weight of reflection rays for a current pixel
// 0 - specular should fallback to some specular approximation
// 1 - specular should only composite reflection rays
float LumenCombineReflectionsAlpha(float InRoughness, bool bHasBackfaceDiffuse)
{
float FadeAlpha = saturate(((bHasBackfaceDiffuse != 0 ? MaxRoughnessToTraceForFoliage : MaxRoughnessToTrace) - InRoughness) * InvRoughnessFadeLength);
return FadeAlpha;
}
bool NeedsLumenReflections(float InRoughness, float InTopRoughness, bool bHasBackfaceDiffuse, bool bIsClearCoat)
{
#if SUBTRATE_GBUFFER_FORMAT==1
return LumenCombineReflectionsAlpha(InRoughness, bHasBackfaceDiffuse) > 0 || (bIsClearCoat && LumenCombineReflectionsAlpha(InTopRoughness, false) > 0);
#else
return LumenCombineReflectionsAlpha(InRoughness, bHasBackfaceDiffuse) > 0 || bIsClearCoat;
#endif
}
bool NeedsLumenClearCoatRoughReflections(float InTopRoughness, bool bIsClearCoat)
{
#if SUBTRATE_GBUFFER_FORMAT==1
const float FadeAlpha = LumenCombineReflectionsAlpha(InTopRoughness, false/*bHasBackfaceDiffuse*/);
return bIsClearCoat ? FadeAlpha < 1.f : false;
#else
return bIsClearCoat;
#endif
}