ShowFlag.VisualizePostProcessStack
ShowFlag.VisualizePostProcessStack
#Overview
name: ShowFlag.VisualizePostProcessStack
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.VisualizePostProcessStack is to visualize information about the post-processing stack on screen. This setting variable is primarily used for debugging and development purposes in the Unreal Engine’s rendering system.
This setting variable is mainly relied upon by the Unreal Engine’s rendering subsystem, specifically the post-processing module. It’s used in the Engine and Renderer modules of Unreal Engine.
The value of this variable is set through the engine show flags system. It’s defined as a show flag that is fixed in shipping builds (set to 0) and belongs to the SFG_Visualize group.
The associated variable VisualizePostProcessStack interacts directly with ShowFlag.VisualizePostProcessStack. They share the same value and are used interchangeably in the code.
Developers must be aware that this variable is primarily for development and debugging purposes. It’s not available in shipping builds, as indicated by the SHOWFLAG_FIXED_IN_SHIPPING macro.
Best practices when using this variable include:
- Only enable it when debugging post-processing effects.
- Be aware that enabling this flag may impact performance, so it should be used judiciously.
- Remember that this functionality is not available in shipping builds, so any features relying on it should have alternative implementations for release versions.
Regarding the associated variable VisualizePostProcessStack:
The purpose of VisualizePostProcessStack is the same as ShowFlag.VisualizePostProcessStack - to visualize information about the post-processing stack on screen.
It’s used in the Engine and Renderer modules, particularly in the post-processing pipeline.
The value is set through the engine show flags system, just like ShowFlag.VisualizePostProcessStack.
It interacts directly with ShowFlag.VisualizePostProcessStack, sharing the same value.
Developers should be aware that this variable is only enabled when DEBUG_POST_PROCESS_VOLUME_ENABLE is defined, indicating it’s for debugging purposes.
Best practices include using it only for debugging, being mindful of potential performance impacts, and ensuring any dependent features have alternatives for shipping builds where this functionality is disabled.
#References in C++ code
#Callsites
This variable is referenced in the following C++ source code:
#Loc: <Workspace>/Engine/Source/Runtime/Engine/Public/ShowFlagsValues.inl:409
Scope: file
Source code excerpt:
SHOWFLAG_ALWAYS_ACCESSIBLE(VisualizeCalibrationCustom, SFG_Developer, NSLOCTEXT("UnrealEd", "VisualizeCalibrationCustomSF", "Visualize Calibration Custom"))
/** Visualise information about the post processes stacked on screen */
SHOWFLAG_FIXED_IN_SHIPPING(0, VisualizePostProcessStack, SFG_Visualize, NSLOCTEXT("UnrealEd", "VisualizePostProcessStackSF", "Visualize Post Process Stack"))
/** Draw in the main pass the primitives that would normally only contribute to runtime virtual textures. */
SHOWFLAG_FIXED_IN_SHIPPING(0, VirtualTexturePrimitives, SFG_Developer, NSLOCTEXT("UnrealEd", "VirtualTexturePrimitivesSF", "Virtual Texture Primitives"))
/** Visualize volumetric cloud conservative density. */
SHOWFLAG_FIXED_IN_SHIPPING(0, VisualizeVolumetricCloudConservativeDensity, SFG_Visualize, NSLOCTEXT("UnrealEd", "VisualizeVolumetricCloudConservativeDensitySF", "Volumetric Cloud Conservative Density"))
#Associated Variable and Callsites
This variable is associated with another variable named VisualizePostProcessStack
. They share the same value. See the following C++ source code.
#Loc: <Workspace>/Engine/Source/Runtime/Engine/Private/World.cpp:9299
Scope (from outer to inner):
file
function static void DoPostProcessVolume
Source code excerpt:
#if DEBUG_POST_PROCESS_VOLUME_ENABLE
if (SceneView->Family && SceneView->Family->EngineShowFlags.VisualizePostProcessStack)
{
FPostProcessSettingsDebugInfo& PPDebug = SceneView->FinalPostProcessDebugInfo.AddDefaulted_GetRef();
PPDebug.Name = Volume->GetDebugName();
FPostProcessVolumeProperties VProperties = Volume->GetProperties();
#Loc: <Workspace>/Engine/Source/Runtime/Engine/Public/ShowFlagsValues.inl:409
Scope: file
Source code excerpt:
SHOWFLAG_ALWAYS_ACCESSIBLE(VisualizeCalibrationCustom, SFG_Developer, NSLOCTEXT("UnrealEd", "VisualizeCalibrationCustomSF", "Visualize Calibration Custom"))
/** Visualise information about the post processes stacked on screen */
SHOWFLAG_FIXED_IN_SHIPPING(0, VisualizePostProcessStack, SFG_Visualize, NSLOCTEXT("UnrealEd", "VisualizePostProcessStackSF", "Visualize Post Process Stack"))
/** Draw in the main pass the primitives that would normally only contribute to runtime virtual textures. */
SHOWFLAG_FIXED_IN_SHIPPING(0, VirtualTexturePrimitives, SFG_Developer, NSLOCTEXT("UnrealEd", "VirtualTexturePrimitivesSF", "Virtual Texture Primitives"))
/** Visualize volumetric cloud conservative density. */
SHOWFLAG_FIXED_IN_SHIPPING(0, VisualizeVolumetricCloudConservativeDensity, SFG_Visualize, NSLOCTEXT("UnrealEd", "VisualizeVolumetricCloudConservativeDensitySF", "Volumetric Cloud Conservative Density"))
#Loc: <Workspace>/Engine/Source/Runtime/Renderer/Private/PostProcess/PostProcessing.cpp:370
Scope (from outer to inner):
file
function void AddPostProcessingPasses
Source code excerpt:
VisualizeStationaryLightOverlap,
VisualizeLightCulling,
VisualizePostProcessStack,
VisualizeSubstrate,
VisualizeLightGrid,
VisualizeSkyAtmosphere,
VisualizeSkyLightIlluminanceMeter,
VisualizeLightFunctionAtlas,
VisualizeLevelInstance,
#Loc: <Workspace>/Engine/Source/Runtime/Renderer/Private/PostProcess/PostProcessing.cpp:460
Scope (from outer to inner):
file
function void AddPostProcessingPasses
Source code excerpt:
PassSequence.SetEnabled(EPass::VisualizeLightCulling, EngineShowFlags.VisualizeLightCulling);
#if DEBUG_POST_PROCESS_VOLUME_ENABLE
PassSequence.SetEnabled(EPass::VisualizePostProcessStack, EngineShowFlags.VisualizePostProcessStack);
#else
PassSequence.SetEnabled(EPass::VisualizePostProcessStack, false);
#endif
PassSequence.SetEnabled(EPass::VisualizeLumenScene, LumenVisualizeMode >= 0 && LumenVisualizeMode != VISUALIZE_MODE_OVERVIEW && LumenVisualizeMode != VISUALIZE_MODE_PERFORMANCE_OVERVIEW && bPostProcessingEnabled);
PassSequence.SetEnabled(EPass::VisualizeSubstrate, Substrate::ShouldRenderSubstrateDebugPasses(View));
PassSequence.SetEnabled(EPass::VisualizeLightGrid, ShouldVisualizeLightGrid());
#if WITH_EDITOR
#Loc: <Workspace>/Engine/Source/Runtime/Renderer/Private/PostProcess/PostProcessing.cpp:1417
Scope (from outer to inner):
file
function void AddPostProcessingPasses
Source code excerpt:
#if DEBUG_POST_PROCESS_VOLUME_ENABLE
if (PassSequence.IsEnabled(EPass::VisualizePostProcessStack))
{
FScreenPassRenderTarget OverrideOutput;
PassSequence.AcceptOverrideIfLastPass(EPass::VisualizePostProcessStack, OverrideOutput);
OverrideOutput = OverrideOutput.IsValid() ? OverrideOutput : FScreenPassRenderTarget::CreateFromInput(GraphBuilder, SceneColor, View.GetOverwriteLoadAction(), TEXT("VisualizePostProcessStack"));
SceneColor = AddFinalPostProcessDebugInfoPasses(GraphBuilder, View, OverrideOutput);
}
#endif
if (PassSequence.IsEnabled(EPass::VisualizeSubstrate))
{
#Loc: <Workspace>/Engine/Source/Runtime/Renderer/Private/SceneRendering.cpp:4364
Scope (from outer to inner):
file
function bool FSceneRenderer::ShouldCompositeEditorPrimitives
Source code excerpt:
const FEngineShowFlags& ShowFlags = View.Family->EngineShowFlags;
if (ShowFlags.VisualizeHDR || ShowFlags.VisualizeSkyLightIlluminance ||
ShowFlags.VisualizePostProcessStack || View.Family->UseDebugViewPS())
{
// certain visualize modes get obstructed too much
return false;
}
if (ShowFlags.Wireframe)