UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
Chaos::Private::TPBDCollisionSolverSimd< TNumLanes > Class Template Reference

#include <PBDCollisionSolverSimd.h>

Public Types

using FSimdVec3f = TSimdVec3f< TNumLanes >
 
using FSimdRealf = TSimdRealf< TNumLanes >
 
using FSimdInt32 = TSimdInt32< TNumLanes >
 
using FSimdSelector = TSimdSelector< TNumLanes >
 
using FSimdSolverBodyPtr = TSolverBodyPtrSimd< TNumLanes >
 
using FSimdManifoldPoint = TPBDCollisionSolverManifoldPointsSimd< TNumLanes >
 

Public Member Functions

 TPBDCollisionSolverSimd ()
 
FSimdInt32 NumManifoldPoints () const
 
void SetNumManifoldPoints (const FSimdInt32 &InNum)
 
void SetManifoldPointsBuffer (const int32 InBeginIndex, const int32 InMax)
 
int32 GetMaxManifoldPoints () const
 
const FSimdManifoldPointGetManifoldPoint (const int32 ManifoldPointIndex, const TArrayView< const FSimdManifoldPoint > &ManifoldPointsBuffer) const
 
void Reset ()
 
void ResetManifold ()
 
void SetFriction (const FSimdRealf InStaticFriction, const FSimdRealf InDynamicFriction, const FSimdRealf InVelocityFriction)
 
void SetStiffness (const FSimdRealf InStiffness)
 
void InitManifoldPoints (const TArrayView< FSimdManifoldPoint > &ManifoldPointsBuffer)
 
void SetManifoldPoint (const int32 ManifoldPointIndex, const int32 LaneIndex, const TArrayView< FSimdManifoldPoint > &ManifoldPointsBuffer, const FSolverVec3 &InRelativeContactPosition0, const FSolverVec3 &InRelativeContactPosition1, const FSolverVec3 &InWorldContactNormal, const FSolverVec3 &InWorldContactTangentU, const FSolverVec3 &InWorldContactTangentV, const FSolverReal InWorldContactDeltaNormal, const FSolverReal InWorldContactDeltaTangentU, const FSolverReal InWorldContactDeltaTangentV, const FSolverReal InWorldContactVelocityTargetNormal, const FSolverBody &Body0, const FSolverBody &Body1, const FSolverReal InvMScale0, const FSolverReal InvIScale0, const FSolverReal InvMScale1, const FSolverReal InvIScale1)
 
void UpdateManifoldPointMass (const int32 ManifoldPointIndex, const int32 LaneIndex, const TArrayView< FSimdManifoldPoint > &ManifoldPointsBuffer, const FSolverBody &Body0, const FSolverBody &Body1, const FSolverReal InvMScale0, const FSolverReal InvIScale0, const FSolverReal InvMScale1, const FSolverReal InvIScale1)
 Update the cached mass properties based on the current body transforms.
 
void UpdateManifoldPointMassNormal (const int32 ManifoldPointIndex, const int32 LaneIndex, const TArrayView< FSimdManifoldPoint > &ManifoldPointsBuffer, const FSolverBody &Body0, const FSolverBody &Body1, const FSolverReal InvMScale0, const FSolverReal InvIScale0, const FSolverReal InvMScale1, const FSolverReal InvIScale1)
 
void UpdateMassNormal (const int32 LaneIndex, const TArrayView< FSimdManifoldPoint > &ManifoldPointsBuffer, const FSolverBody &Body0, const FSolverBody &Body1, const FSolverReal InvMScale0, const FSolverReal InvIScale0, const FSolverReal InvMScale1, const FSolverReal InvIScale1)
 
void SolvePositionNoFriction (const TArrayView< FSimdManifoldPoint > &ManifoldPointsBuffer, const FSimdSolverBodyPtr &Body0, const FSimdSolverBodyPtr &Body1, const FSimdRealf &MaxPushOut)
 
