ShowFlag.VisualizeGroom

ShowFlag.VisualizeGroom

#Overview

name: ShowFlag.VisualizeGroom

This variable is created as a Console Variable (cvar).

It is referenced in 5 C++ source files.

#Summary

#Usage in the C++ source code

The purpose of ShowFlag.VisualizeGroom is to enable the Groom visualization mode in Unreal Engine 5. This setting is primarily used for the rendering system, specifically for visualizing hair and fur grooming.

This setting variable is relied upon by the Engine and Renderer subsystems of Unreal Engine 5. It’s used in conjunction with the GroomVisualizationData module to control the visualization of groom assets.

The value of this variable is set through the engine’s show flags system. It can be toggled on or off in the editor or through code.

ShowFlag.VisualizeGroom interacts with several other variables and systems:

  1. It’s associated with the VisualizeGroom variable, which shares the same value.
  2. It’s used in the GetGroomViewMode function to determine if groom visualization should be enabled.
  3. It’s part of the FindViewMode function, which determines the current view mode of the engine.
  4. It’s used in the temporal super-resolution pass to determine if groom visualization should affect the rendering process.

Developers should be aware that:

  1. This flag is marked as “ALWAYS_ACCESSIBLE”, meaning it can be used in shipping builds.
  2. It’s categorized as “SFG_Hidden”, suggesting it’s not meant to be directly exposed to end-users.
  3. Enabling this flag may impact performance, as it adds additional visualization overhead.

Best practices when using this variable include:

  1. Only enable it when necessary for debugging or artistic purposes.
  2. Be mindful of its performance impact in shipping builds.
  3. Use it in conjunction with other groom-related tools and settings for comprehensive hair and fur visualization.

Regarding the associated variable VisualizeGroom:

The purpose of VisualizeGroom is the same as ShowFlag.VisualizeGroom - to enable the Groom visualization mode. It’s used in the same contexts and subsystems as ShowFlag.VisualizeGroom.

The value of VisualizeGroom is set through the engine’s show flags system, similar to ShowFlag.VisualizeGroom.

VisualizeGroom interacts closely with ShowFlag.VisualizeGroom, as they share the same value and are used interchangeably in different parts of the engine code.

Developers should be aware that VisualizeGroom and ShowFlag.VisualizeGroom are essentially the same setting, just accessed through different means in different parts of the engine code.

Best practices for VisualizeGroom are the same as for ShowFlag.VisualizeGroom, as they represent the same functionality.

#References in C++ code

#Callsites

This variable is referenced in the following C++ source code:

#Loc: <Workspace>/Engine/Source/Runtime/Engine/Public/ShowFlagsValues.inl:71

Scope: file

Source code excerpt:

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"))
/** Needed for VMI_VisualizeVirtualShadowMap, Whether to enable the virtual shadow map visualization mode. */
SHOWFLAG_ALWAYS_ACCESSIBLE(VisualizeVirtualShadowMap, SFG_Hidden, NSLOCTEXT("UnrealEd", "VisualizeVirtualShadowMapSF", "Virtual Shadow Map Visualization"))
/** Allows to disable all direct lighting (does not affect indirect light) */
SHOWFLAG_FIXED_IN_SHIPPING(1, DirectLighting, SFG_LightingComponents, NSLOCTEXT("UnrealEd", "DirectLightingSF", "Direct Lighting"))
/** Allows to disable lighting from Directional Lights */
SHOWFLAG_FIXED_IN_SHIPPING(1, DirectionalLights, SFG_LightTypes, NSLOCTEXT("UnrealEd", "DirectionalLightsSF", "Directional Lights"))

#Associated Variable and Callsites

This variable is associated with another variable named VisualizeGroom. They share the same value. See the following C++ source code.

#Loc: <Workspace>/Engine/Source/Runtime/Engine/Private/GroomVisualizationData.cpp:89

Scope (from outer to inner):

file
function     EGroomViewMode GetGroomViewMode

Source code excerpt:


		const FGroomVisualizationData& VisualizationData = GetGroomVisualizationData();
		if (View.Family && View.Family->EngineShowFlags.VisualizeGroom)
		{
			Out = VisualizationData.GetViewMode(View.CurrentGroomVisualizationMode);
		}
		else if (View.Family && View.Family->EngineShowFlags.LODColoration)
		{
			Out = EGroomViewMode::LODColoration;

#Loc: <Workspace>/Engine/Source/Runtime/Engine/Private/ShowFlags.cpp:715

Scope (from outer to inner):

file
function     EViewModeIndex FindViewMode

Source code excerpt:

		return VMI_VisualizeSubstrate;
	}
	else if (EngineShowFlags.VisualizeGroom)
	{
		return VMI_VisualizeGroom;
	}
	else if (EngineShowFlags.VisualizeVirtualShadowMap)
	{
		return VMI_VisualizeVirtualShadowMap;

#Loc: <Workspace>/Engine/Source/Runtime/Engine/Public/ShowFlagsValues.inl:71

Scope: file

Source code excerpt:

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"))
/** Needed for VMI_VisualizeVirtualShadowMap, Whether to enable the virtual shadow map visualization mode. */
SHOWFLAG_ALWAYS_ACCESSIBLE(VisualizeVirtualShadowMap, SFG_Hidden, NSLOCTEXT("UnrealEd", "VisualizeVirtualShadowMapSF", "Virtual Shadow Map Visualization"))
/** Allows to disable all direct lighting (does not affect indirect light) */
SHOWFLAG_FIXED_IN_SHIPPING(1, DirectLighting, SFG_LightingComponents, NSLOCTEXT("UnrealEd", "DirectLightingSF", "Direct Lighting"))
/** Allows to disable lighting from Directional Lights */
SHOWFLAG_FIXED_IN_SHIPPING(1, DirectionalLights, SFG_LightTypes, NSLOCTEXT("UnrealEd", "DirectionalLightsSF", "Directional Lights"))

#Loc: <Workspace>/Engine/Source/Runtime/Renderer/Private/PostProcess/TemporalSuperResolution.cpp:1472

Scope (from outer to inner):

file
function     FDefaultTemporalUpscaler::FOutputs AddTemporalSuperResolutionPasses

Source code excerpt:

		&& (!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;
		SeparateTranslucencyRect = PassInputs.PostDOFTranslucencyResources.ViewRect;
	}