btSoftBodySolverVertexData_OpenCL.h

Go to the documentation of this file.
00001 /*
00002 Bullet Continuous Collision Detection and Physics Library
00003 Copyright (c) 2003-2006 Erwin Coumans  http://continuousphysics.com/Bullet/
00004 
00005 This software is provided 'as-is', without any express or implied warranty.
00006 In no event will the authors be held liable for any damages arising from the use of this software.
00007 Permission is granted to anyone to use this software for any purpose, 
00008 including commercial applications, and to alter it and redistribute it freely, 
00009 subject to the following restrictions:
00010 
00011 1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.
00012 2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.
00013 3. This notice may not be removed or altered from any source distribution.
00014 */
00015 
00016 #include "BulletMultiThreaded/GpuSoftBodySolvers/Shared/btSoftBodySolverData.h"
00017 #include "btSoftBodySolverBuffer_OpenCL.h"
00018 
00019 #ifndef BT_SOFT_BODY_SOLVER_VERTEX_DATA_OPENCL_H
00020 #define BT_SOFT_BODY_SOLVER_VERTEX_DATA_OPENCL_H
00021 
00022 
00023 class btSoftBodyVertexDataOpenCL : public btSoftBodyVertexData
00024 {
00025 protected:
00026         bool            m_onGPU;
00027         cl_command_queue        m_queue;
00028 
00029 public:
00030         btOpenCLBuffer<int>                                                                     m_clClothIdentifier;
00031         btOpenCLBuffer<Vectormath::Aos::Point3>                         m_clVertexPosition;
00032         btOpenCLBuffer<Vectormath::Aos::Point3>                         m_clVertexPreviousPosition;
00033         btOpenCLBuffer<Vectormath::Aos::Vector3>                                m_clVertexVelocity;
00034         btOpenCLBuffer<Vectormath::Aos::Vector3>                                m_clVertexForceAccumulator;
00035         btOpenCLBuffer<Vectormath::Aos::Vector3>                                m_clVertexNormal;
00036         btOpenCLBuffer<float>                                                                   m_clVertexInverseMass;
00037         btOpenCLBuffer<float>                                                                   m_clVertexArea;
00038         btOpenCLBuffer<int>                                                                     m_clVertexTriangleCount;
00039 public:
00040         btSoftBodyVertexDataOpenCL( cl_command_queue queue,  cl_context ctx);
00041 
00042         virtual ~btSoftBodyVertexDataOpenCL();
00043 
00044         virtual bool onAccelerator();
00045 
00046         virtual bool moveToAccelerator();
00047 
00048         virtual bool moveFromAccelerator(bool bCopy = false, bool bCopyMinimum = true);
00049 };
00050 
00051 
00052 #endif // #ifndef BT_SOFT_BODY_SOLVER_VERTEX_DATA_OPENCL_H