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

Namespaces

namespace  Chaos
 
namespace  Chaos::CVars
 

Functions

FAutoConsoleVariableRef Chaos::CVars::CVarChaosInertiaConditioningInvMassTolerance (TEXT("p.Chaos.InertiaConditioning.InvMassTolerance"), ChaosInertiaConditioningTolerances.InvMassTolerance, TEXT("Inertia conditioning is disabled for objects with inverse mass less than this."), OnInertiaConditioningCVarChangedDelegate)
 
FAutoConsoleVariableRef Chaos::CVars::CVarChaosInertiaConditioningInvInertiaTolerance (TEXT("p.Chaos.InertiaConditioning.InvInertiaTolerance"), ChaosInertiaConditioningTolerances.InvInertiaTolerance, TEXT("Inertia conditioning is disabled for objects with inverse inertia less than this. The default value disables Inertia Conditioing for mediums to large objects."), OnInertiaConditioningCVarChangedDelegate)
 
FAutoConsoleVariableRef Chaos::CVars::CVarChaosInertiaConditioningExtentTolerance (TEXT("p.Chaos.InertiaConditioning.ExtentTolerance"), ChaosInertiaConditioningTolerances.ExtentTolerance, TEXT("Inertia conditioning is disabled for objects with dimensions smaller than this."), OnInertiaConditioningCVarChangedDelegate)
 
 Chaos::CVars::DECLARE_CYCLE_STAT (TEXT("FPBDRigidsEvolutionGBF::AdvanceOneTimeStep"), STAT_Evolution_AdvanceOneTimeStep, STATGROUP_Chaos)
 
 Chaos::CVars::DECLARE_CYCLE_STAT (TEXT("FPBDRigidsEvolutionGBF::UnclusterUnions"), STAT_Evolution_UnclusterUnions, STATGROUP_Chaos)
 
 Chaos::CVars::DECLARE_CYCLE_STAT (TEXT("FPBDRigidsEvolutionGBF::Integrate"), STAT_Evolution_Integrate, STATGROUP_Chaos)
 
 Chaos::CVars::DECLARE_CYCLE_STAT (TEXT("FPBDRigidsEvolutionGBF::KinematicTargets"), STAT_Evolution_KinematicTargets, STATGROUP_Chaos)
 
 Chaos::CVars::DECLARE_CYCLE_STAT (TEXT("FPBDRigidsEvolutionGBF::PreIntegrateCallback"), STAT_Evolution_PreIntegrateCallback, STATGROUP_Chaos)
 
 Chaos::CVars::DECLARE_CYCLE_STAT (TEXT("FPBDRigidsEvolutionGBF::PostIntegrateCallback"), STAT_Evolution_PostIntegrateCallback, STATGROUP_Chaos)
 
 Chaos::CVars::DECLARE_CYCLE_STAT (TEXT("FPBDRigidsEvolutionGBF::PreSolveCallback"), STAT_Evolution_PreSolveCallback, STATGROUP_Chaos)
 
 Chaos::CVars::DECLARE_CYCLE_STAT (TEXT("FPBDRigidsEvolutionGBF::PostSolveCallback"), STAT_Evolution_PostSolveCallback, STATGROUP_Chaos)
 
 Chaos::CVars::DECLARE_CYCLE_STAT (TEXT("FPBDRigidsEvolutionGBF::CCDModifierCallback"), STAT_Evolution_CCDModifierCallback, STATGROUP_Chaos)
 
 Chaos::CVars::DECLARE_CYCLE_STAT (TEXT("FPBDRigidsEvolutionGBF::CollisionModifierCallback"), STAT_Evolution_CollisionModifierCallback, STATGROUP_Chaos)
 
 Chaos::CVars::DECLARE_CYCLE_STAT (TEXT("FPBDRigidsEvolutionGBF::MidPhaseModifierCallback"), STAT_Evolution_MidPhaseModifierCallback, STATGROUP_Chaos)
 
 Chaos::CVars::DECLARE_CYCLE_STAT (TEXT("FPBDRigidsEvolutionGBF::CCD"), STAT_Evolution_CCD, STATGROUP_Chaos)
 
 Chaos::CVars::DECLARE_CYCLE_STAT (TEXT("FPBDRigidsEvolutionGBF::CCDCorrection"), STAT_Evolution_CCDCorrection, STATGROUP_Chaos)
 
 Chaos::CVars::DECLARE_CYCLE_STAT (TEXT("FPBDRigidsEvolutionGBF::GraphColor"), STAT_Evolution_GraphColor, STATGROUP_Chaos)
 
 Chaos::CVars::DECLARE_CYCLE_STAT (TEXT("FPBDRigidsEvolutionGBF::BuildGroups"), STAT_Evolution_BuildGroups, STATGROUP_Chaos)
 
 Chaos::CVars::DECLARE_CYCLE_STAT (TEXT("FPBDRigidsEvolutionGBF::DetectCollisions"), STAT_Evolution_DetectCollisions, STATGROUP_Chaos)
 
 Chaos::CVars::DECLARE_CYCLE_STAT (TEXT("FPBDRigidsEvolutionGBF::TransferJointCollisions"), STAT_Evolution_TransferJointCollisions, STATGROUP_Chaos)
 
 Chaos::CVars::DECLARE_CYCLE_STAT (TEXT("FPBDRigidsEvolutionGBF::PostDetectCollisionsCallback"), STAT_Evolution_PostDetectCollisionsCallback, STATGROUP_Chaos)
 
 Chaos::CVars::DECLARE_CYCLE_STAT (TEXT("FPBDRigidsEvolutionGBF::UpdateConstraintPositionBasedState"), STAT_Evolution_UpdateConstraintPositionBasedState, STATGROUP_Chaos)
 
 Chaos::CVars::DECLARE_CYCLE_STAT (TEXT("FPBDRigidsEvolutionGBF::ComputeIntermediateSpatialAcceleration"), STAT_Evolution_ComputeIntermediateSpatialAcceleration, STATGROUP_Chaos)
 
 Chaos::CVars::DECLARE_CYCLE_STAT (TEXT("FPBDRigidsEvolutionGBF::CreateConstraintGraph"), STAT_Evolution_CreateConstraintGraph, STATGROUP_Chaos)
 
 Chaos::CVars::DECLARE_CYCLE_STAT (TEXT("FPBDRigidsEvolutionGBF::CreateIslands"), STAT_Evolution_CreateIslands, STATGROUP_Chaos)
 
 Chaos::CVars::DECLARE_CYCLE_STAT (TEXT("FPBDRigidsEvolutionGBF::PruneCollisions"), STAT_Evolution_PruneCollisions, STATGROUP_Chaos)
 
 Chaos::CVars::DECLARE_CYCLE_STAT (TEXT("FPBDRigidsEvolutionGBF::AddSleepingContacts"), STAT_Evolution_AddSleepingContacts, STATGROUP_Chaos)
 
 Chaos::CVars::DECLARE_CYCLE_STAT (TEXT("FPBDRigidsEvolutionGBF::ParallelSolve"), STAT_Evolution_ParallelSolve, STATGROUP_Chaos)
 
 Chaos::CVars::DECLARE_CYCLE_STAT (TEXT("FPBDRigidsEvolutionGBF::SaveParticlePostSolve"), STAT_Evolution_SavePostSolve, STATGROUP_Chaos)
 
 Chaos::CVars::DECLARE_CYCLE_STAT (TEXT("FPBDRigidsEvolutionGBF::DeactivateSleep"), STAT_Evolution_DeactivateSleep, STATGROUP_Chaos)
 
 Chaos::CVars::DECLARE_CYCLE_STAT (TEXT("FPBDRigidsEvolutionGBF::InertiaConditioning"), STAT_Evolution_InertiaConditioning, STATGROUP_Chaos)
 
