r.ViewDistanceScale
r.ViewDistanceScale
#Overview
name: r.ViewDistanceScale
The value of this variable can be defined or overridden in .ini config files. 13
.ini config files referencing this setting variable.
This variable is created as a Console Variable (cvar).
- type:
Var
- help:
Controls the view distance scale. A primitive\'s MaxDrawDistance is scaled by this value.\nHigher values will increase view distance but at a performance cost.\nDefault = 1.
It is referenced in 4
C++ source files.
#Summary
#Usage in the C++ source code
The purpose of r.ViewDistanceScale is to control the view distance scale in Unreal Engine’s rendering system. It affects the maximum draw distance of primitives in the game world.
This setting variable is primarily used by the rendering system in Unreal Engine. Based on the callsites, it’s also utilized in the MovieRenderPipeline plugin for movie rendering tasks.
The value of this variable is initially set in the ConsoleManager.cpp file as a console variable with a default value of 1.0f. It can be modified at runtime through console commands or programmatically.
The r.ViewDistanceScale interacts with other variables, notably:
- r.ViewDistanceScale.ApplySecondaryScale
- r.ViewDistanceScale.SecondaryScale
These variables work together to calculate the final view distance scale.
Developers must be aware that:
- This variable directly impacts performance and visual quality.
- Higher values increase view distance but at a performance cost.
- It scales the MaxDrawDistance of primitives, affecting how far objects are rendered.
Best practices when using this variable include:
- Use it for scalability options, allowing players to adjust view distance based on their hardware capabilities.
- Consider the performance implications when increasing the value, especially on lower-end hardware.
- Use in conjunction with other LOD (Level of Detail) settings for optimal performance and visual quality balance.
- When overriding for movie rendering, be cautious of significantly increased memory and processing requirements.
#Setting Variables
#References In INI files
Location: <Workspace>/Engine/Config/BaseScalability.ini:107, section: [ViewDistanceQuality@0]
- INI Section:
ViewDistanceQuality@0
- Raw value:
0.4
- Is Array:
False
Location: <Workspace>/Engine/Config/BaseScalability.ini:111, section: [ViewDistanceQuality@1]
- INI Section:
ViewDistanceQuality@1
- Raw value:
0.6
- Is Array:
False
Location: <Workspace>/Engine/Config/BaseScalability.ini:115, section: [ViewDistanceQuality@2]
- INI Section:
ViewDistanceQuality@2
- Raw value:
0.8
- Is Array:
False
Location: <Workspace>/Engine/Config/BaseScalability.ini:119, section: [ViewDistanceQuality@3]
- INI Section:
ViewDistanceQuality@3
- Raw value:
1.0
- Is Array:
False
Location: <Workspace>/Engine/Config/BaseScalability.ini:123, section: [ViewDistanceQuality@Cine]
- INI Section:
ViewDistanceQuality@Cine
- Raw value:
10.0
- Is Array:
False
Location: <Workspace>/Engine/Config/Android/AndroidScalability.ini:29, section: [ViewDistanceQuality@0]
- INI Section:
ViewDistanceQuality@0
- Raw value:
0.70
- Is Array:
False
Location: <Workspace>/Engine/Config/Android/AndroidScalability.ini:33, section: [ViewDistanceQuality@1]
- INI Section:
ViewDistanceQuality@1
- Raw value:
1.0
- Is Array:
False
Location: <Workspace>/Engine/Config/Android/AndroidScalability.ini:37, section: [ViewDistanceQuality@2]
- INI Section:
ViewDistanceQuality@2
- Raw value:
1.0
- Is Array:
False
Location: <Workspace>/Engine/Config/Android/AndroidScalability.ini:41, section: [ViewDistanceQuality@3]
- INI Section:
ViewDistanceQuality@3
- Raw value:
1.0
- Is Array:
False
Location: <Workspace>/Engine/Config/IOS/IOSScalability.ini:29, section: [ViewDistanceQuality@0]
- INI Section:
ViewDistanceQuality@0
- Raw value:
0.70
- Is Array:
False
Location: <Workspace>/Engine/Config/IOS/IOSScalability.ini:33, section: [ViewDistanceQuality@1]
- INI Section:
ViewDistanceQuality@1
- Raw value:
1.0
- Is Array:
False
Location: <Workspace>/Engine/Config/IOS/IOSScalability.ini:37, section: [ViewDistanceQuality@2]
- INI Section:
ViewDistanceQuality@2
- Raw value:
1.0
- Is Array:
False
Location: <Workspace>/Engine/Config/IOS/IOSScalability.ini:41, section: [ViewDistanceQuality@3]
- INI Section:
ViewDistanceQuality@3
- Raw value:
1.0
- Is Array:
False
#References in C++ code
#Callsites
This variable is referenced in the following C++ source code:
#Loc: <Workspace>/Engine/Source/Runtime/Core/Private/HAL/ConsoleManager.cpp:3930
Scope: file
Source code excerpt:
static TAutoConsoleVariable<float> CVarViewDistanceScale(
TEXT("r.ViewDistanceScale"),
1.0f,
TEXT("Controls the view distance scale. A primitive's MaxDrawDistance is scaled by this value.\n"
"Higher values will increase view distance but at a performance cost.\n"
"Default = 1."),
ECVF_Scalability | ECVF_RenderThreadSafe);
#Loc: <Workspace>/Engine/Plugins/MovieScene/MovieRenderPipeline/Source/MovieRenderPipelineCore/Private/MoviePipelineGameOverrideSetting.cpp:89
Scope (from outer to inner):
file
function void UMoviePipelineGameOverrideSetting::ApplyCVarSettings
Source code excerpt:
if (bOverrideViewDistanceScale)
{
MOVIEPIPELINE_STORE_AND_OVERRIDE_CVAR_INT(PreviousViewDistanceScale, TEXT("r.ViewDistanceScale"), ViewDistanceScale, bOverrideValues);
}
if (bDisableGPUTimeout)
{
// This CVAR only exists if the D3D12RHI module is loaded
MOVIEPIPELINE_STORE_AND_OVERRIDE_CVAR_INT_IF_EXIST(PreviousGPUTimeout, TEXT("r.D3D12.GPUTimeout"), 0, bOverrideValues);
#Loc: <Workspace>/Engine/Plugins/MovieScene/MovieRenderPipeline/Source/MovieRenderPipelineCore/Private/MoviePipelineGameOverrideSetting.cpp:212
Scope (from outer to inner):
file
function void UMoviePipelineGameOverrideSetting::BuildNewProcessCommandLineArgsImpl
Source code excerpt:
if (bOverrideViewDistanceScale)
{
InOutDeviceProfileCvars.Add(FString::Printf(TEXT("r.ViewDistanceScale=%d"), ViewDistanceScale));
}
if (bDisableGPUTimeout)
{
InOutDeviceProfileCvars.Add(TEXT("r.D3D12.GPUTimeout=0"));
}
#Loc: <Workspace>/Engine/Source/Runtime/Engine/Private/UnrealEngine.cpp:768
Scope (from outer to inner):
file
function void ScalabilityCVarsSinkCallback
Source code excerpt:
{
static const auto ViewDistanceScale = ConsoleMan.FindTConsoleVariableDataFloat(TEXT("r.ViewDistanceScale"));
static const auto ApplySecondaryViewDistanceScale = ConsoleMan.FindTConsoleVariableDataInt(TEXT("r.ViewDistanceScale.ApplySecondaryScale"));
static const auto SecondaryViewDistanceScale = ConsoleMan.FindTConsoleVariableDataFloat(TEXT("r.ViewDistanceScale.SecondaryScale"));
bool bApplySecondary = (ApplySecondaryViewDistanceScale->GetValueOnGameThread() > 0);
LocalScalabilityCVars.ViewDistanceScale = FMath::Max(ViewDistanceScale->GetValueOnGameThread(), 0.0f);
LocalScalabilityCVars.ViewDistanceScale *= bApplySecondary ? FMath::Max(SecondaryViewDistanceScale->GetValueOnGameThread(), 0.0f) : 1.0f;
LocalScalabilityCVars.ViewDistanceScaleSquared = FMath::Square(LocalScalabilityCVars.ViewDistanceScale);