Bullet Collision Detection & Physics Library
Classes | Public Member Functions | Public Attributes | List of all members
btSoftBodyLinkDataDX11SIMDAware Class Reference

#include <btSoftBodySolverLinkData_DX11SIMDAware.h>

Inheritance diagram for btSoftBodyLinkDataDX11SIMDAware:
Inheritance graph
[legend]
Collaboration diagram for btSoftBodyLinkDataDX11SIMDAware:
Collaboration graph
[legend]

Classes

struct  BatchPair
 
struct  NumBatchesVerticesPair
 

Public Member Functions

 btSoftBodyLinkDataDX11SIMDAware (ID3D11Device *d3dDevice, ID3D11DeviceContext *d3dDeviceContext)
 
virtual ~btSoftBodyLinkDataDX11SIMDAware ()
 
virtual void createLinks (int numLinks)
 Allocate enough space in all link-related arrays to fit numLinks links. More...
 
virtual void setLinkAt (const LinkDescription &link, int linkIndex)
 Insert the link described into the correct data structures assuming space has already been allocated by a call to createLinks. More...
 
virtual bool onAccelerator ()
 Return true if data is on the accelerator. More...
 
virtual bool moveToAccelerator ()
 Move data from host memory to the accelerator. More...
 
virtual bool moveFromAccelerator ()
 Move data from host memory from the accelerator. More...
 
void generateBatches ()
 Generate (and later update) the batching for the entire link set. More...
 
int getMaxVerticesPerWavefront ()
 
int getWavefrontSize ()
 
int getLinksPerWorkItem ()
 
int getMaxLinksPerWavefront ()
 
int getMaxBatchesPerWavefront ()
 
int getNumWavefronts ()
 
NumBatchesVerticesPair getNumBatchesAndVerticesWithinWavefront (int wavefront)
 
int getVertexGlobalAddresses (int vertexIndex)
 
LinkNodePair getVertexPairLocalAddresses (int linkIndex)
 Get post-batching local addresses of the vertex pair for a link assuming all vertices used by a wavefront are loaded locally. More...
 
- Public Member Functions inherited from btSoftBodyLinkData
 btSoftBodyLinkData ()
 
virtual ~btSoftBodyLinkData ()
 
virtual void clear ()
 
int getNumLinks ()
 
LinkNodePairgetVertexPair (int linkIndex)
 Return reference to the vertex index pair for link linkIndex as stored on the host. More...
 
float & getStrength (int linkIndex)
 Return reference to strength of link linkIndex as stored on the host. More...
 
virtual float & getStrengthCorrected (int linkIndex)
 Return a reference to the strength of the link corrected for link sorting. More...
 
float & getRestLength (int linkIndex)
 Return reference to the rest length of link linkIndex as stored on the host. More...
 
float & getLinearStiffnessCoefficient (int linkIndex)
 Return reference to linear stiffness coefficient for link linkIndex as stored on the host. More...
 
float & getMassLSC (int linkIndex)
 Return reference to the MassLSC value for link linkIndex as stored on the host. More...
 
float & getRestLengthSquared (int linkIndex)
 Return reference to rest length squared for link linkIndex as stored on the host. More...
 
Vectormath::Aos::Vector3getCurrentLength (int linkIndex)
 Return reference to current length of link linkIndex as stored on the host. More...
 
float & getLinkLengthRatio (int linkIndex)
 Return the link length ratio from for link linkIndex as stored on the host. More...
 

Public Attributes

bool m_onGPU
 
ID3D11Device * m_d3dDevice
 
ID3D11DeviceContext * m_d3dDeviceContext
 
const int m_wavefrontSize
 
const int m_linksPerWorkItem
 
const int m_maxLinksPerWavefront
 
int m_maxBatchesWithinWave
 
int m_maxVerticesWithinWave
 
int m_numWavefronts
 
int m_maxVertex
 
btAlignedObjectArray< int > m_linksPerWavefront
 