int32 Chaos::CalculateNumCollisionsPerBlock ()
 
template<typename TEvolution >
void Chaos::SerializeToDisk (TEvolution &Evolution)
 
template<typename TParticleView >
void Chaos::CheckParticleViewForDupes (const FString &Name, const TParticleView &ParticleView)
 
void Chaos::CheckParticleViewsForDupes (FPBDRigidsSOAs &Particles)
 
void Chaos::CheckMovingKinematicFlag (FPBDRigidsSOAs &Particles)
 
void Chaos::CheckParticleViewsForErrors (FPBDRigidsSOAs &Particles)
 

Variables

CHAOS_API bool Chaos::bPendingHierarchyDump = false
 
bool Chaos::CVars::bChaosUseMACD = true
 
FRealSingle Chaos::CVars::HackMaxAngularVelocity = 1000.f
 
FAutoConsoleVariableRef Chaos::CVars::CVarHackMaxAngularVelocity (TEXT("p.HackMaxAngularVelocity"), HackMaxAngularVelocity, TEXT("Max cap on angular velocity: rad/s. This is only a temp solution and should not be relied on as a feature. -1.f to disable"))
 
FRealSingle Chaos::CVars::HackMaxVelocity = -1.f
 
FAutoConsoleVariableRef Chaos::CVars::CVarHackMaxVelocity (TEXT("p.HackMaxVelocity2"), HackMaxVelocity, TEXT("Max cap on velocity: cm/s. This is only a temp solution and should not be relied on as a feature. -1.f to disable"))
 
