UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
PBDRigidsSolver.cpp File Reference

Classes

class  Chaos::AdvanceOneTimeStepTask
 

Namespaces

namespace  Chaos
 
namespace  Chaos::CVars
 
namespace  PhysicsReplicationCVars
 
namespace  PhysicsReplicationCVars::ResimulationCVars
 

Macros

#define CHAOS_COUNTER_STAT(Name, Value)
 

Functions

 DEFINE_LOG_CATEGORY_STATIC (LogPBDRigidsSolver, Log, All)
 
 DECLARE_DWORD_COUNTER_STAT (TEXT("NumDisabledBodies"), STAT_ChaosCounter_NumDisabledBodies, STATGROUP_ChaosCounters)
 
 DECLARE_DWORD_COUNTER_STAT (TEXT("NumBodies"), STAT_ChaosCounter_NumBodies, STATGROUP_ChaosCounters)
 
 DECLARE_DWORD_COUNTER_STAT (TEXT("NumDynamicBodies"), STAT_ChaosCounter_NumDynamicBodies, STATGROUP_ChaosCounters)
 
 DECLARE_DWORD_COUNTER_STAT (TEXT("NumKinematicBodies"), STAT_ChaosCounter_NumKinematicBodies, STATGROUP_ChaosCounters)
 
 DECLARE_DWORD_COUNTER_STAT (TEXT("NumStaticBodies"), STAT_ChaosCounter_NumStaticBodies, STATGROUP_ChaosCounters)
 
 DECLARE_DWORD_COUNTER_STAT (TEXT("NumGeomCollBodies"), STAT_ChaosCounter_NumGeometryCollectionBodies, STATGROUP_ChaosCounters)
 
 DECLARE_DWORD_COUNTER_STAT (TEXT("NumMovingBodies"), STAT_ChaosCounter_NumMovingBodies, STATGROUP_ChaosCounters)
 
 DECLARE_DWORD_COUNTER_STAT (TEXT("NumStaticShapes"), STAT_ChaosCounter_NumStaticShapes, STATGROUP_ChaosCounters)
 
 DECLARE_DWORD_COUNTER_STAT (TEXT("NumKinematicShapes"), STAT_ChaosCounter_NumKinematicShapes, STATGROUP_ChaosCounters)
 
 DECLARE_DWORD_COUNTER_STAT (TEXT("NumDynamicShapes"), STAT_ChaosCounter_NumDynamicShapes, STATGROUP_ChaosCounters)
 
 DECLARE_DWORD_COUNTER_STAT (TEXT("NumIslands"), STAT_ChaosCounter_NumIslands, STATGROUP_ChaosCounters)
 
 DECLARE_DWORD_COUNTER_STAT (TEXT("NumIslandGroups"), STAT_ChaosCounter_NumIslandGroups, STATGROUP_ChaosCounters)
 
 DECLARE_DWORD_COUNTER_STAT (TEXT("NumContacts"), STAT_ChaosCounter_NumContacts, STATGROUP_ChaosCounters)
 
 DECLARE_DWORD_COUNTER_STAT (TEXT("NumValidConstraints"), STAT_ChaosCounter_NumValidConstraints, STATGROUP_ChaosCounters)
 
 DECLARE_DWORD_COUNTER_STAT (TEXT("NumActiveConstraints"), STAT_ChaosCounter_NumActiveConstraints, STATGROUP_ChaosCounters)
 
 DECLARE_DWORD_COUNTER_STAT (TEXT("NumRestoredConstraints"), STAT_ChaosCounter_NumRestoredConstraints, STATGROUP_ChaosCounters)
 
 DECLARE_DWORD_COUNTER_STAT (TEXT("NumManifoldPoints"), STAT_ChaosCounter_NumManifoldPoints, STATGROUP_ChaosCounters)
 
 DECLARE_DWORD_COUNTER_STAT (TEXT("NumActiveManifoldPoints"), STAT_ChaosCounter_NumActiveManifoldPoints, STATGROUP_ChaosCounters)
 
 DECLARE_DWORD_COUNTER_STAT (TEXT("NumRestoredManifoldPoints"), STAT_ChaosCounter_NumRestoredManifoldPoints, STATGROUP_ChaosCounters)
 
 DECLARE_DWORD_COUNTER_STAT (TEXT("NumUpdatedManifoldPoints"), STAT_ChaosCounter_NumUpdatedManifoldPoints, STATGROUP_ChaosCounters)
 
 DECLARE_DWORD_COUNTER_STAT (TEXT("NumJoints"), STAT_ChaosCounter_NumJoints, STATGROUP_ChaosCounters)
 
 DECLARE_DWORD_COUNTER_STAT (TEXT("NumCharacterGroundConstraints"), STAT_ChaosCounter_NumCharacterGroundConstraints, STATGROUP_ChaosCounters)
 
 DECLARE_DWORD_COUNTER_STAT (TEXT("NumBroadPhasePairs"), STAT_ChaosCounter_NumBroadPhasePairs, STATGROUP_ChaosCounters)
 
 DECLARE_DWORD_COUNTER_STAT (TEXT("NumMidPhases"), STAT_ChaosCounter_NumMidPhases, STATGROUP_ChaosCounters)
 
 TRACE_DECLARE_INT_COUNTER (ChaosTraceCounter_NumDisabledBodies, TEXT("Chaos/Solver/Bodies/NumDisabled"))
 
 TRACE_DECLARE_INT_COUNTER (ChaosTraceCounter_NumBodies, TEXT("Chaos/Solver/Bodies/Num"))
 
 TRACE_DECLARE_INT_COUNTER (ChaosTraceCounter_NumStaticBodies, TEXT("Chaos/Solver/Bodies/NumStatic"))
 
 TRACE_DECLARE_INT_COUNTER (ChaosTraceCounter_NumKinematicBodies, TEXT("Chaos/Solver/Bodies/NumKinematic"))
 
 TRACE_DECLARE_INT_COUNTER (ChaosTraceCounter_NumDynamicBodies, TEXT("Chaos/Solver/Bodies/NumDynamic"))
 
 TRACE_DECLARE_INT_COUNTER (ChaosTraceCounter_NumGeometryCollectionBodies, TEXT("Chaos/Solver/Bodies/NumGC"))
 
 TRACE_DECLARE_INT_COUNTER (ChaosTraceCounter_NumMovingBodies, TEXT("Chaos/Solver/Bodies/NumMoving"))
 
 TRACE_DECLARE_INT_COUNTER (ChaosTraceCounter_NumStaticShapes, TEXT("Chaos/Solver/Collisions/NumStaticShapes"))
 
 TRACE_DECLARE_INT_COUNTER (ChaosTraceCounter_NumKinematicShapes, TEXT("Chaos/Solver/Collisions/NumKinematicShapes"))
 
 TRACE_DECLARE_INT_COUNTER (ChaosTraceCounter_NumDynamicShapes, TEXT("Chaos/Solver/Collisions/NumDynamicShapes"))
 
 TRACE_DECLARE_INT_COUNTER (ChaosTraceCounter_NumIslands, TEXT("Chaos/Solver/Islands/NumIslands"))
 
 TRACE_DECLARE_INT_COUNTER (ChaosTraceCounter_NumIslandGroups, TEXT("Chaos/Solver/Islands/NumIslandGroups"))
 
 TRACE_DECLARE_INT_COUNTER (ChaosTraceCounter_NumContacts, TEXT("Chaos/Solver/Collisions/NumConstraints"))
 
 TRACE_DECLARE_INT_COUNTER (ChaosTraceCounter_NumValidConstraints, TEXT("Chaos/Solver/Collisions/NumValidConstraints"))
 
 TRACE_DECLARE_INT_COUNTER (ChaosTraceCounter_NumActiveConstraints, TEXT("Chaos/Solver/Collisions/NumActiveConstraints"))
 
 TRACE_DECLARE_INT_COUNTER (ChaosTraceCounter_NumRestoredConstraints, TEXT("Chaos/Solver/Collisions/NumRestoredConstraints"))
 
 TRACE_DECLARE_INT_COUNTER (ChaosTraceCounter_NumManifoldPoints, TEXT("Chaos/Solver/Collisions/NumManifoldPoints"))
 
 TRACE_DECLARE_INT_COUNTER (ChaosTraceCounter_NumActiveManifoldPoints, TEXT("Chaos/Solver/Collisions/NumActiveManifoldPoints"))
 
 TRACE_DECLARE_INT_COUNTER (ChaosTraceCounter_NumRestoredManifoldPoints, TEXT("Chaos/Solver/Collisions/NumRestoredManifoldPoints"))
 
 TRACE_DECLARE_INT_COUNTER (ChaosTraceCounter_NumUpdatedManifoldPoints, TEXT("Chaos/Solver/Collisions/NumUpdatedManifoldPoints"))
 
 TRACE_DECLARE_INT_COUNTER (ChaosTraceCounter_NumJoints, TEXT("Chaos/Solver/Joints/NumConstraints"))
 
 TRACE_DECLARE_INT_COUNTER (ChaosTraceCounter_NumCharacterGroundConstraints, TEXT("Chaos/Solver/Character/NumConstraints"))
 
 TRACE_DECLARE_INT_COUNTER (ChaosTraceCounter_NumBroadPhasePairs, TEXT("Chaos/Solver/Collisions/NumBroadPhasePairs"))
 
 TRACE_DECLARE_INT_COUNTER (ChaosTraceCounter_NumMidPhases, TEXT("Chaos/Solver/Collisions/NumMidPhases"))
 
 TRACE_DECLARE_INT_COUNTER (ChaosTraceCounter_MidPhase_NumShapePair, TEXT("Chaos/Solver/MidPhase/NumShapePair"))
 
 TRACE_DECLARE_INT_COUNTER (ChaosTraceCounter_MidPhase_NumGeneric, TEXT("Chaos/Solver/MidPhase/NumGeneric"))
 
 DECLARE_DWORD_COUNTER_STAT (TEXT("NumPositionIterations"), STAT_ChaosCounter_NumPositionIterations, STATGROUP_ChaosCounters)
 
 DECLARE_DWORD_COUNTER_STAT (TEXT("NumVelocityIterations"), STAT_ChaosCounter_NumVelocityIterations, STATGROUP_ChaosCounters)
 
 DECLARE_DWORD_COUNTER_STAT (TEXT("NumProjectionIterations"), STAT_ChaosCounter_NumProjectionIterations, STATGROUP_ChaosCounters)
 
 TRACE_DECLARE_INT_COUNTER (ChaosTraceCounter_NumPositionIterations, TEXT("Chaos/Solver/Iterations/NumPosition"))
 
 TRACE_DECLARE_INT_COUNTER (ChaosTraceCounter_NumVelocityIterations, TEXT("Chaos/Solver/Iterations/NumVelocity"))
 
 TRACE_DECLARE_INT_COUNTER (ChaosTraceCounter_NumProjectionIterations, TEXT("Chaos/Solver/Iterations/NumProjection"))
 