btAlignedObjectArray
< NumBatchesVerticesPair
m_numBatchesAndVerticesWithinWaves
 
btDX11Buffer
< NumBatchesVerticesPair
m_dx11NumBatchesAndVerticesWithinWaves
 
btAlignedObjectArray< int > m_wavefrontVerticesGlobalAddresses
 
btDX11Buffer< int > m_dx11WavefrontVerticesGlobalAddresses
 
btAlignedObjectArray
< LinkNodePair
m_linkVerticesLocalAddresses
 
btDX11Buffer< LinkNodePairm_dx11LinkVerticesLocalAddresses
 
btDX11Buffer< float > m_dx11LinkStrength
 
btDX11Buffer< float > m_dx11LinksMassLSC
 
btDX11Buffer< float > m_dx11LinksRestLengthSquared
 
btDX11Buffer< float > m_dx11LinksRestLength
 
btDX11Buffer< float > m_dx11LinksMaterialLinearStiffnessCoefficient
 
btAlignedObjectArray< int > m_linkAddresses
 Link addressing information for each cloth. More...
 
btAlignedObjectArray< BatchPairm_wavefrontBatchStartLengths
 Start and length values for computation batches over link data. More...
 

Additional Inherited Members

- Protected Attributes inherited from btSoftBodyLinkData
btAlignedObjectArray
< LinkNodePair
m_links
 
btAlignedObjectArray< float > m_linkStrength
 
btAlignedObjectArray< float > m_linksMassLSC
 
btAlignedObjectArray< float > m_linksRestLengthSquared
 
btAlignedObjectArray
< Vectormath::Aos::Vector3
m_linksCLength
 
btAlignedObjectArray< float > m_linksLengthRatio
 
btAlignedObjectArray< float > m_linksRestLength
 
btAlignedObjectArray< float > m_linksMaterialLinearStiffnessCoefficient
 

Detailed Description

Definition at line 26 of file btSoftBodySolverLinkData_DX11SIMDAware.h.

Constructor & Destructor Documentation

btSoftBodyLinkDataDX11SIMDAware::btSoftBodyLinkDataDX11SIMDAware ( ID3D11Device *  d3dDevice,
ID3D11DeviceContext *  d3dDeviceContext 
)
btSoftBodyLinkDataDX11SIMDAware::~btSoftBodyLinkDataDX11SIMDAware ( )
virtual

Definition at line 86 of file btSoftBodySolver_DX11SIMDAware.cpp.

Member Function Documentation

void btSoftBodyLinkDataDX11SIMDAware::createLinks ( int  numLinks)
virtual

Allocate enough space in all link-related arrays to fit numLinks links.

Reimplemented from btSoftBodyLinkData.

Definition at line 96 of file btSoftBodySolver_DX11SIMDAware.cpp.

void btSoftBodyLinkDataDX11SIMDAware::generateBatches ( )

Generate (and later update) the batching for the entire link set.

This redoes a lot of work because it batches the entire set when each cloth is inserted. In theory we could delay it until just before we need the cloth. It's a one-off overhead, though, so that is a later optimisation.

Definition at line 885 of file btSoftBodySolver_DX11SIMDAware.cpp.

int btSoftBodyLinkDataDX11SIMDAware::getLinksPerWorkItem ( )
inline

Definition at line 132 of file btSoftBodySolverLinkData_DX11SIMDAware.h.

int btSoftBodyLinkDataDX11SIMDAware::getMaxBatchesPerWavefront ( )
inline

Definition at line 142 of file btSoftBodySolverLinkData_DX11SIMDAware.h.

int btSoftBodyLinkDataDX11SIMDAware::getMaxLinksPerWavefront ( )
inline

Definition at line 137 of file btSoftBodySolverLinkData_DX11SIMDAware.h.

int btSoftBodyLinkDataDX11SIMDAware::getMaxVerticesPerWavefront ( )
inline