int Chaos::CVars::DisableThreshold = 5
 
FAutoConsoleVariableRef Chaos::CVars::CVarDisableThreshold (TEXT("p.DisableThreshold2"), DisableThreshold, TEXT("Disable threshold frames to transition to sleeping"))
 
int Chaos::CVars::CollisionDisableCulledContacts = 0
 
FAutoConsoleVariableRef Chaos::CVars::CVarDisableCulledContacts (TEXT("p.CollisionDisableCulledContacts"), CollisionDisableCulledContacts, TEXT("Allow the PBDRigidsEvolutionGBF collision constraints to throw out contacts mid solve if they are culled."))
 
FAutoConsoleVariableRef Chaos::CVars::CVarSmoothedPositionLerpRate (TEXT("p.Chaos.SmoothedPositionLerpRate"), SmoothedPositionLerpRate, TEXT("The interpolation rate for the smoothed position calculation. Used for sleeping."))
 
int Chaos::CVars::DisableParticleUpdateVelocityParallelFor = 0
 
FAutoConsoleVariableRef Chaos::CVars::CVarDisableParticleUpdateVelocityParallelFor (TEXT("p.DisableParticleUpdateVelocityParallelFor"), DisableParticleUpdateVelocityParallelFor, TEXT("Disable Particle Update Velocity ParallelFor and run the update on a single thread"))
 
bool Chaos::CVars::bChaosCollisionCCDUseTightBoundingBox = true
 
FAutoConsoleVariableRef Chaos::CVars::CVarChaosCollisionCCDUseTightBoundingBox (TEXT("p.Chaos.Collision.CCD.UseTightBoundingBox"), bChaosCollisionCCDUseTightBoundingBox, TEXT(""))
 
int32 Chaos::CVars::ChaosSolverCollisionSolverType = -1
 
FAutoConsoleVariableRef Chaos::CVars::CVarChaosSolverCollisionSolverType (TEXT("p.Chaos.Solver.Collision.SolverType"), ChaosSolverCollisionSolverType, TEXT("-1: Use default (Gauss Seidel); 0: Gauss Seidel; 1: Gauss Seidel SOA 2: Partial Jacobi"))
 
int32 Chaos::CVars::ChaosSolverCollisionPriority = 0
 
FAutoConsoleVariableRef Chaos::CVars::CVarChaosSolverCollisionPriority (TEXT("p.Chaos.Solver.Collision.Priority"), ChaosSolverCollisionPriority, TEXT("Set constraint priority. Larger values are evaluated later [def:0]"))
 
int32 Chaos::CVars::ChaosSolverJointPriority = 0
 
FAutoConsoleVariableRef Chaos::CVars::CVarChaosSolverJointPriority (TEXT("p.Chaos.Solver.Joint.Priority"), ChaosSolverJointPriority, TEXT("Set constraint priority. Larger values are evaluated later [def:0]"))
 
int32 Chaos::CVars::ChaosSolverSuspensionPriority = 0
 
FAutoConsoleVariableRef Chaos::CVars::CVarChaosSolverSuspensionPriority (TEXT("p.Chaos.Solver.Suspension.Priority"), ChaosSolverSuspensionPriority, TEXT("Set constraint priority. Larger values are evaluated later [def:0]"))
 
int32 Chaos::CVars::ChaosSolverCharacterGroundConstraintPriority = 0
 
FAutoConsoleVariableRef Chaos::CVars::CVarChaosSolverChaosCharacterGroundConstraintPriority (TEXT("p.Chaos.Solver.CharacterGroundConstraint.Priority"), ChaosSolverCharacterGroundConstraintPriority, TEXT("Set constraint priority. Larger values are evaluated later [def:0]"))
 
