p.Chaos.Solver.Collision.VelocityShockPropagationIterations
p.Chaos.Solver.Collision.VelocityShockPropagationIterations
#Overview
name: p.Chaos.Solver.Collision.VelocityShockPropagationIterations
This variable is created as a Console Variable (cvar).
- type:
Var
- help:
Override number of velocity 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.VelocityShockPropagationIterations is to control the number of velocity iterations where shock propagation is applied in the Chaos physics solver system of Unreal Engine 5.
This setting variable is primarily used in the Chaos physics system, which is an experimental physics solver in Unreal Engine 5. It’s specifically related to the collision handling within the solver.
Based on the Callsites section, this variable is defined and set in the Chaos namespace, specifically within the CVars (Console Variables) namespace. This suggests that it’s a console variable that can be adjusted at runtime.
The value of this variable is set through the FAutoConsoleVariableRef system, which allows it to be modified via console commands or configuration files. The default value is -1, which likely means it uses a default configuration value when not explicitly set.
This variable interacts closely with several other variables related to the Chaos solver, including:
- ChaosSolverCollisionPositionShockPropagationIterations
- ChaosSolverCollisionVelocityFrictionIterations
- ChaosSolverPositionIterations
- ChaosSolverVelocityIterations
Developers should be aware that this variable specifically controls the number of velocity iterations for shock propagation in collision handling. Setting it to a value >= 0 will override the default configuration.
Best practices when using this variable include:
- Use it for fine-tuning physics behavior, especially in scenarios where shock propagation in collisions is crucial.
- Be cautious about setting very high values, as it could impact performance.
- Test thoroughly after adjusting this value to ensure it doesn’t negatively impact overall physics simulation quality.
Regarding the associated variable ChaosSolverCollisionVelocityShockPropagationIterations:
This variable is directly linked to p.Chaos.Solver.Collision.VelocityShockPropagationIterations. It’s the internal representation of the console variable within the Chaos solver code.
It’s used in the FPBDRigidsSolver::PrepareAdvanceBy function to set the shock propagation iterations for the solver’s evolution. This suggests it’s a key part of the solver’s configuration for each physics step.
The same best practices and awareness points apply to this variable as to its console variable counterpart. Developers working directly with the Chaos solver code should pay attention to how this variable is used to configure the solver’s behavior.
#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:307
Scope (from outer to inner):
file
namespace Chaos
namespace CVars
Source code excerpt:
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;
FAutoConsoleVariableRef CVarChaosSolverPushOutIterations(TEXT("p.Chaos.Solver.Iterations.Velocity"), ChaosSolverVelocityIterations, TEXT("Override number of solver velocity iterations (-1 to use config)"));
#Associated Variable and Callsites
This variable is associated with another variable named ChaosSolverCollisionVelocityShockPropagationIterations
. They share the same value. See the following C++ source code.
#Loc: <Workspace>/Engine/Source/Runtime/Experimental/Chaos/Private/Chaos/Island/IslandManager.cpp:38
Scope (from outer to inner):
file
namespace Chaos::CVars
Source code excerpt:
{
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:303
Scope (from outer to inner):
file
namespace Chaos
namespace CVars
Source code excerpt:
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;
FAutoConsoleVariableRef CVarChaosSolverPushOutIterations(TEXT("p.Chaos.Solver.Iterations.Velocity"), ChaosSolverVelocityIterations, TEXT("Override number of solver velocity iterations (-1 to use config)"));
#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)