Definition at line 122 of file btSoftBodySolverLinkData_DX11SIMDAware.h.

NumBatchesVerticesPair btSoftBodyLinkDataDX11SIMDAware::getNumBatchesAndVerticesWithinWavefront ( int  wavefront)
inline

Definition at line 152 of file btSoftBodySolverLinkData_DX11SIMDAware.h.

int btSoftBodyLinkDataDX11SIMDAware::getNumWavefronts ( )
inline

Definition at line 147 of file btSoftBodySolverLinkData_DX11SIMDAware.h.

int btSoftBodyLinkDataDX11SIMDAware::getVertexGlobalAddresses ( int  vertexIndex)
inline

Definition at line 157 of file btSoftBodySolverLinkData_DX11SIMDAware.h.

LinkNodePair btSoftBodyLinkDataDX11SIMDAware::getVertexPairLocalAddresses ( int  linkIndex)
inline

Get post-batching local addresses of the vertex pair for a link assuming all vertices used by a wavefront are loaded locally.

Definition at line 165 of file btSoftBodySolverLinkData_DX11SIMDAware.h.

int btSoftBodyLinkDataDX11SIMDAware::getWavefrontSize ( )
inline

Definition at line 127 of file btSoftBodySolverLinkData_DX11SIMDAware.h.

bool btSoftBodyLinkDataDX11SIMDAware::moveFromAccelerator ( )
virtual

Move data from host memory from the accelerator.

The CPU version will always return that it has moved it.

Reimplemented from btSoftBodyLinkData.

Definition at line 144 of file btSoftBodySolver_DX11SIMDAware.cpp.

bool btSoftBodyLinkDataDX11SIMDAware::moveToAccelerator ( )
virtual

Move data from host memory to the accelerator.

The CPU version will always return that it has moved it.

Reimplemented from btSoftBodyLinkData.

Definition at line 125 of file btSoftBodySolver_DX11SIMDAware.cpp.

bool btSoftBodyLinkDataDX11SIMDAware::onAccelerator ( )
virtual

Return true if data is on the accelerator.

The CPU version of this class will return true here because the CPU is the same as the accelerator.

Reimplemented from btSoftBodyLinkData.

Definition at line 120 of file btSoftBodySolver_DX11SIMDAware.cpp.

void btSoftBodyLinkDataDX11SIMDAware::setLinkAt ( const LinkDescription link,
int  linkIndex 
)
virtual

Insert the link described into the correct data structures assuming space has already been allocated by a call to createLinks.

Reimplemented from btSoftBodyLinkData.

Definition at line 107 of file btSoftBodySolver_DX11SIMDAware.cpp.

Member Data Documentation

ID3D11Device* btSoftBodyLinkDataDX11SIMDAware::m_d3dDevice

Definition at line 30 of file btSoftBodySolverLinkData_DX11SIMDAware.h.

ID3D11DeviceContext* btSoftBodyLinkDataDX11SIMDAware::m_d3dDeviceContext

Definition at line 31 of file btSoftBodySolverLinkData_DX11SIMDAware.h.

btDX11Buffer<float> btSoftBodyLinkDataDX11SIMDAware::m_dx11LinksMassLSC

Definition at line 61 of file btSoftBodySolverLinkData_DX11SIMDAware.h.

btDX11Buffer<float> btSoftBodyLinkDataDX11SIMDAware::m_dx11LinksMaterialLinearStiffnessCoefficient

Definition at line 64 of file btSoftBodySolverLinkData_DX11SIMDAware.h.

btDX11Buffer<float> btSoftBodyLinkDataDX11SIMDAware::m_dx11LinksRestLength

Definition at line 63 of file btSoftBodySolverLinkData_DX11SIMDAware.h.

btDX11Buffer<float> btSoftBodyLinkDataDX11SIMDAware::m_dx11LinksRestLengthSquared

Definition at line 62 of file btSoftBodySolverLinkData_DX11SIMDAware.h.