bool Chaos::CVars::DoTransferJointConstraintCollisions = true
 
FAutoConsoleVariableRef Chaos::CVars::CVarDoTransferJointConstraintCollisions (TEXT("p.Chaos.Solver.Joint.TransferCollisions"), DoTransferJointConstraintCollisions, TEXT("Allows joints to apply collisions to the parent from the child when the Joints TransferCollisionScale is not 0 [def:true]"))
 
int32 Chaos::CVars::TransferCollisionsLimit = INT_MAX
 
FAutoConsoleVariableRef Chaos::CVars::CVarTransferCollisionsMultiply (TEXT("p.Chaos.Solver.Joint.TransferCollisionsLimit"), TransferCollisionsLimit, TEXT("Maximum number of constraints that are allowed to transfer to the parent. Lowering this will improve performance but reduce accuracy. [def:INT_MAX]"))
 
FRealSingle Chaos::CVars::TransferCollisionsKinematicScale = 1.0f
 
FAutoConsoleVariableRef Chaos::CVars::CVarTransferCollisionsKinematicScale (TEXT("p.Chaos.Solver.Joint.TransferCollisionsKinematicScale"), TransferCollisionsKinematicScale, TEXT("Scale to apply to collision transfers between kinematic bodies [def:1.0]"))
 
FRealSingle Chaos::CVars::TransferCollisionsStiffnessClamp = 1.0f
 
FAutoConsoleVariableRef Chaos::CVars::CVarTransferCollisionsStiffnessClamp (TEXT("p.Chaos.Solver.Joint.TransferCollisionsStiffnessClamp"), TransferCollisionsStiffnessClamp, TEXT("Clamp of maximum value of the stiffness clamp[def:1.0]"))
 
bool Chaos::CVars::TransferCollisionsDebugTestAgainstMaxClamp = false
 
FAutoConsoleVariableRef Chaos::CVars::CVarTransferCollisionsDebugTestAgainstMaxClamp (TEXT("p.Chaos.Solver.Joint.TransferCollisionsDebugTestAgainstMaxClamp"), TransferCollisionsDebugTestAgainstMaxClamp, TEXT("Force all joint collision constraint settings to max clamp value to validate stability [def:false]"))
 
bool Chaos::CVars::DoFinalProbeNarrowPhase = true
 
FAutoConsoleVariableRef Chaos::CVars::CVarDoFinalProbeNarrowPhase (TEXT("p.Chaos.Solver.DoFinalProbeNarrowPhase"), DoFinalProbeNarrowPhase, TEXT(""))
 
int32 Chaos::CVars::ChaosSolverInertiaConditioningEpoch = 0
 
FConsoleVariableDelegate Chaos::CVars::OnInertiaConditioningCVarChangedDelegate = FConsoleVariableDelegate::CreateLambda([](IConsoleVariable*) { ++ChaosSolverInertiaConditioningEpoch; })
 
bool Chaos::CVars::bChaosSolverInertiaConditioningEnabled = true
 
FAutoConsoleVariableRef Chaos::CVars::CVarChaosSolverInertiaConditioningEnabled (TEXT("p.Chaos.Solver.InertiaConditioning.Enabled"), bChaosSolverInertiaConditioningEnabled, TEXT("Enable/Disable constraint stabilization through inertia conditioning"), OnInertiaConditioningCVarChangedDelegate)
 
FRealSingle Chaos::CVars::ChaosSolverInertiaConditioningDistance = 20
 
FAutoConsoleVariableRef Chaos::CVars::CVarChaosSolverInertiaConditioningDistance (TEXT("p.Chaos.Solver.InertiaConditioning.Distance"), ChaosSolverInertiaConditioningDistance, TEXT("An input to inertia conditioning system. The joint distance error which needs to be stable (generate a low rotation)."), OnInertiaConditioningCVarChangedDelegate)
 
FRealSingle Chaos::CVars::ChaosSolverInertiaConditioningRotationRatio = 2.5f
 
FAutoConsoleVariableRef Chaos::CVars::CVarChaosSolverInertiaConditioningRotationRatio (TEXT("p.Chaos.Solver.InertiaConditioning.RotationRatio"), ChaosSolverInertiaConditioningRotationRatio, TEXT("An input to inertia conditioning system. The maximum ratio of joint correction from rotation versus translation"), OnInertiaConditioningCVarChangedDelegate)
 