template<typename TRigidParticle >
bool Chaos::ShouldUpdateFromSimulation (const TRigidParticle &InRigidParticle)
 
bool Chaos::HasSimulationCallback (const ISimCallbackObject *Callback)
 

Variables

bool Chaos::CVars::ChaosSolverUseParticlePool = true
 
FAutoConsoleVariableRef Chaos::CVars::CVarChaosSolverUseParticlePool (TEXT("p.Chaos.Solver.UseParticlePool"), ChaosSolverUseParticlePool, TEXT("Whether or not to use dirty particle pool (Optim)"))
 
int32 Chaos::CVars::ChaosSolverParticlePoolNumFrameUntilShrink = 30
 
FAutoConsoleVariableRef Chaos::CVars::CVarChaosSolverParticlePoolNumFrameUntilShrink (TEXT("p.Chaos.Solver.ParticlePoolNumFrameUntilShrink"), ChaosSolverParticlePoolNumFrameUntilShrink, TEXT("Num Frame until we can potentially shrink the pool"))
 
bool Chaos::CVars::bChaosSolverCollisionEnabled = true
 
FAutoConsoleVariableRef Chaos::CVars::CVarChaosSolverCollisionDisable (TEXT("p.Chaos.Solver.Collision.Enabled"), bChaosSolverCollisionEnabled, TEXT("Enable/Disable collisions in the main scene."))
 
