ShowFlag.VisualizeVolumetricLightmap
ShowFlag.VisualizeVolumetricLightmap
#Overview
name: ShowFlag.VisualizeVolumetricLightmap
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 5
C++ source files.
#Summary
#Usage in the C++ source code
The purpose of ShowFlag.VisualizeVolumetricLightmap is to enable visualization of the volumetric lightmap used for Global Illumination (GI) on dynamic objects in Unreal Engine 5. This setting is part of the rendering system, specifically for debugging and visualizing lighting effects.
This setting variable is primarily used by the rendering subsystem of Unreal Engine 5. Based on the callsites, it’s clear that the Deferred Shading Renderer module relies on this setting.
The value of this variable is set through the engine’s show flags system, which allows developers to toggle various visualization and debugging options. It’s defined in the ShowFlagsValues.inl file, which suggests it can be controlled through the engine’s UI or console commands.
The associated variable VisualizeVolumetricLightmap interacts directly with ShowFlag.VisualizeVolumetricLightmap. They share the same value and purpose.
Developers must be aware that this variable is intended for visualization and debugging purposes. It’s marked as SHOWFLAG_FIXED_IN_SHIPPING(0, …), which means it’s disabled in shipping builds. This is important for performance reasons, as visualization features can have a performance impact.
Best practices when using this variable include:
- Use it during development and debugging phases to understand how volumetric lightmaps are affecting the scene.
- Ensure it’s disabled in final builds to avoid any performance overhead.
- Use it in conjunction with other lighting visualization tools to get a comprehensive understanding of the lighting system.
Regarding the associated variable VisualizeVolumetricLightmap:
- It serves the same purpose as ShowFlag.VisualizeVolumetricLightmap.
- It’s used in the FDeferredShadingSceneRenderer class to control the visualization of volumetric lightmaps.
- The VisualizeVolumetricLightmap function in DeferredShadingRenderer.cpp checks this flag before executing the visualization code.
- Developers should be aware that this variable affects the rendering pipeline and should be used judiciously, especially in performance-sensitive scenarios.
Both variables are part of Unreal Engine 5’s advanced visualization and debugging toolkit for lighting systems, particularly useful for optimizing global illumination on dynamic objects.
#References in C++ code
#Callsites
This variable is referenced in the following C++ source code:
#Loc: <Workspace>/Engine/Source/Runtime/Engine/Public/ShowFlagsValues.inl:327
Scope: file
Source code excerpt:
SHOWFLAG_FIXED_IN_SHIPPING(0, PrecomputedVisibilityCells, SFG_Visualize, NSLOCTEXT("UnrealEd", "PrecomputedVisibilityCellsSF", "Precomputed Visibility Cells"))
/** Visualize volumetric lightmap used for GI on dynamic objects */
SHOWFLAG_FIXED_IN_SHIPPING(0, VisualizeVolumetricLightmap, SFG_Visualize, NSLOCTEXT("UnrealEd", "VisualizeVolumetricLightmapSF", "Volumetric Lightmap"))
/** Visualize volume lighting samples used for GI on dynamic objects */
SHOWFLAG_FIXED_IN_SHIPPING(0, VolumeLightingSamples, SFG_Visualize, NSLOCTEXT("UnrealEd", "VolumeLightingSamplesSF", "Volume Lighting Samples"))
/** Render Paper2D sprites, for now SHOWFLAG_ALWAYS_ACCESSIBLE because it's exposed in SceneCapture */
SHOWFLAG_ALWAYS_ACCESSIBLE(Paper2DSprites, SFG_Advanced, NSLOCTEXT("UnrealEd", "Paper2DSpritesSF", "Paper 2D Sprites"))
/** Visualization of distance field AO */
SHOWFLAG_FIXED_IN_SHIPPING(0, VisualizeDistanceFieldAO, SFG_Visualize, NSLOCTEXT("UnrealEd", "VisualizeDistanceFieldAOSF", "Distance Field Ambient Occlusion"))
#Associated Variable and Callsites
This variable is associated with another variable named VisualizeVolumetricLightmap
. They share the same value. See the following C++ source code.
#Loc: <Workspace>/Engine/Source/Runtime/Engine/Public/ShowFlagsValues.inl:327
Scope: file
Source code excerpt:
SHOWFLAG_FIXED_IN_SHIPPING(0, PrecomputedVisibilityCells, SFG_Visualize, NSLOCTEXT("UnrealEd", "PrecomputedVisibilityCellsSF", "Precomputed Visibility Cells"))
/** Visualize volumetric lightmap used for GI on dynamic objects */
SHOWFLAG_FIXED_IN_SHIPPING(0, VisualizeVolumetricLightmap, SFG_Visualize, NSLOCTEXT("UnrealEd", "VisualizeVolumetricLightmapSF", "Volumetric Lightmap"))
/** Visualize volume lighting samples used for GI on dynamic objects */
SHOWFLAG_FIXED_IN_SHIPPING(0, VolumeLightingSamples, SFG_Visualize, NSLOCTEXT("UnrealEd", "VolumeLightingSamplesSF", "Volume Lighting Samples"))
/** Render Paper2D sprites, for now SHOWFLAG_ALWAYS_ACCESSIBLE because it's exposed in SceneCapture */
SHOWFLAG_ALWAYS_ACCESSIBLE(Paper2DSprites, SFG_Advanced, NSLOCTEXT("UnrealEd", "Paper2DSpritesSF", "Paper 2D Sprites"))
/** Visualization of distance field AO */
SHOWFLAG_FIXED_IN_SHIPPING(0, VisualizeDistanceFieldAO, SFG_Visualize, NSLOCTEXT("UnrealEd", "VisualizeDistanceFieldAOSF", "Distance Field Ambient Occlusion"))
#Loc: <Workspace>/Engine/Source/Runtime/Renderer/Private/DeferredShadingRenderer.cpp:2516
Scope (from outer to inner):
file
function void FDeferredShadingSceneRenderer::Render
Source code excerpt:
}
VisualizeVolumetricLightmap(GraphBuilder, SceneTextures);
// Occlusion after base pass
if (!bOcclusionBeforeBasePass)
{
RenderOcclusionLambda();
}
#Loc: <Workspace>/Engine/Source/Runtime/Renderer/Private/DeferredShadingRenderer.h:993
Scope (from outer to inner):
file
class class FDeferredShadingSceneRenderer : public FSceneRenderer
Source code excerpt:
void CompositeHeterogeneousVolumes(FRDGBuilder& GraphBuilder, const FSceneTextures& SceneTextures);
void VisualizeVolumetricLightmap(FRDGBuilder& GraphBuilder, const FSceneTextures& SceneTextures);
/** Render image based reflections (SSR, Env, SkyLight) without compute shaders */
void RenderStandardDeferredImageBasedReflections(FRHICommandListImmediate& RHICmdList, FGraphicsPipelineStateInitializer& GraphicsPSOInit, bool bReflectionEnv, const TRefCountPtr<IPooledRenderTarget>& DynamicBentNormalAO, TRefCountPtr<IPooledRenderTarget>& VelocityRT);
bool HasDeferredPlanarReflections(const FViewInfo& View) const;
void RenderDeferredPlanarReflections(FRDGBuilder& GraphBuilder, const FSceneTextureParameters& SceneTextures, const FViewInfo& View, FRDGTextureRef& ReflectionsOutput);
#Loc: <Workspace>/Engine/Source/Runtime/Renderer/Private/VisualizeVolumetricLightmap.cpp:94
Scope (from outer to inner):
file
function void FDeferredShadingSceneRenderer::VisualizeVolumetricLightmap
Source code excerpt:
IMPLEMENT_GLOBAL_SHADER(FVisualizeVolumetricLightmapPS, "/Engine/Private/VisualizeVolumetricLightmap.usf", "VisualizeVolumetricLightmapPS", SF_Pixel);
void FDeferredShadingSceneRenderer::VisualizeVolumetricLightmap(
FRDGBuilder& GraphBuilder,
const FSceneTextures& SceneTextures)
{
if (!ViewFamily.EngineShowFlags.VisualizeVolumetricLightmap)
{
return;
}
if (!Scene->VolumetricLightmapSceneData.HasData())
{