ShowFlag.VisualizeTemporalUpscaler
ShowFlag.VisualizeTemporalUpscaler
#Overview
name: ShowFlag.VisualizeTemporalUpscaler
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.VisualizeTemporalUpscaler is to enable visualization of the temporal upscaler’s inputs and outputs in Unreal Engine 5. This setting variable is used for debugging and analyzing the temporal upscaling process, which is a technique used to improve image quality and performance in rendering.
Key points about ShowFlag.VisualizeTemporalUpscaler:
-
It’s part of the rendering system, specifically related to post-processing and anti-aliasing.
-
The variable is used in the post-processing pass sequence, indicating that it’s applied after the main rendering is complete.
-
It’s associated with the Temporal Super Resolution (TSR) or Temporal Anti-Aliasing Upsampling (TAAU) systems in Unreal Engine 5.
-
When enabled, it triggers a visualization pass that shows the intermediate results of the temporal upscaling process.
-
It’s typically used in conjunction with other engine show flags and is part of the debug visualization system.
-
The variable interacts with other rendering systems, such as motion blur and velocity rendering.
-
It’s not enabled in shipping builds, as it’s primarily a development and debugging tool.
Developers should be aware that:
- Enabling this flag will impact performance, as it adds an additional visualization pass.
- It’s useful for diagnosing issues with temporal upscaling, such as artifacts or unexpected results.
- The visualization might require understanding of the temporal upscaling process to interpret correctly.
Best practices:
- Use this flag during development and testing phases, especially when working on or troubleshooting temporal upscaling features.
- Combine with other visualization tools to get a comprehensive view of the rendering pipeline.
- Disable this flag in final builds or performance-critical scenarios.
The associated variable VisualizeTemporalUpscaler is used to store the inputs and outputs for the visualization pass. It contains information about the temporal anti-aliasing configuration, the upscaler interface being used, and the input and output textures for the upscaling process. This data is used to generate the visualization that helps developers understand and debug the temporal upscaling process.
#References in C++ code
#Callsites
This variable is referenced in the following C++ source code:
#Loc: <Workspace>/Engine/Source/Runtime/Engine/Public/ShowFlagsValues.inl:125
Scope: file
Source code excerpt:
SHOWFLAG_FIXED_IN_SHIPPING(0, VisualizeReprojection, SFG_Visualize, NSLOCTEXT("UnrealEd", "VisualizeReprojectionSF", "Previous frame's reprojection"))
/** Helper to diagnose temporal upscaler's inputs and outputs. */
SHOWFLAG_FIXED_IN_SHIPPING(0, VisualizeTemporalUpscaler, SFG_Visualize, NSLOCTEXT("UnrealEd", "VisualizeTemporalUpscalerSF", "Temporal Upscaler I/O (TSR, TAAU or third party plugins)"))
/** Helper to diagnose the internals of TSR. */
SHOWFLAG_FIXED_IN_SHIPPING(0, VisualizeTSR, SFG_Visualize, NSLOCTEXT("UnrealEd", "VisualizeTSRSF", "Temporal Super Resolution"))
/** Whether to display the Reflection Environment feature, which has local reflections from Reflection Capture actors, for now SHOWFLAG_ALWAYS_ACCESSIBLE because it's exposed in SceneCapture */
SHOWFLAG_ALWAYS_ACCESSIBLE(ReflectionEnvironment, SFG_LightingFeatures, NSLOCTEXT("UnrealEd", "ReflectionEnvironmentSF", "Reflection Environment"))
/** Visualize pixels that are outside of their object's bounding box (content error). */
SHOWFLAG_FIXED_IN_SHIPPING(0, VisualizeOutOfBoundsPixels, SFG_Visualize, NSLOCTEXT("UnrealEd", "VisualizeOutOfBoundsPixelsSF", "Out of Bounds Pixels"))
#Associated Variable and Callsites
This variable is associated with another variable named VisualizeTemporalUpscaler
. They share the same value. See the following C++ source code.
#Loc: <Workspace>/Engine/Source/Runtime/Engine/Public/ShowFlagsValues.inl:125
Scope: file
Source code excerpt:
SHOWFLAG_FIXED_IN_SHIPPING(0, VisualizeReprojection, SFG_Visualize, NSLOCTEXT("UnrealEd", "VisualizeReprojectionSF", "Previous frame's reprojection"))
/** Helper to diagnose temporal upscaler's inputs and outputs. */
SHOWFLAG_FIXED_IN_SHIPPING(0, VisualizeTemporalUpscaler, SFG_Visualize, NSLOCTEXT("UnrealEd", "VisualizeTemporalUpscalerSF", "Temporal Upscaler I/O (TSR, TAAU or third party plugins)"))
/** Helper to diagnose the internals of TSR. */
SHOWFLAG_FIXED_IN_SHIPPING(0, VisualizeTSR, SFG_Visualize, NSLOCTEXT("UnrealEd", "VisualizeTSRSF", "Temporal Super Resolution"))
/** Whether to display the Reflection Environment feature, which has local reflections from Reflection Capture actors, for now SHOWFLAG_ALWAYS_ACCESSIBLE because it's exposed in SceneCapture */
SHOWFLAG_ALWAYS_ACCESSIBLE(ReflectionEnvironment, SFG_LightingFeatures, NSLOCTEXT("UnrealEd", "ReflectionEnvironmentSF", "Reflection Environment"))
/** Visualize pixels that are outside of their object's bounding box (content error). */
SHOWFLAG_FIXED_IN_SHIPPING(0, VisualizeOutOfBoundsPixels, SFG_Visualize, NSLOCTEXT("UnrealEd", "VisualizeOutOfBoundsPixelsSF", "Out of Bounds Pixels"))
#Loc: <Workspace>/Engine/Source/Runtime/Renderer/Private/PostProcess/PostProcessing.cpp:387
Scope (from outer to inner):
file
function void AddPostProcessingPasses
Source code excerpt:
VisualizeLocalExposure,
VisualizeMotionVectors,
VisualizeTemporalUpscaler,
PixelInspector,
HMDDistortion,
HighResolutionScreenshotMask,
#if UE_ENABLE_DEBUG_DRAWING
DebugPrimitive,
#endif
#Loc: <Workspace>/Engine/Source/Runtime/Renderer/Private/PostProcess/PostProcessing.cpp:490
Scope (from outer to inner):
file
function void AddPostProcessingPasses
Source code excerpt:
PassSequence.SetEnabled(EPass::VisualizeHDR, EngineShowFlags.VisualizeHDR);
PassSequence.SetEnabled(EPass::VisualizeMotionVectors, EngineShowFlags.VisualizeMotionVectors || EngineShowFlags.VisualizeReprojection);
PassSequence.SetEnabled(EPass::VisualizeTemporalUpscaler, EngineShowFlags.VisualizeTemporalUpscaler);
#if WITH_EDITOR
PassSequence.SetEnabled(EPass::PixelInspector, View.bUsePixelInspector);
#else
PassSequence.SetEnabled(EPass::PixelInspector, false);
#endif
PassSequence.SetEnabled(EPass::HMDDistortion, EngineShowFlags.StereoRendering && EngineShowFlags.HMDDistortion);
#Loc: <Workspace>/Engine/Source/Runtime/Renderer/Private/PostProcess/PostProcessing.cpp:860
Scope (from outer to inner):
file
function void AddPostProcessingPasses
Source code excerpt:
VelocityFlattenTextures = Outputs.VelocityFlattenTextures;
if (PassSequence.IsEnabled(EPass::VisualizeTemporalUpscaler))
{
VisualizeTemporalUpscalerInputs.TAAConfig = TAAConfig;
VisualizeTemporalUpscalerInputs.UpscalerUsed = View.Family->GetTemporalUpscalerInterface();
VisualizeTemporalUpscalerInputs.Inputs = UpscalerPassInputs;
VisualizeTemporalUpscalerInputs.Outputs = Outputs;
}
#Loc: <Workspace>/Engine/Source/Runtime/Renderer/Private/PostProcess/PostProcessing.cpp:1623
Scope (from outer to inner):
file
function void AddPostProcessingPasses
Source code excerpt:
}
if (PassSequence.IsEnabled(EPass::VisualizeTemporalUpscaler))
{
PassSequence.AcceptOverrideIfLastPass(EPass::VisualizeTemporalUpscaler, VisualizeTemporalUpscalerInputs.OverrideOutput);
VisualizeTemporalUpscalerInputs.SceneColor = SceneColor;
SceneColor = AddVisualizeTemporalUpscalerPass(GraphBuilder, View, VisualizeTemporalUpscalerInputs);
}
#if WITH_EDITOR
#Loc: <Workspace>/Engine/Source/Runtime/Renderer/Private/VelocityRendering.cpp:198
Scope (from outer to inner):
file
function bool FDeferredShadingSceneRenderer::ShouldRenderVelocities
Source code excerpt:
bool bTemporalAA = IsTemporalAccumulationBasedMethod(View.AntiAliasingMethod) && !View.bCameraCut;
bool bMotionBlur = IsMotionBlurEnabled(View);
bool bVisualizeMotionblur = View.Family->EngineShowFlags.VisualizeMotionBlur || View.Family->EngineShowFlags.VisualizeTemporalUpscaler;
bool bDistanceFieldAO = ShouldPrepareForDistanceFieldAO();
bool bSceneSSREnabled = ViewPipelineState.ReflectionsMethod == EReflectionsMethod::SSR && ScreenSpaceRayTracing::ShouldRenderScreenSpaceReflections(View);
bool bWaterSSREnabled = ViewPipelineState.ReflectionsMethodWater == EReflectionsMethod::SSR && ScreenSpaceRayTracing::ShouldRenderScreenSpaceReflectionsWater(View);
bool bSSRTemporal = (bSceneSSREnabled || bWaterSSREnabled) && ScreenSpaceRayTracing::IsSSRTemporalPassRequired(View);