mirror of
https://github.com/copyrighttxt/watrbx-game-engine.git
synced 2026-09-04 20:57:49 +00:00
95 lines
3.2 KiB
C++
95 lines
3.2 KiB
C++
#pragma once
|
|
|
|
#include "solver/SolverConfig.h"
|
|
#include "boost/cstdint.hpp"
|
|
#include "rbx/ArrayDynamic.h"
|
|
|
|
namespace RBX
|
|
{
|
|
|
|
class ConstraintJacobianPair;
|
|
class BodyPairIndices;
|
|
class SolverBodyStaticProperties;
|
|
class SolverBodyMassAndInertia;
|
|
class ConstraintVariables;
|
|
class VirtualDisplacementArray;
|
|
class VirtualDisplacementArray;
|
|
class EffectiveMassPair;
|
|
|
|
void PGSComputeEffectiveMasses(
|
|
EffectiveMassPair* _effectiveMassesVelStage,
|
|
EffectiveMassPair* _effectiveMassesPosStage,
|
|
size_t _constraintCount,
|
|
const boost::uint8_t* _dimensions,
|
|
const ConstraintJacobianPair* _jacobians,
|
|
const BodyPairIndices* _pairs,
|
|
const SolverBodyMassAndInertia* _massAndIntertia,
|
|
const SolverConfig& _config );
|
|
|
|
void PGSApplyEffectiveMassMultipliers(
|
|
EffectiveMassPair* _effectiveMassesVelStage,
|
|
EffectiveMassPair* _effectiveMassesPosStage,
|
|
size_t _constraintCount,
|
|
const boost::uint8_t* _dimensions,
|
|
const float* _multipliers,
|
|
const BodyPairIndices* _pairs,
|
|
const SolverConfig& _config );
|
|
|
|
void PGSPreconditionConstraintEquations(
|
|
ConstraintJacobianPair* _preconditionedJacobiansVelStage,
|
|
ConstraintJacobianPair* _preconditionedJacobiansPosStage,
|
|
ConstraintVariables* _velocityStageVariables,
|
|
ConstraintVariables* _positionStageVariables,
|
|
size_t _constraintCount,
|
|
const boost::uint8_t* _dimensions,
|
|
const boost::uint8_t* _useBlock,
|
|
const float* __restrict _sorVel,
|
|
const float* __restrict _sorPos,
|
|
const ConstraintJacobianPair* _jacobians,
|
|
const EffectiveMassPair* _effectiveMassesVelStage,
|
|
const EffectiveMassPair* _effectiveMassesPosStage );
|
|
|
|
void PGSInitVirtualDisplacements(
|
|
VirtualDisplacementArray& _virDVel,
|
|
VirtualDisplacementArray& _virDPos,
|
|
const EffectiveMassPair* _effectiveMassesVelStage,
|
|
const EffectiveMassPair* _effectiveMassesPosStage,
|
|
size_t _constraintCount,
|
|
const boost::uint8_t* _dimensions,
|
|
const ConstraintVariables* __restrict _velStage,
|
|
const ConstraintVariables* __restrict _posStage,
|
|
const BodyPairIndices* _pairs,
|
|
const SolverConfig& _config );
|
|
|
|
void PGSSolveKernel(
|
|
ConstraintVariables* __restrict _velStage,
|
|
ConstraintVariables* __restrict _posStage,
|
|
VirtualDisplacementArray& _virDVel,
|
|
VirtualDisplacementArray& _virDPos,
|
|
size_t _constraintCount,
|
|
size_t _collisionCount,
|
|
const boost::uint8_t* _dimensions,
|
|
const BodyPairIndices* _pairs,
|
|
const ConstraintJacobianPair* _preconditionedJacobiansVelStage,
|
|
const ConstraintJacobianPair* _preconditionedJacobiansPosStage,
|
|
const EffectiveMassPair* _effectiveMassesVelStage,
|
|
const EffectiveMassPair* _effectiveMassesPosStage,
|
|
const SolverConfig& _config );
|
|
|
|
void PGSSolveKernelComputeErrors(
|
|
ArrayBase< float >& _residuals,
|
|
ArrayBase< float >& _deltaResiduals,
|
|
ArrayBase< ConstraintVariables >& _vars,
|
|
VirtualDisplacementArray& _virD,
|
|
size_t _constraintCount,
|
|
size_t _collisionCount,
|
|
size_t _bodyCount,
|
|
const boost::uint8_t* _dimensions,
|
|
const BodyPairIndices* _pairs,
|
|
const ConstraintJacobianPair* _jacobians,
|
|
const ConstraintJacobianPair* _preconditionedJacobians,
|
|
const EffectiveMassPair* _effectiveMasses,
|
|
const SolverConfig& _config );
|
|
|
|
}
|