bool Chaos::CVars::bChaosSolverShrinkArrays = false
 
float Chaos::CVars::ChaosArrayCollectionMaxSlackFraction = 0.5f
 
int32 Chaos::CVars::ChaosArrayCollectionMinSlack = 100
 
FAutoConsoleVariableRef Chaos::CVars::CVarChaosSolverShrinkArrays (TEXT("p.Chaos.Solver.ShrinkArrays"), bChaosSolverShrinkArrays, TEXT("Enable/Disable particle array shrinking in the main scene"))
 
FAutoConsoleVariableRef Chaos::CVars::CVarChaosSolverArrayCollectionMaxSlackFraction (TEXT("p.Chaos.ArrayCollection.MaxSlackFraction"), ChaosArrayCollectionMaxSlackFraction, TEXT("Shrink particle arrays if the number of slack elements exceeds the number of elements by this fraction"))
 
FAutoConsoleVariableRef Chaos::CVars::CVarChaosSolverArrayCollectionMinSlack (TEXT("p.Chaos.ArrayCollection.MinSlack"), ChaosArrayCollectionMinSlack, TEXT("Do not reduce the size of particle arrays if it would leave less slack than this"))
 
int32 Chaos::CVars::ChaosSolverCollisionPositionFrictionIterations = -1
 
int32 Chaos::CVars::ChaosSolverCollisionVelocityFrictionIterations = -1
 
FAutoConsoleVariableRef Chaos::CVars::CVarChaosSolverCollisionPositionFrictionIterations (TEXT("p.Chaos.Solver.Collision.PositionFrictionIterations"), ChaosSolverCollisionPositionFrictionIterations, TEXT("Override number of position iterations where friction is applied (if >= 0)"))
 
FAutoConsoleVariableRef Chaos::CVars::CVarChaosSolverCollisionVelocityFrictionIterations (TEXT("p.Chaos.Solver.Collision.VelocityFrictionIterations"), ChaosSolverCollisionVelocityFrictionIterations, TEXT("Override number of velocity iterations where friction is applied (if >= 0)"))
 
FAutoConsoleVariableRef Chaos::CVars::CVarChaosSolverCollisionPositionShockPropagationIterations (TEXT("p.Chaos.Solver.Collision.PositionShockPropagationIterations"), ChaosSolverCollisionPositionShockPropagationIterations, TEXT("Override number of position iterations where shock propagation is applied (if >= 0)"))
 
FAutoConsoleVariableRef Chaos::CVars::CVarChaosSolverCollisionVelocityShockPropagationIterations (TEXT("p.Chaos.Solver.Collision.VelocityShockPropagationIterations"), ChaosSolverCollisionVelocityShockPropagationIterations, TEXT("Override number of velocity iterations where shock propagation is applied (if >= 0)"))
 
FAutoConsoleVariableRef Chaos::CVars::CVarChaosSolverIterations (TEXT("p.Chaos.Solver.Iterations.Position"), ChaosSolverPositionIterations, TEXT("Override number of solver position iterations (-1 to use config)"))
 
FAutoConsoleVariableRef Chaos::CVars::CVarChaosSolverPushOutIterations (TEXT("p.Chaos.Solver.Iterations.Velocity"), ChaosSolverVelocityIterations, TEXT("Override number of solver velocity iterations (-1 to use config)"))
 
FAutoConsoleVariableRef Chaos::CVars::CVarChaosSolverProjectionIterations (TEXT("p.Chaos.Solver.Iterations.Projection"), ChaosSolverProjectionIterations, TEXT("Override number of solver projection iterations (-1 to use config)"))
 
int32 Chaos::CVars::ChaosSolverDeterministic = -1
 
FAutoConsoleVariableRef Chaos::CVars::CVarChaosSolverDeterministic (TEXT("p.Chaos.Solver.Deterministic"), ChaosSolverDeterministic, TEXT("Override determinism. 0: disabled; 1: enabled; -1: use config"))
 
FRealSingle Chaos::CVars::ChaosSolverJointPositionTolerance = 0.025f
 
FAutoConsoleVariableRef Chaos::CVars::CVarChaosSolverJointPositionTolerance (TEXT("p.Chaos.Solver.Joint.PositionTolerance"), ChaosSolverJointPositionTolerance, TEXT("PositionTolerance."))
 
FRealSingle Chaos::CVars::ChaosSolverJointAngleTolerance = 0.001f
 
FAutoConsoleVariableRef Chaos::CVars::CVarChaosSolverJointAngleTolerance (TEXT("p.Chaos.Solver.Joint.AngleTolerance"), ChaosSolverJointAngleTolerance, TEXT("AngleTolerance."))
 
FRealSingle Chaos::CVars::ChaosSolverJointMinParentMassRatio = 0.2f
 
