ShowFlag.VisualizeCalibrationCustom

ShowFlag.VisualizeCalibrationCustom

#Overview

name: ShowFlag.VisualizeCalibrationCustom

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

It is referenced in 6 C++ source files.

#Summary

#Usage in the C++ source code

The purpose of ShowFlag.VisualizeCalibrationCustom is to enable the visualization of a custom calibration post-process material defined in the renderer configuration. This setting is primarily used for display calibration and debugging purposes in the Unreal Engine’s rendering system.

This setting variable is primarily relied upon by the Unreal Engine’s rendering subsystem, particularly in the post-processing pipeline. It’s also used in the editor’s viewport system, as evidenced by references in the EditorViewportClient.

The value of this variable is set through the engine’s show flags system, which allows for runtime toggling of various rendering features. It’s typically controlled via the engine’s debug visualization tools or through editor UI.

ShowFlag.VisualizeCalibrationCustom interacts with several other variables:

  1. VisualizeCalibrationColor and VisualizeCalibrationGrayscale: These are similar calibration visualization flags.
  2. VisualizeCalibrationCustomMaterialPath: This variable defines the path to the custom material used for calibration visualization.

Developers should be aware that:

  1. This flag is always accessible, even in shipping builds, as indicated by the SHOWFLAG_ALWAYS_ACCESSIBLE macro.
  2. It’s part of the SFG_Developer group, suggesting it’s primarily intended for development and debugging purposes.
  3. The actual visualization depends on a valid custom material being set in the renderer configuration.

Best practices when using this variable include:

  1. Use it in conjunction with the appropriate custom calibration material for accurate results.
  2. Be cautious about enabling it in shipping builds, as it may impact performance.
  3. Consider using it alongside other calibration visualization flags for comprehensive debugging.

Regarding the associated variable VisualizeCalibrationCustom:

This appears to be the same variable, just referenced in different contexts. It’s used in similar ways across the engine:

  1. In the editor viewport client to determine if calibration visualization is enabled.
  2. In the scene view configuration to set up the appropriate calibration material.
  3. In the renderer to determine if the custom calibration post-process should be applied.

The best practices and considerations for VisualizeCalibrationCustom are the same as those for ShowFlag.VisualizeCalibrationCustom, as they represent the same functionality in different parts of the engine.

#References in C++ code

#Callsites

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

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

Scope: file

Source code excerpt:

SHOWFLAG_ALWAYS_ACCESSIBLE(VisualizeCalibrationGrayscale, SFG_Developer, NSLOCTEXT("UnrealEd", "VisualizeCalibrationGrayscaleSF", "Visualize Calibration Grayscale"))
/** Shows a full-screen calibration custom post process material defined in renderer config  */
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"))

#Associated Variable and Callsites

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

#Loc: <Workspace>/Engine/Source/Editor/UnrealEd/Private/EditorViewportClient.cpp:2830

Scope (from outer to inner):

file
function     bool FEditorViewportClient::IsVisualizeCalibrationMaterialEnabled

Source code excerpt:

	check(Settings);

	return ((EngineShowFlags.VisualizeCalibrationCustom && Settings->VisualizeCalibrationCustomMaterialPath.IsValid()) ||
		(EngineShowFlags.VisualizeCalibrationColor  && Settings->VisualizeCalibrationColorMaterialPath.IsValid()) ||
		(EngineShowFlags.VisualizeCalibrationGrayscale && Settings->VisualizeCalibrationGrayscaleMaterialPath.IsValid()));
}

void FEditorViewportClient::ChangeRayTracingDebugVisualizationMode(FName InName)
{

#Loc: <Workspace>/Engine/Source/Runtime/Engine/Private/SceneView.cpp:2424

Scope (from outer to inner):

file
function     void FSceneView::ConfigureVisualizeCalibrationSettings

Source code excerpt:

		ConfigureCalibrationSettings(Settings->VisualizeCalibrationGrayscaleMaterialPath, FinalPostProcessSettings.VisualizeCalibrationGrayscaleMaterial, CurrentVisualizeCalibrationGrayscaleMaterialName);
	}
	else if (Family->EngineShowFlags.VisualizeCalibrationCustom)
	{
		ConfigureCalibrationSettings(Settings->VisualizeCalibrationCustomMaterialPath, FinalPostProcessSettings.VisualizeCalibrationCustomMaterial, CurrentVisualizeCalibrationCustomMaterialName);
	}
}

#endif // #if !(UE_BUILD_SHIPPING)

#Loc: <Workspace>/Engine/Source/Runtime/Engine/Public/ShowFlags.h:262

Scope (from outer to inner):

file
function     bool IsVisualizeCalibrationEnabled

Source code excerpt:

	bool IsVisualizeCalibrationEnabled() const
	{
		return (VisualizeCalibrationColor || VisualizeCalibrationGrayscale || VisualizeCalibrationCustom);
	}

	// ---------------------------------------------------------
	// The following methods are there for serialization, localization and in general to iterate and manipulate flags.
	// ---------------------------------------------------------
	

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

Scope: file

Source code excerpt:

SHOWFLAG_ALWAYS_ACCESSIBLE(VisualizeCalibrationGrayscale, SFG_Developer, NSLOCTEXT("UnrealEd", "VisualizeCalibrationGrayscaleSF", "Visualize Calibration Grayscale"))
/** Shows a full-screen calibration custom post process material defined in renderer config  */
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"))

#Loc: <Workspace>/Engine/Source/Runtime/Renderer/Private/PostProcess/PostProcessVisualizeCalibrationMaterial.cpp:15

Scope (from outer to inner):

file
function     static bool IsPostProcessVisualizeCalibrationCustomMaterialEnabled

Source code excerpt:

static bool IsPostProcessVisualizeCalibrationCustomMaterialEnabled(const FSceneView& View)
{
	return View.Family->EngineShowFlags.VisualizeCalibrationCustom && View.CurrentVisualizeCalibrationCustomMaterialName != NAME_None;
}

bool IsPostProcessVisualizeCalibrationMaterialEnabled(const FSceneView& View)
{
	return (IsPostProcessVisualizeCalibrationColorMaterialEnabled(View) || IsPostProcessVisualizeCalibrationGrayscaleMaterialEnabled(View) || IsPostProcessVisualizeCalibrationCustomMaterialEnabled(View));
}