Navigation
API > API/Runtime > API/Runtime/ChaosCore
Classes
| Type | Name | Description | |
|---|---|---|---|
| GivensRotation | Class for givens rotation. | ||
| Pair | |||
| TArrayCollection | |||
| TArrayCollectionArrayBase | |||
| TArrayNDBase | |||
| TObjectPool | |||
| TObjectPoolDeleter | A deleter for use with TUniquePtr and a TObjectPool item | ||
| TSimdInt32 | A TNumLanes-wide set of integers. | ||
| TSimdRealf | A TNumLanes-wide set of single-precision floats. | ||
| TSimdSelector | The result of Simd comparison operations and used in SimdSelect. | ||
| TSimdValue | Used to store any value type in a TNumLanes-wide set. | ||
| TSimdVec3f | A TNumLanes-wide set of floating point 3-vectors. | ||
| TVectorTraits | |||
| VectorND |
Constants
| Name | Description |
|---|---|
| Chaos::Private::SimdAlignment | WIP: Not ready for public use. |
Typedefs
| Name | Description |
|---|---|
| FAABB3f | |
| FMatrix33 | |
| FMatrix44 | |
| FReal | Common data types for the Chaos physics engine. |
| FRealDouble | Specific precision types, this should be used in very targeted places where the use of a specific type is necessary over using FReal |
| FRealSingle | |
| FRigidTransform3 | |
| FRigidTransform3f | |
| FRigidTransformRealSingle3 | |
| FRotation3 | |
| FRotation3f | |
| FSimd4Int32 | |
| FSimd4Realf | WIP: Not ready for public use. |
| FSimd4Selector | |
| FSimd4Vec3f | |
| FVec2 | |
| FVec2f | |
| FVec3 | |
| FVec3f | |
| FVec4 | |
| TMatrix33 | |
| TRequiresDestructor | The type needs to have a destructor run when the pool pointer is freed. |
| TRotation3 | |
| TTrivialDestruct | The type needs no destruction and can just be abandoned on free. |
| TVec2 | |
| TVec3 | |
| TVec4 |
Functions
| Type | Name | Description | |
|---|---|---|---|
| float | Chaos::ConvertDoubleToFloat
(
double DoubleValue |
||
| TVec3< float > | Chaos::ConvertDoubleToFloat
(
TVec3< double > DoubleValue |
||
| double | Chaos::ConvertFloatToDouble
(
float FloatValue |
||
| TVec3< double > | Chaos::ConvertFloatToDouble
(
TVec3< float > FloatValue |
||
| void | Chaos::dRdFCorotated
(
const PMatrix< T, 3, 3 >& F, |
3X3 version of dRdF indexing of diff: dRdF[9*(i*3+j)+(m*3+n)] = dR.GetAt(m, n) /dF.GetAt (i, j): | |
| void | Chaos::FlipSign
(
int i, |
Helper function of 3X3 SVD for flipping signs due to flipping signs of sigma. | |
| FString | |||
| uint32 | Chaos::GetTypeHash
(
const Chaos::TVector< T, 2 >& V |
||
| uint32 | Chaos::GetTypeHash
(
const Chaos::TVector< T, 3 >& V |
||
| void | Chaos::MakeLambdaShape
(
PMatrix< T, 3, 3 >& H, |
Make a 3X3 matrix to lambda shape original form of H: x x x x x x x x x after : x 0 0 x x 0 x 0 x | |
| Pair< T1, T2 > | Chaos::MakePair
(
const T1& First, |
||
| void | Chaos::MakeUpperBidiag
(
PMatrix< T, 3, 3 >& H, |
Make a 3X3 matrix to upper bidiagonal form original form of H: x x x x x x x x x after zero chase: x x 0 0 x x 0 0 x | |
| TVector< T, 3 > | Chaos::operator*
(
const T S, |
||
| TVector< T, 3 > | Chaos::operator/
(
const T S, |
||
| bool | Chaos::operator==
(
const Pair< T1, T2 >& First, |
||
| bool | Chaos::operator>
(
const Pair< T1, T2 >& First, |
||
| void | Chaos::PolarDecomposition
(
const PMatrix< T, 3, 3 >& A, |
3X3 polar decomposition. | |
| void | Chaos::PolarDecomposition
(
const PMatrix< T, 2, 2 >& A, |
2x2 polar decomposition. | |
| void | Chaos::PolarDecomposition
(
const PMatrix< T, 2, 2 >& A, |
2x2 polar decomposition. | |
| FSimd4Vec3f | Chaos::Private::SimdAdd
(
const FSimd4Vec3f& L, |
||
| FSimd4Realf | Chaos::Private::SimdAdd
(
const FSimd4Realf& InL, |
||
| bool | Chaos::Private::SimdAllTrue
(
const FSimd4Selector& InL |
||
| FSimd4Selector | Chaos::Private::SimdAnd
(
const FSimd4Selector& InL, |
||
| bool | Chaos::Private::SimdAnyTrue
(
const FSimd4Selector& InL |
4-wide Logical operations | |
| FSimd4Vec3f | Chaos::Private::SimdCrossProduct
(
const FSimd4Vec3f& L, |
||
| FSimd4Realf | Chaos::Private::SimdDivide
(
const FSimd4Realf& InL, |
||
| FSimd4Realf | Chaos::Private::SimdDotProduct
(
const FSimd4Vec3f& L, |
||
| FSimd4Selector | Chaos::Private::SimdEqual
(
const FSimd4Realf& InL, |
||
| FSimd4Vec3f | Chaos::Private::SimdGatherAligned
(
const FVec3f& InA, |
4-wide Gather/Scatter operationsConvert 4 row-vectors into 3 column-vectors NOTE: The input vectors must be 16-byte aligned and padded to 16 bytes to avoid reading past valid memory | |
| FSimd4Selector | Chaos::Private::SimdGreater
(
const FSimd4Realf& InL, |
||
| FSimd4Selector | Chaos::Private::SimdGreater
(
const FSimd4Int32& InL, |
||
| FSimd4Selector | Chaos::Private::SimdGreaterEqual
(
const FSimd4Realf& InL, |
||
| FSimd4Selector | Chaos::Private::SimdGreaterEqual
(
const FSimd4Int32& InL, |
||
| FSimd4Realf | Chaos::Private::SimdInvSqrt
(
const FSimd4Realf& InV |
||
| FSimd4Selector | Chaos::Private::SimdLess
(
const FSimd4Realf& InL, |
||
| FSimd4Selector | Chaos::Private::SimdLess
(
const FSimd4Int32& InL, |
||
| FSimd4Realf | Chaos::Private::SimdMax
(
const FSimd4Realf& InL, |
||
| FSimd4Realf | Chaos::Private::SimdMin
(
const FSimd4Realf& InL, |
||
| FSimd4Vec3f | Chaos::Private::SimdMultiply
(
const FSimd4Realf& L, |
||
| FSimd4Vec3f | Chaos::Private::SimdMultiply
(
const FSimd4Vec3f& L, |
||
| FSimd4Realf | Chaos::Private::SimdMultiply
(
const FSimd4Realf& InL, |
||
| FSimd4Vec3f | Chaos::Private::SimdMultiply
(
const FSimd4Vec3f& L, |
||
| FSimd4Vec3f | Chaos::Private::SimdMultiplyAdd
(
const FSimd4Vec3f& L, |
||
| FSimd4Realf | Chaos::Private::SimdNegate
(
const FSimd4Realf& InL |
4-wide Math operations | |
| FSimd4Selector | Chaos::Private::SimdNot
(
const FSimd4Selector& InL |
||
| FSimd4Selector | Chaos::Private::SimdNotEqual
(
const FSimd4Realf& InL, |
||
| FSimd4Selector | Chaos::Private::SimdOr
(
const FSimd4Selector& InL, |
||
| FSimd4Realf | Chaos::Private::SimdSelect
(
const FSimd4Selector& InSelector, |
||
| FSimd4Realf | Chaos::Private::SimdSqrt
(
const FSimd4Realf& InV |
||
| FSimd4Realf | Chaos::Private::SimdSquare
(
const FSimd4Realf& InV |
||
| FSimd4Realf | Chaos::Private::SimdSubtract
(
const FSimd4Realf& InL, |
||
| FSimd4Vec3f | Chaos::Private::SimdSubtract
(
const FSimd4Vec3f& L, |
||
| void | Chaos::Process
(
PMatrix< T, 3, 3 >& B, |
Helper function of 3X3 SVD for Processing 2X2 SVD. | |
| FArchive & | Chaos::SerializeReal
(
FArchive& Ar, |
This is used as | |
| void | Chaos::SingularValueDecomposition
(
const PMatrix< T, 2, 2 >& A, |
2x2 SVD (singular value decomposition) A=USV' | |
| void | Chaos::SingularValueDecomposition
(
const PMatrix< T, 2, 2 >& A, |
2x2 SVD (singular value decomposition) A=USV' | |
| int | Chaos::SingularValueDecomposition
(
const PMatrix< T, 3, 3 >& A, |
3X3 SVD (singular value decomposition) A=USV' | |
| void | Chaos::Sort0
(
PMatrix< T, 3, 3 >& U, |
Helper function of 3X3 SVD for sorting singular values. | |
| void | Chaos::Sort1
(
PMatrix< T, 3, 3 >& U, |
Helper function of 3X3 SVD for Sorting singular values. | |
| void | Chaos::SwapCols
(
PMatrix< T, 3, 3 >& A, |
IMPORTANT: test this function before testing polar: | |
| void | Chaos::TryBulkSerializeArrayNDBase
(
FArchive& Ar, |
LWC_TODO : Perf pessimization : this is sub-optimal but will do until we sort the serialization out. | |
| void | Chaos::TryBulkSerializeArrayNDBase
(
FArchive& Ar, |
||
| void | Chaos::TryBulkSerializeArrayNDBase
(
FArchive& Ar, |
||
| void | Chaos::TryBulkSerializeArrayNDBase
(
FArchive& Ar, |
||
| void | Chaos::TryBulkSerializeArrayNDBase
(
FArchive& Ar, |
LWC_TODO : Perf pessimization : this is sub-optimal but will do until we sort the serialization out. | |
| void | Chaos::TryBulkSerializeArrayNDBaseForDoubles
(
FArchive& Ar, |
LWC_TODO : Perf pessimization : this is sub-optimal but will do until we sort the serialization out. | |
| T | Chaos::WilkinsonShift
(
const T a1, |
Compute WilkinsonShift of the block a1 b1 b1 a2 based on the WilkinsonShift formula mu = c + d - sign (d) \ sqrt (d*d + b*b), where d = (a-c)/2. | |
| void | Chaos::ZeroChase
(
PMatrix< T, 3, 3 >& H, |
Zero chasing the 3X3 matrix to bidiagonal form original form of H: x x 0 x x x 0 0 x after zero chase: x x 0 0 x x 0 0 x |
Variables
| Type | Name | Description | |
|---|---|---|---|
| constexpr bool | bRealTypeCompatibleWithISPC | ISPC optimization supports float and double, this allows classes that uses ISPC to branch to the right implementation without having to check the actual underlying type of FReal | |
| const TCHAR *const | ChaosVersionGUID | NOTE: if you get a merge conflict on the GUID, you must replace it with a new GUID - do not accept the source or target or you will likely get DDC version conflicts resulting in crashes during load. |