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).

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:

  1. r.ViewDistanceScale.ApplySecondaryScale
  2. r.ViewDistanceScale.SecondaryScale

These variables work together to calculate the final view distance scale.

Developers must be aware that:

  1. This variable directly impacts performance and visual quality.
  2. Higher values increase view distance but at a performance cost.
  3. It scales the MaxDrawDistance of primitives, affecting how far objects are rendered.

Best practices when using this variable include:

  1. Use it for scalability options, allowing players to adjust view distance based on their hardware capabilities.
  2. Consider the performance implications when increasing the value, especially on lower-end hardware.
  3. Use in conjunction with other LOD (Level of Detail) settings for optimal performance and visual quality balance.
  4. 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]

Location: <Workspace>/Engine/Config/BaseScalability.ini:111, section: [ViewDistanceQuality@1]

Location: <Workspace>/Engine/Config/BaseScalability.ini:115, section: [ViewDistanceQuality@2]

Location: <Workspace>/Engine/Config/BaseScalability.ini:119, section: [ViewDistanceQuality@3]

Location: <Workspace>/Engine/Config/BaseScalability.ini:123, section: [ViewDistanceQuality@Cine]

Location: <Workspace>/Engine/Config/Android/AndroidScalability.ini:29, section: [ViewDistanceQuality@0]

Location: <Workspace>/Engine/Config/Android/AndroidScalability.ini:33, section: [ViewDistanceQuality@1]

Location: <Workspace>/Engine/Config/Android/AndroidScalability.ini:37, section: [ViewDistanceQuality@2]

Location: <Workspace>/Engine/Config/Android/AndroidScalability.ini:41, section: [ViewDistanceQuality@3]

Location: <Workspace>/Engine/Config/IOS/IOSScalability.ini:29, section: [ViewDistanceQuality@0]

Location: <Workspace>/Engine/Config/IOS/IOSScalability.ini:33, section: [ViewDistanceQuality@1]

Location: <Workspace>/Engine/Config/IOS/IOSScalability.ini:37, section: [ViewDistanceQuality@2]

Location: <Workspace>/Engine/Config/IOS/IOSScalability.ini:41, section: [ViewDistanceQuality@3]

#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);