diff options
| author | Sheikh Dawood Abdul Ajees <[email protected]> | 2017-04-25 16:02:08 -0500 |
|---|---|---|
| committer | Sheikh Dawood Abdul Ajees <[email protected]> | 2017-04-25 16:02:08 -0500 |
| commit | d11708e398c2f6377d9eac2b1f7248c62faab569 (patch) | |
| tree | 5778e794690c046ab4b0205d8f764960a5af168b /PhysX_3.4/Source/LowLevelCloth | |
| parent | PhysX 3.4, APEX 1.4 patch release @21821222 (diff) | |
| download | physx-3.4-d11708e398c2f6377d9eac2b1f7248c62faab569.tar.xz physx-3.4-d11708e398c2f6377d9eac2b1f7248c62faab569.zip | |
PhysX 3.4, APEX 1.4 patch release @22017166
Diffstat (limited to 'PhysX_3.4/Source/LowLevelCloth')
13 files changed, 145 insertions, 4 deletions
diff --git a/PhysX_3.4/Source/LowLevelCloth/src/ClothImpl.h b/PhysX_3.4/Source/LowLevelCloth/src/ClothImpl.h index 22e58217..ab56c855 100644 --- a/PhysX_3.4/Source/LowLevelCloth/src/ClothImpl.h +++ b/PhysX_3.4/Source/LowLevelCloth/src/ClothImpl.h @@ -45,9 +45,9 @@ template <typename T> class ClothImpl : public UserAllocated, public Cloth { ClothImpl(const ClothImpl&); + ClothImpl& operator=(const ClothImpl&); public: - ClothImpl& operator=(const ClothImpl&); typedef T ClothType; typedef typename ClothType::FactoryType FactoryType; diff --git a/PhysX_3.4/Source/LowLevelCloth/src/SwCloth.cpp b/PhysX_3.4/Source/LowLevelCloth/src/SwCloth.cpp index 753f2b9c..a614c280 100644 --- a/PhysX_3.4/Source/LowLevelCloth/src/SwCloth.cpp +++ b/PhysX_3.4/Source/LowLevelCloth/src/SwCloth.cpp @@ -301,5 +301,8 @@ void ClothImpl<SwCloth>::setVirtualParticles(Range<const uint32_t[4]> indices, R mCloth.notifyChanged(); } +//explicit template instantiation +template class ClothImpl<SwCloth>; + } // namespace cloth } // namespace physx diff --git a/PhysX_3.4/Source/LowLevelCloth/src/SwCollision.h b/PhysX_3.4/Source/LowLevelCloth/src/SwCollision.h index e8f2392e..9b474dbe 100644 --- a/PhysX_3.4/Source/LowLevelCloth/src/SwCollision.h +++ b/PhysX_3.4/Source/LowLevelCloth/src/SwCollision.h @@ -134,5 +134,16 @@ class SwCollision static const Simd4f sSkeletonWidth; }; + +#if PX_SUPPORT_EXTERN_TEMPLATE +//explicit template instantiation declaration +#if NV_SIMD_SIMD +extern template class SwCollision<Simd4f>; +#endif +#if NV_SIMD_SCALAR +extern template class SwCollision<Scalar4f>; +#endif +#endif + } } diff --git a/PhysX_3.4/Source/LowLevelCloth/src/SwFactory.cpp b/PhysX_3.4/Source/LowLevelCloth/src/SwFactory.cpp index fa0b5864..3a97aa74 100644 --- a/PhysX_3.4/Source/LowLevelCloth/src/SwFactory.cpp +++ b/PhysX_3.4/Source/LowLevelCloth/src/SwFactory.cpp @@ -62,6 +62,11 @@ cloth::Fabric* cloth::SwFactory::createFabric(uint32_t numParticles, Range<const getNextFabricId()); } +#if PX_SUPPORT_EXTERN_TEMPLATE +//explicit template instantiation declaration +extern template class cloth::ClothImpl<cloth::SwCloth>; +#endif + cloth::Cloth* cloth::SwFactory::createCloth(Range<const PxVec4> particles, Fabric& fabric) { return new SwClothImpl(*this, fabric, particles); diff --git a/PhysX_3.4/Source/LowLevelCloth/src/SwInterCollision.h b/PhysX_3.4/Source/LowLevelCloth/src/SwInterCollision.h index b4ae8824..baf631de 100644 --- a/PhysX_3.4/Source/LowLevelCloth/src/SwInterCollision.h +++ b/PhysX_3.4/Source/LowLevelCloth/src/SwInterCollision.h @@ -139,6 +139,16 @@ class SwInterCollision mutable uint32_t mNumCollisions; }; +#if PX_SUPPORT_EXTERN_TEMPLATE +//explicit template instantiation declaration +#if NV_SIMD_SIMD +extern template class SwInterCollision<Simd4f>; +#endif +#if NV_SIMD_SCALAR +extern template class SwInterCollision<Scalar4f>; +#endif +#endif + } // namespace cloth } // namespace physx diff --git a/PhysX_3.4/Source/LowLevelCloth/src/SwSelfCollision.h b/PhysX_3.4/Source/LowLevelCloth/src/SwSelfCollision.h index c50ea8b5..b13ba4d9 100644 --- a/PhysX_3.4/Source/LowLevelCloth/src/SwSelfCollision.h +++ b/PhysX_3.4/Source/LowLevelCloth/src/SwSelfCollision.h @@ -78,6 +78,16 @@ class SwSelfCollision mutable uint32_t mNumCollisions; }; +#if PX_SUPPORT_EXTERN_TEMPLATE +//explicit template instantiation declaration +#if NV_SIMD_SIMD +extern template class SwSelfCollision<Simd4f>; +#endif +#if NV_SIMD_SCALAR +extern template class SwSelfCollision<Scalar4f>; +#endif +#endif + } // namespace cloth } // namespace physx diff --git a/PhysX_3.4/Source/LowLevelCloth/src/SwSolver.cpp b/PhysX_3.4/Source/LowLevelCloth/src/SwSolver.cpp index 6a00ae84..c1cfadc3 100644 --- a/PhysX_3.4/Source/LowLevelCloth/src/SwSolver.cpp +++ b/PhysX_3.4/Source/LowLevelCloth/src/SwSolver.cpp @@ -224,7 +224,7 @@ const char* cloth::SwSolver::EndSimulationTask::getName() const } cloth::SwSolver::CpuClothSimulationTask::CpuClothSimulationTask(SwCloth& cloth, EndSimulationTask& continuation) -: mCloth(&cloth), mContinuation(&continuation), mScratchMemorySize(0), mScratchMemory(0), mInvNumIterations(0.0f) +: Cm::Task(0), mCloth(&cloth), mContinuation(&continuation), mScratchMemorySize(0), mScratchMemory(0), mInvNumIterations(0.0f) { } diff --git a/PhysX_3.4/Source/LowLevelCloth/src/SwSolver.h b/PhysX_3.4/Source/LowLevelCloth/src/SwSolver.h index 3a91535f..a2c5b580 100644 --- a/PhysX_3.4/Source/LowLevelCloth/src/SwSolver.h +++ b/PhysX_3.4/Source/LowLevelCloth/src/SwSolver.h @@ -51,6 +51,8 @@ class SwSolver : public UserAllocated, public Solver using physx::PxLightCpuTask::mRefCount; using physx::PxLightCpuTask::mTm; + StartSimulationTask() : Cm::Task(0) {} + virtual void runInternal(); virtual const char* getName() const; SwSolver* mSolver; @@ -60,6 +62,8 @@ class SwSolver : public UserAllocated, public Solver { using physx::PxLightCpuTask::mRefCount; + EndSimulationTask() : Cm::Task(0) {} + virtual void runInternal(); virtual const char* getName() const; SwSolver* mSolver; diff --git a/PhysX_3.4/Source/LowLevelCloth/src/SwSolverKernel.h b/PhysX_3.4/Source/LowLevelCloth/src/SwSolverKernel.h index 2e6abafb..38e87923 100644 --- a/PhysX_3.4/Source/LowLevelCloth/src/SwSolverKernel.h +++ b/PhysX_3.4/Source/LowLevelCloth/src/SwSolverKernel.h @@ -80,5 +80,16 @@ class SwSolverKernel template <typename AccelerationIterator> void integrateParticles(AccelerationIterator& accelIt, const Simd4f&); }; + +#if PX_SUPPORT_EXTERN_TEMPLATE +//explicit template instantiation declaration +#if NV_SIMD_SIMD +extern template class SwSolverKernel<Simd4f>; +#endif +#if NV_SIMD_SCALAR +extern template class SwSolverKernel<Scalar4f>; +#endif +#endif + } } diff --git a/PhysX_3.4/Source/LowLevelCloth/src/windows/CuCloth.h b/PhysX_3.4/Source/LowLevelCloth/src/windows/CuCloth.h index 28ebc36a..dd14dceb 100644 --- a/PhysX_3.4/Source/LowLevelCloth/src/windows/CuCloth.h +++ b/PhysX_3.4/Source/LowLevelCloth/src/windows/CuCloth.h @@ -74,8 +74,9 @@ struct CuConstraints class CuCloth : protected CuContextLock { - public: CuCloth& operator=(const CuCloth&); + +public: typedef CuFactory FactoryType; typedef CuFabric FabricType; typedef CuContextLock ContextLockType; diff --git a/PhysX_3.4/Source/LowLevelCloth/src/windows/CuClothCreate.cpp b/PhysX_3.4/Source/LowLevelCloth/src/windows/CuClothCreate.cpp new file mode 100644 index 00000000..b1a59de6 --- /dev/null +++ b/PhysX_3.4/Source/LowLevelCloth/src/windows/CuClothCreate.cpp @@ -0,0 +1,45 @@ +// This code contains NVIDIA Confidential Information and is disclosed to you +// under a form of NVIDIA software license agreement provided separately to you. +// +// Notice +// NVIDIA Corporation and its licensors retain all intellectual property and +// proprietary rights in and to this software and related documentation and +// any modifications thereto. Any use, reproduction, disclosure, or +// distribution of this software and related documentation without an express +// license agreement from NVIDIA Corporation is strictly prohibited. +// +// ALL NVIDIA DESIGN SPECIFICATIONS, CODE ARE PROVIDED "AS IS.". NVIDIA MAKES +// NO WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO +// THE MATERIALS, AND EXPRESSLY DISCLAIMS ALL IMPLIED WARRANTIES OF NONINFRINGEMENT, +// MERCHANTABILITY, AND FITNESS FOR A PARTICULAR PURPOSE. +// +// Information and code furnished is believed to be accurate and reliable. +// However, NVIDIA Corporation assumes no responsibility for the consequences of use of such +// information or for any infringement of patents or other rights of third parties that may +// result from its use. No license is granted by implication or otherwise under any patent +// or patent rights of NVIDIA Corporation. Details are subject to change without notice. +// This code supersedes and replaces all information previously supplied. +// NVIDIA Corporation products are not authorized for use as critical +// components in life support devices or systems without express written approval of +// NVIDIA Corporation. +// +// Copyright (c) 2008-2017 NVIDIA Corporation. All rights reserved. +// Copyright (c) 2004-2008 AGEIA Technologies, Inc. All rights reserved. +// Copyright (c) 2001-2004 NovodeX AG. All rights reserved. + +#include "PxgBroadPhase.h" + +namespace physx +{ + + extern "C" void initClothKernels0(); + + void createPxgCloth() + { +#if !PX_PHYSX_GPU_EXPORTS + //this call is needed to force PhysXClothGpu linkage as Static Library! + initClothKernels0(); +#endif + } + +} diff --git a/PhysX_3.4/Source/LowLevelCloth/src/windows/CuClothCreate.h b/PhysX_3.4/Source/LowLevelCloth/src/windows/CuClothCreate.h new file mode 100644 index 00000000..6064b355 --- /dev/null +++ b/PhysX_3.4/Source/LowLevelCloth/src/windows/CuClothCreate.h @@ -0,0 +1,41 @@ +// This code contains NVIDIA Confidential Information and is disclosed to you +// under a form of NVIDIA software license agreement provided separately to you. +// +// Notice +// NVIDIA Corporation and its licensors retain all intellectual property and +// proprietary rights in and to this software and related documentation and +// any modifications thereto. Any use, reproduction, disclosure, or +// distribution of this software and related documentation without an express +// license agreement from NVIDIA Corporation is strictly prohibited. +// +// ALL NVIDIA DESIGN SPECIFICATIONS, CODE ARE PROVIDED "AS IS.". NVIDIA MAKES +// NO WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO +// THE MATERIALS, AND EXPRESSLY DISCLAIMS ALL IMPLIED WARRANTIES OF NONINFRINGEMENT, +// MERCHANTABILITY, AND FITNESS FOR A PARTICULAR PURPOSE. +// +// Information and code furnished is believed to be accurate and reliable. +// However, NVIDIA Corporation assumes no responsibility for the consequences of use of such +// information or for any infringement of patents or other rights of third parties that may +// result from its use. No license is granted by implication or otherwise under any patent +// or patent rights of NVIDIA Corporation. Details are subject to change without notice. +// This code supersedes and replaces all information previously supplied. +// NVIDIA Corporation products are not authorized for use as critical +// components in life support devices or systems without express written approval of +// NVIDIA Corporation. +// +// Copyright (c) 2008-2017 NVIDIA Corporation. All rights reserved. +// Copyright (c) 2004-2008 AGEIA Technologies, Inc. All rights reserved. +// Copyright (c) 2001-2004 NovodeX AG. All rights reserved. + +#ifndef PXG_CLOTH_CREATE_H +#define PXG_CLOTH_CREATE_H + + +namespace physx +{ + + //this is needed to force PhysXClothGpu linkage as Static Library! + void createPxgCloth(); +} + +#endif diff --git a/PhysX_3.4/Source/LowLevelCloth/src/windows/CuSolver.cpp b/PhysX_3.4/Source/LowLevelCloth/src/windows/CuSolver.cpp index a20e9e0d..c65e3c61 100644 --- a/PhysX_3.4/Source/LowLevelCloth/src/windows/CuSolver.cpp +++ b/PhysX_3.4/Source/LowLevelCloth/src/windows/CuSolver.cpp @@ -541,7 +541,7 @@ void cloth::CuSolver::interCollision() } cloth::CuSolver::ClothSolverTask::ClothSolverTask(FunctionPtr functionPtr, const char* name) -: mSolver(0), mFunctionPtr(functionPtr), mName(name) +: Cm::Task(0), mSolver(0), mFunctionPtr(functionPtr), mName(name) { } |