FAutoConsoleVariableRef Chaos::CVars::CVarChaosSolverJointMinParentMassRatio (TEXT("p.Chaos.Solver.Joint.MinParentMassRatio"), ChaosSolverJointMinParentMassRatio, TEXT("6Dof joint MinParentMassRatio (if > 0)"))
 
FRealSingle Chaos::CVars::ChaosSolverJointMaxInertiaRatio = 5.0f
 
FAutoConsoleVariableRef Chaos::CVars::CVarChaosSolverJointMaxInertiaRatio (TEXT("p.Chaos.Solver.Joint.MaxInertiaRatio"), ChaosSolverJointMaxInertiaRatio, TEXT("6Dof joint MaxInertiaRatio (if > 0)"))
 
bool Chaos::CVars::bChaosCollisionConfigChanged = false
 
FConsoleVariableDelegate Chaos::CVars::OnCollisionConfigCVarChanged = FConsoleVariableDelegate::CreateLambda([](IConsoleVariable* CVar) -> void { bChaosCollisionConfigChanged = true; })
 
FRealSingle Chaos::CVars::ChaosSolverCullDistance = -1.0f
 
FAutoConsoleVariableRef Chaos::CVars::CVarChaosSolverCullDistance (TEXT("p.Chaos.Solver.Collision.CullDistance"), ChaosSolverCullDistance, TEXT("Override cull distance (if >= 0)"), OnCollisionConfigCVarChanged)
 
FRealSingle Chaos::CVars::ChaosSolverVelocityBoundsMultiplier = 1.0f
 
FRealSingle Chaos::CVars::ChaosSolverMaxVelocityBoundsExpansion = 3.0f
 
FRealSingle Chaos::CVars::ChaosSolverVelocityBoundsMultiplierMACD = 1.0f
 
FRealSingle Chaos::CVars::ChaosSolverMaxVelocityBoundsExpansionMACD = 1000.0f
 
FAutoConsoleVariableRef Chaos::CVars::CVarChaosSolverVelocityBoundsMultiplier (TEXT("p.Chaos.Solver.Collision.VelocityBoundsMultiplier"), ChaosSolverVelocityBoundsMultiplier, TEXT("Override velocity bounds multiplier (if >= 0)"), OnCollisionConfigCVarChanged)
 
FAutoConsoleVariableRef Chaos::CVars::CVarChaosSolverMaxVelocityBoundsExpansion (TEXT("p.Chaos.Solver.Collision.MaxVelocityBoundsExpansion"), ChaosSolverMaxVelocityBoundsExpansion, TEXT("Override max velocity bounds expansion (if >= 0)"), OnCollisionConfigCVarChanged)
 
FAutoConsoleVariableRef Chaos::CVars::CVarChaosSolverVelocityBoundsMultiplierMACD (TEXT("p.Chaos.Solver.Collision.VelocityBoundsMultiplierMACD"), ChaosSolverVelocityBoundsMultiplierMACD, TEXT("Override velocity bounds multiplier for MACD (if >= 0)"), OnCollisionConfigCVarChanged)
 
FAutoConsoleVariableRef Chaos::CVars::CVarChaosSolverMaxVelocityBoundsExpansionMACD (TEXT("p.Chaos.Solver.Collision.MaxVelocityBoundsExpansionMACD"), ChaosSolverMaxVelocityBoundsExpansionMACD, TEXT("Override max velocity bounds expansion for MACD (if >= 0)"), OnCollisionConfigCVarChanged)
 
FRealSingle Chaos::CVars::ChaosSolverMaxPushOutVelocity = -1.0f
 
FAutoConsoleVariableRef Chaos::CVars::CVarChaosSolverMaxPushOutVelocity (TEXT("p.Chaos.Solver.Collision.MaxPushOutVelocity"), ChaosSolverMaxPushOutVelocity, TEXT("Override max pushout velocity (if >= 0)"), OnCollisionConfigCVarChanged)
 
FRealSingle Chaos::CVars::ChaosSolverDepenetrationVelocity = -1.0f
 
FAutoConsoleVariableRef Chaos::CVars::CVarChaosSolverInitialOverlapDepentrationVelocity (TEXT("p.Chaos.Solver.Collision.DepenetrationVelocity"), ChaosSolverDepenetrationVelocity, TEXT("Override initial overlap depenetration velocity (if >= 0)"), OnCollisionConfigCVarChanged)
 
int32 Chaos::CVars::ChaosSolverCleanupCommandsOnDestruction = 1
 
FAutoConsoleVariableRef Chaos::CVars::CVarChaosSolverCleanupCommandsOnDestruction (TEXT("p.Chaos.Solver.CleanupCommandsOnDestruction"), ChaosSolverCleanupCommandsOnDestruction, TEXT("Whether or not to run internal command queue cleanup on solver destruction (0 = no cleanup, >0 = cleanup all commands)"))
 
int32 Chaos::CVars::ChaosSolverCollisionDeferNarrowPhase = 0
 
FAutoConsoleVariableRef Chaos::CVars::CVarChaosSolverCollisionDeferNarrowPhase (TEXT("p.Chaos.Solver.Collision.DeferNarrowPhase"), ChaosSolverCollisionDeferNarrowPhase, TEXT("Create contacts for all broadphase pairs, perform NarrowPhase later."))
 
int32 Chaos::CVars::ChaosSolverCollisionUseManifolds = 1
 
FAutoConsoleVariableRef Chaos::CVars::CVarChaosSolverCollisionUseManifolds (TEXT("p.Chaos.Solver.Collision.UseManifolds"), ChaosSolverCollisionUseManifolds, TEXT("Enable/Disable use of manifolds in collision."))
 
int32 Chaos::CVars::ChaosSolverCollisionAllowManifoldUpdate = 1
 
