ShowFlag.CollisionVisibility
ShowFlag.CollisionVisibility
#Overview
name: ShowFlag.CollisionVisibility
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 26
C++ source files.
#Summary
#Usage in the C++ source code
The purpose of ShowFlag.CollisionVisibility is to control the visualization of collision for visibility checks in the Unreal Engine rendering system. Here’s a detailed explanation based on the provided code snippets:
-
The ShowFlag.CollisionVisibility is primarily used in the rendering and collision systems of Unreal Engine.
-
It is often used in conjunction with ShowFlag.CollisionPawn to determine if the engine is in a “collision view” mode.
-
This flag is typically used in the editor and debug environments, as it’s defined with SHOWFLAG_FIXED_IN_SHIPPING(0, …), meaning it’s not available in shipping builds.
-
The value of this variable is usually set through the engine’s show flags system, which allows toggling various debug visualization options.
-
It interacts closely with the CollisionResponse system, particularly for the ECC_Visibility channel.
-
When enabled, it typically causes the engine to render collision geometry for objects that respond to visibility traces.
-
It’s used in various scene proxies (FModelSceneProxy, FStaticMeshSceneProxy, FLandscapeComponentSceneProxy, etc.) to determine whether to draw collision visualization.
-
In the editor, it’s exposed as a view mode option, often labeled as “Visibility Collision”.
Best practices when using this variable:
- Use it primarily for debugging and development purposes, not in shipping code.
- Be aware that enabling this flag may impact performance, especially in complex scenes.
- When using it, also consider the state of CollisionPawn and the overall collision settings of your objects.
- In custom rendering code, check for this flag when deciding whether to render collision visualization.
Developers should be aware that:
- This flag is not available in shipping builds, so any code relying on it should be properly conditioned.
- It may interact with other engine systems, particularly those related to collision and visibility determination.
- Enabling this flag may change how objects are rendered and may affect performance.
The associated variable CollisionVisibility shares the same purpose and is often used interchangeably or in conjunction with ShowFlag.CollisionVisibility. It’s typically used in UI and command systems to toggle this visualization mode.
#References in C++ code
#Callsites
This variable is referenced in the following C++ source code:
#Loc: <Workspace>/Engine/Source/Runtime/Engine/Public/ShowFlagsValues.inl:289
Scope: file
Source code excerpt:
SHOWFLAG_FIXED_IN_SHIPPING(0, Collision, SFG_Normal, NSLOCTEXT("UnrealEd", "CollisionWireFrame", "Collision"))
/** Collision blocking visibility against complex **/
SHOWFLAG_FIXED_IN_SHIPPING(0, CollisionVisibility, SFG_Hidden, NSLOCTEXT("UnrealEd", "CollisionVisibility", "Visibility"))
/** Collision blocking pawn against simple collision **/
SHOWFLAG_FIXED_IN_SHIPPING(0, CollisionPawn, SFG_Hidden, NSLOCTEXT("UnrealEd", "CollisionPawn", "Pawn"))
/** Render LightShafts, for now SHOWFLAG_ALWAYS_ACCESSIBLE because it's exposed in SceneCapture */
SHOWFLAG_ALWAYS_ACCESSIBLE(LightShafts, SFG_LightingFeatures, NSLOCTEXT("UnrealEd", "LightShaftsSF", "Light Shafts"))
/** Render the PostProcess Material */
SHOWFLAG_FIXED_IN_SHIPPING(1, PostProcessMaterial, SFG_PostProcess, NSLOCTEXT("UnrealEd", "PostProcessMaterialSF", "Post Process Material"))
#Associated Variable and Callsites
This variable is associated with another variable named CollisionVisibility
. They share the same value. See the following C++ source code.
#Loc: <Workspace>/Engine/Plugins/2D/Paper2D/Source/Paper2D/Private/PaperRenderSceneProxy.cpp:569
Scope (from outer to inner):
file
function bool FPaperRenderSceneProxy::IsCollisionView
Source code excerpt:
// If in a 'collision view' and collision is enabled
const bool bInCollisionView = EngineShowFlags.CollisionVisibility || EngineShowFlags.CollisionPawn;
if (bInCollisionView && IsCollisionEnabled())
{
// See if we have a response to the interested channel
bool bHasResponse = EngineShowFlags.CollisionPawn && (CollisionResponse.GetResponse(ECC_Pawn) != ECR_Ignore);
bHasResponse |= EngineShowFlags.CollisionVisibility && (CollisionResponse.GetResponse(ECC_Visibility) != ECR_Ignore);
if (bHasResponse)
{
bDrawComplexCollision = EngineShowFlags.CollisionVisibility;
bDrawSimpleCollision = EngineShowFlags.CollisionPawn;
}
}
return bInCollisionView;
}
#Loc: <Workspace>/Engine/Source/Editor/Kismet/Private/SSCSEditorViewport.cpp:212
Scope (from outer to inner):
file
class class SSCSEditorViewportToolBar : public SViewportToolBar
function TSharedRef<SWidget> GenerateViewMenu
Source code excerpt:
ViewMenuBuilder.AddMenuEntry(FEditorViewportCommands::Get().UnlitMode, NAME_None, NSLOCTEXT("BlueprintEditor", "UnlitModeMenuOption", "Unlit"));
ViewMenuBuilder.AddMenuEntry(FEditorViewportCommands::Get().WireframeMode, NAME_None, NSLOCTEXT("BlueprintEditor", "WireframeModeMenuOption", "Wireframe"));
ViewMenuBuilder.AddMenuEntry(FEditorViewportCommands::Get().CollisionVisibility, NAME_None, NSLOCTEXT("BlueprintEditor", "CollisionVisibilityMenuOption", "Visibility Collision"));
return ViewMenuBuilder.MakeWidget();
}
private:
/** Reference to the parent viewport */
#Loc: <Workspace>/Engine/Source/Editor/UnrealEd/Private/EditorViewportClient.cpp:5658
Scope (from outer to inner):
file
function void FEditorViewportClient::UpdateHiddenCollisionDrawing
Source code excerpt:
{
// See if this is a collision view mode
bool bCollisionMode = EngineShowFlags.Collision || EngineShowFlags.CollisionVisibility || EngineShowFlags.CollisionPawn;
// Tell engine to create proxies for hidden components, so we can still draw collision
if (World->bCreateRenderStateForHiddenComponentsWithCollsion != bCollisionMode)
{
World->bCreateRenderStateForHiddenComponentsWithCollsion = bCollisionMode;
#Loc: <Workspace>/Engine/Source/Editor/UnrealEd/Private/EditorViewportCommands.cpp:126
Scope (from outer to inner):
file
function void FEditorViewportCommands::RegisterCommands
Source code excerpt:
UI_COMMAND( ReflectionOverrideMode, "Reflections View Mode", "Renders the scene with reflections only", EUserInterfaceActionType::RadioButton, FInputChord() );
UI_COMMAND( CollisionPawn, "Player Collision", "Renders player collision visualization", EUserInterfaceActionType::RadioButton, FInputChord() );
UI_COMMAND( CollisionVisibility, "Visibility Collision", "Renders visibility collision visualization", EUserInterfaceActionType::RadioButton, FInputChord() );
UI_COMMAND( ToggleRealTime, "Realtime", "Toggles real time rendering in this viewport", EUserInterfaceActionType::ToggleButton, FInputChord( EModifierKey::Control, EKeys::R ) );
UI_COMMAND( ToggleStats, "Show Stats", "Toggles the ability to show stats in this viewport (enables realtime)", EUserInterfaceActionType::ToggleButton, FInputChord( EModifierKey::Shift, EKeys::L ) );
UI_COMMAND( ToggleFPS, "Show FPS", "Toggles showing frames per second in this viewport (enables realtime)", EUserInterfaceActionType::ToggleButton, FInputChord( EModifierKey::Control|EModifierKey::Shift, EKeys::H ) );
UI_COMMAND( ScreenCapture, "Screen Capture", "Take a screenshot of the active viewport.", EUserInterfaceActionType::Button, FInputChord(EKeys::F9) );
#Loc: <Workspace>/Engine/Source/Editor/UnrealEd/Private/SCommonEditorViewportToolbarBase.cpp:856
Scope (from outer to inner):
file
function void SCommonEditorViewportToolbarBase::CreateViewMenuExtensions
Source code excerpt:
{
MenuBuilder.AddMenuEntry( FEditorViewportCommands::Get().CollisionPawn, NAME_None, LOCTEXT("CollisionPawnViewModeDisplayName", "Player Collision") );
MenuBuilder.AddMenuEntry( FEditorViewportCommands::Get().CollisionVisibility, NAME_None, LOCTEXT("CollisionVisibilityViewModeDisplayName", "Visibility Collision") );
}
MenuBuilder.EndSection();
//FINDME
// MenuBuilder.BeginSection("LevelViewportLandscape", LOCTEXT("LandscapeHeader", "Landscape") );
// {
#Loc: <Workspace>/Engine/Source/Editor/UnrealEd/Private/SEditorViewport.cpp:454
Scope (from outer to inner):
file
function void SEditorViewport::BindCommands
Source code excerpt:
MAP_VIEWMODE_ACTION( Commands.VisualizeVirtualShadowMapMode, VMI_VisualizeVirtualShadowMap );
MAP_VIEWMODE_ACTION( Commands.CollisionPawn, VMI_CollisionPawn);
MAP_VIEWMODE_ACTION( Commands.CollisionVisibility, VMI_CollisionVisibility);
if (GEnableGPUSkinCache)
{
MAP_VIEWMODE_ACTION(Commands.VisualizeGPUSkinCacheMode, VMI_VisualizeGPUSkinCache);
FGPUSkinCacheVisualizationMenuCommands::Get().BindCommands(CommandListRef, Client);
}
#Loc: <Workspace>/Engine/Source/Editor/UnrealEd/Private/SEditorViewportViewMenu.cpp:140
Scope (from outer to inner):
file
function void SEditorViewportViewMenu::FillViewMenu
Source code excerpt:
Section.AddMenuEntry(BaseViewportActions.ReflectionOverrideMode, UViewModeUtils::GetViewModeDisplayName(VMI_ReflectionOverride));
Section.AddMenuEntry(BaseViewportActions.CollisionPawn, UViewModeUtils::GetViewModeDisplayName(VMI_CollisionPawn));
Section.AddMenuEntry(BaseViewportActions.CollisionVisibility, UViewModeUtils::GetViewModeDisplayName(VMI_CollisionVisibility));
}
#if RHI_RAYTRACING
if (IsRayTracingEnabled())
{
static auto PathTracingCvar = IConsoleManager::Get().FindTConsoleVariableDataInt(TEXT("r.PathTracing"));
#Loc: <Workspace>/Engine/Source/Editor/UnrealEd/Public/EditorViewportCommands.h:150
Scope (from outer to inner):
file
class class FEditorViewportCommands : public TCommands<FEditorViewportCommands>
Source code excerpt:
/** Collision Draw Mode */
TSharedPtr< FUICommandInfo > CollisionPawn;
TSharedPtr< FUICommandInfo > CollisionVisibility;
/** Toggles realtime rendering in the viewport */
TSharedPtr< FUICommandInfo > ToggleRealTime;
/** Toggles showing stats in the viewport */
TSharedPtr< FUICommandInfo > ToggleStats;
#Loc: <Workspace>/Engine/Source/Runtime/Engine/Private/Components/BrushComponent.cpp:179
Scope (from outer to inner):
file
class class FBrushSceneProxy final : public FPrimitiveSceneProxy
function bool IsCollisionView
Source code excerpt:
bool IsCollisionView(const FEngineShowFlags& EngineShowFlags, bool & bDrawCollision) const
{
const bool bInCollisionView = EngineShowFlags.CollisionVisibility || EngineShowFlags.CollisionPawn;
if (bInCollisionView && IsCollisionEnabled())
{
bDrawCollision = EngineShowFlags.CollisionPawn && (CollisionResponse.GetResponse(ECC_Pawn) != ECR_Ignore);
bDrawCollision |= EngineShowFlags.CollisionVisibility && (CollisionResponse.GetResponse(ECC_Visibility) != ECR_Ignore);
}
else
{
bDrawCollision = false;
}
#Loc: <Workspace>/Engine/Source/Runtime/Engine/Private/Components/BrushComponent.cpp:299
Scope (from outer to inner):
file
class class FBrushSceneProxy final : public FPrimitiveSceneProxy
function virtual FPrimitiveViewRelevance GetViewRelevance
Source code excerpt:
}
const bool bInCollisionView = (View->Family->EngineShowFlags.Collision || View->Family->EngineShowFlags.CollisionVisibility || View->Family->EngineShowFlags.CollisionPawn);
if(IsShown(View))
{
bool bNeverShow = false;
if( GIsEditor )
#Loc: <Workspace>/Engine/Source/Runtime/Engine/Private/ModelRender.cpp:270
Scope (from outer to inner):
file
class class FModelSceneProxy final : public FPrimitiveSceneProxy
function bool IsCollisionView
Source code excerpt:
bool IsCollisionView(const FSceneView* View, bool & bDrawCollision) const
{
const bool bInCollisionView = View->Family->EngineShowFlags.CollisionVisibility || View->Family->EngineShowFlags.CollisionPawn;
if (bInCollisionView)
{
// use wireframe if collision is enabled, and it's not using complex
bDrawCollision = View->Family->EngineShowFlags.CollisionPawn && IsCollisionEnabled() && (CollisionResponse.GetResponse(ECC_Pawn) != ECR_Ignore);
bDrawCollision |= View->Family->EngineShowFlags.CollisionVisibility && IsCollisionEnabled() && (CollisionResponse.GetResponse(ECC_Visibility) != ECR_Ignore);
}
else
{
bDrawCollision = false;
}
#Loc: <Workspace>/Engine/Source/Runtime/Engine/Private/ModelRender.cpp:541
Scope (from outer to inner):
file
class class FModelSceneProxy final : public FPrimitiveSceneProxy
function virtual FPrimitiveViewRelevance GetViewRelevance
Source code excerpt:
Result.bDrawRelevance = IsShown(View) && View->Family->EngineShowFlags.BSPTriangles && View->Family->EngineShowFlags.BSP;
bool bShowSelectedTriangles = GIsEditor && !View->bIsGameView && View->Family->EngineShowFlags.Selection;
bool bCollisionView = View->Family->EngineShowFlags.CollisionPawn || View->Family->EngineShowFlags.CollisionVisibility;
if (IsRichView(*View->Family) || HasViewDependentDPG() || bCollisionView
|| (bShowSelectedTriangles && HasSelectedSurfaces()))
{
Result.bDynamicRelevance = true;
}
else
#Loc: <Workspace>/Engine/Source/Runtime/Engine/Private/PrimitiveSceneProxy.cpp:1468
Scope (from outer to inner):
file
function bool FPrimitiveSceneProxy::IsShown
Source code excerpt:
// If we are in a collision view, hide anything which doesn't have collision enabled
const bool bCollisionView = (View->Family->EngineShowFlags.CollisionVisibility || View->Family->EngineShowFlags.CollisionPawn);
if (bCollisionView && !IsCollisionEnabled())
{
return false;
}
if (DrawInVirtualTextureOnly(true) && !View->bIsVirtualTexture && !View->Family->EngineShowFlags.VirtualTexturePrimitives && !IsSelected())
#Loc: <Workspace>/Engine/Source/Runtime/Engine/Private/Rendering/NaniteResources.cpp:2148
Scope (from outer to inner):
file
namespace Nanite
function bool FSceneProxy::IsCollisionView
Source code excerpt:
bDrawSimpleCollision = bDrawComplexCollision = false;
const bool bInCollisionView = EngineShowFlags.CollisionVisibility || EngineShowFlags.CollisionPawn;
#if NANITE_ENABLE_DEBUG_RENDERING
// If in a 'collision view' and collision is enabled
if (bInCollisionView && IsCollisionEnabled())
{
// See if we have a response to the interested channel
bool bHasResponse = EngineShowFlags.CollisionPawn && CollisionResponse.GetResponse(ECC_Pawn) != ECR_Ignore;
bHasResponse |= EngineShowFlags.CollisionVisibility && CollisionResponse.GetResponse(ECC_Visibility) != ECR_Ignore;
if (bHasResponse)
{
// Visibility uses complex and pawn uses simple. However, if UseSimpleAsComplex or UseComplexAsSimple is used we need to adjust accordingly
bDrawComplexCollision = (EngineShowFlags.CollisionVisibility && CollisionTraceFlag != ECollisionTraceFlag::CTF_UseSimpleAsComplex) || (EngineShowFlags.CollisionPawn && CollisionTraceFlag == ECollisionTraceFlag::CTF_UseComplexAsSimple);
bDrawSimpleCollision = (EngineShowFlags.CollisionPawn && CollisionTraceFlag != ECollisionTraceFlag::CTF_UseComplexAsSimple) || (EngineShowFlags.CollisionVisibility && CollisionTraceFlag == ECollisionTraceFlag::CTF_UseSimpleAsComplex);
}
}
#endif
return bInCollisionView;
}
#Loc: <Workspace>/Engine/Source/Runtime/Engine/Private/ShowFlags.cpp:806
Scope: file
Source code excerpt:
return VMI_CollisionPawn;
}
else if (EngineShowFlags.CollisionVisibility)
{
return VMI_CollisionVisibility;
}
else if (EngineShowFlags.LODColoration)
{
return VMI_LODColoration;
#Loc: <Workspace>/Engine/Source/Runtime/Engine/Private/StaticMeshRender.cpp:1394
Scope (from outer to inner):
file
function bool FStaticMeshSceneProxy::IsCollisionView
Source code excerpt:
bDrawSimpleCollision = bDrawComplexCollision = false;
const bool bInCollisionView = EngineShowFlags.CollisionVisibility || EngineShowFlags.CollisionPawn;
#if STATICMESH_ENABLE_DEBUG_RENDERING
// If in a 'collision view' and collision is enabled
if (bInCollisionView && IsCollisionEnabled())
{
// See if we have a response to the interested channel
bool bHasResponse = EngineShowFlags.CollisionPawn && CollisionResponse.GetResponse(ECC_Pawn) != ECR_Ignore;
bHasResponse |= EngineShowFlags.CollisionVisibility && CollisionResponse.GetResponse(ECC_Visibility) != ECR_Ignore;
if(bHasResponse)
{
// Visibility uses complex and pawn uses simple. However, if UseSimpleAsComplex or UseComplexAsSimple is used we need to adjust accordingly
bDrawComplexCollision = (EngineShowFlags.CollisionVisibility && CollisionTraceFlag != ECollisionTraceFlag::CTF_UseSimpleAsComplex) || (EngineShowFlags.CollisionPawn && CollisionTraceFlag == ECollisionTraceFlag::CTF_UseComplexAsSimple);
bDrawSimpleCollision = (EngineShowFlags.CollisionPawn && CollisionTraceFlag != ECollisionTraceFlag::CTF_UseComplexAsSimple) || (EngineShowFlags.CollisionVisibility && CollisionTraceFlag == ECollisionTraceFlag::CTF_UseSimpleAsComplex);
}
}
#endif
return bInCollisionView;
}
#Loc: <Workspace>/Engine/Source/Runtime/Engine/Public/ShowFlagsValues.inl:289
Scope: file
Source code excerpt:
SHOWFLAG_FIXED_IN_SHIPPING(0, Collision, SFG_Normal, NSLOCTEXT("UnrealEd", "CollisionWireFrame", "Collision"))
/** Collision blocking visibility against complex **/
SHOWFLAG_FIXED_IN_SHIPPING(0, CollisionVisibility, SFG_Hidden, NSLOCTEXT("UnrealEd", "CollisionVisibility", "Visibility"))
/** Collision blocking pawn against simple collision **/
SHOWFLAG_FIXED_IN_SHIPPING(0, CollisionPawn, SFG_Hidden, NSLOCTEXT("UnrealEd", "CollisionPawn", "Pawn"))
/** Render LightShafts, for now SHOWFLAG_ALWAYS_ACCESSIBLE because it's exposed in SceneCapture */
SHOWFLAG_ALWAYS_ACCESSIBLE(LightShafts, SFG_LightingFeatures, NSLOCTEXT("UnrealEd", "LightShaftsSF", "Light Shafts"))
/** Render the PostProcess Material */
SHOWFLAG_FIXED_IN_SHIPPING(1, PostProcessMaterial, SFG_PostProcess, NSLOCTEXT("UnrealEd", "PostProcessMaterialSF", "Post Process Material"))
#Loc: <Workspace>/Engine/Source/Runtime/GeometryFramework/Private/Components/BaseDynamicMeshSceneProxy.cpp:150
Scope (from outer to inner):
file
function bool FBaseDynamicMeshSceneProxy::IsCollisionView
Source code excerpt:
bDrawSimpleCollision = bDrawComplexCollision = false;
bool bDrawCollisionView = (EngineShowFlags.CollisionVisibility || EngineShowFlags.CollisionPawn);
#if UE_ENABLE_DEBUG_DRAWING
// If in a 'collision view' and collision is enabled
if (bHasCollisionData && bDrawCollisionView && IsCollisionEnabled())
{
// See if we have a response to the interested channel
bool bHasResponse = EngineShowFlags.CollisionPawn && CollisionResponse.GetResponse(ECC_Pawn) != ECR_Ignore;
bHasResponse |= EngineShowFlags.CollisionVisibility && CollisionResponse.GetResponse(ECC_Visibility) != ECR_Ignore;
if(bHasResponse)
{
// Visibility uses complex and pawn uses simple. However, if UseSimpleAsComplex or UseComplexAsSimple is used we need to adjust accordingly
bDrawComplexCollision = (EngineShowFlags.CollisionVisibility && CollisionTraceFlag != ECollisionTraceFlag::CTF_UseSimpleAsComplex) || (EngineShowFlags.CollisionPawn && CollisionTraceFlag == ECollisionTraceFlag::CTF_UseComplexAsSimple);
bDrawSimpleCollision = (EngineShowFlags.CollisionPawn && CollisionTraceFlag != ECollisionTraceFlag::CTF_UseComplexAsSimple) || (EngineShowFlags.CollisionVisibility && CollisionTraceFlag == ECollisionTraceFlag::CTF_UseSimpleAsComplex);
}
}
#endif
return bDrawCollisionView;
}
#Loc: <Workspace>/Engine/Source/Runtime/Landscape/Private/LandscapeRender.cpp:449
Scope (from outer to inner):
file
function static int32 GetDrawCollisionLodOverride
Source code excerpt:
#if WITH_EDITOR || !(UE_BUILD_SHIPPING || UE_BUILD_TEST)
bool bShowCollisionPawn = View.Family->EngineShowFlags.CollisionPawn;
bool bShowCollisionVisibility = View.Family->EngineShowFlags.CollisionVisibility;
int32 DrawCollisionPawnLOD = CollisionResponse.GetResponse(ECC_Pawn) == ECR_Ignore ? -1 : SimpleCollisionLod;
int32 DrawCollisionVisibilityLOD = CollisionResponse.GetResponse(ECC_Visibility) == ECR_Ignore ? -1 : CollisionLod;
return GetDrawCollisionLodOverride(bShowCollisionPawn, bShowCollisionVisibility, DrawCollisionPawnLOD, DrawCollisionVisibilityLOD);
#else
return -1;
#endif
#Loc: <Workspace>/Engine/Source/Runtime/Landscape/Private/LandscapeRender.cpp:1982
Scope (from outer to inner):
file
function FPrimitiveViewRelevance FLandscapeComponentSceneProxy::GetViewRelevance
Source code excerpt:
{
FPrimitiveViewRelevance Result;
const bool bCollisionView = (View->Family->EngineShowFlags.CollisionVisibility || View->Family->EngineShowFlags.CollisionPawn);
Result.bDrawRelevance = (IsShown(View) || bCollisionView) && View->Family->EngineShowFlags.Landscape;
Result.bRenderInMainPass = ShouldRenderInMainPass();
Result.bRenderCustomDepth = ShouldRenderCustomDepth();
Result.bUsesLightingChannels = GetLightingChannelMask() != GetDefaultLightingChannelMask();
Result.bTranslucentSelfShadow = bCastVolumetricTranslucentShadow;
#Loc: <Workspace>/Engine/Source/Runtime/Landscape/Private/LandscapeRender.cpp:2074
Scope (from outer to inner):
file
function FPrimitiveViewRelevance FLandscapeComponentSceneProxy::GetViewRelevance
Source code excerpt:
#if WITH_EDITOR || !(UE_BUILD_SHIPPING || UE_BUILD_TEST)
const bool bInCollisionView = View->Family->EngineShowFlags.CollisionVisibility || View->Family->EngineShowFlags.CollisionPawn;
#endif
// Use the dynamic path for rendering landscape components pass only for Rich Views or if the static path is disabled for debug.
if (IsRichView(*View->Family) ||
#if WITH_EDITOR || !(UE_BUILD_SHIPPING || UE_BUILD_TEST)
bInCollisionView ||
#Loc: <Workspace>/Engine/Source/Runtime/Landscape/Private/LandscapeRender.cpp:2743
Scope: file
Source code excerpt:
#if WITH_EDITOR || !(UE_BUILD_SHIPPING || UE_BUILD_TEST)
const bool bInCollisionView = View->Family->EngineShowFlags.CollisionVisibility || View->Family->EngineShowFlags.CollisionPawn;
if (AllowDebugViewmodes() && bInCollisionView)
{
const bool bDrawSimpleCollision = View->Family->EngineShowFlags.CollisionPawn && CollisionResponse.GetResponse(ECC_Pawn) != ECR_Ignore;
const bool bDrawComplexCollision = View->Family->EngineShowFlags.CollisionVisibility && CollisionResponse.GetResponse(ECC_Visibility) != ECR_Ignore;
if (bDrawSimpleCollision || bDrawComplexCollision)
{
// Override the mesh's material with our material that draws the collision color
auto CollisionMaterialInstance = new FColoredMaterialRenderProxy(
GEngine->ShadedLevelColorationUnlitMaterial->GetRenderProxy(),
GetWireframeColor()
#Loc: <Workspace>/Engine/Source/Runtime/Landscape/Private/LandscapeRender.cpp:4418
Scope (from outer to inner):
file
function float FLandscapeComponentSceneProxy::ComputeLODForView
Source code excerpt:
float ViewLODDistanceFactor = InView.LODDistanceFactor;
bool ViewEngineShowFlagCollisionPawn = InView.Family->EngineShowFlags.CollisionPawn;
bool ViewEngineShowFlagCollisionVisibility = InView.Family->EngineShowFlags.CollisionVisibility;
const FVector& ViewOrigin = GetLODView(InView).ViewMatrices.GetViewOrigin();
const FMatrix& ViewProjectionMatrix = GetLODView(InView).ViewMatrices.GetProjectionMatrix();
float LODScale = ViewLODDistanceFactor * CVarStaticMeshLODDistanceScale.GetValueOnRenderThread();
FLandscapeRenderSystem* LandscapeRenderSystem = LandscapeRenderSystems.FindChecked(LandscapeKey);
#Loc: <Workspace>/Engine/Source/Runtime/Renderer/Private/PostProcess/PostProcessEyeAdaptation.cpp:347
Scope (from outer to inner):
file
function bool IsAutoExposureDebugMode
Source code excerpt:
EngineShowFlags.VisualizeVolumetricCloudConservativeDensity ||
EngineShowFlags.VisualizeVolumetricCloudEmptySpaceSkipping ||
EngineShowFlags.CollisionVisibility ||
EngineShowFlags.CollisionPawn ||
!EngineShowFlags.PostProcessing;
}
float CalculateFixedAutoExposure(const FViewInfo& View)
{
#Loc: <Workspace>/Engine/Source/Runtime/Renderer/Private/SceneVisibility.cpp:4777
Scope (from outer to inner):
file
function void FSceneRenderer::PrepareViewStateForVisibility
Source code excerpt:
const bool bIsHitTesting = ViewFamily.EngineShowFlags.HitProxies;
// Don't test occlusion queries in collision viewmode as they can be bigger then the rendering bounds.
const bool bCollisionView = ViewFamily.EngineShowFlags.CollisionVisibility || ViewFamily.EngineShowFlags.CollisionPawn;
if (GIsHighResScreenshot || !DoOcclusionQueries() || bIsHitTesting || bCollisionView || ViewFamily.EngineShowFlags.DisableOcclusionQueries)
{
View.bDisableQuerySubmissions = true;
View.bIgnoreExistingQueries = true;
}