sg.ViewDistanceQuality.NumLevels
sg.ViewDistanceQuality.NumLevels
#Overview
name: sg.ViewDistanceQuality.NumLevels
This variable is created as a Console Variable (cvar).
- type:
Var
- help:
Number of settings quality levels in sg.ViewDistanceQuality\n default: 5 (0..4)
It is referenced in 7
C++ source files.
#Summary
#Usage in the C++ source code
The purpose of sg.ViewDistanceQuality.NumLevels is to define the number of quality levels available for the View Distance setting in Unreal Engine 5. This setting is part of the scalability system, which allows developers to adjust the game’s graphical fidelity and performance across different hardware configurations.
This setting variable is primarily used by the Scalability subsystem within the Engine module. It’s referenced in various functions related to setting and managing quality levels for different graphical aspects of the game.
The value of this variable is set as a console variable (CVar) in the Scalability.cpp file. It’s initialized with a default value of 5, meaning there are 5 quality levels (0 to 4) for View Distance by default.
The associated variable CVarViewDistanceQuality_NumLevels directly interacts with sg.ViewDistanceQuality.NumLevels. They share the same value and are used interchangeably in the code.
Developers should be aware that this variable is marked as ECVF_ReadOnly, meaning it shouldn’t be modified at runtime. It’s used to define the range of valid values for the ViewDistanceQuality setting.
Best practices when using this variable include:
- Respecting the read-only nature of the variable.
- Using it to validate or clamp user-set quality levels.
- Considering it when implementing custom scalability options.
Regarding the associated variable CVarViewDistanceQuality_NumLevels:
- It’s used throughout the Scalability namespace to get the number of View Distance quality levels.
- It’s used in functions like OnChangeViewDistanceQuality, SetFromSingleQualityLevel, and GetQualityLevelCounts to ensure that the View Distance quality setting remains within the defined range.
- When setting the View Distance quality, the code always clamps the value to be between 0 and (CVarViewDistanceQuality_NumLevels - 1).
Developers should use CVarViewDistanceQuality_NumLevels when they need to programmatically access or manipulate the number of View Distance quality levels in their game’s scalability settings.
#References in C++ code
#Callsites
This variable is referenced in the following C++ source code:
#Loc: <Workspace>/Engine/Source/Runtime/Engine/Private/Scalability.cpp:115
Scope: file
Source code excerpt:
static TAutoConsoleVariable<int32> CVarViewDistanceQuality_NumLevels(
TEXT("sg.ViewDistanceQuality.NumLevels"),
5,
TEXT("Number of settings quality levels in sg.ViewDistanceQuality\n")
TEXT(" default: 5 (0..4)"),
ECVF_ReadOnly);
static TAutoConsoleVariable<int32> CVarAntiAliasingQuality_NumLevels(
#Associated Variable and Callsites
This variable is associated with another variable named CVarViewDistanceQuality_NumLevels
. They share the same value. See the following C++ source code.
#Loc: <Workspace>/Engine/Source/Runtime/Engine/Private/Scalability.cpp:114
Scope: file
Source code excerpt:
ECVF_ScalabilityGroup | ECVF_Preview);
static TAutoConsoleVariable<int32> CVarViewDistanceQuality_NumLevels(
TEXT("sg.ViewDistanceQuality.NumLevels"),
5,
TEXT("Number of settings quality levels in sg.ViewDistanceQuality\n")
TEXT(" default: 5 (0..4)"),
ECVF_ReadOnly);
#Loc: <Workspace>/Engine/Source/Runtime/Engine/Private/Scalability.cpp:517
Scope (from outer to inner):
file
namespace Scalability
function void OnChangeViewDistanceQuality
Source code excerpt:
void OnChangeViewDistanceQuality(IConsoleVariable* Var)
{
SetGroupQualityLevel(TEXT("ViewDistanceQuality"), Var->GetInt(), CVarViewDistanceQuality_NumLevels->GetInt());
}
void OnChangeAntiAliasingQuality(IConsoleVariable* Var)
{
SetGroupQualityLevel(TEXT("AntiAliasingQuality"), Var->GetInt(), CVarAntiAliasingQuality_NumLevels->GetInt());
}
#Loc: <Workspace>/Engine/Source/Runtime/Engine/Private/Scalability.cpp:990
Scope (from outer to inner):
file
namespace Scalability
function void FQualityLevels::SetFromSingleQualityLevel
Source code excerpt:
{
ResolutionQuality = GetRenderScaleLevelFromQualityLevel(Value, EQualityLevelBehavior::EAbsolute);
ViewDistanceQuality = FMath::Clamp(Value, 0, CVarViewDistanceQuality_NumLevels->GetInt() - 1);
AntiAliasingQuality = FMath::Clamp(Value, 0, CVarAntiAliasingQuality_NumLevels->GetInt() - 1);
ShadowQuality = FMath::Clamp(Value, 0, CVarShadowQuality_NumLevels->GetInt() - 1);
GlobalIlluminationQuality = FMath::Clamp(Value, 0, CVarGlobalIlluminationQuality_NumLevels->GetInt() - 1);
ReflectionQuality = FMath::Clamp(Value, 0, CVarReflectionQuality_NumLevels->GetInt() - 1);
PostProcessQuality = FMath::Clamp(Value, 0, CVarPostProcessQuality_NumLevels->GetInt() - 1);
TextureQuality = FMath::Clamp(Value, 0, CVarTextureQuality_NumLevels->GetInt() - 1);
#Loc: <Workspace>/Engine/Source/Runtime/Engine/Private/Scalability.cpp:1010
Scope (from outer to inner):
file
namespace Scalability
function void FQualityLevels::SetFromSingleQualityLevelRelativeToMax
Source code excerpt:
Value += 1;
ViewDistanceQuality = FMath::Max(CVarViewDistanceQuality_NumLevels->GetInt() - Value, 0);
AntiAliasingQuality = FMath::Max(CVarAntiAliasingQuality_NumLevels->GetInt() - Value, 0);
ShadowQuality = FMath::Max(CVarShadowQuality_NumLevels->GetInt() - Value, 0);
GlobalIlluminationQuality = FMath::Max(CVarGlobalIlluminationQuality_NumLevels->GetInt() - Value, 0);
ReflectionQuality = FMath::Max(CVarReflectionQuality_NumLevels->GetInt() - Value, 0);
PostProcessQuality = FMath::Max(CVarPostProcessQuality_NumLevels->GetInt() - Value, 0);
TextureQuality = FMath::Max(CVarTextureQuality_NumLevels->GetInt() - Value, 0);
#Loc: <Workspace>/Engine/Source/Runtime/Engine/Private/Scalability.cpp:1061
Scope (from outer to inner):
file
namespace Scalability
function void FQualityLevels::SetViewDistanceQuality
Source code excerpt:
void FQualityLevels::SetViewDistanceQuality(int32 Value)
{
ViewDistanceQuality = FMath::Clamp(Value, 0, CVarViewDistanceQuality_NumLevels->GetInt() - 1);
}
void FQualityLevels::SetAntiAliasingQuality(int32 Value)
{
AntiAliasingQuality = FMath::Clamp(Value, 0, CVarAntiAliasingQuality_NumLevels->GetInt() - 1);
}
#Loc: <Workspace>/Engine/Source/Runtime/Engine/Private/Scalability.cpp:1206
Scope (from outer to inner):
file
namespace Scalability
function FQualityLevels GetQualityLevelCounts
Source code excerpt:
FQualityLevels Result;
Result.ResolutionQuality = 100.0f;
Result.ViewDistanceQuality = CVarViewDistanceQuality_NumLevels->GetInt();
Result.AntiAliasingQuality = CVarAntiAliasingQuality_NumLevels->GetInt();
Result.ShadowQuality = CVarShadowQuality_NumLevels->GetInt();
Result.GlobalIlluminationQuality = CVarGlobalIlluminationQuality_NumLevels->GetInt();
Result.ReflectionQuality = CVarReflectionQuality_NumLevels->GetInt();
Result.PostProcessQuality = CVarPostProcessQuality_NumLevels->GetInt();
Result.TextureQuality = CVarTextureQuality_NumLevels->GetInt();