FRealSingle Chaos::CVars::ChaosSolverMaxInvInertiaComponentRatio = 0
 
FAutoConsoleVariableRef Chaos::CVars::CVarChaosSolverInertiaConditioningMaxInvInertiaComponentRatio (TEXT("p.Chaos.Solver.InertiaConditioning.MaxInvInertiaComponentRatio"), ChaosSolverMaxInvInertiaComponentRatio, TEXT("An input to inertia conditioning system. The largest inertia component must be at least least multiple of the smallest component"), OnInertiaConditioningCVarChangedDelegate)
 
FInertiaConditioningTolerances Chaos::CVars::ChaosInertiaConditioningTolerances = FInertiaConditioningTolerances()
 
bool Chaos::CVars::bChaosCollisionModiferBeforeCCD = false
 
FAutoConsoleVariableRef Chaos::CVars::CVarChaosCollisionModiferBeforeCCD (TEXT("p.Chaos.Solver.CollisionModifiersBeforeCCD"), bChaosCollisionModiferBeforeCCD, TEXT("True: run the collision modifiers before CCD rewind is applied; False(default): run modifiers after CCD rewind. See comments in code."))
 
FAutoConsoleVariableRef Chaos::CVars::CVarChaosSolverPersistentGraph (TEXT("p.Chaos.Solver.PersistentGraph"), bChaosSolverPersistentGraph, TEXT(""))
 
FAutoConsoleVariableRef Chaos::CVars::CVarChaosIgnoreOneWayPairCollisions (TEXT("p.Chaos.Solver.OneWayPairCollisionMode"), ChaosOneWayInteractionPairCollisionMode, TEXT("How to treat collisions between two one-way interaction particles. See EOneWayInteractionPairCollisionMode (0: Ignore collisions; 1: Collide as normal; 2: Collide as spheres)"))
 
bool Chaos::CVars::bChaosRigids_UseSimdForJointsSolver = true
 
FAutoConsoleVariableRef Chaos::CVars::CVarChaosImmPhysUseSimdForLinearSolver (TEXT("p.Chaos.Solver.Joint.UseSimd"), bChaosRigids_UseSimdForJointsSolver, TEXT("Enable/Disable SIMD on the linear joint solver"))
 
int32 Chaos::CVars::SerializeEvolution = 0
 
FAutoConsoleVariableRef Chaos::CVars::CVarSerializeEvolution (TEXT("p.SerializeEvolution"), SerializeEvolution, TEXT(""))
 
bool Chaos::CVars::bChaos_CollisionStore_Enabled = true
 
FAutoConsoleVariableRef Chaos::CVars::CVarCollisionStoreEnabled (TEXT("p.Chaos.CollisionStore.Enabled"), bChaos_CollisionStore_Enabled, TEXT(""))
 
FAutoConsoleVariableRef Chaos::CVars::CVarChaosSolverTestModeEnabled (TEXT("p.Chaos.Solver.TestMode.Enabled"), bChaos_Solver_TestMode_Enabled, TEXT(""))
 
bool Chaos::CVars::bChaos_Solver_TestMode_ShowInitialTransforms = false
 
FAutoConsoleVariableRef Chaos::CVars::CVarChaosSolverTestModeShowInitialTransforms (TEXT("p.Chaos.Solver.TestMode.ShowInitialTransforms"), bChaos_Solver_TestMode_ShowInitialTransforms, TEXT(""))
 
FAutoConsoleVariableRef Chaos::CVars::CVarChaosSolverTestModeStep (TEXT("p.Chaos.Solver.TestMode.Step"), Chaos_Solver_TestMode_Step, TEXT(""))
 
bool Chaos::CVars::bChaosSolverCheckParticleViews = false
 
FAutoConsoleVariableRef Chaos::CVars::CVarChaosSolverCheckParticleViews (TEXT("p.Chaos.Solver.CheckParticleViews"), bChaosSolverCheckParticleViews, TEXT(""))
 
bool Chaos::CVars::bChaosMidPhaseRedistributionEnabled = false
 
FAutoConsoleVariableRef Chaos::CVars::CVarChaosSolverMidPhaseRedistributionEnabled (TEXT("p.Chaos.BroadPhase.MidPhaseRedistributionEnabled"), bChaosMidPhaseRedistributionEnabled, TEXT(""))