void SolvePositionWithFriction (const TArrayView< FSimdManifoldPoint > &ManifoldPointsBuffer, const FSimdSolverBodyPtr &Body0, const FSimdSolverBodyPtr &Body1, const FSimd4Realf &MaxPushOut, const FSimd4Realf &FrictionStiffnessScale)
 
void SolveVelocityNoFriction (const TArrayView< FSimdManifoldPoint > &ManifoldPointsBuffer, const FSimdSolverBodyPtr &Body0, const FSimdSolverBodyPtr &Body1, const FSimdRealf &Dt)
 
void SolveVelocityWithFrictionImpl (const TArrayView< FSimdManifoldPoint > &ManifoldPointsBuffer, const FSimdSolverBodyPtr &Body0, const FSimdSolverBodyPtr &Body1, const FSimdRealf &Dt, const FSimd4Realf &FrictionStiffnessScale)
 
void SolveVelocityWithFriction (const TArrayView< FSimdManifoldPoint > &ManifoldPointsBuffer, const FSimdSolverBodyPtr &Body0, const FSimdSolverBodyPtr &Body1, const FSimdRealf &Dt, const FSimd4Realf &FrictionStiffnessScale)
 
FSolverVec3 GetNetPushOut (const int32 ManifoldPointIndex, const int32 LaneIndex, const TArrayView< FSimdManifoldPoint > &ManifoldPointsBuffer) const
 
FSolverVec3 GetNetImpulse (const int32 ManifoldPointIndex, const int32 LaneIndex, const TArrayView< FSimdManifoldPoint > &ManifoldPointsBuffer) const
 
FSolverReal GetStaticFrictionRatio (const int32 ManifoldPointIndex, const int32 LaneIndex, const TArrayView< FSimdManifoldPoint > &ManifoldPointsBuffer) const
 
int32 GetBufferIndex (const int32 ManifoldPointIndex) const
 
void Init ()
 

Static Public Member Functions

static TPBDCollisionSolverSimd< TNumLanes > MakeInitialized ()
 
static TPBDCollisionSolverSimd< TNumLanes > MakeUninitialized ()
 

Public Attributes

int32 MaxManifoldPoints
 
int32 ManifoldPointBeginIndex
 
FSimdInt32 SimdNumManifoldPoints
 
FSimdRealf SimdStaticFriction
 
FSimdRealf SimdDynamicFriction
 
FSimdRealf SimdVelocityFriction
 
FSimdRealf SimdStiffness
 
FSimdRealf SimdInvM0
 
FSimdRealf SimdInvM1
 

Static Public Attributes

static const int32 MaxConstrainedBodies = 2
 
static const int32 MaxPointsPerConstraint = 4
 

Detailed Description

template<int TNumLanes>
class Chaos::Private::TPBDCollisionSolverSimd< TNumLanes >

Holds the solver

Member Typedef Documentation

◆ FSimdInt32

template<int TNumLanes>
using Chaos::Private::TPBDCollisionSolverSimd< TNumLanes >::FSimdInt32 = TSimdInt32<TNumLanes>

◆ FSimdManifoldPoint

template<int TNumLanes>
using Chaos::Private::TPBDCollisionSolverSimd< TNumLanes >::FSimdManifoldPoint = TPBDCollisionSolverManifoldPointsSimd<TNumLanes>

◆ FSimdRealf

template<int TNumLanes>
using Chaos::Private::TPBDCollisionSolverSimd< TNumLanes >::FSimdRealf = TSimdRealf<TNumLanes>

◆ FSimdSelector

template<int TNumLanes>
using Chaos::Private::TPBDCollisionSolverSimd< TNumLanes >::FSimdSelector = TSimdSelector<TNumLanes>

◆ FSimdSolverBodyPtr

template<int TNumLanes>
using Chaos::Private::TPBDCollisionSolverSimd< TNumLanes >::FSimdSolverBodyPtr = TSolverBodyPtrSimd<TNumLanes>

◆ FSimdVec3f