FAutoConsoleVariableRef Chaos::CVars::CVarChaosSolverCollisionAllowManifoldUpdate (TEXT("p.Chaos.Solver.Collision.AllowManifoldUpdate"), ChaosSolverCollisionAllowManifoldUpdate, TEXT("Enable/Disable reuse of manifolds between ticks (for small movement)."))
 
bool Chaos::CVars::bChaosUseCCD = true
 
FAutoConsoleVariableRef Chaos::CVars::CVarChaosUseCCD (TEXT("p.Chaos.Solver.UseCCD"), bChaosUseCCD, TEXT("Global flag to turn CCD on or off. Default is true (on)"), OnCollisionConfigCVarChanged)
 
FAutoConsoleVariableRef Chaos::CVars::CVarChaos_Collision_UseMACD (TEXT("p.Chaos.Solver.UseMACD"), bChaosUseMACD, TEXT("Global flag to turn Movement-Aware Collision Detection (MACD) on or off. Default is true (on)"), OnCollisionConfigCVarChanged)
 
FAutoConsoleVariableRef Chaos::CVars::CVarChaos_Collision_ForceMACD (TEXT("p.Chaos.Solver.bChaosForceMACD"), bChaosForceMACD, TEXT("Force all collisions to use MACD for testing"), OnCollisionConfigCVarChanged)
 
float Chaos::CVars::ChaosSolverJointMinSolverStiffness = 1.0f
 
float Chaos::CVars::ChaosSolverJointMaxSolverStiffness = 1.0f
 
int32 Chaos::CVars::ChaosSolverJointNumIterationsAtMaxSolverStiffness = 1
 
bool Chaos::CVars::bChaosSolverJointSolvePositionLast = true
 
bool Chaos::CVars::bChaosSolverJointUsePositionBasedDrives = true
 
int32 Chaos::CVars::ChaosSolverJointNumShockProagationIterations = 0
 
FRealSingle Chaos::CVars::ChaosSolverJointShockPropagation = -1.0f
 
FAutoConsoleVariableRef Chaos::CVars::CVarChaosSolverJointMinSolverStiffness (TEXT("p.Chaos.Solver.Joint.MinSolverStiffness"), ChaosSolverJointMinSolverStiffness, TEXT("Solver stiffness on first iteration, increases each iteration toward MaxSolverStiffness."))
 
FAutoConsoleVariableRef Chaos::CVars::CVarChaosSolverJointMaxSolverStiffness (TEXT("p.Chaos.Solver.Joint.MaxSolverStiffness"), ChaosSolverJointMaxSolverStiffness, TEXT("Solver stiffness on last iteration, increases each iteration from MinSolverStiffness."))
 
FAutoConsoleVariableRef Chaos::CVars::CVarChaosSolverJointNumIterationsAtMaxSolverStiffness (TEXT("p.Chaos.Solver.Joint.NumIterationsAtMaxSolverStiffness"), ChaosSolverJointNumIterationsAtMaxSolverStiffness, TEXT("How many iterations we want at MaxSolverStiffness."))
 
FAutoConsoleVariableRef Chaos::CVars::CVarChaosSolverJointSolvePositionFirst (TEXT("p.Chaos.Solver.Joint.SolvePositionLast"), bChaosSolverJointSolvePositionLast, TEXT("Should we solve joints in position-then-rotation order (false) or rotation-then-position order (true, default)"))
 
FAutoConsoleVariableRef Chaos::CVars::CVarChaosSolverJointUsePBDVelocityDrives (TEXT("p.Chaos.Solver.Joint.UsePBDDrives"), bChaosSolverJointUsePositionBasedDrives, TEXT("Whether to solve drives in the position or velocity phase of the solver (default true"))
 
FAutoConsoleVariableRef Chaos::CVars::CVarChaosSolverJointNumShockPropagationIterations (TEXT("p.Chaos.Solver.Joint.NumShockPropagationIterations"), ChaosSolverJointNumShockProagationIterations, TEXT("How many iterations to enable SHockProagation for."))
 
FAutoConsoleVariableRef Chaos::CVars::CVarChaosSolverJointShockPropagation (TEXT("p.Chaos.Solver.Joint.ShockPropagation"), ChaosSolverJointShockPropagation, TEXT("6Dof joint shock propagation override (if >= 0)."))
 
int32 Chaos::CVars::ChaosVisualDebuggerEnable = 1
 
FAutoConsoleVariableRef Chaos::CVars::CVarChaosVisualDebuggerEnable (TEXT("p.Chaos.VisualDebuggerEnable"), ChaosVisualDebuggerEnable, TEXT("Enable/Disable pushing/saving data to the visual debugger"))
 
FAutoConsoleVariableRef Chaos::CVars::CVarChaosEnableOverrideSingleParticleTypeToCluster (TEXT("p.Chaos.EnableOverrideSingleParticleTypeToCluster"), bChaosEnableOverrideSingleParticleTypeToCluster, TEXT("When enabled particles are promoted to cluster type so they may be used with cluster unions"))
 
bool Chaos::CVars::bRemoveParticleFromMovingKinematicsOnDisable = true
 
FAutoConsoleVariableRef Chaos::CVars::CVarChaosRemoveParticleFromMovingKinematicsOnDisable (TEXT("p.Chaos.RemoveParticleFromMovingKinematicsOnDisable"), bRemoveParticleFromMovingKinematicsOnDisable, TEXT(""))
 
bool Chaos::CVars::bSingleThreadPushData = false
 
FAutoConsoleVariableRef Chaos::CVars::CVarChaosSingleThreadPushData (TEXT("p.Chaos.SingleThreadPushData"), bSingleThreadPushData, TEXT("Run push Data in Single Thread."))
 
