p.Chaos.Collision.EnableEdgeCollisionPruning
p.Chaos.Collision.EnableEdgeCollisionPruning
#Overview
name: p.Chaos.Collision.EnableEdgeCollisionPruning
This variable is created as a Console Variable (cvar).
- type:
Var
- help: ``
It is referenced in 3
C++ source files.
#Summary
#Usage in the C++ source code
The purpose of p.Chaos.Collision.EnableEdgeCollisionPruning is to control edge collision pruning in the Chaos physics system of Unreal Engine 5. This setting variable is part of the collision detection and handling subsystem within the Chaos physics module.
The Chaos physics system, which is an experimental module in Unreal Engine 5, relies on this setting variable. It is specifically used in the collision constraints part of the physics simulation.
The value of this variable is set using an FAutoConsoleVariableRef, which allows it to be modified at runtime through console commands. It is initialized to true by default.
This variable interacts directly with the boolean variable bCollisionsEnableEdgeCollisionPruning. They share the same value, and the console variable essentially exposes the internal boolean for external control.
Developers must be aware that this variable affects the performance and accuracy of collision detection, particularly for particles with EdgeSmoothing enabled. Enabling edge collision pruning can potentially improve performance by reducing unnecessary collision checks, but it may also affect the precision of collision detection in some scenarios.
Best practices when using this variable include:
- Testing the impact of enabling/disabling this feature on your specific use case.
- Considering the trade-off between performance and collision accuracy.
- Using it in conjunction with other collision pruning techniques (mesh and subsurface) for optimal results.
Regarding the associated variable bCollisionsEnableEdgeCollisionPruning:
The purpose of bCollisionsEnableEdgeCollisionPruning is to directly control the edge collision pruning functionality within the Chaos physics system’s code.
This variable is used in the FPBDCollisionConstraints::PruneEdgeCollisions function of the Chaos physics module. When true, it activates the FParticleEdgeCollisionPruner for each particle handle being processed.
The value of this variable is set by the p.Chaos.Collision.EnableEdgeCollisionPruning console variable, allowing for runtime modification.
As mentioned earlier, it interacts directly with the p.Chaos.Collision.EnableEdgeCollisionPruning console variable, effectively serving as the internal representation of that setting.
Developers should be aware that this variable directly impacts the collision detection process in the physics simulation. When true, it may reduce the number of collision checks performed, potentially improving performance at the cost of some precision.
Best practices for using this variable include:
- Profiling your application with this feature enabled and disabled to understand its impact.
- Considering the visual and gameplay effects of enabling edge collision pruning in your specific use case.
- Using it in combination with other collision optimization techniques provided by the Chaos physics system.
#References in C++ code
#Callsites
This variable is referenced in the following C++ source code:
#Loc: <Workspace>/Engine/Source/Runtime/Experimental/Chaos/Private/Chaos/PBDCollisionConstraints.cpp:82
Scope (from outer to inner):
file
namespace Chaos
Source code excerpt:
bool bCollisionsEnableMeshCollisionPruning = true;
bool bCollisionsEnableSubSurfaceCollisionPruning = false;
FAutoConsoleVariableRef CVarCollisionsEnableEdgeCollisionPruning(TEXT("p.Chaos.Collision.EnableEdgeCollisionPruning"), bCollisionsEnableEdgeCollisionPruning, TEXT(""));
FAutoConsoleVariableRef CVarCollisionsEnableMeshCollisionPruning(TEXT("p.Chaos.Collision.EnableMeshCollisionPruning"), bCollisionsEnableMeshCollisionPruning, TEXT(""));
FAutoConsoleVariableRef CVarCollisionsEnableSubSurfaceCollisionPruning(TEXT("p.Chaos.Collision.EnableSubSurfaceCollisionPruning"), bCollisionsEnableSubSurfaceCollisionPruning, TEXT(""));
bool DebugDrawProbeDetection = false;
FAutoConsoleVariableRef CVarDebugDrawProbeDetection(TEXT("p.Chaos.Collision.DebugDrawProbeDetection"), DebugDrawProbeDetection, TEXT("Draw probe constraint detection."));
#Associated Variable and Callsites
This variable is associated with another variable named bCollisionsEnableEdgeCollisionPruning
. They share the same value. See the following C++ source code.
#Loc: <Workspace>/Engine/Source/Runtime/Experimental/Chaos/Private/Chaos/PBDCollisionConstraints.cpp:79
Scope (from outer to inner):
file
namespace Chaos
Source code excerpt:
// Which edge pruning features to enable (for particle swith EdgeSmoothing enabled)
bool bCollisionsEnableEdgeCollisionPruning = true;
bool bCollisionsEnableMeshCollisionPruning = true;
bool bCollisionsEnableSubSurfaceCollisionPruning = false;
FAutoConsoleVariableRef CVarCollisionsEnableEdgeCollisionPruning(TEXT("p.Chaos.Collision.EnableEdgeCollisionPruning"), bCollisionsEnableEdgeCollisionPruning, TEXT(""));
FAutoConsoleVariableRef CVarCollisionsEnableMeshCollisionPruning(TEXT("p.Chaos.Collision.EnableMeshCollisionPruning"), bCollisionsEnableMeshCollisionPruning, TEXT(""));
FAutoConsoleVariableRef CVarCollisionsEnableSubSurfaceCollisionPruning(TEXT("p.Chaos.Collision.EnableSubSurfaceCollisionPruning"), bCollisionsEnableSubSurfaceCollisionPruning, TEXT(""));
bool DebugDrawProbeDetection = false;
FAutoConsoleVariableRef CVarDebugDrawProbeDetection(TEXT("p.Chaos.Collision.DebugDrawProbeDetection"), DebugDrawProbeDetection, TEXT("Draw probe constraint detection."));
#Loc: <Workspace>/Engine/Source/Runtime/Experimental/Chaos/Private/Chaos/PBDCollisionConstraints.cpp:754
Scope (from outer to inner):
file
namespace Chaos
function void FPBDCollisionConstraints::PruneEdgeCollisions
Source code excerpt:
}
if (bCollisionsEnableEdgeCollisionPruning)
{
FParticleEdgeCollisionPruner EdgePruner(ParticleHandle.Handle());
EdgePruner.Prune();
}
if (bCollisionsEnableSubSurfaceCollisionPruning)