|
| | DECLARE_CYCLE_STAT (TEXT("IslandManager::UpdateParticles"), STAT_IslandManager_UpdateParticles, STATGROUP_ChaosIslands) |
| |
| | DECLARE_CYCLE_STAT (TEXT("IslandManager::Merge"), STAT_IslandManager_MergeIslands, STATGROUP_ChaosIslands) |
| |
| | DECLARE_CYCLE_STAT (TEXT("IslandManager::Split"), STAT_IslandManager_SplitIslands, STATGROUP_ChaosIslands) |
| |
| | DECLARE_CYCLE_STAT (TEXT("IslandManager::Levels"), STAT_IslandManager_AssignLevels, STATGROUP_ChaosIslands) |
| |
| | DECLARE_CYCLE_STAT (TEXT("IslandManager::Finalize"), STAT_IslandManager_Finalize, STATGROUP_ChaosIslands) |
| |
| | DECLARE_CYCLE_STAT (TEXT("IslandManager::ComputeIterationSettings"), STAT_IslandManager_ComputeIterationSettings, STATGROUP_ChaosIslands) |
| |
| | DECLARE_CYCLE_STAT (TEXT("IslandManager::Validate"), STAT_IslandManager_Validate, STATGROUP_ChaosIslands) |
| |
| bool | Chaos::Private::IsParticleDynamic (const FGeometryParticleHandle *Particle) |
| |
| bool | Chaos::Private::IsParticleSleeping (const FGeometryParticleHandle *Particle) |
| |
| bool | Chaos::Private::WasParticleAsleep (const FGeometryParticleHandle *Particle) |
| |
| bool | Chaos::Private::IsParticleMoving (const FGeometryParticleHandle *Particle) |
| |
| bool | Chaos::Private::ParticlesIslandNeedsResim (const FGeometryParticleHandle *Particle) |
| |
| bool | Chaos::Private::GetIslandParticleSleepThresholds (const FGeometryParticleHandle *Particle, const TArrayCollectionArray< TSerializablePtr< FChaosPhysicsMaterial > > *PhysicsMaterials, const TArrayCollectionArray< TUniquePtr< FChaosPhysicsMaterial > > *PerParticlePhysicsMaterials, const THandleArray< FChaosPhysicsMaterial > *SimMaterials, FRealSingle &OutSleepLinearThreshold, FRealSingle &OutSleepAngularThreshold, int &OutSleepCounterThreshold, FRealSingle &OutWakeLinearThreshold, FRealSingle &OutWakeAngularThreshold) |
| |
| bool | Chaos::Private::GetIsolatedParticleSleepThresholds (const FGeometryParticleHandle *Particle, const TArrayCollectionArray< TSerializablePtr< FChaosPhysicsMaterial > > *PhysicsMaterials, const TArrayCollectionArray< TUniquePtr< FChaosPhysicsMaterial > > *PerParticlePhysicsMaterials, const THandleArray< FChaosPhysicsMaterial > *SimMaterials, FRealSingle &OutSleepLinearThreshold, FRealSingle &OutSleepAngularThreshold, int &OutSleepCounterThreshold) |
| |
| bool | Chaos::Private::GetParticleDisableThresholds (const FGeometryParticleHandle *Particle, const TArrayCollectionArray< TSerializablePtr< FChaosPhysicsMaterial > > *PhysicsMaterials, const TArrayCollectionArray< TUniquePtr< FChaosPhysicsMaterial > > *PerParticlePhysicsMaterials, const THandleArray< FChaosPhysicsMaterial > *SimMaterials, FRealSingle &OutDisableLinearThreshold, FRealSingle &OutDisableAngularThreshold) |
| |
| template<typename TRigidParticleHandle > |
| void | Chaos::Private::InitParticleSleepMetrics (TRigidParticleHandle &Rigid, FReal Dt) |
| |
| template<typename TRigidParticleHandle > |
| void | Chaos::Private::UpdateParticleSleepMetrics (TRigidParticleHandle &Rigid, FReal Dt) |
| |
| void | Chaos::Private::ValidateWakeQueues (TArray< FPBDIslandParticle * > &NodeQueue, TArray< FPBDParticleMomentumSq > &MomentumQueue) |
| |
|
| int32 | Chaos::CVars::ChaosSolverCollisionPositionShockPropagationIterations = -1 |
| |
| int32 | Chaos::CVars::ChaosSolverCollisionVelocityShockPropagationIterations = -1 |
| |
| bool | Chaos::CVars::bChaosSolverPersistentGraph = true |
| |
| FRealSingle | Chaos::CVars::SmoothedPositionLerpRate = 0.3f |
| |
| bool | Chaos::CVars::bChaosConstraintGraphValidate = (CHAOS_CONSTRAINTGRAPH_CHECK_ENABLED != 0) |
| |
| FAutoConsoleVariableRef | Chaos::CVars::CVarChaosConstraintGraphValidate (TEXT("p.Chaos.ConstraintGraph.Validate"), bChaosConstraintGraphValidate, TEXT("Enable per-tick ConstraintGraph validation checks/assertions")) |
| |
| bool | Chaos::CVars::bChaosSolverSleepEnabled = true |
| |
| FAutoConsoleVariableRef | Chaos::CVars::CVarChaosSolverSleepEnabled (TEXT("p.Chaos.Solver.Sleep.Enabled"), bChaosSolverSleepEnabled, TEXT("Islands of non - moving particles will be deactivated.")) |
| |
| bool | Chaos::CVars::bChaosSolverPartialIslandSleep = false |
| |
| FAutoConsoleVariableRef | Chaos::CVars::CVarChaosSolverPartialIslandSleep (TEXT("p.Chaos.Solver.Sleep.PartialIslandSleep"), bChaosSolverPartialIslandSleep, TEXT("[EXPERIMENTAL] Single non-moving particles in islands will be deactivated even if they are connected to moving particles.")) |
| |
| bool | Chaos::CVars::bChaosSolverPartialIslandWake = true |
| |
| FAutoConsoleVariableRef | Chaos::CVars::CVarChaosSolverPartialIslandWake (TEXT("p.Chaos.Solver.Sleep.PartialIslandSleep.PartialIslandWake"), bChaosSolverPartialIslandWake, TEXT("[EXPERIMENTAL] Safeguard only: New constraints and particle state changes will trigger partial wake events instead of waking up the entire island.[def:true]")) |
| |
| bool | Chaos::CVars::bChaosSolverForcePartialIslandWake = false |
| |
| FAutoConsoleVariableRef | Chaos::CVars::CVarChaosSolverForcePartialIslandWake (TEXT("p.Chaos.Solver.Sleep.PartialIslandSleep.ForcePartialIslandWake"), bChaosSolverForcePartialIslandWake, TEXT("[EXPERIMENTAL] Safeguard only: We force partial wake events even if all particles in the island are already awake to guarantee resetting the particle sleep counter.[def:false]")) |
| |
| bool | Chaos::CVars::bChaosSolverWakeOnParticleStateChanged = false |
| |
| FAutoConsoleVariableRef | Chaos::CVars::CVarChaosSolverWakeOnParticleStateChanged (TEXT("p.Chaos.Solver.Sleep.PartialIslandSleep.WakeOnParticleStateChanged"), bChaosSolverWakeOnParticleStateChanged, TEXT("[EXPERIMENTAL] Safeguard only: State changes of a particle will trigger the island to wake up entirely.[def:false]")) |
| |
| bool | Chaos::CVars::bChaosSolverWakeOnMovingOnly = true |
| |
| FAutoConsoleVariableRef | Chaos::CVars::CVarChaosSolverWakeOnMovingOnly (TEXT("p.Chaos.Solver.Sleep.PartialIslandSleep.WakeOnMovingOnly"), bChaosSolverWakeOnMovingOnly, TEXT("[EXPERIMENTAL] Safeguard only: Only newly detected constraints connected to a moving particle will trigger wake-up event.[def:true]")) |
| |
| FRealSingle | Chaos::CVars::ChaosSolverPostStepWakeThreshold = 20.0f |
| |
| FAutoConsoleVariableRef | Chaos::CVars::CVarChaosSolverPostStepWakeThreshold (TEXT("p.Chaos.Solver.Sleep.PartialIslandSleep.PostStepWakeThreshold"), ChaosSolverPostStepWakeThreshold, TEXT("[EXPERIMENTAL] Post-solver waking of sleeping particles: Minimum squared change of velocity induced by the velocity-based collision solver (VBD, 0 to disable).[def:20]")) |
| |
| FRealSingle | Chaos::CVars::ChaosSolverMomentumPropagation = 0.3f |
| |
| FAutoConsoleVariableRef | Chaos::CVars::CVarChaosSolverMomentumPropagation (TEXT("p.Chaos.Solver.Sleep.PartialIslandSleep.MomentumPropagation"), ChaosSolverMomentumPropagation, TEXT("[EXPERIMENTAL] Ratio of the impact momentum transferred from one sleeping particle to another through a constraint during partial wake event (0 to disable, 1 to propagate without dissipation).[def:0.3]")) |
| |
| bool | Chaos::CVars::bChaosSolverPartialSleepCollisionConstraintsOnly = true |
| |
| FAutoConsoleVariableRef | Chaos::CVars::CVarChaosSolverPartialSleepCollisionConstraintsOnly (TEXT("p.Chaos.Solver.Sleep.PartialIslandSleep.CollisionConstraintsOnly"), bChaosSolverPartialSleepCollisionConstraintsOnly, TEXT("[EXPERIMENTAL] Safeguard only: Only collision constraints permit partial sleep, i.e. the sleep state of particles connect by other constraint types must match.[def:true]")) |
| |
| bool | Chaos::CVars::bChaosSolverPartialWakePreIntegration = true |
| |
| FAutoConsoleVariableRef | Chaos::CVars::CVarChaosSolverPartialWakePreIntegration (TEXT("p.Chaos.Solver.Sleep.PartialIslandSleep.PartialWakePreIntegration"), bChaosSolverPartialWakePreIntegration, TEXT("[EXPERIMENTAL] Safeguard only: Partial wake events also happen pre-integration when the user explicilty sets a particle transform or applies external impulses or forces.[def:true]")) |
| |
| FRealSingle | Chaos::CVars::ChaosSolverMinMotionlessRatio = 0.1f |
| |
| FAutoConsoleVariableRef | Chaos::CVars::CVarChaosSolverMinMotionlessRatio (TEXT("p.Chaos.Solver.Sleep.PartialIslandSleep.MinimumMotionlessRatio"), ChaosSolverMinMotionlessRatio, TEXT("[EXPERIMENTAL] Ratio of the particles which need to be motionless in an island for partial island sleep to become active (0 to always activate partial island sleep).[def:0.1]")) |
| |
| int32 | Chaos::CVars::ChaosSolverSleepModeSwitchThreshold = 10 |
| |
| FAutoConsoleVariableRef | Chaos::CVars::CVarChaosSolverSleepModeSwitchThreshold (TEXT("p.Chaos.Solver.Sleep.PartialIslandSleep.SleepModeSwitchCounterThreshold"), ChaosSolverSleepModeSwitchThreshold, TEXT("[EXPERIMENTAL] Safeguard only: Number of steps MinimumMotionlessRatio needs to be satisfied before switching the between full and partial island sleep.[def:10]")) |
| |
| FRealSingle | Chaos::CVars::LinearPartialWakeThresholdMultiplier = 10.0f |
| |
| FAutoConsoleVariableRef | Chaos::CVars::CVarChaosSolverLinearWakeThresholdMultiplier (TEXT("p.Chaos.Solver.Sleep.PartialIslandSleep.LinearWakeThresholdMultiplier"), LinearPartialWakeThresholdMultiplier, TEXT("[EXPERIMENTAL] A multiplier applied to LinearSleepThreshold for particle waking.[def:10]")) |
| |
| FRealSingle | Chaos::CVars::AngularPartialWakeThresholdMultiplier = 10.0f |
| |
| FAutoConsoleVariableRef | Chaos::CVars::CVarChaosSolverAngularWakeThresholdMultiplier (TEXT("p.Chaos.Solver.Sleep.PartialIslandSleep.AngularWakeThresholdMultiplier"), AngularPartialWakeThresholdMultiplier, TEXT("[EXPERIMENTAL] A multiplier applied to AngularSleepThreshold for particle waking.[def:10]")) |
| |
| bool | Chaos::CVars::bChaosSolverValidateConstraintSleepState = false |
| |
| FAutoConsoleVariableRef | Chaos::CVars::ChaosSolverValidateConstraintSleepState (TEXT("p.Chaos.Solver.Sleep.PartialIslandSleep.ValidateConstraintSleepState"), bChaosSolverValidateConstraintSleepState, TEXT("[EXPERIMENTAL] Debugging only: Enable constraint sleep state validation checks/assertions at the end of the tick.[def:false]")) |
| |
| int32 | Chaos::CVars::ChaosSolverCollisionDefaultSleepCounterThreshold = 20 |
| |
| FAutoConsoleVariableRef | Chaos::CVars::CVarChaosSolverCollisionDefaultSleepCounterThreshold (TEXT("p.Chaos.Solver.Sleep.Defaults.SleepCounterThreshold"), ChaosSolverCollisionDefaultSleepCounterThreshold, TEXT("Default counter threshold for sleeping.[def:20]")) |
| |
| FRealSingle | Chaos::CVars::ChaosSolverCollisionDefaultLinearSleepThreshold = 0.001f |
| |
| FAutoConsoleVariableRef | Chaos::CVars::CVarChaosSolverCollisionDefaultLinearSleepThreshold (TEXT("p.Chaos.Solver.Sleep.Defaults.LinearSleepThreshold"), ChaosSolverCollisionDefaultLinearSleepThreshold, TEXT("Default linear threshold for sleeping.[def:0.001]")) |
| |
| FRealSingle | Chaos::CVars::ChaosSolverCollisionDefaultAngularSleepThreshold = 0.0087f |
| |
| FAutoConsoleVariableRef | Chaos::CVars::CVarChaosSolverCollisionDefaultAngularSleepThreshold (TEXT("p.Chaos.Solver.Sleep.Defaults.AngularSleepThreshold"), ChaosSolverCollisionDefaultAngularSleepThreshold, TEXT("Default angular threshold for sleeping.[def:0.0087]")) |
| |
| FRealSingle | Chaos::CVars::ChaosSolverCollisionAngularSleepThresholdSize = 0 |
| |
| FAutoConsoleVariableRef | Chaos::CVars::CVarChaosSolverCollisionAngularSleepThresholdSize (TEXT("p.Chaos.Solver.Sleep.AngularSleepThresholdSize"), ChaosSolverCollisionAngularSleepThresholdSize, TEXT("Scales the angular threshold based on size (0 to disable size based scaling)")) |
| |
| int32 | Chaos::CVars::IsolatedParticleSleepCounterThresholdMultiplier = 1 |
| |
| FAutoConsoleVariableRef | Chaos::CVars::CVarChaosSolverIsolatedParticleSleepCounterThresholdMultiplier (TEXT("p.Chaos.Solver.Sleep.IsolatedParticle.CounterMultiplier"), IsolatedParticleSleepCounterThresholdMultiplier, TEXT("A multiplier applied to SleepCounterThreshold for floating particles")) |
| |
| FRealSingle | Chaos::CVars::IsolatedParticleSleepLinearThresholdMultiplier = 1.0f |
| |
| FAutoConsoleVariableRef | Chaos::CVars::CVarChaosSolverIsolatedParticleSleepLinearThresholdMultiplier (TEXT("p.Chaos.Solver.Sleep.IsolatedParticle.LinearMultiplier"), IsolatedParticleSleepLinearThresholdMultiplier, TEXT("A multiplier applied to SleepLinearThreshold for floating particles")) |
| |
| FRealSingle | Chaos::CVars::IsolatedParticleSleepAngularThresholdMultiplier = 1.0f |
| |
| FAutoConsoleVariableRef | Chaos::CVars::CVarChaosSolverIsolatedParticleSleepAngularThresholdMultiplier (TEXT("p.Chaos.Solver.Sleep.IsolatedParticle.AngularMultiplier"), IsolatedParticleSleepAngularThresholdMultiplier, TEXT("A multiplier applied to SleepAngularThreshold for floating particles")) |
| |
| bool | Chaos::CVars::bChaosSolverComputeIterationSettings = true |
| |
| FAutoConsoleVariableRef | Chaos::CVars::CVarChaosSolverComputeIterationSettingsEnabled (TEXT("p.Chaos.Solver.ComputeIterationSettings.Enabled"), bChaosSolverComputeIterationSettings, TEXT("Recompute iteration settings every time an island is changed")) |
| |
| bool | Chaos::CVars::bChaosRandomizeConstraintOrder = false |
| |
| FAutoConsoleVariableRef | Chaos::CVars::CVarChaosRandomizeConstraintOrder (TEXT("p.Chaos.Solver.RandomizeConstraintOrder"), bChaosRandomizeConstraintOrder, TEXT("Randomize constraint order for testing")) |
| |