template<int TNumLanes>
using Chaos::Private::TPBDCollisionSolverSimd< TNumLanes >::FSimdVec3f = TSimdVec3f<TNumLanes>

Constructor & Destructor Documentation

◆ TPBDCollisionSolverSimd()

template<int TNumLanes>
Chaos::Private::TPBDCollisionSolverSimd< TNumLanes >::TPBDCollisionSolverSimd ( )
inline

Member Function Documentation

◆ GetBufferIndex()

template<int TNumLanes>
int32 Chaos::Private::TPBDCollisionSolverSimd< TNumLanes >::GetBufferIndex ( const int32  ManifoldPointIndex) const
inline

◆ GetManifoldPoint()

template<int TNumLanes>
const FSimdManifoldPoint & Chaos::Private::TPBDCollisionSolverSimd< TNumLanes >::GetManifoldPoint ( const int32  ManifoldPointIndex,
const TArrayView< const FSimdManifoldPoint > &  ManifoldPointsBuffer 
) const
inline

◆ GetMaxManifoldPoints()

template<int TNumLanes>
int32 Chaos::Private::TPBDCollisionSolverSimd< TNumLanes >::GetMaxManifoldPoints ( ) const
inline

◆ GetNetImpulse()

template<int TNumLanes>
FSolverVec3 Chaos::Private::TPBDCollisionSolverSimd< TNumLanes >::GetNetImpulse ( const int32  ManifoldPointIndex,
const int32  LaneIndex,
const TArrayView< FSimdManifoldPoint > &  ManifoldPointsBuffer 
) const
inline

◆ GetNetPushOut()

template<int TNumLanes>
FSolverVec3 Chaos::Private::TPBDCollisionSolverSimd< TNumLanes >::GetNetPushOut ( const int32  ManifoldPointIndex,
const int32  LaneIndex,
const TArrayView< FSimdManifoldPoint > &  ManifoldPointsBuffer 
) const
inline

◆ GetStaticFrictionRatio()

template<int TNumLanes>
FSolverReal Chaos::Private::TPBDCollisionSolverSimd< TNumLanes >::GetStaticFrictionRatio ( const int32  ManifoldPointIndex,
const int32  LaneIndex,
const TArrayView< FSimdManifoldPoint > &  ManifoldPointsBuffer 
) const
inline

◆ Init()

template<int TNumLanes>
void Chaos::Private::TPBDCollisionSolverSimd< TNumLanes >::Init ( )
inline

◆ InitManifoldPoints()

template<int TNumLanes>
void Chaos::Private::TPBDCollisionSolverSimd< TNumLanes >::InitManifoldPoints ( const TArrayView< FSimdManifoldPoint > &  ManifoldPointsBuffer)
inline

◆ MakeInitialized()

template<int TNumLanes>
static TPBDCollisionSolverSimd< TNumLanes > Chaos::Private::TPBDCollisionSolverSimd< TNumLanes >::MakeInitialized ( )
inlinestatic

◆ MakeUninitialized()

template<int TNumLanes>
static TPBDCollisionSolverSimd< TNumLanes > Chaos::Private::TPBDCollisionSolverSimd< TNumLanes >::MakeUninitialized ( )
inlinestatic

◆ NumManifoldPoints()

template<int TNumLanes>
FSimdInt32 Chaos::Private::TPBDCollisionSolverSimd< TNumLanes >::NumManifoldPoints ( ) const
inline

◆ Reset()

template<int TNumLanes>
void Chaos::Private::TPBDCollisionSolverSimd< TNumLanes >::Reset ( )
inline

Reset the state of the collision solver

◆ ResetManifold()

template<int TNumLanes>
void Chaos::Private::TPBDCollisionSolverSimd< TNumLanes >::ResetManifold ( )
inline

◆ SetFriction()

template<int TNumLanes>
void Chaos::Private::TPBDCollisionSolverSimd< TNumLanes >::SetFriction ( const FSimdRealf  InStaticFriction,
const FSimdRealf  InDynamicFriction,
const FSimdRealf  InVelocityFriction 
)
inline