bool PhysicsReplicationCVars::ResimulationCVars::bApplyTargetsWhileResimulating = false
 
CHAOS_API int32 Chaos::SyncKinematicOnGameThread = -1
 
FRealSingle Chaos::MaxBoundsForTree = (FRealSingle)10000
 
FAutoConsoleVariableRef Chaos::CVarMaxBoundsForTree (TEXT("p.MaxBoundsForTree"), MaxBoundsForTree, TEXT(""), ECVF_Default)
 
int32 Chaos::LogCorruptMap = 0
 
FAutoConsoleVariableRef Chaos::CVarLogCorruptMap (TEXT("p.LogCorruptMap"), LogCorruptMap, TEXT(""))
 
bool Chaos::bResimDelayDestroyObject = true
 
FAutoConsoleVariableRef Chaos::CVarResimDelayDestroyObject (TEXT("p.Resim.DelayDestroyObject"), bResimDelayDestroyObject, TEXT("Keep physics objects and physics proxy available until after they go out of rewind history. Disabled by default due to not fully implemented."))
 
int32 Chaos::LogDirtyParticles = 0
 
FAutoConsoleVariableRef Chaos::CVarLogDirtyParticles (TEXT("p.LogDirtyParticles"), LogDirtyParticles, TEXT("Logs out which particles are dirty every frame"))
 

Macro Definition Documentation

◆ CHAOS_COUNTER_STAT

#define CHAOS_COUNTER_STAT (   Name,
  Value 
)
Value:
CSV_CUSTOM_STAT(PhysicsCounters, Name, Value, ECsvCustomStatOp::Set); \
#define SET_DWORD_STAT(StatId, Value)
Definition Stats.h:707
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127

Function Documentation

◆ DECLARE_DWORD_COUNTER_STAT() [1/27]

DECLARE_DWORD_COUNTER_STAT ( TEXT("NumActiveConstraints")  ,
STAT_ChaosCounter_NumActiveConstraints  ,
STATGROUP_ChaosCounters   
)

◆ DECLARE_DWORD_COUNTER_STAT() [2/27]

DECLARE_DWORD_COUNTER_STAT ( TEXT("NumActiveManifoldPoints")  ,
STAT_ChaosCounter_NumActiveManifoldPoints  ,
STATGROUP_ChaosCounters   
)

◆ DECLARE_DWORD_COUNTER_STAT() [3/27]

DECLARE_DWORD_COUNTER_STAT ( TEXT("NumBodies")  ,
STAT_ChaosCounter_NumBodies  ,
STATGROUP_ChaosCounters   
)

◆ DECLARE_DWORD_COUNTER_STAT() [4/27]

DECLARE_DWORD_COUNTER_STAT ( TEXT("NumBroadPhasePairs")  ,
STAT_ChaosCounter_NumBroadPhasePairs  ,
STATGROUP_ChaosCounters   
)

◆ DECLARE_DWORD_COUNTER_STAT() [5/27]

DECLARE_DWORD_COUNTER_STAT ( TEXT("NumCharacterGroundConstraints")  ,
STAT_ChaosCounter_NumCharacterGroundConstraints  ,
STATGROUP_ChaosCounters   
)

◆ DECLARE_DWORD_COUNTER_STAT() [6/27]

DECLARE_DWORD_COUNTER_STAT ( TEXT("NumContacts")  ,
STAT_ChaosCounter_NumContacts  ,
STATGROUP_ChaosCounters   
)

◆ DECLARE_DWORD_COUNTER_STAT() [7/27]

DECLARE_DWORD_COUNTER_STAT ( TEXT("NumDisabledBodies")  ,
STAT_ChaosCounter_NumDisabledBodies  ,
STATGROUP_ChaosCounters   
)

◆ DECLARE_DWORD_COUNTER_STAT() [8/27]

DECLARE_DWORD_COUNTER_STAT ( TEXT("NumDynamicBodies")  ,
STAT_ChaosCounter_NumDynamicBodies  ,
STATGROUP_ChaosCounters   
)

◆ DECLARE_DWORD_COUNTER_STAT() [9/27]

DECLARE_DWORD_COUNTER_STAT ( TEXT("NumDynamicShapes")  ,
STAT_ChaosCounter_NumDynamicShapes  ,
STATGROUP_ChaosCounters   
)

◆ DECLARE_DWORD_COUNTER_STAT() [10/27]

DECLARE_DWORD_COUNTER_STAT ( TEXT("NumGeomCollBodies")  ,
STAT_ChaosCounter_NumGeometryCollectionBodies  ,
STATGROUP_ChaosCounters   
)

◆ DECLARE_DWORD_COUNTER_STAT() [11/27]

DECLARE_DWORD_COUNTER_STAT ( TEXT("NumIslandGroups")  ,
STAT_ChaosCounter_NumIslandGroups  ,
STATGROUP_ChaosCounters   
)

◆ DECLARE_DWORD_COUNTER_STAT() [12/27]

DECLARE_DWORD_COUNTER_STAT ( TEXT("NumIslands")  ,
STAT_ChaosCounter_NumIslands  ,
STATGROUP_ChaosCounters   
)

◆ DECLARE_DWORD_COUNTER_STAT() [13/27]

DECLARE_DWORD_COUNTER_STAT ( TEXT("NumJoints")  ,
STAT_ChaosCounter_NumJoints  ,
STATGROUP_ChaosCounters   
)

◆ DECLARE_DWORD_COUNTER_STAT() [14/27]

DECLARE_DWORD_COUNTER_STAT ( TEXT("NumKinematicBodies")  ,
STAT_ChaosCounter_NumKinematicBodies  ,
STATGROUP_ChaosCounters   
)

◆ DECLARE_DWORD_COUNTER_STAT() [15/27]

