p.Chaos.Solver.Collision.PositionShockPropagationIterations
p.Chaos.Solver.Collision.PositionShockPropagationIterations
#Overview
name: p.Chaos.Solver.Collision.PositionShockPropagationIterations
This variable is created as a Console Variable (cvar).
- type:
Var
- help:
Override number of position iterations where shock propagation is applied (if >= 0)
It is referenced in 4
C++ source files.
#Summary
#Usage in the C++ source code
The purpose of p.Chaos.Solver.Collision.PositionShockPropagationIterations is to control the number of position iterations where shock propagation is applied in the Chaos physics solver. This setting variable is part of the Chaos physics system in Unreal Engine 5, which is responsible for simulating realistic physical interactions between objects in the game world.
This setting variable is primarily used in the Chaos physics subsystem, specifically within the PBDRigidsSolver module. It’s an important parameter for fine-tuning the physics simulation, particularly in handling collisions and shock propagation.
The value of this variable is set through the Unreal Engine console variable system. It’s defined as an FAutoConsoleVariableRef, which means it can be adjusted at runtime through console commands or configuration files.
This variable interacts closely with several other physics-related variables, including:
- ChaosSolverCollisionVelocityShockPropagationIterations
- ChaosSolverCollisionPositionFrictionIterations
- ChaosSolverCollisionVelocityFrictionIterations
Developers should be aware that this variable directly affects the performance and accuracy of the physics simulation. A higher number of iterations can lead to more accurate simulations but at the cost of increased computational overhead.
Best practices when using this variable include:
- Start with the default value and adjust only if necessary.
- Test thoroughly after making changes, as it can significantly impact game performance and behavior.
- Consider the trade-off between simulation accuracy and performance based on your game’s requirements.
The associated variable ChaosSolverCollisionPositionShockPropagationIterations is the actual integer value that stores the number of position iterations for shock propagation. It’s initialized to -1, which likely means it uses a default or configured value when not explicitly set. This variable is used in the FPBDRigidsSolver::PrepareAdvanceBy function to set the shock propagation iterations for the physics evolution.
When working with ChaosSolverCollisionPositionShockPropagationIterations, developers should:
- Understand that a value of -1 means the system will use a default or configured value.
- Be cautious when setting this directly, as it can have a significant impact on physics behavior.
- Use this in conjunction with other physics settings to achieve the desired simulation characteristics.
#References in C++ code
#Callsites
This variable is referenced in the following C++ source code:
#Loc: <Workspace>/Engine/Source/Runtime/Experimental/Chaos/Private/PBDRigidsSolver.cpp:306
Scope (from outer to inner):
file
namespace Chaos
namespace CVars
Source code excerpt:
FAutoConsoleVariableRef CVarChaosSolverCollisionPositionFrictionIterations(TEXT("p.Chaos.Solver.Collision.PositionFrictionIterations"), ChaosSolverCollisionPositionFrictionIterations, TEXT("Override number of position iterations where friction is applied (if >= 0)"));
FAutoConsoleVariableRef CVarChaosSolverCollisionVelocityFrictionIterations(TEXT("p.Chaos.Solver.Collision.VelocityFrictionIterations"), ChaosSolverCollisionVelocityFrictionIterations, TEXT("Override number of velocity iterations where friction is applied (if >= 0)"));
FAutoConsoleVariableRef CVarChaosSolverCollisionPositionShockPropagationIterations(TEXT("p.Chaos.Solver.Collision.PositionShockPropagationIterations"), ChaosSolverCollisionPositionShockPropagationIterations, TEXT("Override number of position iterations where shock propagation is applied (if >= 0)"));
FAutoConsoleVariableRef CVarChaosSolverCollisionVelocityShockPropagationIterations(TEXT("p.Chaos.Solver.Collision.VelocityShockPropagationIterations"), ChaosSolverCollisionVelocityShockPropagationIterations, TEXT("Override number of velocity iterations where shock propagation is applied (if >= 0)"));
int32 ChaosSolverPositionIterations = -1;
FAutoConsoleVariableRef CVarChaosSolverIterations(TEXT("p.Chaos.Solver.Iterations.Position"), ChaosSolverPositionIterations, TEXT("Override number of solver position iterations (-1 to use config)"));
int32 ChaosSolverVelocityIterations = -1;
#Associated Variable and Callsites
This variable is associated with another variable named ChaosSolverCollisionPositionShockPropagationIterations
. They share the same value. See the following C++ source code.
#Loc: <Workspace>/Engine/Source/Runtime/Experimental/Chaos/Private/Chaos/Island/IslandManager.cpp:37
Scope (from outer to inner):
file
namespace Chaos::CVars
Source code excerpt:
namespace Chaos::CVars
{
extern int32 ChaosSolverCollisionPositionShockPropagationIterations;
extern int32 ChaosSolverCollisionVelocityShockPropagationIterations;
extern bool bChaosSolverPersistentGraph;
extern FRealSingle SmoothedPositionLerpRate;
bool bChaosConstraintGraphValidate = (CHAOS_CONSTRAINTGRAPH_CHECK_ENABLED != 0);
FAutoConsoleVariableRef CVarChaosConstraintGraphValidate(TEXT("p.Chaos.ConstraintGraph.Validate"), bChaosConstraintGraphValidate, TEXT("Enable per-tick ConstraintGraph validation checks/assertions"));
#Loc: <Workspace>/Engine/Source/Runtime/Experimental/Chaos/Private/PBDRigidsSolver.cpp:302
Scope (from outer to inner):
file
namespace Chaos
namespace CVars
Source code excerpt:
int32 ChaosSolverCollisionPositionFrictionIterations = -1;
int32 ChaosSolverCollisionVelocityFrictionIterations = -1;
int32 ChaosSolverCollisionPositionShockPropagationIterations = -1;
int32 ChaosSolverCollisionVelocityShockPropagationIterations = -1;
FAutoConsoleVariableRef CVarChaosSolverCollisionPositionFrictionIterations(TEXT("p.Chaos.Solver.Collision.PositionFrictionIterations"), ChaosSolverCollisionPositionFrictionIterations, TEXT("Override number of position iterations where friction is applied (if >= 0)"));
FAutoConsoleVariableRef CVarChaosSolverCollisionVelocityFrictionIterations(TEXT("p.Chaos.Solver.Collision.VelocityFrictionIterations"), ChaosSolverCollisionVelocityFrictionIterations, TEXT("Override number of velocity iterations where friction is applied (if >= 0)"));
FAutoConsoleVariableRef CVarChaosSolverCollisionPositionShockPropagationIterations(TEXT("p.Chaos.Solver.Collision.PositionShockPropagationIterations"), ChaosSolverCollisionPositionShockPropagationIterations, TEXT("Override number of position iterations where shock propagation is applied (if >= 0)"));
FAutoConsoleVariableRef CVarChaosSolverCollisionVelocityShockPropagationIterations(TEXT("p.Chaos.Solver.Collision.VelocityShockPropagationIterations"), ChaosSolverCollisionVelocityShockPropagationIterations, TEXT("Override number of velocity iterations where shock propagation is applied (if >= 0)"));
int32 ChaosSolverPositionIterations = -1;
FAutoConsoleVariableRef CVarChaosSolverIterations(TEXT("p.Chaos.Solver.Iterations.Position"), ChaosSolverPositionIterations, TEXT("Override number of solver position iterations (-1 to use config)"));
int32 ChaosSolverVelocityIterations = -1;
#Loc: <Workspace>/Engine/Source/Runtime/Experimental/Chaos/Private/PBDRigidsSolver.cpp:1326
Scope (from outer to inner):
file
namespace Chaos
function void FPBDRigidsSolver::PrepareAdvanceBy
Source code excerpt:
}
{
MEvolution->SetShockPropagationIterations(ChaosSolverCollisionPositionShockPropagationIterations, ChaosSolverCollisionVelocityShockPropagationIterations);
}
if (ChaosSolverPositionIterations >= 0)
{
SetPositionIterations(ChaosSolverPositionIterations);
}
if (ChaosSolverVelocityIterations >= 0)