p.Chaos.PBDCollisionSolver.Position.SolveEnabled
p.Chaos.PBDCollisionSolver.Position.SolveEnabled
#Overview
name: p.Chaos.PBDCollisionSolver.Position.SolveEnabled
This variable is created as a Console Variable (cvar).
- type:
Var
- help: ``
It is referenced in 8
C++ source files.
#Summary
#Usage in the C++ source code
The purpose of p.Chaos.PBDCollisionSolver.Position.SolveEnabled is to control whether the position-based dynamics (PBD) collision solver for position constraints is enabled in the Chaos physics engine of Unreal Engine 5.
This setting variable is primarily used in the Chaos physics engine, which is part of Unreal Engine’s experimental features. It’s specifically related to the collision solving system within Chaos.
The value of this variable is set through the Unreal Engine console variable system, as evident from the FAutoConsoleVariableRef usage. It can be modified at runtime through console commands or configuration files.
The associated variable bChaos_PBDCollisionSolver_Position_SolveEnabled directly interacts with p.Chaos.PBDCollisionSolver.Position.SolveEnabled. They share the same value and are used interchangeably in the code.
Developers must be aware that this variable controls a core part of the collision solving process. Disabling it (setting to false) will prevent the solver from applying position-based collision resolution, which could significantly affect the physics simulation’s behavior and accuracy.
Best practices when using this variable include:
- Only modify it if you fully understand the implications on physics simulation.
- Test thoroughly after changing its value, as it can have wide-ranging effects on gameplay and visual fidelity.
- Consider performance impacts, as enabling or disabling this feature may affect CPU usage.
Regarding the associated variable bChaos_PBDCollisionSolver_Position_SolveEnabled:
- Its purpose is identical to p.Chaos.PBDCollisionSolver.Position.SolveEnabled.
- It’s used in various parts of the Chaos physics engine, particularly in the collision solving routines.
- Its value is set through the console variable system and shared with p.Chaos.PBDCollisionSolver.Position.SolveEnabled.
- It’s used as a quick check in collision solving functions to determine whether to proceed with position-based collision resolution.
- Developers should treat it with the same caution and best practices as the main console variable.
#References in C++ code
#Callsites
This variable is referenced in the following C++ source code:
#Loc: <Workspace>/Engine/Source/Runtime/Experimental/Chaos/Private/Chaos/Collision/PBDCollisionSolver.cpp:33
Scope (from outer to inner):
file
namespace Chaos
namespace CVars
Source code excerpt:
float Chaos_PBDCollisionSolver_Position_StaticFrictionStiffness = 0.5f;
FAutoConsoleVariableRef CVarChaos_PBDCollisionSolver_Position_SolveEnabled(TEXT("p.Chaos.PBDCollisionSolver.Position.SolveEnabled"), bChaos_PBDCollisionSolver_Position_SolveEnabled, TEXT(""));
FAutoConsoleVariableRef CVarChaos_PBDCollisionSolver_Position_MinInvMassScale(TEXT("p.Chaos.PBDCollisionSolver.Position.MinInvMassScale"), Chaos_PBDCollisionSolver_Position_MinInvMassScale, TEXT(""));
FAutoConsoleVariableRef CVarChaos_PBDCollisionSolver_Position_StaticFrictionStiffness(TEXT("p.Chaos.PBDCollisionSolver.Position.StaticFriction.Stiffness"), Chaos_PBDCollisionSolver_Position_StaticFrictionStiffness, TEXT(""));
//
// Velocity Solver Settings
//
#Associated Variable and Callsites
This variable is associated with another variable named bChaos_PBDCollisionSolver_Position_SolveEnabled
. They share the same value. See the following C++ source code.
#Loc: <Workspace>/Engine/Source/Runtime/Experimental/Chaos/Private/Chaos/Collision/PBDCollisionContainerSolver.cpp:22
Scope (from outer to inner):
file
namespace Chaos
namespace CVars
Source code excerpt:
namespace CVars
{
extern bool bChaos_PBDCollisionSolver_Position_SolveEnabled;
extern bool bChaos_PBDCollisionSolver_Velocity_SolveEnabled;
extern float Chaos_PBDCollisionSolver_Position_MinInvMassScale;
extern float Chaos_PBDCollisionSolver_Velocity_MinInvMassScale;
// If one body is more than MassRatio1 times the mass of the other, adjust the solver stiffness when the lighter body is underneath.
// Solver stiffness will be equal to 1 when the mass ratio is MassRatio1.
#Loc: <Workspace>/Engine/Source/Runtime/Experimental/Chaos/Private/Chaos/Collision/PBDCollisionContainerSolver.cpp:711
Scope (from outer to inner):
file
namespace Chaos
function void FPBDCollisionContainerSolver::SolvePositionImpl
Source code excerpt:
{
SCOPE_CYCLE_COUNTER(STAT_Collisions_Apply);
if (!CVars::bChaos_PBDCollisionSolver_Position_SolveEnabled)
{
return;
}
if (EndIndex <= BeginIndex)
{
#Loc: <Workspace>/Engine/Source/Runtime/Experimental/Chaos/Private/Chaos/Collision/PBDCollisionContainerSolverJacobi.cpp:22
Scope (from outer to inner):
file
namespace Chaos
namespace CVars
Source code excerpt:
namespace CVars
{
extern bool bChaos_PBDCollisionSolver_Position_SolveEnabled;
extern bool bChaos_PBDCollisionSolver_Velocity_SolveEnabled;
extern FRealSingle Chaos_PBDCollisionSolver_AutoStiffness_MassRatio1;
extern FRealSingle Chaos_PBDCollisionSolver_AutoStiffness_MassRatio2;
extern FRealSingle Chaos_PBDCollisionSolver_JacobiStiffness;
#Loc: <Workspace>/Engine/Source/Runtime/Experimental/Chaos/Private/Chaos/Collision/PBDCollisionContainerSolverJacobi.cpp:470
Scope (from outer to inner):
file
namespace Chaos
namespace Private
function bool FPBDCollisionContainerSolverJacobi::SolvePositionImpl
Source code excerpt:
{
SCOPE_CYCLE_COUNTER(STAT_Collisions_Apply);
if (!CVars::bChaos_PBDCollisionSolver_Position_SolveEnabled)
{
return false;
}
if (EndIndex <= BeginIndex)
{
#Loc: <Workspace>/Engine/Source/Runtime/Experimental/Chaos/Private/Chaos/Collision/PBDCollisionContainerSolverSimd.cpp:23
Scope (from outer to inner):
file
namespace Chaos
namespace CVars
Source code excerpt:
namespace CVars
{
extern bool bChaos_PBDCollisionSolver_Position_SolveEnabled;
extern bool bChaos_PBDCollisionSolver_Velocity_SolveEnabled;
}
namespace Private
{
#Loc: <Workspace>/Engine/Source/Runtime/Experimental/Chaos/Private/Chaos/Collision/PBDCollisionContainerSolverSimd.cpp:544
Scope (from outer to inner):
file
namespace Chaos
namespace Private
function void FPBDCollisionContainerSolverSimd::ApplyPositionConstraints
Source code excerpt:
{
SCOPE_CYCLE_COUNTER(STAT_Collisions_Apply);
if (!CVars::bChaos_PBDCollisionSolver_Position_SolveEnabled)
{
return;
}
const FPBDCollisionSolverSettings& SolverSettings = ConstraintContainer.GetSolverSettings();
const FSolverReal Dt = FSolverReal(InDt);
#Loc: <Workspace>/Engine/Source/Runtime/Experimental/Chaos/Private/Chaos/Collision/PBDCollisionSolver.cpp:29
Scope (from outer to inner):
file
namespace Chaos
namespace CVars
Source code excerpt:
//
bool bChaos_PBDCollisionSolver_Position_SolveEnabled = true;
float Chaos_PBDCollisionSolver_Position_MinInvMassScale = 0.77f;
float Chaos_PBDCollisionSolver_Position_StaticFrictionStiffness = 0.5f;
FAutoConsoleVariableRef CVarChaos_PBDCollisionSolver_Position_SolveEnabled(TEXT("p.Chaos.PBDCollisionSolver.Position.SolveEnabled"), bChaos_PBDCollisionSolver_Position_SolveEnabled, TEXT(""));
FAutoConsoleVariableRef CVarChaos_PBDCollisionSolver_Position_MinInvMassScale(TEXT("p.Chaos.PBDCollisionSolver.Position.MinInvMassScale"), Chaos_PBDCollisionSolver_Position_MinInvMassScale, TEXT(""));
FAutoConsoleVariableRef CVarChaos_PBDCollisionSolver_Position_StaticFrictionStiffness(TEXT("p.Chaos.PBDCollisionSolver.Position.StaticFriction.Stiffness"), Chaos_PBDCollisionSolver_Position_StaticFrictionStiffness, TEXT(""));
//
// Velocity Solver Settings
//