◆ SetManifoldPoint()

template<int TNumLanes>
void Chaos::Private::TPBDCollisionSolverSimd< TNumLanes >::SetManifoldPoint ( const int32  ManifoldPointIndex,
const int32  LaneIndex,
const TArrayView< FSimdManifoldPoint > &  ManifoldPointsBuffer,
const FSolverVec3 InRelativeContactPosition0,
const FSolverVec3 InRelativeContactPosition1,
const FSolverVec3 InWorldContactNormal,
const FSolverVec3 InWorldContactTangentU,
const FSolverVec3 InWorldContactTangentV,
const FSolverReal  InWorldContactDeltaNormal,
const FSolverReal  InWorldContactDeltaTangentU,
const FSolverReal  InWorldContactDeltaTangentV,
const FSolverReal  InWorldContactVelocityTargetNormal,
const FSolverBody Body0,
const FSolverBody Body1,
const FSolverReal  InvMScale0,
const FSolverReal  InvIScale0,
const FSolverReal  InvMScale1,
const FSolverReal  InvIScale1 
)
inline

Set up a manifold point ready for solving

◆ SetManifoldPointsBuffer()

template<int TNumLanes>
void Chaos::Private::TPBDCollisionSolverSimd< TNumLanes >::SetManifoldPointsBuffer ( const int32  InBeginIndex,
const int32  InMax 
)
inline

◆ SetNumManifoldPoints()

template<int TNumLanes>
void Chaos::Private::TPBDCollisionSolverSimd< TNumLanes >::SetNumManifoldPoints ( const FSimdInt32 InNum)
inline

◆ SetStiffness()

template<int TNumLanes>
void Chaos::Private::TPBDCollisionSolverSimd< TNumLanes >::SetStiffness ( const FSimdRealf  InStiffness)
inline

◆ SolvePositionNoFriction()

template<int TNumLanes>
void Chaos::Private::TPBDCollisionSolverSimd< TNumLanes >::SolvePositionNoFriction ( const TArrayView< FSimdManifoldPoint > &  ManifoldPointsBuffer,
const FSimdSolverBodyPtr Body0,
const FSimdSolverBodyPtr Body1,
const FSimdRealf MaxPushOut 
)
inline

◆ SolvePositionWithFriction()

template<int TNumLanes>
void Chaos::Private::TPBDCollisionSolverSimd< TNumLanes >::SolvePositionWithFriction ( const TArrayView< FSimdManifoldPoint > &  ManifoldPointsBuffer,
const FSimdSolverBodyPtr Body0,
const FSimdSolverBodyPtr Body1,
const FSimd4Realf MaxPushOut,
const FSimd4Realf FrictionStiffnessScale 
)
inline

◆ SolveVelocityNoFriction()

template<int TNumLanes>
void Chaos::Private::TPBDCollisionSolverSimd< TNumLanes >::SolveVelocityNoFriction ( const TArrayView< FSimdManifoldPoint > &  ManifoldPointsBuffer,
const FSimdSolverBodyPtr Body0,
const FSimdSolverBodyPtr Body1,
const FSimdRealf Dt 
)
inline

◆ SolveVelocityWithFriction()

template<int TNumLanes>
void Chaos::Private::TPBDCollisionSolverSimd< TNumLanes >::SolveVelocityWithFriction ( const TArrayView< FSimdManifoldPoint > &  ManifoldPointsBuffer,
const FSimdSolverBodyPtr Body0,
const FSimdSolverBodyPtr Body1,
const FSimdRealf Dt,
const FSimd4Realf FrictionStiffnessScale 
)
inline

◆ SolveVelocityWithFrictionImpl()

template<int TNumLanes>
void Chaos::Private::TPBDCollisionSolverSimd< TNumLanes >::SolveVelocityWithFrictionImpl ( const TArrayView< FSimdManifoldPoint > &  ManifoldPointsBuffer,
const FSimdSolverBodyPtr Body0,
const FSimdSolverBodyPtr Body1,
const FSimdRealf Dt,
const FSimd4Realf FrictionStiffnessScale 
)
inline