DECLARE_DWORD_COUNTER_STAT ( TEXT("NumKinematicShapes")  ,
STAT_ChaosCounter_NumKinematicShapes  ,
STATGROUP_ChaosCounters   
)

◆ DECLARE_DWORD_COUNTER_STAT() [16/27]

DECLARE_DWORD_COUNTER_STAT ( TEXT("NumManifoldPoints")  ,
STAT_ChaosCounter_NumManifoldPoints  ,
STATGROUP_ChaosCounters   
)

◆ DECLARE_DWORD_COUNTER_STAT() [17/27]

DECLARE_DWORD_COUNTER_STAT ( TEXT("NumMidPhases")  ,
STAT_ChaosCounter_NumMidPhases  ,
STATGROUP_ChaosCounters   
)

◆ DECLARE_DWORD_COUNTER_STAT() [18/27]

DECLARE_DWORD_COUNTER_STAT ( TEXT("NumMovingBodies")  ,
STAT_ChaosCounter_NumMovingBodies  ,
STATGROUP_ChaosCounters   
)

◆ DECLARE_DWORD_COUNTER_STAT() [19/27]

DECLARE_DWORD_COUNTER_STAT ( TEXT("NumPositionIterations")  ,
STAT_ChaosCounter_NumPositionIterations  ,
STATGROUP_ChaosCounters   
)

◆ DECLARE_DWORD_COUNTER_STAT() [20/27]

DECLARE_DWORD_COUNTER_STAT ( TEXT("NumProjectionIterations")  ,
STAT_ChaosCounter_NumProjectionIterations  ,
STATGROUP_ChaosCounters   
)

◆ DECLARE_DWORD_COUNTER_STAT() [21/27]

DECLARE_DWORD_COUNTER_STAT ( TEXT("NumRestoredConstraints")  ,
STAT_ChaosCounter_NumRestoredConstraints  ,
STATGROUP_ChaosCounters   
)

◆ DECLARE_DWORD_COUNTER_STAT() [22/27]

DECLARE_DWORD_COUNTER_STAT ( TEXT("NumRestoredManifoldPoints")  ,
STAT_ChaosCounter_NumRestoredManifoldPoints  ,
STATGROUP_ChaosCounters   
)

◆ DECLARE_DWORD_COUNTER_STAT() [23/27]

DECLARE_DWORD_COUNTER_STAT ( TEXT("NumStaticBodies")  ,
STAT_ChaosCounter_NumStaticBodies  ,
STATGROUP_ChaosCounters   
)

◆ DECLARE_DWORD_COUNTER_STAT() [24/27]

DECLARE_DWORD_COUNTER_STAT ( TEXT("NumStaticShapes")  ,
STAT_ChaosCounter_NumStaticShapes  ,
STATGROUP_ChaosCounters   
)

◆ DECLARE_DWORD_COUNTER_STAT() [25/27]

DECLARE_DWORD_COUNTER_STAT ( TEXT("NumUpdatedManifoldPoints")  ,
STAT_ChaosCounter_NumUpdatedManifoldPoints  ,
STATGROUP_ChaosCounters   
)

◆ DECLARE_DWORD_COUNTER_STAT() [26/27]

DECLARE_DWORD_COUNTER_STAT ( TEXT("NumValidConstraints")  ,
STAT_ChaosCounter_NumValidConstraints  ,
STATGROUP_ChaosCounters   
)

◆ DECLARE_DWORD_COUNTER_STAT() [27/27]

DECLARE_DWORD_COUNTER_STAT ( TEXT("NumVelocityIterations")  ,
STAT_ChaosCounter_NumVelocityIterations  ,
STATGROUP_ChaosCounters   
)

◆ DEFINE_LOG_CATEGORY_STATIC()

DEFINE_LOG_CATEGORY_STATIC ( LogPBDRigidsSolver  ,
Log  ,
All   
)

◆ TRACE_DECLARE_INT_COUNTER() [1/29]

TRACE_DECLARE_INT_COUNTER ( ChaosTraceCounter_MidPhase_NumGeneric  ,
TEXT("Chaos/Solver/MidPhase/NumGeneric"  
)

◆ TRACE_DECLARE_INT_COUNTER() [2/29]

TRACE_DECLARE_INT_COUNTER ( ChaosTraceCounter_MidPhase_NumShapePair  ,
TEXT("Chaos/Solver/MidPhase/NumShapePair"  
)

◆ TRACE_DECLARE_INT_COUNTER() [3/29]

TRACE_DECLARE_INT_COUNTER ( ChaosTraceCounter_NumActiveConstraints  ,
TEXT("Chaos/Solver/Collisions/NumActiveConstraints"  
)

◆ TRACE_DECLARE_INT_COUNTER() [4/29]

TRACE_DECLARE_INT_COUNTER ( ChaosTraceCounter_NumActiveManifoldPoints  ,
TEXT("Chaos/Solver/Collisions/NumActiveManifoldPoints"  
)

◆ TRACE_DECLARE_INT_COUNTER() [5/29]

TRACE_DECLARE_INT_COUNTER ( ChaosTraceCounter_NumBodies  ,
TEXT("Chaos/Solver/Bodies/Num"  
)

◆ TRACE_DECLARE_INT_COUNTER() [6/29]

TRACE_DECLARE_INT_COUNTER ( ChaosTraceCounter_NumBroadPhasePairs  ,
TEXT("Chaos/Solver/Collisions/NumBroadPhasePairs"  
)

◆ TRACE_DECLARE_INT_COUNTER() [7/29]

TRACE_DECLARE_INT_COUNTER ( ChaosTraceCounter_NumCharacterGroundConstraints  ,
TEXT("Chaos/Solver/Character/NumConstraints"  
)

◆ TRACE_DECLARE_INT_COUNTER() [8/29]

TRACE_DECLARE_INT_COUNTER ( ChaosTraceCounter_NumContacts  ,
TEXT("Chaos/Solver/Collisions/NumConstraints"  
)

◆ TRACE_DECLARE_INT_COUNTER() [9/29]

TRACE_DECLARE_INT_COUNTER ( ChaosTraceCounter_NumDisabledBodies  ,
TEXT("Chaos/Solver/Bodies/NumDisabled"  
)

◆ TRACE_DECLARE_INT_COUNTER() [10/29]

TRACE_DECLARE_INT_COUNTER ( ChaosTraceCounter_NumDynamicBodies  ,
TEXT("Chaos/Solver/Bodies/NumDynamic"  
)

◆ TRACE_DECLARE_INT_COUNTER() [11/29]

TRACE_DECLARE_INT_COUNTER ( ChaosTraceCounter_NumDynamicShapes  ,
TEXT("Chaos/Solver/Collisions/NumDynamicShapes"  
)

◆ TRACE_DECLARE_INT_COUNTER() [12/29]

TRACE_DECLARE_INT_COUNTER ( ChaosTraceCounter_NumGeometryCollectionBodies  ,
TEXT("Chaos/Solver/Bodies/NumGC"  
)

◆ TRACE_DECLARE_INT_COUNTER() [13/29]

TRACE_DECLARE_INT_COUNTER ( ChaosTraceCounter_NumIslandGroups  ,
TEXT("Chaos/Solver/Islands/NumIslandGroups"  
)

◆ TRACE_DECLARE_INT_COUNTER() [14/29]

TRACE_DECLARE_INT_COUNTER ( ChaosTraceCounter_NumIslands  ,
TEXT("Chaos/Solver/Islands/NumIslands"  
)

◆ TRACE_DECLARE_INT_COUNTER() [15/29]

TRACE_DECLARE_INT_COUNTER ( ChaosTraceCounter_NumJoints  ,
TEXT("Chaos/Solver/Joints/NumConstraints"  
)

◆ TRACE_DECLARE_INT_COUNTER() [16/29]

TRACE_DECLARE_INT_COUNTER ( ChaosTraceCounter_NumKinematicBodies  ,
TEXT("Chaos/Solver/Bodies/NumKinematic"  
)

◆ TRACE_DECLARE_INT_COUNTER() [17/29]

TRACE_DECLARE_INT_COUNTER ( ChaosTraceCounter_NumKinematicShapes  ,
TEXT("Chaos/Solver/Collisions/NumKinematicShapes"  
)

◆ TRACE_DECLARE_INT_COUNTER() [18/29]

TRACE_DECLARE_INT_COUNTER ( ChaosTraceCounter_NumManifoldPoints  ,
TEXT("Chaos/Solver/Collisions/NumManifoldPoints"  
)

◆ TRACE_DECLARE_INT_COUNTER() [19/29]

TRACE_DECLARE_INT_COUNTER ( ChaosTraceCounter_NumMidPhases  ,
TEXT("Chaos/Solver/Collisions/NumMidPhases"  
)

◆ TRACE_DECLARE_INT_COUNTER() [20/29]

TRACE_DECLARE_INT_COUNTER ( ChaosTraceCounter_NumMovingBodies  ,
TEXT("Chaos/Solver/Bodies/NumMoving"  
)

◆ TRACE_DECLARE_INT_COUNTER() [21/29]

TRACE_DECLARE_INT_COUNTER ( ChaosTraceCounter_NumPositionIterations  ,
TEXT("Chaos/Solver/Iterations/NumPosition"  
)

◆ TRACE_DECLARE_INT_COUNTER() [22/29]

TRACE_DECLARE_INT_COUNTER ( ChaosTraceCounter_NumProjectionIterations  ,
TEXT("Chaos/Solver/Iterations/NumProjection"  
)

◆ TRACE_DECLARE_INT_COUNTER() [23/29]

TRACE_DECLARE_INT_COUNTER ( ChaosTraceCounter_NumRestoredConstraints  ,
TEXT("Chaos/Solver/Collisions/NumRestoredConstraints"  
)

◆ TRACE_DECLARE_INT_COUNTER() [24/29]

TRACE_DECLARE_INT_COUNTER ( ChaosTraceCounter_NumRestoredManifoldPoints  ,
TEXT("Chaos/Solver/Collisions/NumRestoredManifoldPoints"  
)

◆ TRACE_DECLARE_INT_COUNTER() [25/29]

TRACE_DECLARE_INT_COUNTER ( ChaosTraceCounter_NumStaticBodies  ,
TEXT("Chaos/Solver/Bodies/NumStatic"  
)

◆ TRACE_DECLARE_INT_COUNTER() [26/29]

TRACE_DECLARE_INT_COUNTER ( ChaosTraceCounter_NumStaticShapes  ,
TEXT("Chaos/Solver/Collisions/NumStaticShapes"  
)

◆ TRACE_DECLARE_INT_COUNTER() [27/29]

TRACE_DECLARE_INT_COUNTER ( ChaosTraceCounter_NumUpdatedManifoldPoints  ,
TEXT("Chaos/Solver/Collisions/NumUpdatedManifoldPoints"  
)

◆ TRACE_DECLARE_INT_COUNTER() [28/29]

TRACE_DECLARE_INT_COUNTER ( ChaosTraceCounter_NumValidConstraints  ,
TEXT("Chaos/Solver/Collisions/NumValidConstraints"  
)

◆ TRACE_DECLARE_INT_COUNTER() [29/29]

TRACE_DECLARE_INT_COUNTER ( ChaosTraceCounter_NumVelocityIterations  ,
TEXT("Chaos/Solver/Iterations/NumVelocity"  
)