34 lines
1.5 KiB
C++
34 lines
1.5 KiB
C++
// Copyright Epic Games, Inc. All Rights Reserved.
|
|
|
|
#include "NaniteHelper.h"
|
|
#include "Engine/EngineTypes.h"
|
|
#include "HAL/IConsoleManager.h"
|
|
|
|
namespace Nanite
|
|
{
|
|
|
|
void CorrectFallbackSettings(FMeshNaniteSettings& NaniteSettings, int32 NumTris, bool bIsAssembly, bool bIsRayTracing)
|
|
{
|
|
static const auto CVarFallbackThreshold = IConsoleManager::Get().FindTConsoleVariableDataInt(TEXT("r.Nanite.Builder.FallbackTriangleThreshold"));
|
|
static const auto CVarFallbackTargetAutoRelativeError = IConsoleManager::Get().FindTConsoleVariableDataFloat(TEXT("r.Nanite.Builder.FallbackTargetAutoRelativeError"));
|
|
static const auto CVarRayTracingProxyFallbackTargetAutoRelativeError = IConsoleManager::Get().FindTConsoleVariableDataFloat(TEXT("r.Nanite.Builder.RayTracingProxy.FallbackTargetAutoRelativeError"));
|
|
|
|
const float AutoRelativeError = bIsRayTracing ? CVarRayTracingProxyFallbackTargetAutoRelativeError->GetValueOnAnyThread() : CVarFallbackTargetAutoRelativeError->GetValueOnAnyThread();
|
|
|
|
switch (NaniteSettings.FallbackTarget)
|
|
{
|
|
case ENaniteFallbackTarget::Auto:
|
|
NaniteSettings.FallbackPercentTriangles = 1.0f;
|
|
NaniteSettings.FallbackRelativeError = (!bIsAssembly && NumTris <= CVarFallbackThreshold->GetValueOnAnyThread()) ? 0.0f : AutoRelativeError;
|
|
break;
|
|
case ENaniteFallbackTarget::PercentTriangles:
|
|
NaniteSettings.FallbackRelativeError = 0.0f;
|
|
break;
|
|
case ENaniteFallbackTarget::RelativeError:
|
|
NaniteSettings.FallbackPercentTriangles = 1.0f;
|
|
break;
|
|
}
|
|
}
|
|
|
|
}
|