Navigation
| Name | ChaosCore |
| Type | Runtime |
| Location | /Engine/Source/Runtime/Experimental/ChaosCore/ |
| Module Build Rules | ChaosCore.Build.cs |
Classes
| Name | Remarks |
|---|---|
| FChaosCoreEngineModule | |
| FCoreCapsule | |
| GivensRotation | Class for givens rotation. |
| PMatrix | |
| TAABB | |
| TArrayCollection | |
| TArrayCollectionArray | |
| TArrayCollectionArrayBase | |
| TArrayFaceND | |
| TArrayND | |
| TArrayNDBase | |
| TCorePlane | |
| TCoreSegment | |
| TCoreSphere | |
| TObjectPool | |
| TObjectPoolDeleter | A deleter for use with TUniquePtr and a TObjectPool item |
| TRigidTransform | |
| TRotation | |
| TVector | |
| VectorND |
Structs
| Name | Remarks |
|---|---|
| FAABBEdge | |
| FAABBFace | |
| FRange | |
| Pair | |
| TAABBSpecializeSamplingHelper | |
| 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 |
Typedefs
| Name | Type | Remarks | Include Path |
|---|---|---|---|
| FAABB3 | TAABB< FReal, 3 > | Chaos/AABB.h | |
| FAABB3f | TAABB< FRealSingle, 3 > | Chaos/Core.h | |
| FCoreSphere | TCoreSphere< FReal, 3 > | Chaos/CoreSphere.h | |
| FCoreSpheref | TCoreSphere< FRealSingle, 3 > | Chaos/CoreSphere.h | |
| FMatrix33 | PMatrix< FReal, 3, 3 > | Chaos/Core.h | |
| FMatrix44 | PMatrix< FReal, 4, 4 > | Chaos/Core.h | |
| FReal | FRealDouble | Common data types for the Chaos physics engine. | Chaos/Real.h |
| FRealDouble | double | Specific precision types, this should be used in very targeted places where the use of a specific type is necessary over using FReal | Chaos/Real.h |
| FRealSingle | float | Chaos/Real.h | |
| FRigidTransform3 | TRigidTransform< FReal, 3 > | Chaos/Core.h | |
| FRigidTransform3f | TRigidTransform< FRealSingle, 3 > | Chaos/Core.h | |
| FRigidTransformRealSingle3 | TRigidTransform< FRealSingle, 3 > | Chaos/Core.h | |
| FRotation3 | TRotation< FReal, 3 > | Chaos/Core.h | |
| FRotation3f | TRotation< FRealSingle, 3 > | Chaos/Core.h | |
| FSimd4Int32 | TSimdInt32< 4 > | Chaos/Simd4.h | |
| FSimd4Realf | TSimdRealf< 4 > | WIP: Not ready for public use. | Chaos/Simd4.h |
| FSimd4Selector | TSimdSelector< 4 > | Chaos/Simd4.h | |
| FSimd4Vec3f | TSimdVec3f< 4 > | Chaos/Simd4.h | |
| FTransformPair | TVector< FRigidTransform3, 2 > | Chaos/Core.h | |
| FVec2 | TVector< FReal, 2 > | Chaos/Core.h | |
| FVec2f | TVector< FRealSingle, 2 > | Chaos/Core.h | |
| FVec3 | TVector< FReal, 3 > | Chaos/Core.h | |
| FVec3f | TVector< FRealSingle, 3 > | Chaos/Core.h | |
| FVec4 | TVector< FReal, 4 > | Chaos/Core.h | |
| PMatrix33d | PMatrix< double, 3, 3 > | Chaos/Matrix.h | |
| TMatrix33 | PMatrix< T, 3, 3 > | Chaos/Core.h | |
| TPlaneConcrete | TCorePlane< T, d > | Chaos/CorePlane.h | |
| TRequiresDestructor | std::enable_if_t > | The type needs to have a destructor run when the pool pointer is freed. | Chaos/ObjectPool.h |
| TRotation3 | TRotation< T, 3 > | Chaos/Core.h | |
| TSegment | TCoreSegment< T > | Chaos/CoreSegment.h | |
| TTrivialDestruct | std::enable_if_t< std::is_trivially_destructible_v< T > > | The type needs no destruction and can just be abandoned on free. | Chaos/ObjectPool.h |
| TVec2 | TVector< T, 2 > | Chaos/Core.h | |
| TVec3 | TVector< T, 3 > | Chaos/Core.h | |
| TVec4 | TVector< T, 4 > | Chaos/Core.h |
Enums
Public
| Name | Remarks |
|---|---|
| Chaos::Sweeps::ESweepFlags | Copyright Epic Games, Inc. All Rights Reserved. |
Constants
| Name | Type | Remarks | Include Path |
|---|---|---|---|
| Chaos::Private::SimdAlignment | const int | WIP: Not ready for public use. | Chaos/SimdTypes.h |
Variables
Public
| Name | Type | Remarks | Include Path | Unreal Specifiers |
|---|---|---|---|---|
| bRealTypeCompatibleWithISPC | bool | 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 | Chaos/Real.h | |
| ChaosVersionGUID | const TCHAR *const | 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. | Chaos/Core.h |
Functions
Public
| Name | Remarks | Include Path | Unreal Specifiers |
|---|---|---|---|
float Chaos::ConvertDoubleToFloat
(
double DoubleValue |
Chaos/ArrayND.h | ||
TVec3< float > Chaos::ConvertDoubleToFloat
(
TVec3< double > DoubleValue |
Chaos/ArrayND.h | ||
double Chaos::ConvertFloatToDouble
(
float FloatValue |
Chaos/ArrayND.h | ||
TVec3< double > Chaos::ConvertFloatToDouble
(
TVec3< float > FloatValue |
Chaos/ArrayND.h | ||
| 3X3 version of dRdF indexing of diff: dRdF[9*(i*3+j)+(m*3+n)] = dR.GetAt(m, n) /dF.GetAt (i, j): | Chaos/ImplicitQRSVD.h | ||
| Helper function of 3X3 SVD for flipping signs due to flipping signs of sigma. | Chaos/ImplicitQRSVD.h | ||
FString Chaos::GetChaosVersionStringInner() |
Chaos/Core.h | ||
uint32 Chaos::GetTypeHash
(
const Chaos::TVector< T, 2 >& V |
Chaos/Vector.h | ||
uint32 Chaos::GetTypeHash
(
const Chaos::TVector< T, 3 >& V |
Chaos/Vector.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 | Chaos/ImplicitQRSVD.h | ||
Pair< T1, T2 > Chaos::MakePair
(
const T1& First, |
Chaos/Pair.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 | Chaos/ImplicitQRSVD.h | ||
| Chaos/Vector.h | |||
| Chaos/Vector.h | |||
bool Chaos::operator==
(
const Pair< T1, T2 >& First, |
Chaos/Pair.h | ||
bool Chaos::operator==
(
const FRange& First, |
Chaos/Range.h | ||
| Chaos/Pair.h | |||
void Chaos::PolarDecomposition
(
const PMatrix< T, 2, 2 >& A, |
2x2 polar decomposition. | Chaos/ImplicitQRSVD.h | |
void Chaos::PolarDecomposition
(
const PMatrix< T, 2, 2 >& A, |
2x2 polar decomposition. | Chaos/ImplicitQRSVD.h | |
void Chaos::PolarDecomposition
(
const PMatrix< T, 3, 3 >& A, |
3X3 polar decomposition. | Chaos/ImplicitQRSVD.h | |
FSimd4Realf Chaos::Private::SimdAdd
(
const FSimd4Realf& InL, |
Chaos/Simd4.h | ||
FSimd4Vec3f Chaos::Private::SimdAdd
(
const FSimd4Vec3f& L, |
Chaos/Simd4.h | ||
bool Chaos::Private::SimdAllTrue
(
const FSimd4Selector& InL |
Chaos/Simd4.h | ||
FSimd4Selector Chaos::Private::SimdAnd
(
const FSimd4Selector& InL, |
Chaos/Simd4.h | ||
bool Chaos::Private::SimdAnyTrue
(
const FSimd4Selector& InL |
4-wide Logical operations | Chaos/Simd4.h | |
FSimd4Vec3f Chaos::Private::SimdCrossProduct
(
const FSimd4Vec3f& L, |
Chaos/Simd4.h | ||
FSimd4Realf Chaos::Private::SimdDivide
(
const FSimd4Realf& InL, |
Chaos/Simd4.h | ||
FSimd4Realf Chaos::Private::SimdDotProduct
(
const FSimd4Vec3f& L, |
Chaos/Simd4.h | ||
FSimd4Selector Chaos::Private::SimdEqual
(
const FSimd4Realf& InL, |
Chaos/Simd4.h | ||
FSimd4Vec3f Chaos::Private::SimdGatherAligned
(
const FVec3f& InA, |
4-wide Gather/Scatter operations Convert 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 | Chaos/Simd4.h | |
FSimd4Selector Chaos::Private::SimdGreater
(
const FSimd4Int32& InL, |
Chaos/Simd4.h | ||
FSimd4Selector Chaos::Private::SimdGreater
(
const FSimd4Realf& InL, |
Chaos/Simd4.h | ||
FSimd4Selector Chaos::Private::SimdGreaterEqual
(
const FSimd4Int32& InL, |
Chaos/Simd4.h | ||
FSimd4Selector Chaos::Private::SimdGreaterEqual
(
const FSimd4Realf& InL, |
Chaos/Simd4.h | ||
FSimd4Realf Chaos::Private::SimdInvSqrt
(
const FSimd4Realf& InV |
Chaos/Simd4.h | ||
FSimd4Selector Chaos::Private::SimdLess
(
const FSimd4Int32& InL, |
Chaos/Simd4.h | ||
FSimd4Selector Chaos::Private::SimdLess
(
const FSimd4Realf& InL, |
Chaos/Simd4.h | ||
FSimd4Realf Chaos::Private::SimdMax
(
const FSimd4Realf& InL, |
Chaos/Simd4.h | ||
FSimd4Realf Chaos::Private::SimdMin
(
const FSimd4Realf& InL, |
Chaos/Simd4.h | ||
FSimd4Realf Chaos::Private::SimdMultiply
(
const FSimd4Realf& InL, |
Chaos/Simd4.h | ||
FSimd4Vec3f Chaos::Private::SimdMultiply
(
const FSimd4Vec3f& L, |
Chaos/Simd4.h | ||
FSimd4Vec3f Chaos::Private::SimdMultiply
(
const FSimd4Realf& L, |
Chaos/Simd4.h | ||
FSimd4Vec3f Chaos::Private::SimdMultiply
(
const FSimd4Vec3f& L, |
Chaos/Simd4.h | ||
FSimd4Vec3f Chaos::Private::SimdMultiplyAdd
(
const FSimd4Vec3f& L, |
Chaos/Simd4.h | ||
FSimd4Realf Chaos::Private::SimdNegate
(
const FSimd4Realf& InL |
4-wide Math operations | Chaos/Simd4.h | |
FSimd4Selector Chaos::Private::SimdNot
(
const FSimd4Selector& InL |
Chaos/Simd4.h | ||
FSimd4Selector Chaos::Private::SimdNotEqual
(
const FSimd4Realf& InL, |
Chaos/Simd4.h | ||
FSimd4Selector Chaos::Private::SimdOr
(
const FSimd4Selector& InL, |
Chaos/Simd4.h | ||
FSimd4Realf Chaos::Private::SimdSelect
(
const FSimd4Selector& InSelector, |
Chaos/Simd4.h | ||
FSimd4Realf Chaos::Private::SimdSqrt
(
const FSimd4Realf& InV |
Chaos/Simd4.h | ||
FSimd4Realf Chaos::Private::SimdSquare
(
const FSimd4Realf& InV |
Chaos/Simd4.h | ||
FSimd4Realf Chaos::Private::SimdSubtract
(
const FSimd4Realf& InL, |
Chaos/Simd4.h | ||
FSimd4Vec3f Chaos::Private::SimdSubtract
(
const FSimd4Vec3f& L, |
Chaos/Simd4.h | ||
VectorRegister4Float Chaos::Private::VectorCrossNoFMA
(
const VectorRegister4Float& Vec1, |
Calculates the cross product of two vectors (XYZ components). | Chaos/VectorUtility.h | |
VectorRegister4Double Chaos::Private::VectorCrossNoFMA
(
const VectorRegister4Double& Vec1, |
Calculates the cross product of two vectors (XYZ components). | Chaos/VectorUtility.h | |
VectorRegister4Float Chaos::Private::VectorDot3FastX
(
const VectorRegister4Float& Vec1, |
Calculates the dot product of two vectors and returns a vector with the result in the first component. | Chaos/VectorUtility.h | |
VectorRegister4Float Chaos::Private::VectorMatrixMultiply
(
const VectorRegister4Float& Vec, |
Chaos/VectorUtility.h | ||
| Helper function of 3X3 SVD for Processing 2X2 SVD. | Chaos/ImplicitQRSVD.h | ||
| This is used as | Chaos/Vector.h | ||
void Chaos::SingularValueDecomposition
(
const PMatrix< T, 2, 2 >& A, |
2x2 SVD (singular value decomposition) A=USV' | Chaos/ImplicitQRSVD.h | |
void Chaos::SingularValueDecomposition
(
const PMatrix< T, 2, 2 >& A, |
2x2 SVD (singular value decomposition) A=USV' | Chaos/ImplicitQRSVD.h | |
int Chaos::SingularValueDecomposition
(
const PMatrix< T, 3, 3 >& A, |
3X3 SVD (singular value decomposition) A=USV' | Chaos/ImplicitQRSVD.h | |
| Helper function of 3X3 SVD for sorting singular values. | Chaos/ImplicitQRSVD.h | ||
| Helper function of 3X3 SVD for Sorting singular values. | Chaos/ImplicitQRSVD.h | ||
void Chaos::SwapCols
(
PMatrix< T, 3, 3 >& A, |
IMPORTANT: test this function before testing polar: | Chaos/ImplicitQRSVD.h | |
bool Chaos::Sweeps::operator!
(
ESweepFlags E |
Chaos/Sweeps.h | ||
ESweepFlags Chaos::Sweeps::operator&
(
ESweepFlags Lhs, |
Chaos/Sweeps.h | ||
ESweepFlags & Chaos::Sweeps::operator&=
(
ESweepFlags& Lhs, |
Chaos/Sweeps.h | ||
ESweepFlags Chaos::Sweeps::operator^
(
ESweepFlags Lhs, |
Chaos/Sweeps.h | ||
ESweepFlags & Chaos::Sweeps::operator^=
(
ESweepFlags& Lhs, |
Chaos/Sweeps.h | ||
ESweepFlags Chaos::Sweeps::operator|
(
ESweepFlags Lhs, |
Chaos/Sweeps.h | ||
ESweepFlags & Chaos::Sweeps::operator|=
(
ESweepFlags& Lhs, |
Chaos/Sweeps.h | ||
ESweepFlags Chaos::Sweeps::operator~
(
ESweepFlags E |
Chaos/Sweeps.h | ||
void Chaos::TryBulkSerializeArrayNDBase
(
FArchive& Ar, |
Chaos/ArrayND.h | ||
void Chaos::TryBulkSerializeArrayNDBase
(
FArchive& Ar, |
Chaos/ArrayND.h | ||
void Chaos::TryBulkSerializeArrayNDBase
(
FArchive& Ar, |
Chaos/ArrayND.h | ||
void Chaos::TryBulkSerializeArrayNDBase
(
FArchive& Ar, |
LWC_TODO : Perf pessimization : this is sub-optimal but will do until we sort the serialization out. | Chaos/ArrayND.h | |
void Chaos::TryBulkSerializeArrayNDBase
(
FArchive& Ar, |
LWC_TODO : Perf pessimization : this is sub-optimal but will do until we sort the serialization out. | Chaos/ArrayND.h | |
| LWC_TODO : Perf pessimization : this is sub-optimal but will do until we sort the serialization out. | Chaos/ArrayND.h | ||
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. | Chaos/ImplicitQRSVD.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 | Chaos/ImplicitQRSVD.h | ||
T TMakeVectorRegister
(
float X, |
Chaos/VectorUtility.h | ||
T TMakeVectorRegisterConstant
(
float X, |
Chaos/VectorUtility.h | ||
VectorRegister4Float TMakeVectorRegisterFloatFromDouble
(
const T& V |
Chaos/VectorUtility.h | ||
T TVectorZero() |
Chaos/VectorUtility.h | ||
VectorRegister4Float VectorBitwiseNotAnd
(
const VectorRegister4Float& A, |
Combines two vectors using bitwise NOT AND (treating each vector as a 128 bit field) | Chaos/VectorUtility.h | |
VectorRegister4Double VectorBitwiseNotAnd
(
const VectorRegister4Double& A, |
Chaos/VectorUtility.h | ||
VectorRegister4Int VectorCast4FloatTo4Int
(
const VectorRegister4Float& V |
Cast VectorRegister4Float in VectorRegister4Int | Chaos/VectorUtility.h | |
VectorRegister4Float VectorCast4IntTo4Float
(
const VectorRegister4Int& V |
Cast VectorRegister4Int in VectorRegister4Float | Chaos/VectorUtility.h | |
VectorRegister4Float VectorMoveLh
(
const VectorRegister4Float& A, |
Moves the lower 2 SP FP values of b to the upper 2 SP FP values of the result. | Chaos/VectorUtility.h | |
VectorRegister4Float VectorUnpackHi
(
const VectorRegister4Float& A, |
Selects and interleaves the higher two SP FP values from A and B. | Chaos/VectorUtility.h | |
VectorRegister4Float VectorUnpackLo
(
const VectorRegister4Float& A, |
Selects and interleaves the lower two SP FP values from A and B. | Chaos/VectorUtility.h | |
VectorRegister4Double VectorUnpackLo
(
const VectorRegister4Double& A, |
Selects and interleaves the lower two DP FP values from A and B. | Chaos/VectorUtility.h |