btDX11Buffer<float> btSoftBodyLinkDataDX11SIMDAware::m_dx11LinkStrength

Definition at line 60 of file btSoftBodySolverLinkData_DX11SIMDAware.h.

btDX11Buffer<LinkNodePair> btSoftBodyLinkDataDX11SIMDAware::m_dx11LinkVerticesLocalAddresses

Definition at line 59 of file btSoftBodySolverLinkData_DX11SIMDAware.h.

btDX11Buffer< NumBatchesVerticesPair > btSoftBodyLinkDataDX11SIMDAware::m_dx11NumBatchesAndVerticesWithinWaves

Definition at line 51 of file btSoftBodySolverLinkData_DX11SIMDAware.h.

btDX11Buffer<int> btSoftBodyLinkDataDX11SIMDAware::m_dx11WavefrontVerticesGlobalAddresses

Definition at line 57 of file btSoftBodySolverLinkData_DX11SIMDAware.h.

btAlignedObjectArray< int > btSoftBodyLinkDataDX11SIMDAware::m_linkAddresses

Link addressing information for each cloth.

Allows link locations to be computed independently of data batching.

Definition at line 88 of file btSoftBodySolverLinkData_DX11SIMDAware.h.

btAlignedObjectArray<int> btSoftBodyLinkDataDX11SIMDAware::m_linksPerWavefront

Definition at line 49 of file btSoftBodySolverLinkData_DX11SIMDAware.h.

const int btSoftBodyLinkDataDX11SIMDAware::m_linksPerWorkItem

Definition at line 34 of file btSoftBodySolverLinkData_DX11SIMDAware.h.

btAlignedObjectArray< LinkNodePair > btSoftBodyLinkDataDX11SIMDAware::m_linkVerticesLocalAddresses

Definition at line 58 of file btSoftBodySolverLinkData_DX11SIMDAware.h.

int btSoftBodyLinkDataDX11SIMDAware::m_maxBatchesWithinWave

Definition at line 36 of file btSoftBodySolverLinkData_DX11SIMDAware.h.

const int btSoftBodyLinkDataDX11SIMDAware::m_maxLinksPerWavefront

Definition at line 35 of file btSoftBodySolverLinkData_DX11SIMDAware.h.

int btSoftBodyLinkDataDX11SIMDAware::m_maxVertex

Definition at line 40 of file btSoftBodySolverLinkData_DX11SIMDAware.h.

int btSoftBodyLinkDataDX11SIMDAware::m_maxVerticesWithinWave

Definition at line 37 of file btSoftBodySolverLinkData_DX11SIMDAware.h.

btAlignedObjectArray<NumBatchesVerticesPair> btSoftBodyLinkDataDX11SIMDAware::m_numBatchesAndVerticesWithinWaves

Definition at line 50 of file btSoftBodySolverLinkData_DX11SIMDAware.h.

int btSoftBodyLinkDataDX11SIMDAware::m_numWavefronts

Definition at line 38 of file btSoftBodySolverLinkData_DX11SIMDAware.h.

bool btSoftBodyLinkDataDX11SIMDAware::m_onGPU

Definition at line 29 of file btSoftBodySolverLinkData_DX11SIMDAware.h.

btAlignedObjectArray< BatchPair > btSoftBodyLinkDataDX11SIMDAware::m_wavefrontBatchStartLengths

Start and length values for computation batches over link data.

Definition at line 93 of file btSoftBodySolverLinkData_DX11SIMDAware.h.

const int btSoftBodyLinkDataDX11SIMDAware::m_wavefrontSize

Definition at line 33 of file btSoftBodySolverLinkData_DX11SIMDAware.h.

btAlignedObjectArray< int > btSoftBodyLinkDataDX11SIMDAware::m_wavefrontVerticesGlobalAddresses

Definition at line 56 of file btSoftBodySolverLinkData_DX11SIMDAware.h.


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