ShowFlag.VisualizeSSR
ShowFlag.VisualizeSSR
#Overview
name: ShowFlag.VisualizeSSR
This variable is created as a Console Variable (cvar).
- type:
Var
- help:
Allows to override a specific showflag (works in editor and game, \
It is referenced in 7
C++ source files.
#Summary
#Usage in the C++ source code
The purpose of ShowFlag.VisualizeSSR is to enable the visualization of screen space reflections (SSR) for development and debugging purposes. This setting is part of the rendering system in Unreal Engine 5.
The Unreal Engine subsystem that primarily relies on this setting variable is the Renderer module, specifically the screen space reflection component of the rendering pipeline.
The value of this variable is set through the engine’s show flags system. It’s defined as a fixed show flag in shipping builds, meaning it’s set to 0 (disabled) by default in shipping builds and can’t be changed at runtime in those builds.
This variable interacts closely with its associated variable ‘VisualizeSSR’. They share the same value and are used interchangeably in the code. The ‘VisualizeSSR’ variable is used as an enum value in the ESSRQuality enum, which determines the quality settings for screen space reflections.
Developers must be aware that this variable is primarily for development and debugging purposes. It’s not intended for use in shipping builds, as indicated by the SHOWFLAG_FIXED_IN_SHIPPING macro.
Best practices when using this variable include:
- Only enable it during development or debugging sessions.
- Be aware that enabling this visualization may impact performance.
- Use it in conjunction with other debugging tools to get a comprehensive understanding of the SSR system.
Regarding the associated variable ‘VisualizeSSR’:
- It’s used as an enum value in the ESSRQuality enum, representing the highest quality setting for SSR.
- When this quality level is set, it affects various SSR parameters, such as increasing the ray count per pixel to 12.
- It’s used in conditional statements to determine SSR rendering behavior, often as a special case separate from other quality levels.
- When VisualizeSSR is active, it overrides other SSR quality settings.
Developers should be cautious when using the VisualizeSSR quality setting in performance-critical scenarios, as it may significantly increase the computational load due to the higher ray count and potentially other visualization-specific operations.
#References in C++ code
#Callsites
This variable is referenced in the following C++ source code:
#Loc: <Workspace>/Engine/Source/Runtime/Engine/Public/ShowFlagsValues.inl:351
Scope: file
Source code excerpt:
SHOWFLAG_ALWAYS_ACCESSIBLE(VolumetricFog, SFG_LightingFeatures, NSLOCTEXT("UnrealEd", "VolumetricFogSF", "Volumetric Fog"))
/** Visualize screen space reflections, for developer (by default off): */
SHOWFLAG_FIXED_IN_SHIPPING(0, VisualizeSSR, SFG_Visualize, NSLOCTEXT("UnrealEd", "VisualizeSSR", "Screen Space Reflections"))
/** Visualize the Shading Models, mostly or debugging and profiling */
SHOWFLAG_FIXED_IN_SHIPPING(0, VisualizeShadingModels, SFG_Visualize, NSLOCTEXT("UnrealEd", "VisualizeShadingModels", "Shading Models"))
/** Visualize the senses configuration of AIs' PawnSensingComponent */
SHOWFLAG_FIXED_IN_SHIPPING(0, VisualizeSenses, SFG_Advanced, NSLOCTEXT("UnrealEd", "VisualizeSenses", "Senses"))
/** Visualize LOD Coloration */
SHOWFLAG_FIXED_IN_SHIPPING(0, LODColoration, SFG_Hidden, NSLOCTEXT("UnrealEd", "VisualizeLODColoration", "Visualize LOD Coloration"))
#Associated Variable and Callsites
This variable is associated with another variable named VisualizeSSR
. They share the same value. See the following C++ source code.
#Loc: <Workspace>/Engine/Source/Runtime/Engine/Public/ShowFlagsValues.inl:351
Scope: file
Source code excerpt:
SHOWFLAG_ALWAYS_ACCESSIBLE(VolumetricFog, SFG_LightingFeatures, NSLOCTEXT("UnrealEd", "VolumetricFogSF", "Volumetric Fog"))
/** Visualize screen space reflections, for developer (by default off): */
SHOWFLAG_FIXED_IN_SHIPPING(0, VisualizeSSR, SFG_Visualize, NSLOCTEXT("UnrealEd", "VisualizeSSR", "Screen Space Reflections"))
/** Visualize the Shading Models, mostly or debugging and profiling */
SHOWFLAG_FIXED_IN_SHIPPING(0, VisualizeShadingModels, SFG_Visualize, NSLOCTEXT("UnrealEd", "VisualizeShadingModels", "Shading Models"))
/** Visualize the senses configuration of AIs' PawnSensingComponent */
SHOWFLAG_FIXED_IN_SHIPPING(0, VisualizeSenses, SFG_Advanced, NSLOCTEXT("UnrealEd", "VisualizeSenses", "Senses"))
/** Visualize LOD Coloration */
SHOWFLAG_FIXED_IN_SHIPPING(0, LODColoration, SFG_Hidden, NSLOCTEXT("UnrealEd", "VisualizeLODColoration", "Visualize LOD Coloration"))
#Loc: <Workspace>/Engine/Source/Runtime/Renderer/Private/ScreenSpaceRayTracing.cpp:610
Scope: file
Source code excerpt:
void GetSSRShaderOptionsForQuality(ESSRQuality Quality, IScreenSpaceDenoiser::FReflectionsRayTracingConfig* OutRayTracingConfigs)
{
if (Quality == ESSRQuality::VisualizeSSR)
{
OutRayTracingConfigs->RayCountPerPixel = 12;
}
else if (Quality == ESSRQuality::Epic)
{
OutRayTracingConfigs->RayCountPerPixel = 12;
#Loc: <Workspace>/Engine/Source/Runtime/Renderer/Private/ScreenSpaceRayTracing.cpp:701
Scope (from outer to inner):
file
namespace ScreenSpaceRayTracing
function void GetSSRQualityForView
Source code excerpt:
int32 SSRQualityCVar = FMath::Clamp(CVarSSRQuality.GetValueOnRenderThread(), 0, int32(ESSRQuality::MAX) - 1);
if (View.Family->EngineShowFlags.VisualizeSSR)
{
*OutQuality = ESSRQuality::VisualizeSSR;
return;
}
else if (View.FinalPostProcessSettings.ScreenSpaceReflectionQuality >= 80.0f && SSRQualityCVar >= 4)
{
*OutQuality = ESSRQuality::Epic;
}
#Loc: <Workspace>/Engine/Source/Runtime/Renderer/Private/ScreenSpaceRayTracing.cpp:998
Scope (from outer to inner):
file
namespace ScreenSpaceRayTracing
function void RenderScreenSpaceReflections
Source code excerpt:
{
FRDGTextureSRVRef InputColor = GraphBuilder.CreateSRV(FRDGTextureSRVDesc(CurrentSceneColor));
if (SSRQuality != ESSRQuality::VisualizeSSR)
{
if (View.PrevViewInfo.CustomSSRInput.IsValid())
{
InputColor = GraphBuilder.CreateSRV(FRDGTextureSRVDesc(
GraphBuilder.RegisterExternalTexture(View.PrevViewInfo.CustomSSRInput.RT[0])));
}
#Loc: <Workspace>/Engine/Source/Runtime/Renderer/Private/ScreenSpaceRayTracing.cpp:1027
Scope (from outer to inner):
file
namespace ScreenSpaceRayTracing
function void RenderScreenSpaceReflections
Source code excerpt:
}
const bool SSRStencilPrePass = CVarSSRStencil.GetValueOnRenderThread() != 0 && SSRQuality != ESSRQuality::VisualizeSSR && TiledScreenSpaceReflection == nullptr;
// Alloc inputs for denoising.
{
FRDGTextureDesc Desc = FRDGTextureDesc::Create2D(
View.GetSceneTexturesConfig().Extent,
PF_FloatRGBA, FClearValueBinding(FLinearColor(0, 0, 0, 0)),
#Loc: <Workspace>/Engine/Source/Runtime/Renderer/Private/ScreenSpaceRayTracing.h:12
Scope: file
Source code excerpt:
enum class ESSRQuality
{
VisualizeSSR,
Low,
Medium,
High,
Epic,