19 #ifndef BT_ACCELERATED_SOFT_BODY_LINK_DATA_DX11_SIMDAWARE_H
20 #define BT_ACCELERATED_SOFT_BODY_LINK_DATA_DX11_SIMDAWARE_H
23 struct ID3D11DeviceContext;
173 #endif // #ifndef BT_ACCELERATED_SOFT_BODY_LINK_DATA_DX11_SIMDAWARE_H
btAlignedObjectArray< NumBatchesVerticesPair > m_numBatchesAndVerticesWithinWaves
btSoftBodyLinkDataDX11SIMDAware(ID3D11Device *d3dDevice, ID3D11DeviceContext *d3dDeviceContext)
NumBatchesVerticesPair getNumBatchesAndVerticesWithinWavefront(int wavefront)
void generateBatches()
Generate (and later update) the batching for the entire link set.
btAlignedObjectArray< int > m_linksPerWavefront
const int m_wavefrontSize
btAlignedObjectArray< int > m_wavefrontVerticesGlobalAddresses
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 wavef...
ID3D11Device * m_d3dDevice
btAlignedObjectArray< BatchPair > m_wavefrontBatchStartLengths
Start and length values for computation batches over link data.
ID3D11DeviceContext * m_d3dDeviceContext
virtual bool onAccelerator()
Return true if data is on the accelerator.
btDX11Buffer< int > m_dx11WavefrontVerticesGlobalAddresses
int getMaxLinksPerWavefront()
int getMaxVerticesPerWavefront()
virtual ~btSoftBodyLinkDataDX11SIMDAware()
btAlignedObjectArray< int > m_linkAddresses
Link addressing information for each cloth.
Class representing a link as a set of three indices into the vertex array.
btDX11Buffer< float > m_dx11LinksRestLength
btAlignedObjectArray< LinkNodePair > m_linkVerticesLocalAddresses
virtual bool moveToAccelerator()
Move data from host memory to the accelerator.
int m_maxBatchesWithinWave
int m_maxVerticesWithinWave
Class describing a link for input into the system.
virtual void setLinkAt(const LinkDescription &link, int linkIndex)
Insert the link described into the correct data structures assuming space has already been allocated ...
btDX11Buffer< float > m_dx11LinksRestLengthSquared
const int m_linksPerWorkItem
btDX11Buffer< float > m_dx11LinkStrength
virtual void createLinks(int numLinks)
Allocate enough space in all link-related arrays to fit numLinks links.
int getMaxBatchesPerWavefront()
int getLinksPerWorkItem()
const int m_maxLinksPerWavefront
virtual bool moveFromAccelerator()
Move data from host memory from the accelerator.
btDX11Buffer< float > m_dx11LinksMassLSC
btDX11Buffer< LinkNodePair > m_dx11LinkVerticesLocalAddresses
btDX11Buffer< NumBatchesVerticesPair > m_dx11NumBatchesAndVerticesWithinWaves
DX11 Buffer that tracks a host buffer on use to ensure size-correctness.
btDX11Buffer< float > m_dx11LinksMaterialLinearStiffnessCoefficient