◆ UpdateManifoldPointMass()

template<int TNumLanes>
void Chaos::Private::TPBDCollisionSolverSimd< TNumLanes >::UpdateManifoldPointMass ( const int32  ManifoldPointIndex,
const int32  LaneIndex,
const TArrayView< FSimdManifoldPoint > &  ManifoldPointsBuffer,
const FSolverBody Body0,
const FSolverBody Body1,
const FSolverReal  InvMScale0,
const FSolverReal  InvIScale0,
const FSolverReal  InvMScale1,
const FSolverReal  InvIScale1 
)
inline

Update the cached mass properties based on the current body transforms.

◆ UpdateManifoldPointMassNormal()

template<int TNumLanes>
void Chaos::Private::TPBDCollisionSolverSimd< TNumLanes >::UpdateManifoldPointMassNormal ( const int32  ManifoldPointIndex,
const int32  LaneIndex,
const TArrayView< FSimdManifoldPoint > &  ManifoldPointsBuffer,
const FSolverBody Body0,
const FSolverBody Body1,
const FSolverReal  InvMScale0,
const FSolverReal  InvIScale0,
const FSolverReal  InvMScale1,
const FSolverReal  InvIScale1 
)
inline

◆ UpdateMassNormal()

template<int TNumLanes>
void Chaos::Private::TPBDCollisionSolverSimd< TNumLanes >::UpdateMassNormal ( const int32  LaneIndex,
const TArrayView< FSimdManifoldPoint > &  ManifoldPointsBuffer,
const FSolverBody Body0,
const FSolverBody Body1,
const FSolverReal  InvMScale0,
const FSolverReal  InvIScale0,
const FSolverReal  InvMScale1,
const FSolverReal  InvIScale1 
)
inline

Member Data Documentation

◆ ManifoldPointBeginIndex

template<int TNumLanes>
int32 Chaos::Private::TPBDCollisionSolverSimd< TNumLanes >::ManifoldPointBeginIndex

◆ MaxConstrainedBodies

template<int TNumLanes>
const int32 Chaos::Private::TPBDCollisionSolverSimd< TNumLanes >::MaxConstrainedBodies = 2
static

◆ MaxManifoldPoints

template<int TNumLanes>
int32 Chaos::Private::TPBDCollisionSolverSimd< TNumLanes >::MaxManifoldPoints

◆ MaxPointsPerConstraint

template<int TNumLanes>
const int32 Chaos::Private::TPBDCollisionSolverSimd< TNumLanes >::MaxPointsPerConstraint = 4
static

◆ SimdDynamicFriction

template<int TNumLanes>
FSimdRealf Chaos::Private::TPBDCollisionSolverSimd< TNumLanes >::SimdDynamicFriction

◆ SimdInvM0

template<int TNumLanes>
FSimdRealf Chaos::Private::TPBDCollisionSolverSimd< TNumLanes >::SimdInvM0

◆ SimdInvM1

template<int TNumLanes>
FSimdRealf Chaos::Private::TPBDCollisionSolverSimd< TNumLanes >::SimdInvM1

◆ SimdNumManifoldPoints

template<int TNumLanes>
FSimdInt32 Chaos::Private::TPBDCollisionSolverSimd< TNumLanes >::SimdNumManifoldPoints

◆ SimdStaticFriction

template<int TNumLanes>
FSimdRealf Chaos::Private::TPBDCollisionSolverSimd< TNumLanes >::SimdStaticFriction

◆ SimdStiffness

template<int TNumLanes>
FSimdRealf Chaos::Private::TPBDCollisionSolverSimd< TNumLanes >::SimdStiffness

◆ SimdVelocityFriction

template<int TNumLanes>
FSimdRealf Chaos::Private::TPBDCollisionSolverSimd< TNumLanes >::SimdVelocityFriction

The documentation for this class was generated from the following file: