ShowFlag.VisualizeNanite
ShowFlag.VisualizeNanite
#Overview
name: ShowFlag.VisualizeNanite
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 9
C++ source files.
#Summary
#Usage in the C++ source code
The purpose of ShowFlag.VisualizeNanite is to enable the Nanite visualization mode. Nanite is Unreal Engine 5’s virtualized geometry system that allows for highly detailed geometric meshes.
This setting variable is primarily used in the rendering system, specifically for debug visualization of Nanite geometry. It is relied upon by the Renderer module.
The value of this variable is typically set through the engine show flags, which can be toggled in the editor or via console commands. It’s often used in conjunction with other visualization modes.
This variable interacts closely with other Nanite-related variables and systems, such as the NaniteVisualizationData and NaniteRasterResults.
Developers should be aware that enabling this flag may impact performance, as it adds additional visualization passes to the rendering pipeline. It should primarily be used for debugging and development purposes.
Best practices when using this variable include:
- Only enable it when actively debugging Nanite-related issues.
- Be aware of how it interacts with other visualization modes.
- Disable it in shipping builds to avoid unnecessary performance overhead.
The associated variable VisualizeNanite serves the same purpose and is used interchangeably in the code. It’s typically used in contexts where the full ShowFlag structure isn’t available or necessary.
#References in C++ code
#Callsites
This variable is referenced in the following C++ source code:
#Loc: <Workspace>/Engine/Source/Runtime/Engine/Public/ShowFlagsValues.inl:65
Scope: file
Source code excerpt:
SHOWFLAG_FIXED_IN_SHIPPING(0, VisualizeBuffer, SFG_Hidden, NSLOCTEXT("UnrealEd", "VisualizeBufferSF", "Buffer Visualization"))
/** Needed for VMI_VisualizeNanite, Whether to enable the Nanite visualization mode. */
SHOWFLAG_ALWAYS_ACCESSIBLE(VisualizeNanite, SFG_Hidden, NSLOCTEXT("UnrealEd", "VisualizeNaniteSF", "Nanite Visualization"))
/** Needed for VMI_VisualizeLumen, Whether to enable the Lumen visualization mode. */
SHOWFLAG_ALWAYS_ACCESSIBLE(VisualizeLumen, SFG_Hidden, NSLOCTEXT("UnrealEd", "VisualizeLumenSF", "Lumen Visualization"))
/** Needed for VMI_VisualizeSubstrate, Whether to enable the Substrate visualization mode. */
SHOWFLAG_ALWAYS_ACCESSIBLE(VisualizeSubstrate, SFG_Hidden, NSLOCTEXT("UnrealEd", "VisualizeSubstrateSF", "Substrate Visualization"))
/** Needed for VMI_VisualizeGroom, Whether to enable the Groom visualization mode. */
SHOWFLAG_ALWAYS_ACCESSIBLE(VisualizeGroom, SFG_Hidden, NSLOCTEXT("UnrealEd", "VisualizeGroomSF", "Groom Visualization"))
#Associated Variable and Callsites
This variable is associated with another variable named VisualizeNanite
. They share the same value. See the following C++ source code.
#Loc: <Workspace>/Engine/Source/Editor/UnrealEd/Private/EditorViewportClient.cpp:2887
Scope (from outer to inner):
file
function bool FEditorViewportClient::SupportsPreviewResolutionFraction
Source code excerpt:
// Don't do preview screen percentage in certain cases.
if (EngineShowFlags.VisualizeBuffer || EngineShowFlags.VisualizeNanite || EngineShowFlags.VisualizeVirtualShadowMap || IsVisualizeCalibrationMaterialEnabled())
{
return false;
}
return true;
}
#Loc: <Workspace>/Engine/Source/Runtime/Engine/Private/ShowFlags.cpp:703
Scope (from outer to inner):
file
function EViewModeIndex FindViewMode
Source code excerpt:
return VMI_VisualizeBuffer;
}
else if (EngineShowFlags.VisualizeNanite)
{
return VMI_VisualizeNanite;
}
else if (EngineShowFlags.VisualizeLumen)
{
return VMI_VisualizeLumen;
#Loc: <Workspace>/Engine/Source/Runtime/Engine/Public/ShowFlagsValues.inl:65
Scope: file
Source code excerpt:
SHOWFLAG_FIXED_IN_SHIPPING(0, VisualizeBuffer, SFG_Hidden, NSLOCTEXT("UnrealEd", "VisualizeBufferSF", "Buffer Visualization"))
/** Needed for VMI_VisualizeNanite, Whether to enable the Nanite visualization mode. */
SHOWFLAG_ALWAYS_ACCESSIBLE(VisualizeNanite, SFG_Hidden, NSLOCTEXT("UnrealEd", "VisualizeNaniteSF", "Nanite Visualization"))
/** Needed for VMI_VisualizeLumen, Whether to enable the Lumen visualization mode. */
SHOWFLAG_ALWAYS_ACCESSIBLE(VisualizeLumen, SFG_Hidden, NSLOCTEXT("UnrealEd", "VisualizeLumenSF", "Lumen Visualization"))
/** Needed for VMI_VisualizeSubstrate, Whether to enable the Substrate visualization mode. */
SHOWFLAG_ALWAYS_ACCESSIBLE(VisualizeSubstrate, SFG_Hidden, NSLOCTEXT("UnrealEd", "VisualizeSubstrateSF", "Substrate Visualization"))
/** Needed for VMI_VisualizeGroom, Whether to enable the Groom visualization mode. */
SHOWFLAG_ALWAYS_ACCESSIBLE(VisualizeGroom, SFG_Hidden, NSLOCTEXT("UnrealEd", "VisualizeGroomSF", "Groom Visualization"))
#Loc: <Workspace>/Engine/Source/Runtime/Renderer/Private/DeferredShadingRenderer.cpp:1254
Scope (from outer to inner):
file
function void FDeferredShadingSceneRenderer::RenderNanite
Source code excerpt:
const FNaniteVisualizationData& VisualizationData = GetNaniteVisualizationData();
bool bVisualizeActive = VisualizationData.IsActive() && ViewFamily.EngineShowFlags.VisualizeNanite;
bool bVisualizeOverdraw = false;
if (bVisualizeActive)
{
if (VisualizationData.GetActiveModeID() == 0) // Overview
{
bVisualizeOverdraw = VisualizationData.GetOverviewModeIDs().Contains(NANITE_VISUALIZE_OVERDRAW);
#Loc: <Workspace>/Engine/Source/Runtime/Renderer/Private/DeferredShadingRenderer.cpp:1636
Scope (from outer to inner):
file
function void FDeferredShadingSceneRenderer::Render
Source code excerpt:
if (NaniteVisualization.Update(NaniteViewMode))
{
// When activating the view modes from the command line, automatically enable the VisualizeNanite show flag for convenience.
ViewFamily.EngineShowFlags.SetVisualizeNanite(true);
}
bVisualizeNanite = NaniteVisualization.IsActive() && ViewFamily.EngineShowFlags.VisualizeNanite;
}
}
CSV_SCOPED_TIMING_STAT_EXCLUSIVE(RenderOther);
SCOPED_NAMED_EVENT(FDeferredShadingSceneRenderer_Render, FColor::Emerald);
#Loc: <Workspace>/Engine/Source/Runtime/Renderer/Private/Nanite/NaniteVisualize.cpp:607
Scope (from outer to inner):
file
namespace Nanite
function void AddVisualizationPasses
Source code excerpt:
FRDGBufferRef PickingBuffer = nullptr;
if (Scene && Views.Num() > 0 && VisualizationData.IsActive() && EngineShowFlags.VisualizeNanite)
{
// Don't create the hit proxy ID buffer until it's needed
// TODO: Permutation with hit proxy support to keep this clean when !WITH_EDITOR?
FRDGBufferRef HitProxyIDBuffer = GSystemTextures.GetDefaultByteAddressBuffer(GraphBuilder, 4u);
bool bHitProxyIDBufferCreated = false;
#Loc: <Workspace>/Engine/Source/Runtime/Renderer/Private/PostProcess/PostProcessing.cpp:1753
Scope (from outer to inner):
file
function void AddPostProcessingPasses
Source code excerpt:
}
if (EngineShowFlags.VisualizeNanite && NaniteRasterResults != nullptr)
{
AddVisualizeNanitePass(GraphBuilder, View, SceneColor, *NaniteRasterResults);
}
if (EngineShowFlags.VisualizeVirtualShadowMap && VirtualShadowMapArray != nullptr)
{
#Loc: <Workspace>/Engine/Source/Runtime/Renderer/Private/PostProcess/TemporalSuperResolution.cpp:1470
Scope (from outer to inner):
file
function FDefaultTemporalUpscaler::FOutputs AddTemporalSuperResolutionPasses
Source code excerpt:
bHasSeparateTranslucency &=
(!View.Family->EngineShowFlags.VisualizeBuffer || (View.Family->EngineShowFlags.VisualizeBuffer && View.CurrentBufferVisualizationMode == OverviewName))
&& (!View.Family->EngineShowFlags.VisualizeNanite || (View.Family->EngineShowFlags.VisualizeNanite && View.CurrentNaniteVisualizationMode == OverviewName))
&& (!View.Family->EngineShowFlags.VisualizeLumen || (View.Family->EngineShowFlags.VisualizeLumen && (View.CurrentLumenVisualizationMode == OverviewName || View.CurrentLumenVisualizationMode == PerformanceOverviewName)))
&& (!View.Family->EngineShowFlags.VisualizeGroom || (View.Family->EngineShowFlags.VisualizeGroom && View.CurrentGroomVisualizationMode == OverviewName));
#endif
if (bHasSeparateTranslucency)
{
SeparateTranslucencyTexture = PassInputs.PostDOFTranslucencyResources.ColorTexture.Resolve;