diff options
| author | Marijn Tamis <[email protected]> | 2017-07-04 14:58:46 +0200 |
|---|---|---|
| committer | Marijn Tamis <[email protected]> | 2017-07-04 14:58:46 +0200 |
| commit | dcc5bf97cc25b9d423d97220676903efa575f4d5 (patch) | |
| tree | 10d5ca1a3fc2a89c5fae1a7ee6af441b7d443b09 | |
| parent | NvCloth 1.1.1 Release. (22392725) (diff) | |
| download | nvcloth-dcc5bf97cc25b9d423d97220676903efa575f4d5.tar.xz nvcloth-dcc5bf97cc25b9d423d97220676903efa575f4d5.zip | |
Remove unused copy of PxShared.
37 files changed, 0 insertions, 7847 deletions
diff --git a/NvCloth/samples/external/PxShared/1.0.21467209.1/include/cudamanager/PxCudaContextManager.h b/NvCloth/samples/external/PxShared/1.0.21467209.1/include/cudamanager/PxCudaContextManager.h deleted file mode 100644 index aca1112..0000000 --- a/NvCloth/samples/external/PxShared/1.0.21467209.1/include/cudamanager/PxCudaContextManager.h +++ /dev/null @@ -1,425 +0,0 @@ -// 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. - - -#ifndef PXCUDACONTEXTMANAGER_PXCUDACONTEXTMANAGER_H -#define PXCUDACONTEXTMANAGER_PXCUDACONTEXTMANAGER_H - -#include "foundation/PxPreprocessor.h" - -#if PX_SUPPORT_GPU_PHYSX - -#include "foundation/PxSimpleTypes.h" -#include "foundation/PxErrorCallback.h" -#include "foundation/PxFlags.h" -#include "task/PxTaskDefine.h" -#include "cudamanager/PxCudaMemoryManager.h" - -/* Forward decl to avoid inclusion of cuda.h */ -typedef struct CUctx_st *CUcontext; -typedef struct CUgraphicsResource_st *CUgraphicsResource; -typedef int CUdevice; - -namespace physx -{ - -class PxGpuDispatcher; - - -/** \brief Possible graphic/CUDA interoperability modes for context */ -struct PxCudaInteropMode -{ - /** - * \brief Possible graphic/CUDA interoperability modes for context - */ - enum Enum - { - NO_INTEROP = 0, - D3D10_INTEROP, - D3D11_INTEROP, - OGL_INTEROP, - - COUNT - }; -}; - -struct PxCudaInteropRegisterFlag -{ - enum Enum - { - eNONE = 0x00, - eREAD_ONLY = 0x01, - eWRITE_DISCARD = 0x02, - eSURFACE_LDST = 0x04, - eTEXTURE_GATHER = 0x08 - }; -}; - -/** -\brief collection of set bits defined in NxCudaInteropRegisterFlag. - -@see NxCudaInteropRegisterFlag -*/ -typedef PxFlags<PxCudaInteropRegisterFlag::Enum, uint32_t> PxCudaInteropRegisterFlags; -PX_FLAGS_OPERATORS(PxCudaInteropRegisterFlag::Enum, uint32_t) - -//! \brief Descriptor used to create a PxCudaContextManager -class PxCudaContextManagerDesc -{ -public: - /** - * \brief The CUDA context to manage - * - * If left NULL, the PxCudaContextManager will create a new context. If - * graphicsDevice is also not NULL, this new CUDA context will be bound to - * that graphics device, enabling the use of CUDA/Graphics interop features. - * - * If ctx is not NULL, the specified context must be applied to the thread - * that is allocating the PxCudaContextManager at creation time (aka, it - * cannot be popped). The PxCudaContextManager will take ownership of the - * context until the manager is released. All access to the context must be - * gated by lock acquisition. - * - * If the user provides a context for the PxCudaContextManager, the context - * _must_ have either been created on the GPU ordinal returned by - * PxGetSuggestedCudaDeviceOrdinal() or on your graphics device. - * - * It is perfectly acceptable to allocate device or host pinned memory from - * the context outside the scope of the PxCudaMemoryManager, so long as you - * manage its eventual cleanup. - */ - CUcontext *ctx; - - /** - * \brief D3D device pointer or OpenGl context handle - * - * Only applicable when ctx is NULL, thus forcing a new context to be - * created. In that case, the created context will be bound to this - * graphics device. - */ - void *graphicsDevice; - -#if PX_SUPPORT_GPU_PHYSX - /** - * \brief Application-specific GUID - * - * If your application employs PhysX modules that use CUDA you need to use a GUID - * so that patches for new architectures can be released for your game.You can obtain a GUID for your - * application from Nvidia. - */ - const char* appGUID; -#endif - /** - * \brief The CUDA/Graphics interop mode of this context - * - * If ctx is NULL, this value describes the nature of the graphicsDevice - * pointer provided by the user. Else it describes the nature of the - * context provided by the user. - */ - PxCudaInteropMode::Enum interopMode; - - - /** - * \brief Size of persistent memory - * - * This memory is allocated up front and stays allocated until the - * PxCudaContextManager is released. Size is in bytes, has to be power of two - * and bigger than the page size. Set to 0 to only use dynamic pages. - * - * Note: On Vista O/S and above, there is a per-memory allocation overhead - * to every CUDA work submission, so we recommend that you carefully tune - * this initial base memory size to closely approximate the amount of - * memory your application will consume. - - Note: This is currently not used by PxSceneFlag::eENABLE_GPU_DYNAMICS. Memory allocation properties are configured - for GPU rigid bodies using PxSceneDesc::gpuDynamicsConfig. - */ - uint32_t memoryBaseSize[PxCudaBufferMemorySpace::COUNT]; - - /** - * \brief Size of memory pages - * - * The memory manager will dynamically grow and shrink in blocks multiple of - * this page size. Size has to be power of two and bigger than 0. - - Note: This is currently not used by PxSceneFlag::eENABLE_GPU_DYNAMICS. Memory allocation properties are configured - for GPU rigid bodies using PxSceneDesc::gpuDynamicsConfig. - */ - uint32_t memoryPageSize[PxCudaBufferMemorySpace::COUNT]; - - /** - * \brief Maximum size of memory that the memory manager will allocate - - Note: This is currently not used by PxSceneFlag::eENABLE_GPU_DYNAMICS. Memory allocation properties are configured - for GPU rigid bodies using PxSceneDesc::gpuDynamicsConfig. - */ - uint32_t maxMemorySize[PxCudaBufferMemorySpace::COUNT]; - - PX_INLINE PxCudaContextManagerDesc() - { - ctx = NULL; - interopMode = PxCudaInteropMode::NO_INTEROP; - graphicsDevice = 0; -#if PX_SUPPORT_GPU_PHYSX - appGUID = NULL; -#endif - for(uint32_t i = 0; i < PxCudaBufferMemorySpace::COUNT; i++) - { - memoryBaseSize[i] = 0; - memoryPageSize[i] = 2 * 1024*1024; - maxMemorySize[i] = UINT32_MAX; - } - } -}; - - -/** - * \brief Manages memory, thread locks, and task scheduling for a CUDA context - * - * A PxCudaContextManager manages access to a single CUDA context, allowing it to - * be shared between multiple scenes. Memory allocations are dynamic: starting - * with an initial heap size and growing on demand by a configurable page size. - * The context must be acquired from the manager before using any CUDA APIs. - * - * The PxCudaContextManager is based on the CUDA driver API and explictly does not - * support the CUDA runtime API (aka, CUDART). - * - * To enable CUDA use by an APEX scene, a PxCudaContextManager must be created - * (supplying your own CUDA context, or allowing a new context to be allocated - * for you), the PxGpuDispatcher for that context is retrieved via the - * getGpuDispatcher() method, and this is assigned to the TaskManager that is - * given to the scene via its NxApexSceneDesc. - */ -class PxCudaContextManager -{ -public: - /** - * \brief Acquire the CUDA context for the current thread - * - * Acquisitions are allowed to be recursive within a single thread. - * You can acquire the context multiple times so long as you release - * it the same count. - * - * The context must be acquired before using most CUDA functions. - * - * It is not necessary to acquire the CUDA context inside GpuTask - * launch functions, because the PxGpuDispatcher will have already - * acquired the context for its worker thread. However it is not - * harmfull to (re)acquire the context in code that is shared between - * GpuTasks and non-task functions. - */ - virtual void acquireContext() = 0; - - /** - * \brief Release the CUDA context from the current thread - * - * The CUDA context should be released as soon as practically - * possible, to allow other CPU threads (including the - * PxGpuDispatcher) to work efficiently. - */ - virtual void releaseContext() = 0; - - /** - * \brief Return the CUcontext - */ - virtual CUcontext getContext() = 0; - - /** - * \brief Return the PxCudaMemoryManager instance associated with this - * CUDA context - * Note: This is currently not used by PxSceneFlag::eENABLE_GPU_DYNAMICS. Memory allocation properties are configured - * for GPU rigid bodies using PxSceneDesc::gpuDynamicsConfig. - */ - virtual PxCudaMemoryManager *getMemoryManager() = 0; - - /** - * \brief Return the PxGpuDispatcher instance associated with this - * CUDA context - */ - virtual class physx::PxGpuDispatcher *getGpuDispatcher() = 0; - - /** - * \brief Context manager has a valid CUDA context - * - * This method should be called after creating a PxCudaContextManager, - * especially if the manager was responsible for allocating its own - * CUDA context (desc.ctx == NULL). If it returns false, there is - * no point in assigning this manager's PxGpuDispatcher to a - * TaskManager as it will be unable to execute GpuTasks. - */ - virtual bool contextIsValid() const = 0; - - /* Query CUDA context and device properties, without acquiring context */ - - virtual bool supportsArchSM10() const = 0; //!< G80 - virtual bool supportsArchSM11() const = 0; //!< G92 - virtual bool supportsArchSM12() const = 0; //!< GT200 - virtual bool supportsArchSM13() const = 0; //!< GT260 - virtual bool supportsArchSM20() const = 0; //!< GF100 - virtual bool supportsArchSM30() const = 0; //!< GK100 - virtual bool supportsArchSM35() const = 0; //!< GK110 - virtual bool supportsArchSM50() const = 0; //!< GM100 - virtual bool supportsArchSM52() const = 0; //!< GM200 - virtual bool supportsArchSM60() const = 0; //!< GP100 - virtual bool isIntegrated() const = 0; //!< true if GPU is an integrated (MCP) part - virtual bool canMapHostMemory() const = 0; //!< true if GPU map host memory to GPU (0-copy) - virtual int getDriverVersion() const = 0; //!< returns cached value of cuGetDriverVersion() - virtual size_t getDeviceTotalMemBytes() const = 0; //!< returns cached value of device memory size - virtual int getMultiprocessorCount() const = 0; //!< returns cache value of SM unit count - virtual unsigned int getClockRate() const = 0; //!< returns cached value of SM clock frequency - virtual int getSharedMemPerBlock() const = 0; //!< returns total amount of shared memory available per block in bytes - virtual int getSharedMemPerMultiprocessor() const = 0; //!< returns total amount of shared memory available per multiprocessor in bytes - virtual unsigned int getMaxThreadsPerBlock() const = 0; //!< returns the maximum number of threads per block - virtual const char *getDeviceName() const = 0; //!< returns device name retrieved from driver - virtual CUdevice getDevice() const = 0; //!< returns device handle retrieved from driver - virtual PxCudaInteropMode::Enum getInteropMode() const = 0; //!< interop mode the context was created with - - virtual void setUsingConcurrentStreams(bool) = 0; //!< turn on/off using concurrent streams for GPU work - virtual bool getUsingConcurrentStreams() const = 0; //!< true if GPU work can run in concurrent streams - /* End query methods that don't require context to be acquired */ - - /** - * \brief Register a rendering resource with CUDA - * - * This function is called to register render resources (allocated - * from OpenGL) with CUDA so that the memory may be shared - * between the two systems. This is only required for render - * resources that are designed for interop use. In APEX, each - * render resource descriptor that could support interop has a - * 'registerInCUDA' boolean variable. - * - * The function must be called again any time your graphics device - * is reset, to re-register the resource. - * - * Returns true if the registration succeeded. A registered - * resource must be unregistered before it can be released. - * - * \param resource [OUT] the handle to the resource that can be used with CUDA - * \param buffer [IN] GLuint buffer index to be mapped to cuda - * \param flags [IN] cuda interop registration flags - */ - virtual bool registerResourceInCudaGL(CUgraphicsResource &resource, uint32_t buffer, PxCudaInteropRegisterFlags flags = PxCudaInteropRegisterFlags()) = 0; - - /** - * \brief Register a rendering resource with CUDA - * - * This function is called to register render resources (allocated - * from Direct3D) with CUDA so that the memory may be shared - * between the two systems. This is only required for render - * resources that are designed for interop use. In APEX, each - * render resource descriptor that could support interop has a - * 'registerInCUDA' boolean variable. - * - * The function must be called again any time your graphics device - * is reset, to re-register the resource. - * - * Returns true if the registration succeeded. A registered - * resource must be unregistered before it can be released. - * - * \param resource [OUT] the handle to the resource that can be used with CUDA - * \param resourcePointer [IN] A pointer to either IDirect3DResource9, or ID3D10Device, or ID3D11Resource to be registered. - * \param flags [IN] cuda interop registration flags - */ - virtual bool registerResourceInCudaD3D(CUgraphicsResource &resource, void *resourcePointer, PxCudaInteropRegisterFlags flags = PxCudaInteropRegisterFlags()) = 0; - - /** - * \brief Unregister a rendering resource with CUDA - * - * If a render resource was successfully registered with CUDA using - * the registerResourceInCuda***() methods, this function must be called - * to unregister the resource before the it can be released. - */ - virtual bool unregisterResourceInCuda(CUgraphicsResource resource) = 0; - - /** - * \brief Determine if the user has configured a dedicated PhysX GPU in the NV Control Panel - * \note If using CUDA Interop, this will always return false - * \returns 1 if there is a dedicated GPU - * 0 if there is NOT a dedicated GPU - * -1 if the routine is not implemented - */ - virtual int usingDedicatedGPU() const = 0; - - /** - * \brief Release the PxCudaContextManager - * - * When the manager instance is released, it also releases its - * PxGpuDispatcher instance and PxCudaMemoryManager. Before the memory - * manager is released, it frees all allocated memory pages. If the - * PxCudaContextManager created the CUDA context it was responsible - * for, it also frees that context. - * - * Do not release the PxCudaContextManager if there are any scenes - * using its PxGpuDispatcher. Those scenes must be released first - * since there is no safe way to remove a PxGpuDispatcher from a - * TaskManager once the TaskManager has been given to a scene. - * - */ - virtual void release() = 0; - -protected: - - /** - * \brief protected destructor, use release() method - */ - virtual ~PxCudaContextManager() {} -}; - -/** - * \brief Convenience class for holding CUDA lock within a scope - */ -class PxScopedCudaLock -{ -public: - /** - * \brief ScopedCudaLock constructor - */ - PxScopedCudaLock(PxCudaContextManager& ctx) : mCtx(&ctx) - { - mCtx->acquireContext(); - } - - /** - * \brief ScopedCudaLock destructor - */ - ~PxScopedCudaLock() - { - mCtx->releaseContext(); - } - -protected: - - /** - * \brief CUDA context manager pointer (initialized in the constructor) - */ - PxCudaContextManager* mCtx; -}; - -} // end physx namespace - -#endif // PX_SUPPORT_GPU_PHYSX -#endif // PXCUDACONTEXTMANAGER_PXCUDACONTEXTMANAGER_H diff --git a/NvCloth/samples/external/PxShared/1.0.21467209.1/include/cudamanager/PxCudaMemoryManager.h b/NvCloth/samples/external/PxShared/1.0.21467209.1/include/cudamanager/PxCudaMemoryManager.h deleted file mode 100644 index c89b20d..0000000 --- a/NvCloth/samples/external/PxShared/1.0.21467209.1/include/cudamanager/PxCudaMemoryManager.h +++ /dev/null @@ -1,281 +0,0 @@ -// 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. - -#ifndef PXCUDACONTEXTMANAGER_PXCUDAMEMORYMANAGER_H -#define PXCUDACONTEXTMANAGER_PXCUDAMEMORYMANAGER_H - -#include "foundation/PxPreprocessor.h" - -#if PX_SUPPORT_GPU_PHYSX - -#include "task/PxTaskDefine.h" - -// some macros to keep the source code more readable -#define PX_ALLOC_INFO(name, ID) __FILE__, __LINE__, name, physx::PxAllocId::ID -#define PX_ALLOC_INFO_PARAMS_DECL(p0, p1, p2, p3) const char* file = p0, int line = p1, const char* allocName = p2, physx::PxAllocId::Enum allocId = physx::PxAllocId::p3 -#define PX_ALLOC_INFO_PARAMS_DEF() const char* file, int line, const char* allocName, physx::PxAllocId::Enum allocId -#define PX_ALLOC_INFO_PARAMS_INPUT() file, line, allocName, allocId -#define PX_ALLOC_INFO_PARAMS_INPUT_INFO(info) info.getFileName(), info.getLine(), info.getAllocName(), info.getAllocId() - -#ifndef NULL // don't want to include <string.h> -#define NULL 0 -#endif - -namespace physx -{ - -PX_PUSH_PACK_DEFAULT - -/** \brief ID of the Feature which owns/allocated memory from the heap - * - * Maximum of 64k IDs allowed. - */ -struct PxAllocId -{ - /** - * \brief ID of the Feature which owns/allocated memory from the heap - */ - enum Enum - { - UNASSIGNED, //!< default - APEX, //!< APEX stuff not further classified - PARTICLES, //!< all particle related - GPU_UTIL, //!< e.g. RadixSort (used in SPH and deformable self collision) - CLOTH, //!< all cloth related - NUM_IDS //!< number of IDs, be aware that ApexHeapStats contains PxAllocIdStats[NUM_IDS] - }; -}; - -/// \brief memory type managed by a heap -struct PxCudaBufferMemorySpace -{ - /** - * \brief memory type managed by a heap - */ - enum Enum - { - T_GPU, - T_PINNED_HOST, - T_WRITE_COMBINED, - T_HOST, - COUNT - }; -}; - -/// \brief class to track allocation statistics, see PxgMirrored -class PxAllocInfo -{ -public: - /** - * \brief AllocInfo default constructor - */ - PxAllocInfo() {} - - /** - * \brief AllocInfo constructor that initializes all of the members - */ - PxAllocInfo(const char* file, int line, const char* allocName, PxAllocId::Enum allocId) - : mFileName(file) - , mLine(line) - , mAllocName(allocName) - , mAllocId(allocId) - {} - - /// \brief get the allocation file name - inline const char* getFileName() const - { - return mFileName; - } - - /// \brief get the allocation line - inline int getLine() const - { - return mLine; - } - - /// \brief get the allocation name - inline const char* getAllocName() const - { - return mAllocName; - } - - /// \brief get the allocation ID - inline PxAllocId::Enum getAllocId() const - { - return mAllocId; - } - -private: - const char* mFileName; - int mLine; - const char* mAllocName; - PxAllocId::Enum mAllocId; -}; - -/// \brief statistics collected per AllocationId by HeapManager. -struct PxAllocIdStats -{ - size_t size; //!< currently allocated memory by this ID - size_t maxSize; //!< max allocated memory by this ID - size_t elements; //!< number of current allocations by this ID - size_t maxElements; //!< max number of allocations by this ID -}; - -class PxCudaMemoryManager; -typedef size_t PxCudaBufferPtr; - -/// \brief Hint flag to tell how the buffer will be used -struct PxCudaBufferFlags -{ -/// \brief Enumerations for the hint flag to tell how the buffer will be used - enum Enum - { - F_READ = (1 << 0), - F_WRITE = (1 << 1), - F_READ_WRITE = F_READ | F_WRITE - }; -}; - - -/// \brief Memory statistics struct returned by CudaMemMgr::getStats() -struct PxCudaMemoryManagerStats -{ - - size_t heapSize; //!< Size of all pages allocated for this memory type (allocated + free). - size_t totalAllocated; //!< Size occupied by the current allocations. - size_t maxAllocated; //!< High water mark of allocations since the SDK was created. - PxAllocIdStats allocIdStats[PxAllocId::NUM_IDS]; //!< Stats for each allocation ID, see PxAllocIdStats -}; - - -/// \brief Buffer type: made of hint flags and the memory space (Device Memory, Pinned Host Memory, ...) -struct PxCudaBufferType -{ - /// \brief PxCudaBufferType copy constructor - PX_INLINE PxCudaBufferType(const PxCudaBufferType& t) - : memorySpace(t.memorySpace) - , flags(t.flags) - {} - - /// \brief PxCudaBufferType constructor to explicitely assign members - PX_INLINE PxCudaBufferType(PxCudaBufferMemorySpace::Enum _memSpace, PxCudaBufferFlags::Enum _flags) - : memorySpace(_memSpace) - , flags(_flags) - {} - - PxCudaBufferMemorySpace::Enum memorySpace; //!< specifies which memory space for the buffer - PxCudaBufferFlags::Enum flags; //!< specifies the usage flags for the buffer -}; - - -/// \brief Buffer which keeps informations about allocated piece of memory. -class PxCudaBuffer -{ -public: - /// Retrieves the manager over which the buffer was allocated. - virtual PxCudaMemoryManager* getCudaMemoryManager() const = 0; - - /// Releases the buffer and the memory it used, returns true if successful. - virtual bool free() = 0; - - /// Realloc memory. Use to shrink or resize the allocated chunk of memory of this buffer. - /// Returns true if successful. Fails if the operation would change the address and need a memcopy. - /// In that case the user has to allocate, copy and free the memory with separate steps. - /// Realloc to size 0 always returns false and doesn't change the state. - virtual bool realloc(size_t size, PX_ALLOC_INFO_PARAMS_DECL(NULL, 0, NULL, UNASSIGNED)) = 0; - - /// Returns the type of the allocated memory. - virtual const PxCudaBufferType& getType() const = 0; - - /// Returns the pointer to the allocated memory. - virtual PxCudaBufferPtr getPtr() const = 0; - - /// Returns the size of the allocated memory. - virtual size_t getSize() const = 0; - -protected: - /// \brief protected destructor - virtual ~PxCudaBuffer() {} -}; - - -/// \brief Allocator class for different kinds of CUDA related memory. -class PxCudaMemoryManager -{ -public: - /// Allocate memory of given type and size. Returns a CudaBuffer if successful. Returns NULL if failed. - virtual PxCudaBuffer* alloc(const PxCudaBufferType& type, size_t size, PX_ALLOC_INFO_PARAMS_DECL(NULL, 0, NULL, UNASSIGNED)) = 0; - - /// Basic heap allocator without PxCudaBuffer - virtual PxCudaBufferPtr alloc(PxCudaBufferMemorySpace::Enum memorySpace, size_t size, PX_ALLOC_INFO_PARAMS_DECL(NULL, 0, NULL, UNASSIGNED)) = 0; - - /// Basic heap deallocator without PxCudaBuffer - virtual bool free(PxCudaBufferMemorySpace::Enum memorySpace, PxCudaBufferPtr addr) = 0; - - /// Basic heap realloc without PxCudaBuffer - virtual bool realloc(PxCudaBufferMemorySpace::Enum memorySpace, PxCudaBufferPtr addr, size_t size, PX_ALLOC_INFO_PARAMS_DECL(NULL, 0, NULL, UNASSIGNED)) = 0; - - /// Retrieve stats for the memory of given type. See PxCudaMemoryManagerStats. - virtual void getStats(const PxCudaBufferType& type, PxCudaMemoryManagerStats& outStats) = 0; - - /// Ensure that a given amount of free memory is available. Triggers CUDA allocations in size of (2^n * pageSize) if necessary. - /// Returns false if page allocations failed. - virtual bool reserve(const PxCudaBufferType& type, size_t size) = 0; - - /// Set the page size. The managed memory grows by blocks 2^n * pageSize. Page allocations trigger CUDA driver allocations, - /// so the page size should be reasonably big. Returns false if input size was invalid, i.e. not power of two. - /// Default is 2 MB. - virtual bool setPageSize(const PxCudaBufferType& type, size_t size) = 0; - - /// Set the upper limit until which pages of a given memory type can be allocated. - /// Reducing the max when it is already hit does not shrink the memory until it is deallocated by releasing the buffers which own the memory. - virtual bool setMaxMemorySize(const PxCudaBufferType& type, size_t size) = 0; - - /// Returns the base size. The base memory block stays persistently allocated over the SDKs life time. - virtual size_t getBaseSize(const PxCudaBufferType& type) = 0; - - /// Returns the currently set page size. The memory grows and shrinks in blocks of size (2^n pageSize) - virtual size_t getPageSize(const PxCudaBufferType& type) = 0; - - /// Returns the upper limit until which the manager is allowed to allocate additional pages from the CUDA driver. - virtual size_t getMaxMemorySize(const PxCudaBufferType& type) = 0; - - /// Get device mapped pinned host mem ptr. Operation only valid for memory space PxCudaBufferMemorySpace::T_PINNED_HOST. - virtual PxCudaBufferPtr getMappedPinnedPtr(PxCudaBufferPtr hostPtr) = 0; - -protected: - /// \brief protected destructor - virtual ~PxCudaMemoryManager() {} -}; - -PX_POP_PACK - - -} // end physx namespace - -#endif // PX_SUPPORT_GPU_PHYSX -#endif // PXCUDACONTEXTMANAGER_PXCUDAMEMORYMANAGER_H diff --git a/NvCloth/samples/external/PxShared/1.0.21467209.1/include/cudamanager/PxGpuCopyDesc.h b/NvCloth/samples/external/PxShared/1.0.21467209.1/include/cudamanager/PxGpuCopyDesc.h deleted file mode 100644 index c6c240f..0000000 --- a/NvCloth/samples/external/PxShared/1.0.21467209.1/include/cudamanager/PxGpuCopyDesc.h +++ /dev/null @@ -1,86 +0,0 @@ -// 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. - -#ifndef PXCUDACONTEXTMANAGER_PXGPUCOPYDESC_H -#define PXCUDACONTEXTMANAGER_PXGPUCOPYDESC_H - -#include "foundation/PxPreprocessor.h" - -#if PX_SUPPORT_GPU_PHYSX - -#include "task/PxTaskDefine.h" - -namespace physx -{ - -PX_PUSH_PACK_DEFAULT - -/** - * \brief Input descriptor for the GpuDispatcher's built-in copy kernel - * - * All host memory involved in copy transactions must be page-locked. - * If more than one descriptor is passed to the copy kernel in one launch, - * the descriptors themselves must be in page-locked memory. - */ -struct PxGpuCopyDesc -{ - /** - * \brief Input descriptor for the GpuDispatcher's built-in copy kernel - */ - enum CopyType - { - HostToDevice, - DeviceToHost, - DeviceToDevice, - DeviceMemset32 - }; - - size_t dest; //!< the destination - size_t source; //!< the source (32bit value when type == DeviceMemset) - size_t bytes; //!< the size in bytes - CopyType type; //!< the memory transaction type - - /** - * \brief Copy is optimally performed as 64bit words, requires 64bit alignment. But it can - * gracefully degrade to 32bit copies if necessary - */ - PX_INLINE bool isValid() - { - bool ok = true; - ok &= ((dest & 0x3) == 0); - ok &= ((type == DeviceMemset32) || (source & 0x3) == 0); - ok &= ((bytes & 0x3) == 0); - return ok; - } -}; - -PX_POP_PACK - -} // end physx namespace - -#endif // PX_SUPPORT_GPU_PHYSX -#endif // PXCUDACONTEXTMANAGER_PXGPUCOPYDESC_H diff --git a/NvCloth/samples/external/PxShared/1.0.21467209.1/include/cudamanager/PxGpuCopyDescQueue.h b/NvCloth/samples/external/PxShared/1.0.21467209.1/include/cudamanager/PxGpuCopyDescQueue.h deleted file mode 100644 index 4b6d58e..0000000 --- a/NvCloth/samples/external/PxShared/1.0.21467209.1/include/cudamanager/PxGpuCopyDescQueue.h +++ /dev/null @@ -1,149 +0,0 @@ -// 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. - -#ifndef PXCUDACONTEXTMANAGER_PXGPUCOPYDESCQUEUE_H -#define PXCUDACONTEXTMANAGER_PXGPUCOPYDESCQUEUE_H - -#include "foundation/PxPreprocessor.h" - -#if PX_SUPPORT_GPU_PHYSX - -#include "foundation/PxAssert.h" -#include "task/PxTaskDefine.h" -#include "task/PxGpuDispatcher.h" -#include "cudamanager/PxGpuCopyDesc.h" -#include "cudamanager/PxCudaContextManager.h" - -/* forward decl to avoid including <cuda.h> */ -typedef struct CUstream_st* CUstream; - -namespace physx -{ - -PX_PUSH_PACK_DEFAULT - -/// \brief Container class for queueing PxGpuCopyDesc instances in pinned (non-pageable) CPU memory -class PxGpuCopyDescQueue -{ -public: - /// \brief PxGpuCopyDescQueue constructor - PxGpuCopyDescQueue(PxGpuDispatcher& d) - : mDispatcher(d) - , mBuffer(0) - , mStream(0) - , mReserved(0) - , mOccupancy(0) - , mFlushed(0) - { - } - - /// \brief PxGpuCopyDescQueue destructor - ~PxGpuCopyDescQueue() - { - if (mBuffer) - { - mDispatcher.getCudaContextManager()->getMemoryManager()->free(PxCudaBufferMemorySpace::T_PINNED_HOST, (size_t) mBuffer); - } - } - - /// \brief Reset the enqueued copy descriptor list - /// - /// Must be called at least once before any copies are enqueued, and each time the launched - /// copies are known to have been completed. The recommended use case is to call this at the - /// start of each simulation step. - void reset(CUstream stream, uint32_t reserveSize) - { - if (reserveSize > mReserved) - { - if (mBuffer) - { - mDispatcher.getCudaContextManager()->getMemoryManager()->free( - PxCudaBufferMemorySpace::T_PINNED_HOST, - (size_t) mBuffer); - mReserved = 0; - } - mBuffer = (PxGpuCopyDesc*) mDispatcher.getCudaContextManager()->getMemoryManager()->alloc( - PxCudaBufferMemorySpace::T_PINNED_HOST, - reserveSize * sizeof(PxGpuCopyDesc), - PX_ALLOC_INFO("PxGpuCopyDescQueue", GPU_UTIL)); - if (mBuffer) - { - mReserved = reserveSize; - } - } - - mOccupancy = 0; - mFlushed = 0; - mStream = stream; - } - - /// \brief Enqueue the specified copy descriptor, or launch immediately if no room is available - void enqueue(PxGpuCopyDesc& desc) - { - PX_ASSERT(desc.isValid()); - if (desc.bytes == 0) - { - return; - } - - if (mOccupancy < mReserved) - { - mBuffer[ mOccupancy++ ] = desc; - } - else - { - mDispatcher.launchCopyKernel(&desc, 1, mStream); - } - } - - /// \brief Launch all copies queued since the last flush or reset - void flushEnqueued() - { - if (mOccupancy > mFlushed) - { - mDispatcher.launchCopyKernel(mBuffer + mFlushed, mOccupancy - mFlushed, mStream); - mFlushed = mOccupancy; - } - } - -private: - PxGpuDispatcher& mDispatcher; - PxGpuCopyDesc* mBuffer; - CUstream mStream; - uint32_t mReserved; - uint32_t mOccupancy; - uint32_t mFlushed; - - void operator=(const PxGpuCopyDescQueue&); // prevent a warning... -}; - -PX_POP_PACK - -} // end physx namespace - -#endif // PX_SUPPORT_GPU_PHYSX -#endif // PXCUDACONTEXTMANAGER_PXGPUCOPYDESCQUEUE_H diff --git a/NvCloth/samples/external/PxShared/1.0.21467209.1/include/foundation/Px.h b/NvCloth/samples/external/PxShared/1.0.21467209.1/include/foundation/Px.h deleted file mode 100644 index 1b6b3f6..0000000 --- a/NvCloth/samples/external/PxShared/1.0.21467209.1/include/foundation/Px.h +++ /dev/null @@ -1,92 +0,0 @@ -// 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 PXFOUNDATION_PX_H -#define PXFOUNDATION_PX_H - -/** \addtogroup foundation -@{ -*/ - -#include "foundation/PxSimpleTypes.h" - -/** files to always include */ -#include <string.h> -#include <stdlib.h> - -#if !PX_DOXYGEN -namespace physx -{ -#endif - -typedef uint32_t PxU32; - -class PxAllocatorCallback; -class PxErrorCallback; -struct PxErrorCode; -class PxAssertHandler; - -class PxInputStream; -class PxInputData; -class PxOutputStream; - -class PxVec2; -class PxVec3; -class PxVec4; -class PxMat33; -class PxMat44; -class PxPlane; -class PxQuat; -class PxTransform; -class PxBounds3; - -/** enum for empty constructor tag*/ -enum PxEMPTY -{ - PxEmpty -}; - -/** enum for zero constructor tag for vectors and matrices */ -enum PxZERO -{ - PxZero -}; - -/** enum for identity constructor flag for quaternions, transforms, and matrices */ -enum PxIDENTITY -{ - PxIdentity -}; - -#if !PX_DOXYGEN -} // namespace physx -#endif - -/** @} */ -#endif // #ifndef PXFOUNDATION_PX_H diff --git a/NvCloth/samples/external/PxShared/1.0.21467209.1/include/foundation/PxAllocatorCallback.h b/NvCloth/samples/external/PxShared/1.0.21467209.1/include/foundation/PxAllocatorCallback.h deleted file mode 100644 index 7545b60..0000000 --- a/NvCloth/samples/external/PxShared/1.0.21467209.1/include/foundation/PxAllocatorCallback.h +++ /dev/null @@ -1,95 +0,0 @@ -// 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 PXFOUNDATION_PXALLOCATORCALLBACK_H -#define PXFOUNDATION_PXALLOCATORCALLBACK_H - -/** \addtogroup foundation -@{ -*/ - -#include "foundation/Px.h" -#if !PX_DOXYGEN -namespace physx -{ -#endif - -/** -\brief Abstract base class for an application defined memory allocator that can be used by the Nv library. - -\note The SDK state should not be modified from within any allocation/free function. - -<b>Threading:</b> All methods of this class should be thread safe as it can be called from the user thread -or the physics processing thread(s). -*/ - -class PxAllocatorCallback -{ - public: - /** - \brief destructor - */ - virtual ~PxAllocatorCallback() - { - } - - /** - \brief Allocates size bytes of memory, which must be 16-byte aligned. - - This method should never return NULL. If you run out of memory, then - you should terminate the app or take some other appropriate action. - - <b>Threading:</b> This function should be thread safe as it can be called in the context of the user thread - and physics processing thread(s). - - \param size Number of bytes to allocate. - \param typeName Name of the datatype that is being allocated - \param filename The source file which allocated the memory - \param line The source line which allocated the memory - \return The allocated block of memory. - */ - virtual void* allocate(size_t size, const char* typeName, const char* filename, int line) = 0; - - /** - \brief Frees memory previously allocated by allocate(). - - <b>Threading:</b> This function should be thread safe as it can be called in the context of the user thread - and physics processing thread(s). - - \param ptr Memory to free. - */ - virtual void deallocate(void* ptr) = 0; -}; - -#if !PX_DOXYGEN -} // namespace physx -#endif - -/** @} */ -#endif // #ifndef PXFOUNDATION_PXALLOCATORCALLBACK_H diff --git a/NvCloth/samples/external/PxShared/1.0.21467209.1/include/foundation/PxAssert.h b/NvCloth/samples/external/PxShared/1.0.21467209.1/include/foundation/PxAssert.h deleted file mode 100644 index c422c27..0000000 --- a/NvCloth/samples/external/PxShared/1.0.21467209.1/include/foundation/PxAssert.h +++ /dev/null @@ -1,95 +0,0 @@ -// 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 PXFOUNDATION_PXASSERT_H -#define PXFOUNDATION_PXASSERT_H - -/** \addtogroup foundation -@{ */ - -#include "foundation/Px.h" - -#if !PX_DOXYGEN -namespace physx -{ -#endif - -/* Base class to handle assert failures */ -class PxAssertHandler -{ - public: - virtual ~PxAssertHandler() - { - } - virtual void operator()(const char* exp, const char* file, int line, bool& ignore) = 0; -}; - -PX_FOUNDATION_API PxAssertHandler& PxGetAssertHandler(); -PX_FOUNDATION_API void PxSetAssertHandler(PxAssertHandler& handler); - -#if !PX_DOXYGEN -} // namespace physx -#endif - -#if !PX_ENABLE_ASSERTS -#define PX_ASSERT(exp) ((void)0) -#define PX_ALWAYS_ASSERT_MESSAGE(exp) ((void)0) -#define PX_ASSERT_WITH_MESSAGE(condition, message) ((void)0) -#else -#if PX_VC -#define PX_CODE_ANALYSIS_ASSUME(exp) \ - __analysis_assume(!!(exp)) // This macro will be used to get rid of analysis warning messages if a PX_ASSERT is used -// to "guard" illegal mem access, for example. -#else -#define PX_CODE_ANALYSIS_ASSUME(exp) -#endif -#define PX_ASSERT(exp) \ - { \ - static bool _ignore = false; \ - ((void)((!!(exp)) || (!_ignore && (physx::PxGetAssertHandler()(#exp, __FILE__, __LINE__, _ignore), false)))); \ - PX_CODE_ANALYSIS_ASSUME(exp); \ - } -#define PX_ALWAYS_ASSERT_MESSAGE(exp) \ - { \ - static bool _ignore = false; \ - if(!_ignore) \ - physx::PxGetAssertHandler()(exp, __FILE__, __LINE__, _ignore); \ - } -#define PX_ASSERT_WITH_MESSAGE(exp, message) \ - { \ - static bool _ignore = false; \ - ((void)((!!(exp)) || (!_ignore && (physx::PxGetAssertHandler()(message, __FILE__, __LINE__, _ignore), false)))); \ - PX_CODE_ANALYSIS_ASSUME(exp); \ - } -#endif - -#define PX_ALWAYS_ASSERT() PX_ASSERT(0) - -/** @} */ -#endif // #ifndef PXFOUNDATION_PXASSERT_H diff --git a/NvCloth/samples/external/PxShared/1.0.21467209.1/include/foundation/PxBitAndData.h b/NvCloth/samples/external/PxShared/1.0.21467209.1/include/foundation/PxBitAndData.h deleted file mode 100644 index 685c1a2..0000000 --- a/NvCloth/samples/external/PxShared/1.0.21467209.1/include/foundation/PxBitAndData.h +++ /dev/null @@ -1,87 +0,0 @@ -// 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 PXFOUNDATION_PXBITANDDATA_H -#define PXFOUNDATION_PXBITANDDATA_H - -#include "foundation/Px.h" - -/** \addtogroup foundation - @{ -*/ -#if !PX_DOXYGEN -namespace physx -{ -#endif - -template <typename storageType, storageType bitMask> -class PxBitAndDataT -{ - public: - PX_FORCE_INLINE PxBitAndDataT(const PxEMPTY) - { - } - PX_FORCE_INLINE PxBitAndDataT() : mData(0) - { - } - PX_FORCE_INLINE PxBitAndDataT(storageType data, bool bit = false) - { - mData = bit ? storageType(data | bitMask) : data; - } - - PX_CUDA_CALLABLE PX_FORCE_INLINE operator storageType() const - { - return storageType(mData & ~bitMask); - } - PX_CUDA_CALLABLE PX_FORCE_INLINE void setBit() - { - mData |= bitMask; - } - PX_CUDA_CALLABLE PX_FORCE_INLINE void clearBit() - { - mData &= ~bitMask; - } - PX_CUDA_CALLABLE PX_FORCE_INLINE storageType isBitSet() const - { - return storageType(mData & bitMask); - } - - protected: - storageType mData; -}; -typedef PxBitAndDataT<unsigned char, 0x80> PxBitAndByte; -typedef PxBitAndDataT<unsigned short, 0x8000> PxBitAndWord; -typedef PxBitAndDataT<unsigned int, 0x80000000> PxBitAndDword; - -#if !PX_DOXYGEN -} // namespace physx -#endif - -/** @} */ -#endif // PXFOUNDATION_PXBITANDDATA_H diff --git a/NvCloth/samples/external/PxShared/1.0.21467209.1/include/foundation/PxBounds3.h b/NvCloth/samples/external/PxShared/1.0.21467209.1/include/foundation/PxBounds3.h deleted file mode 100644 index 38d7282..0000000 --- a/NvCloth/samples/external/PxShared/1.0.21467209.1/include/foundation/PxBounds3.h +++ /dev/null @@ -1,480 +0,0 @@ -// 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 PXFOUNDATION_PXBOUNDS3_H -#define PXFOUNDATION_PXBOUNDS3_H - -/** \addtogroup foundation -@{ -*/ - -#include "foundation/PxTransform.h" -#include "foundation/PxMat33.h" - -#if !PX_DOXYGEN -namespace physx -{ -#endif - -// maximum extents defined such that floating point exceptions are avoided for standard use cases -#define PX_MAX_BOUNDS_EXTENTS (PX_MAX_REAL * 0.25f) - -/** -\brief Class representing 3D range or axis aligned bounding box. - -Stored as minimum and maximum extent corners. Alternate representation -would be center and dimensions. -May be empty or nonempty. For nonempty bounds, minimum <= maximum has to hold for all axes. -Empty bounds have to be represented as minimum = PX_MAX_BOUNDS_EXTENTS and maximum = -PX_MAX_BOUNDS_EXTENTS for all -axes. -All other representations are invalid and the behavior is undefined. -*/ -class PxBounds3 -{ - public: - /** - \brief Default constructor, not performing any initialization for performance reason. - \remark Use empty() function below to construct empty bounds. - */ - PX_CUDA_CALLABLE PX_FORCE_INLINE PxBounds3() - { - } - - /** - \brief Construct from two bounding points - */ - PX_CUDA_CALLABLE PX_FORCE_INLINE PxBounds3(const PxVec3& minimum, const PxVec3& maximum); - - /** - \brief Return empty bounds. - */ - static PX_CUDA_CALLABLE PX_FORCE_INLINE PxBounds3 empty(); - - /** - \brief returns the AABB containing v0 and v1. - \param v0 first point included in the AABB. - \param v1 second point included in the AABB. - */ - static PX_CUDA_CALLABLE PX_FORCE_INLINE PxBounds3 boundsOfPoints(const PxVec3& v0, const PxVec3& v1); - - /** - \brief returns the AABB from center and extents vectors. - \param center Center vector - \param extent Extents vector - */ - static PX_CUDA_CALLABLE PX_FORCE_INLINE PxBounds3 centerExtents(const PxVec3& center, const PxVec3& extent); - - /** - \brief Construct from center, extent, and (not necessarily orthogonal) basis - */ - static PX_CUDA_CALLABLE PX_INLINE PxBounds3 - basisExtent(const PxVec3& center, const PxMat33& basis, const PxVec3& extent); - - /** - \brief Construct from pose and extent - */ - static PX_CUDA_CALLABLE PX_INLINE PxBounds3 poseExtent(const PxTransform& pose, const PxVec3& extent); - - /** - \brief gets the transformed bounds of the passed AABB (resulting in a bigger AABB). - - This version is safe to call for empty bounds. - - \param[in] matrix Transform to apply, can contain scaling as well - \param[in] bounds The bounds to transform. - */ - static PX_CUDA_CALLABLE PX_INLINE PxBounds3 transformSafe(const PxMat33& matrix, const PxBounds3& bounds); - - /** - \brief gets the transformed bounds of the passed AABB (resulting in a bigger AABB). - - Calling this method for empty bounds leads to undefined behavior. Use #transformSafe() instead. - - \param[in] matrix Transform to apply, can contain scaling as well - \param[in] bounds The bounds to transform. - */ - static PX_CUDA_CALLABLE PX_INLINE PxBounds3 transformFast(const PxMat33& matrix, const PxBounds3& bounds); - - /** - \brief gets the transformed bounds of the passed AABB (resulting in a bigger AABB). - - This version is safe to call for empty bounds. - - \param[in] transform Transform to apply, can contain scaling as well - \param[in] bounds The bounds to transform. - */ - static PX_CUDA_CALLABLE PX_INLINE PxBounds3 transformSafe(const PxTransform& transform, const PxBounds3& bounds); - - /** - \brief gets the transformed bounds of the passed AABB (resulting in a bigger AABB). - - Calling this method for empty bounds leads to undefined behavior. Use #transformSafe() instead. - - \param[in] transform Transform to apply, can contain scaling as well - \param[in] bounds The bounds to transform. - */ - static PX_CUDA_CALLABLE PX_INLINE PxBounds3 transformFast(const PxTransform& transform, const PxBounds3& bounds); - - /** - \brief Sets empty to true - */ - PX_CUDA_CALLABLE PX_FORCE_INLINE void setEmpty(); - - /** - \brief Sets the bounds to maximum size [-PX_MAX_BOUNDS_EXTENTS, PX_MAX_BOUNDS_EXTENTS]. - */ - PX_CUDA_CALLABLE PX_FORCE_INLINE void setMaximal(); - - /** - \brief expands the volume to include v - \param v Point to expand to. - */ - PX_CUDA_CALLABLE PX_FORCE_INLINE void include(const PxVec3& v); - - /** - \brief expands the volume to include b. - \param b Bounds to perform union with. - */ - PX_CUDA_CALLABLE PX_FORCE_INLINE void include(const PxBounds3& b); - - PX_CUDA_CALLABLE PX_FORCE_INLINE bool isEmpty() const; - - /** - \brief indicates whether the intersection of this and b is empty or not. - \param b Bounds to test for intersection. - */ - PX_CUDA_CALLABLE PX_FORCE_INLINE bool intersects(const PxBounds3& b) const; - - /** - \brief computes the 1D-intersection between two AABBs, on a given axis. - \param a the other AABB - \param axis the axis (0, 1, 2) - */ - PX_CUDA_CALLABLE PX_FORCE_INLINE bool intersects1D(const PxBounds3& a, uint32_t axis) const; - - /** - \brief indicates if these bounds contain v. - \param v Point to test against bounds. - */ - PX_CUDA_CALLABLE PX_FORCE_INLINE bool contains(const PxVec3& v) const; - - /** - \brief checks a box is inside another box. - \param box the other AABB - */ - PX_CUDA_CALLABLE PX_FORCE_INLINE bool isInside(const PxBounds3& box) const; - - /** - \brief returns the center of this axis aligned box. - */ - PX_CUDA_CALLABLE PX_FORCE_INLINE PxVec3 getCenter() const; - - /** - \brief get component of the box's center along a given axis - */ - PX_CUDA_CALLABLE PX_FORCE_INLINE float getCenter(uint32_t axis) const; - - /** - \brief get component of the box's extents along a given axis - */ - PX_CUDA_CALLABLE PX_FORCE_INLINE float getExtents(uint32_t axis) const; - - /** - \brief returns the dimensions (width/height/depth) of this axis aligned box. - */ - PX_CUDA_CALLABLE PX_FORCE_INLINE PxVec3 getDimensions() const; - - /** - \brief returns the extents, which are half of the width/height/depth. - */ - PX_CUDA_CALLABLE PX_FORCE_INLINE PxVec3 getExtents() const; - - /** - \brief scales the AABB. - - This version is safe to call for empty bounds. - - \param scale Factor to scale AABB by. - */ - PX_CUDA_CALLABLE PX_FORCE_INLINE void scaleSafe(float scale); - - /** - \brief scales the AABB. - - Calling this method for empty bounds leads to undefined behavior. Use #scaleSafe() instead. - - \param scale Factor to scale AABB by. - */ - PX_CUDA_CALLABLE PX_FORCE_INLINE void scaleFast(float scale); - - /** - fattens the AABB in all 3 dimensions by the given distance. - - This version is safe to call for empty bounds. - */ - PX_CUDA_CALLABLE PX_FORCE_INLINE void fattenSafe(float distance); - - /** - fattens the AABB in all 3 dimensions by the given distance. - - Calling this method for empty bounds leads to undefined behavior. Use #fattenSafe() instead. - */ - PX_CUDA_CALLABLE PX_FORCE_INLINE void fattenFast(float distance); - - /** - checks that the AABB values are not NaN - */ - PX_CUDA_CALLABLE PX_FORCE_INLINE bool isFinite() const; - - /** - checks that the AABB values describe a valid configuration. - */ - PX_CUDA_CALLABLE PX_FORCE_INLINE bool isValid() const; - - PxVec3 minimum, maximum; -}; - -PX_CUDA_CALLABLE PX_FORCE_INLINE PxBounds3::PxBounds3(const PxVec3& minimum_, const PxVec3& maximum_) -: minimum(minimum_), maximum(maximum_) -{ -} - -PX_CUDA_CALLABLE PX_FORCE_INLINE PxBounds3 PxBounds3::empty() -{ - return PxBounds3(PxVec3(PX_MAX_BOUNDS_EXTENTS), PxVec3(-PX_MAX_BOUNDS_EXTENTS)); -} - -PX_CUDA_CALLABLE PX_FORCE_INLINE bool PxBounds3::isFinite() const -{ - return minimum.isFinite() && maximum.isFinite(); -} - -PX_CUDA_CALLABLE PX_FORCE_INLINE PxBounds3 PxBounds3::boundsOfPoints(const PxVec3& v0, const PxVec3& v1) -{ - return PxBounds3(v0.minimum(v1), v0.maximum(v1)); -} - -PX_CUDA_CALLABLE PX_FORCE_INLINE PxBounds3 PxBounds3::centerExtents(const PxVec3& center, const PxVec3& extent) -{ - return PxBounds3(center - extent, center + extent); -} - -PX_CUDA_CALLABLE PX_INLINE PxBounds3 -PxBounds3::basisExtent(const PxVec3& center, const PxMat33& basis, const PxVec3& extent) -{ - // extended basis vectors - PxVec3 c0 = basis.column0 * extent.x; - PxVec3 c1 = basis.column1 * extent.y; - PxVec3 c2 = basis.column2 * extent.z; - - PxVec3 w; - // find combination of base vectors that produces max. distance for each component = sum of abs() - w.x = PxAbs(c0.x) + PxAbs(c1.x) + PxAbs(c2.x); - w.y = PxAbs(c0.y) + PxAbs(c1.y) + PxAbs(c2.y); - w.z = PxAbs(c0.z) + PxAbs(c1.z) + PxAbs(c2.z); - - return PxBounds3(center - w, center + w); -} - -PX_CUDA_CALLABLE PX_INLINE PxBounds3 PxBounds3::poseExtent(const PxTransform& pose, const PxVec3& extent) -{ - return basisExtent(pose.p, PxMat33(pose.q), extent); -} - -PX_CUDA_CALLABLE PX_FORCE_INLINE void PxBounds3::setEmpty() -{ - minimum = PxVec3(PX_MAX_BOUNDS_EXTENTS); - maximum = PxVec3(-PX_MAX_BOUNDS_EXTENTS); -} - -PX_CUDA_CALLABLE PX_FORCE_INLINE void PxBounds3::setMaximal() -{ - minimum = PxVec3(-PX_MAX_BOUNDS_EXTENTS); - maximum = PxVec3(PX_MAX_BOUNDS_EXTENTS); -} - -PX_CUDA_CALLABLE PX_FORCE_INLINE void PxBounds3::include(const PxVec3& v) -{ - PX_ASSERT(isValid()); - minimum = minimum.minimum(v); - maximum = maximum.maximum(v); -} - -PX_CUDA_CALLABLE PX_FORCE_INLINE void PxBounds3::include(const PxBounds3& b) -{ - PX_ASSERT(isValid()); - minimum = minimum.minimum(b.minimum); - maximum = maximum.maximum(b.maximum); -} - -PX_CUDA_CALLABLE PX_FORCE_INLINE bool PxBounds3::isEmpty() const -{ - PX_ASSERT(isValid()); - return minimum.x > maximum.x; -} - -PX_CUDA_CALLABLE PX_FORCE_INLINE bool PxBounds3::intersects(const PxBounds3& b) const -{ - PX_ASSERT(isValid() && b.isValid()); - return !(b.minimum.x > maximum.x || minimum.x > b.maximum.x || b.minimum.y > maximum.y || minimum.y > b.maximum.y || - b.minimum.z > maximum.z || minimum.z > b.maximum.z); -} - -PX_CUDA_CALLABLE PX_FORCE_INLINE bool PxBounds3::intersects1D(const PxBounds3& a, uint32_t axis) const -{ - PX_ASSERT(isValid() && a.isValid()); - return maximum[axis] >= a.minimum[axis] && a.maximum[axis] >= minimum[axis]; -} - -PX_CUDA_CALLABLE PX_FORCE_INLINE bool PxBounds3::contains(const PxVec3& v) const -{ - PX_ASSERT(isValid()); - - return !(v.x < minimum.x || v.x > maximum.x || v.y < minimum.y || v.y > maximum.y || v.z < minimum.z || - v.z > maximum.z); -} - -PX_CUDA_CALLABLE PX_FORCE_INLINE bool PxBounds3::isInside(const PxBounds3& box) const -{ - PX_ASSERT(isValid() && box.isValid()); - if(box.minimum.x > minimum.x) - return false; - if(box.minimum.y > minimum.y) - return false; - if(box.minimum.z > minimum.z) - return false; - if(box.maximum.x < maximum.x) - return false; - if(box.maximum.y < maximum.y) - return false; - if(box.maximum.z < maximum.z) - return false; - return true; -} - -PX_CUDA_CALLABLE PX_FORCE_INLINE PxVec3 PxBounds3::getCenter() const -{ - PX_ASSERT(isValid()); - return (minimum + maximum) * 0.5f; -} - -PX_CUDA_CALLABLE PX_FORCE_INLINE float PxBounds3::getCenter(uint32_t axis) const -{ - PX_ASSERT(isValid()); - return (minimum[axis] + maximum[axis]) * 0.5f; -} - -PX_CUDA_CALLABLE PX_FORCE_INLINE float PxBounds3::getExtents(uint32_t axis) const -{ - PX_ASSERT(isValid()); - return (maximum[axis] - minimum[axis]) * 0.5f; -} - -PX_CUDA_CALLABLE PX_FORCE_INLINE PxVec3 PxBounds3::getDimensions() const -{ - PX_ASSERT(isValid()); - return maximum - minimum; -} - -PX_CUDA_CALLABLE PX_FORCE_INLINE PxVec3 PxBounds3::getExtents() const -{ - PX_ASSERT(isValid()); - return getDimensions() * 0.5f; -} - -PX_CUDA_CALLABLE PX_FORCE_INLINE void PxBounds3::scaleSafe(float scale) -{ - PX_ASSERT(isValid()); - if(!isEmpty()) - scaleFast(scale); -} - -PX_CUDA_CALLABLE PX_FORCE_INLINE void PxBounds3::scaleFast(float scale) -{ - PX_ASSERT(isValid()); - *this = centerExtents(getCenter(), getExtents() * scale); -} - -PX_CUDA_CALLABLE PX_FORCE_INLINE void PxBounds3::fattenSafe(float distance) -{ - PX_ASSERT(isValid()); - if(!isEmpty()) - fattenFast(distance); -} - -PX_CUDA_CALLABLE PX_FORCE_INLINE void PxBounds3::fattenFast(float distance) -{ - PX_ASSERT(isValid()); - minimum.x -= distance; - minimum.y -= distance; - minimum.z -= distance; - - maximum.x += distance; - maximum.y += distance; - maximum.z += distance; -} - -PX_CUDA_CALLABLE PX_INLINE PxBounds3 PxBounds3::transformSafe(const PxMat33& matrix, const PxBounds3& bounds) -{ - PX_ASSERT(bounds.isValid()); - return !bounds.isEmpty() ? transformFast(matrix, bounds) : bounds; -} - -PX_CUDA_CALLABLE PX_INLINE PxBounds3 PxBounds3::transformFast(const PxMat33& matrix, const PxBounds3& bounds) -{ - PX_ASSERT(bounds.isValid()); - return PxBounds3::basisExtent(matrix * bounds.getCenter(), matrix, bounds.getExtents()); -} - -PX_CUDA_CALLABLE PX_INLINE PxBounds3 PxBounds3::transformSafe(const PxTransform& transform, const PxBounds3& bounds) -{ - PX_ASSERT(bounds.isValid()); - return !bounds.isEmpty() ? transformFast(transform, bounds) : bounds; -} - -PX_CUDA_CALLABLE PX_INLINE PxBounds3 PxBounds3::transformFast(const PxTransform& transform, const PxBounds3& bounds) -{ - PX_ASSERT(bounds.isValid()); - return PxBounds3::basisExtent(transform.transform(bounds.getCenter()), PxMat33(transform.q), bounds.getExtents()); -} - -PX_CUDA_CALLABLE PX_FORCE_INLINE bool PxBounds3::isValid() const -{ - return (isFinite() && (((minimum.x <= maximum.x) && (minimum.y <= maximum.y) && (minimum.z <= maximum.z)) || - ((minimum.x == PX_MAX_BOUNDS_EXTENTS) && (minimum.y == PX_MAX_BOUNDS_EXTENTS) && - (minimum.z == PX_MAX_BOUNDS_EXTENTS) && (maximum.x == -PX_MAX_BOUNDS_EXTENTS) && - (maximum.y == -PX_MAX_BOUNDS_EXTENTS) && (maximum.z == -PX_MAX_BOUNDS_EXTENTS)))); -} - -#if !PX_DOXYGEN -} // namespace physx -#endif - -/** @} */ -#endif // #ifndef PXFOUNDATION_PXBOUNDS3_H diff --git a/NvCloth/samples/external/PxShared/1.0.21467209.1/include/foundation/PxErrorCallback.h b/NvCloth/samples/external/PxShared/1.0.21467209.1/include/foundation/PxErrorCallback.h deleted file mode 100644 index 8b63374..0000000 --- a/NvCloth/samples/external/PxShared/1.0.21467209.1/include/foundation/PxErrorCallback.h +++ /dev/null @@ -1,73 +0,0 @@ -// 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 PXFOUNDATION_PXERRORCALLBACK_H -#define PXFOUNDATION_PXERRORCALLBACK_H - -/** \addtogroup foundation -@{ -*/ - -#include "foundation/PxErrors.h" -#if !PX_DOXYGEN -namespace physx -{ -#endif - -/** -\brief User defined interface class. Used by the library to emit debug information. - -\note The SDK state should not be modified from within any error reporting functions. - -<b>Threading:</b> The SDK sequences its calls to the output stream using a mutex, so the class need not -be implemented in a thread-safe manner if the SDK is the only client. -*/ -class PxErrorCallback -{ - public: - virtual ~PxErrorCallback() - { - } - - /** - \brief Reports an error code. - \param code Error code, see #PxErrorCode - \param message Message to display. - \param file File error occured in. - \param line Line number error occured on. - */ - virtual void reportError(PxErrorCode::Enum code, const char* message, const char* file, int line) = 0; -}; - -#if !PX_DOXYGEN -} // namespace physx -#endif - -/** @} */ -#endif // #ifndef PXFOUNDATION_PXERRORCALLBACK_H diff --git a/NvCloth/samples/external/PxShared/1.0.21467209.1/include/foundation/PxErrors.h b/NvCloth/samples/external/PxShared/1.0.21467209.1/include/foundation/PxErrors.h deleted file mode 100644 index fb341bb..0000000 --- a/NvCloth/samples/external/PxShared/1.0.21467209.1/include/foundation/PxErrors.h +++ /dev/null @@ -1,93 +0,0 @@ -// 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 PXFOUNDATION_PXERRORS_H -#define PXFOUNDATION_PXERRORS_H -/** \addtogroup foundation -@{ -*/ - -#include "foundation/Px.h" - -#if !PX_DOXYGEN -namespace physx -{ -#endif - -/** -\brief Error codes - -These error codes are passed to #PxErrorCallback - -@see PxErrorCallback -*/ - -struct PxErrorCode -{ - enum Enum - { - eNO_ERROR = 0, - - //! \brief An informational message. - eDEBUG_INFO = 1, - - //! \brief a warning message for the user to help with debugging - eDEBUG_WARNING = 2, - - //! \brief method called with invalid parameter(s) - eINVALID_PARAMETER = 4, - - //! \brief method was called at a time when an operation is not possible - eINVALID_OPERATION = 8, - - //! \brief method failed to allocate some memory - eOUT_OF_MEMORY = 16, - - /** \brief The library failed for some reason. - Possibly you have passed invalid values like NaNs, which are not checked for. - */ - eINTERNAL_ERROR = 32, - - //! \brief An unrecoverable error, execution should be halted and log output flushed - eABORT = 64, - - //! \brief The SDK has determined that an operation may result in poor performance. - ePERF_WARNING = 128, - - //! \brief A bit mask for including all errors - eMASK_ALL = -1 - }; -}; - -#if !PX_DOXYGEN -} // namespace physx -#endif - -/** @} */ -#endif // #ifndef PXFOUNDATION_PXERRORS_H diff --git a/NvCloth/samples/external/PxShared/1.0.21467209.1/include/foundation/PxFlags.h b/NvCloth/samples/external/PxShared/1.0.21467209.1/include/foundation/PxFlags.h deleted file mode 100644 index 1aec096..0000000 --- a/NvCloth/samples/external/PxShared/1.0.21467209.1/include/foundation/PxFlags.h +++ /dev/null @@ -1,375 +0,0 @@ -// 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 PXFOUNDATION_PXFLAGS_H -#define PXFOUNDATION_PXFLAGS_H - -/** \addtogroup foundation - @{ -*/ - -#include "foundation/Px.h" - -#if !PX_DOXYGEN -namespace physx -{ -#endif -/** -\brief Container for bitfield flag variables associated with a specific enum type. - -This allows for type safe manipulation for bitfields. - -<h3>Example</h3> - // enum that defines each bit... - struct MyEnum - { - enum Enum - { - eMAN = 1, - eBEAR = 2, - ePIG = 4, - }; - }; - - // implements some convenient global operators. - PX_FLAGS_OPERATORS(MyEnum::Enum, uint8_t); - - PxFlags<MyEnum::Enum, uint8_t> myFlags; - myFlags |= MyEnum::eMAN; - myFlags |= MyEnum::eBEAR | MyEnum::ePIG; - if(myFlags & MyEnum::eBEAR) - { - doSomething(); - } -*/ - -template <typename enumtype, typename storagetype = uint32_t> -class PxFlags -{ - public: - typedef storagetype InternalType; - - PX_CUDA_CALLABLE PX_INLINE explicit PxFlags(const PxEMPTY) - { - } - PX_CUDA_CALLABLE PX_INLINE PxFlags(void); - PX_CUDA_CALLABLE PX_INLINE PxFlags(enumtype e); - PX_CUDA_CALLABLE PX_INLINE PxFlags(const PxFlags<enumtype, storagetype>& f); - PX_CUDA_CALLABLE PX_INLINE explicit PxFlags(storagetype b); - - PX_CUDA_CALLABLE PX_INLINE bool isSet(enumtype e) const; - PX_CUDA_CALLABLE PX_INLINE PxFlags<enumtype, storagetype>& set(enumtype e); - PX_CUDA_CALLABLE PX_INLINE bool operator==(enumtype e) const; - PX_CUDA_CALLABLE PX_INLINE bool operator==(const PxFlags<enumtype, storagetype>& f) const; - PX_CUDA_CALLABLE PX_INLINE bool operator==(bool b) const; - PX_CUDA_CALLABLE PX_INLINE bool operator!=(enumtype e) const; - PX_CUDA_CALLABLE PX_INLINE bool operator!=(const PxFlags<enumtype, storagetype>& f) const; - - PX_CUDA_CALLABLE PX_INLINE PxFlags<enumtype, storagetype>& operator=(const PxFlags<enumtype, storagetype>& f); - PX_CUDA_CALLABLE PX_INLINE PxFlags<enumtype, storagetype>& operator=(enumtype e); - - PX_CUDA_CALLABLE PX_INLINE PxFlags<enumtype, storagetype>& operator|=(enumtype e); - PX_CUDA_CALLABLE PX_INLINE PxFlags<enumtype, storagetype>& operator|=(const PxFlags<enumtype, storagetype>& f); - PX_CUDA_CALLABLE PX_INLINE PxFlags<enumtype, storagetype> operator|(enumtype e) const; - PX_CUDA_CALLABLE PX_INLINE PxFlags<enumtype, storagetype> operator|(const PxFlags<enumtype, storagetype>& f) const; - - PX_CUDA_CALLABLE PX_INLINE PxFlags<enumtype, storagetype>& operator&=(enumtype e); - PX_CUDA_CALLABLE PX_INLINE PxFlags<enumtype, storagetype>& operator&=(const PxFlags<enumtype, storagetype>& f); - PX_CUDA_CALLABLE PX_INLINE PxFlags<enumtype, storagetype> operator&(enumtype e) const; - PX_CUDA_CALLABLE PX_INLINE PxFlags<enumtype, storagetype> operator&(const PxFlags<enumtype, storagetype>& f) const; - - PX_CUDA_CALLABLE PX_INLINE PxFlags<enumtype, storagetype>& operator^=(enumtype e); - PX_CUDA_CALLABLE PX_INLINE PxFlags<enumtype, storagetype>& operator^=(const PxFlags<enumtype, storagetype>& f); - PX_CUDA_CALLABLE PX_INLINE PxFlags<enumtype, storagetype> operator^(enumtype e) const; - PX_CUDA_CALLABLE PX_INLINE PxFlags<enumtype, storagetype> operator^(const PxFlags<enumtype, storagetype>& f) const; - - PX_CUDA_CALLABLE PX_INLINE PxFlags<enumtype, storagetype> operator~(void) const; - - PX_CUDA_CALLABLE PX_INLINE operator bool(void) const; - PX_CUDA_CALLABLE PX_INLINE operator uint8_t(void) const; - PX_CUDA_CALLABLE PX_INLINE operator uint16_t(void) const; - PX_CUDA_CALLABLE PX_INLINE operator uint32_t(void) const; - - PX_CUDA_CALLABLE PX_INLINE void clear(enumtype e); - - public: - friend PX_INLINE PxFlags<enumtype, storagetype> operator&(enumtype a, PxFlags<enumtype, storagetype>& b) - { - PxFlags<enumtype, storagetype> out; - out.mBits = a & b.mBits; - return out; - } - - private: - storagetype mBits; -}; - -#define PX_FLAGS_OPERATORS(enumtype, storagetype) \ - PX_INLINE PxFlags<enumtype, storagetype> operator|(enumtype a, enumtype b) \ - { \ - PxFlags<enumtype, storagetype> r(a); \ - r |= b; \ - return r; \ - } \ - PX_INLINE PxFlags<enumtype, storagetype> operator&(enumtype a, enumtype b) \ - { \ - PxFlags<enumtype, storagetype> r(a); \ - r &= b; \ - return r; \ - } \ - PX_INLINE PxFlags<enumtype, storagetype> operator~(enumtype a) \ - { \ - return ~PxFlags<enumtype, storagetype>(a); \ - } - -#define PX_FLAGS_TYPEDEF(x, y) \ - typedef PxFlags<x::Enum, y> x##s; \ - PX_FLAGS_OPERATORS(x::Enum, y) - -template <typename enumtype, typename storagetype> -PX_INLINE PxFlags<enumtype, storagetype>::PxFlags(void) -{ - mBits = 0; -} - -template <typename enumtype, typename storagetype> -PX_INLINE PxFlags<enumtype, storagetype>::PxFlags(enumtype e) -{ - mBits = static_cast<storagetype>(e); -} - -template <typename enumtype, typename storagetype> -PX_INLINE PxFlags<enumtype, storagetype>::PxFlags(const PxFlags<enumtype, storagetype>& f) -{ - mBits = f.mBits; -} - -template <typename enumtype, typename storagetype> -PX_INLINE PxFlags<enumtype, storagetype>::PxFlags(storagetype b) -{ - mBits = b; -} - -template <typename enumtype, typename storagetype> -PX_INLINE bool PxFlags<enumtype, storagetype>::isSet(enumtype e) const -{ - return (mBits & static_cast<storagetype>(e)) == static_cast<storagetype>(e); -} - -template <typename enumtype, typename storagetype> -PX_INLINE PxFlags<enumtype, storagetype>& PxFlags<enumtype, storagetype>::set(enumtype e) -{ - mBits = static_cast<storagetype>(e); - return *this; -} - -template <typename enumtype, typename storagetype> -PX_INLINE bool PxFlags<enumtype, storagetype>::operator==(enumtype e) const -{ - return mBits == static_cast<storagetype>(e); -} - -template <typename enumtype, typename storagetype> -PX_INLINE bool PxFlags<enumtype, storagetype>::operator==(const PxFlags<enumtype, storagetype>& f) const -{ - return mBits == f.mBits; -} - -template <typename enumtype, typename storagetype> -PX_INLINE bool PxFlags<enumtype, storagetype>::operator==(bool b) const -{ - return bool(*this) == b; -} - -template <typename enumtype, typename storagetype> -PX_INLINE bool PxFlags<enumtype, storagetype>::operator!=(enumtype e) const -{ - return mBits != static_cast<storagetype>(e); -} - -template <typename enumtype, typename storagetype> -PX_INLINE bool PxFlags<enumtype, storagetype>::operator!=(const PxFlags<enumtype, storagetype>& f) const -{ - return mBits != f.mBits; -} - -template <typename enumtype, typename storagetype> -PX_INLINE PxFlags<enumtype, storagetype>& PxFlags<enumtype, storagetype>::operator=(enumtype e) -{ - mBits = static_cast<storagetype>(e); - return *this; -} - -template <typename enumtype, typename storagetype> -PX_INLINE PxFlags<enumtype, storagetype>& PxFlags<enumtype, storagetype>::operator=(const PxFlags<enumtype, storagetype>& f) -{ - mBits = f.mBits; - return *this; -} - -template <typename enumtype, typename storagetype> -PX_INLINE PxFlags<enumtype, storagetype>& PxFlags<enumtype, storagetype>::operator|=(enumtype e) -{ - mBits |= static_cast<storagetype>(e); - return *this; -} - -template <typename enumtype, typename storagetype> -PX_INLINE PxFlags<enumtype, storagetype>& PxFlags<enumtype, storagetype>:: -operator|=(const PxFlags<enumtype, storagetype>& f) -{ - mBits |= f.mBits; - return *this; -} - -template <typename enumtype, typename storagetype> -PX_INLINE PxFlags<enumtype, storagetype> PxFlags<enumtype, storagetype>::operator|(enumtype e) const -{ - PxFlags<enumtype, storagetype> out(*this); - out |= e; - return out; -} - -template <typename enumtype, typename storagetype> -PX_INLINE PxFlags<enumtype, storagetype> PxFlags<enumtype, storagetype>:: -operator|(const PxFlags<enumtype, storagetype>& f) const -{ - PxFlags<enumtype, storagetype> out(*this); - out |= f; - return out; -} - -template <typename enumtype, typename storagetype> -PX_INLINE PxFlags<enumtype, storagetype>& PxFlags<enumtype, storagetype>::operator&=(enumtype e) -{ - mBits &= static_cast<storagetype>(e); - return *this; -} - -template <typename enumtype, typename storagetype> -PX_INLINE PxFlags<enumtype, storagetype>& PxFlags<enumtype, storagetype>:: -operator&=(const PxFlags<enumtype, storagetype>& f) -{ - mBits &= f.mBits; - return *this; -} - -template <typename enumtype, typename storagetype> -PX_INLINE PxFlags<enumtype, storagetype> PxFlags<enumtype, storagetype>::operator&(enumtype e) const -{ - PxFlags<enumtype, storagetype> out = *this; - out.mBits &= static_cast<storagetype>(e); - return out; -} - -template <typename enumtype, typename storagetype> -PX_INLINE PxFlags<enumtype, storagetype> PxFlags<enumtype, storagetype>:: -operator&(const PxFlags<enumtype, storagetype>& f) const -{ - PxFlags<enumtype, storagetype> out = *this; - out.mBits &= f.mBits; - return out; -} - -template <typename enumtype, typename storagetype> -PX_INLINE PxFlags<enumtype, storagetype>& PxFlags<enumtype, storagetype>::operator^=(enumtype e) -{ - mBits ^= static_cast<storagetype>(e); - return *this; -} - -template <typename enumtype, typename storagetype> -PX_INLINE PxFlags<enumtype, storagetype>& PxFlags<enumtype, storagetype>:: -operator^=(const PxFlags<enumtype, storagetype>& f) -{ - mBits ^= f.mBits; - return *this; -} - -template <typename enumtype, typename storagetype> -PX_INLINE PxFlags<enumtype, storagetype> PxFlags<enumtype, storagetype>::operator^(enumtype e) const -{ - PxFlags<enumtype, storagetype> out = *this; - out.mBits ^= static_cast<storagetype>(e); - return out; -} - -template <typename enumtype, typename storagetype> -PX_INLINE PxFlags<enumtype, storagetype> PxFlags<enumtype, storagetype>:: -operator^(const PxFlags<enumtype, storagetype>& f) const -{ - PxFlags<enumtype, storagetype> out = *this; - out.mBits ^= f.mBits; - return out; -} - -template <typename enumtype, typename storagetype> -PX_INLINE PxFlags<enumtype, storagetype> PxFlags<enumtype, storagetype>::operator~(void) const -{ - PxFlags<enumtype, storagetype> out; - out.mBits = storagetype(~mBits); - return out; -} - -template <typename enumtype, typename storagetype> -PX_INLINE PxFlags<enumtype, storagetype>::operator bool(void) const -{ - return mBits ? true : false; -} - -template <typename enumtype, typename storagetype> -PX_INLINE PxFlags<enumtype, storagetype>::operator uint8_t(void) const -{ - return static_cast<uint8_t>(mBits); -} - -template <typename enumtype, typename storagetype> -PX_INLINE PxFlags<enumtype, storagetype>::operator uint16_t(void) const -{ - return static_cast<uint16_t>(mBits); -} - -template <typename enumtype, typename storagetype> -PX_INLINE PxFlags<enumtype, storagetype>::operator uint32_t(void) const -{ - return static_cast<uint32_t>(mBits); -} - -template <typename enumtype, typename storagetype> -PX_INLINE void PxFlags<enumtype, storagetype>::clear(enumtype e) -{ - mBits &= ~static_cast<storagetype>(e); -} - -#if !PX_DOXYGEN -} // namespace physx -#endif - -/** @} */ -#endif // #ifndef PXFOUNDATION_PXFLAGS_H diff --git a/NvCloth/samples/external/PxShared/1.0.21467209.1/include/foundation/PxFoundation.h b/NvCloth/samples/external/PxShared/1.0.21467209.1/include/foundation/PxFoundation.h deleted file mode 100644 index 8642c16..0000000 --- a/NvCloth/samples/external/PxShared/1.0.21467209.1/include/foundation/PxFoundation.h +++ /dev/null @@ -1,147 +0,0 @@ -// 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 PX_FOUNDATION_PX_FOUNDATION_H -#define PX_FOUNDATION_PX_FOUNDATION_H - -/** \addtogroup foundation - @{ -*/ - -#include "foundation/Px.h" -#include "foundation/PxErrors.h" - -#if !PX_DOXYGEN -namespace physx -{ -#endif - -/** -\brief Foundation SDK singleton class. - -You need to have an instance of this class to instance the higher level SDKs. -*/ -class PX_FOUNDATION_API PxFoundation -{ - public: - /** - \brief Destroys the instance it is called on. - - The operation will fail, if there are still modules referencing the foundation object. Release all dependent modules - prior - to calling this method. - - @see PxCreateFoundation() - */ - virtual void release() = 0; - - /** - retrieves error callback - */ - virtual PxErrorCallback& getErrorCallback() = 0; - - /** - Sets mask of errors to report. - */ - virtual void setErrorLevel(PxErrorCode::Enum mask = PxErrorCode::eMASK_ALL) = 0; - - /** - Retrieves mask of errors to be reported. - */ - virtual PxErrorCode::Enum getErrorLevel() const = 0; - - /** - Retrieves the allocator this object was created with. - */ - virtual PxAllocatorCallback& getAllocatorCallback() = 0; - - /** - Retrieves if allocation names are being passed to allocator callback. - */ - virtual bool getReportAllocationNames() const = 0; - - /** - Set if allocation names are being passed to allocator callback. - \details Enabled by default in debug and checked build, disabled by default in profile and release build. - */ - virtual void setReportAllocationNames(bool value) = 0; - - protected: - virtual ~PxFoundation() - { - } -}; - -#if !PX_DOXYGEN -} // namespace physx -#endif - -/** -\brief Creates an instance of the foundation class - -The foundation class is needed to initialize higher level SDKs. There may be only one instance per process. -Calling this method after an instance has been created already will result in an error message and NULL will be -returned. - -\param version Version number we are expecting (should be PX_FOUNDATION_VERSION) -\param allocator User supplied interface for allocating memory(see #PxAllocatorCallback) -\param errorCallback User supplied interface for reporting errors and displaying messages(see #PxErrorCallback) -\return Foundation instance on success, NULL if operation failed - -@see PxFoundation -*/ - -PX_C_EXPORT PX_FOUNDATION_API physx::PxFoundation* PX_CALL_CONV -PxCreateFoundation(physx::PxU32 version, physx::PxAllocatorCallback& allocator, physx::PxErrorCallback& errorCallback); -/** -\brief Retrieves the Foundation SDK after it has been created. - -\note The behavior of this method is undefined if the foundation instance has not been created already. - -@see PxCreateFoundation() -*/ -PX_C_EXPORT PX_FOUNDATION_API physx::PxFoundation& PX_CALL_CONV PxGetFoundation(); - -namespace physx -{ -class PxProfilerCallback; -} - -/** -\brief Get the callback that will be used for all profiling. -*/ -PX_C_EXPORT PX_FOUNDATION_API physx::PxProfilerCallback* PX_CALL_CONV PxGetProfilerCallback(); - -/** -\brief Set the callback that will be used for all profiling. -*/ -PX_C_EXPORT PX_FOUNDATION_API void PX_CALL_CONV PxSetProfilerCallback(physx::PxProfilerCallback* profiler); - -/** @} */ -#endif // PX_FOUNDATION_PX_FOUNDATION_H diff --git a/NvCloth/samples/external/PxShared/1.0.21467209.1/include/foundation/PxFoundationVersion.h b/NvCloth/samples/external/PxShared/1.0.21467209.1/include/foundation/PxFoundationVersion.h deleted file mode 100644 index 6547405..0000000 --- a/NvCloth/samples/external/PxShared/1.0.21467209.1/include/foundation/PxFoundationVersion.h +++ /dev/null @@ -1,65 +0,0 @@ -// 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 PX_FOUNDATION_VERSION_NUMBER_H -#define PX_FOUNDATION_VERSION_NUMBER_H - -/* -VersionNumbers: The combination of these -numbers uniquely identifies the API, and should -be incremented when the SDK API changes. This may -include changes to file formats. - -This header is included in the main SDK header files -so that the entire SDK and everything that builds on it -is completely rebuilt when this file changes. Thus, -this file is not to include a frequently changing -build number. See BuildNumber.h for that. - -Each of these three values should stay below 255 because -sometimes they are stored in a byte. -*/ -/** \addtogroup foundation - @{ -*/ - -#define PX_FOUNDATION_VERSION_MAJOR 1 -#define PX_FOUNDATION_VERSION_MINOR 0 -#define PX_FOUNDATION_VERSION_BUGFIX 0 - -/** -The constant PX_FOUNDATION_VERSION is used when creating certain PhysX module objects. -This is to ensure that the application is using the same header version as the library was built with. -*/ -#define PX_FOUNDATION_VERSION \ - ((PX_FOUNDATION_VERSION_MAJOR << 24) + (PX_FOUNDATION_VERSION_MINOR << 16) + (PX_FOUNDATION_VERSION_BUGFIX << 8) + 0) - -#endif // PX_FOUNDATION_VERSION_NUMBER_H - -/** @} */ diff --git a/NvCloth/samples/external/PxShared/1.0.21467209.1/include/foundation/PxIO.h b/NvCloth/samples/external/PxShared/1.0.21467209.1/include/foundation/PxIO.h deleted file mode 100644 index 77ea1b6..0000000 --- a/NvCloth/samples/external/PxShared/1.0.21467209.1/include/foundation/PxIO.h +++ /dev/null @@ -1,138 +0,0 @@ -// 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 PXFOUNDATION_PXIO_H -#define PXFOUNDATION_PXIO_H - -/** \addtogroup common - @{ -*/ - -#include "foundation/PxSimpleTypes.h" - -#if !PX_DOXYGEN -namespace physx -{ -#endif - -/** -\brief Input stream class for I/O. - -The user needs to supply a PxInputStream implementation to a number of methods to allow the SDK to read data. -*/ - -class PxInputStream -{ - public: - /** - \brief read from the stream. The number of bytes read may be less than the number requested. - - \param[in] dest the destination address to which the data will be read - \param[in] count the number of bytes requested - - \return the number of bytes read from the stream. - */ - - virtual uint32_t read(void* dest, uint32_t count) = 0; - - virtual ~PxInputStream() - { - } -}; - -/** -\brief Input data class for I/O which provides random read access. - -The user needs to supply a PxInputData implementation to a number of methods to allow the SDK to read data. -*/ - -class PxInputData : public PxInputStream -{ - public: - /** - \brief return the length of the input data - - \return size in bytes of the input data - */ - - virtual uint32_t getLength() const = 0; - - /** - \brief seek to the given offset from the start of the data. - - \param[in] offset the offset to seek to. If greater than the length of the data, this call is equivalent to - seek(length); - */ - - virtual void seek(uint32_t offset) = 0; - - /** - \brief return the current offset from the start of the data - - \return the offset to seek to. - */ - - virtual uint32_t tell() const = 0; - - virtual ~PxInputData() - { - } -}; - -/** -\brief Output stream class for I/O. - -The user needs to supply a PxOutputStream implementation to a number of methods to allow the SDK to write data. -*/ - -class PxOutputStream -{ - public: - /** - \brief write to the stream. The number of bytes written may be less than the number sent. - - \param[in] src the destination address from which the data will be written - \param[in] count the number of bytes to be written - - \return the number of bytes written to the stream by this call. - */ - - virtual uint32_t write(const void* src, uint32_t count) = 0; - - virtual ~PxOutputStream() - { - } -}; - -#if !PX_DOXYGEN -} // namespace physx -#endif - -/** @} */ -#endif // #ifndef PXFOUNDATION_PXIO_H diff --git a/NvCloth/samples/external/PxShared/1.0.21467209.1/include/foundation/PxIntrinsics.h b/NvCloth/samples/external/PxShared/1.0.21467209.1/include/foundation/PxIntrinsics.h deleted file mode 100644 index 471f934..0000000 --- a/NvCloth/samples/external/PxShared/1.0.21467209.1/include/foundation/PxIntrinsics.h +++ /dev/null @@ -1,47 +0,0 @@ -// 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 PXFOUNDATION_PXINTRINSICS_H -#define PXFOUNDATION_PXINTRINSICS_H - -#include "foundation/PxPreprocessor.h" - -#if PX_WINDOWS_FAMILY -#include "foundation/windows/PxWindowsIntrinsics.h" -#elif(PX_LINUX || PX_ANDROID || PX_APPLE_FAMILY || PX_PS4) -#include "foundation/unix/PxUnixIntrinsics.h" -#elif PX_XBOXONE -#include "foundation/XboxOne/PxXboxOneIntrinsics.h" -#elif PX_NX -#include "foundation/nx/PxNXIntrinsics.h" -#else -#error "Platform not supported!" -#endif - -#endif // #ifndef PXFOUNDATION_PXINTRINSICS_H diff --git a/NvCloth/samples/external/PxShared/1.0.21467209.1/include/foundation/PxMat33.h b/NvCloth/samples/external/PxShared/1.0.21467209.1/include/foundation/PxMat33.h deleted file mode 100644 index a3977c5..0000000 --- a/NvCloth/samples/external/PxShared/1.0.21467209.1/include/foundation/PxMat33.h +++ /dev/null @@ -1,396 +0,0 @@ -// 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 PXFOUNDATION_PXMAT33_H -#define PXFOUNDATION_PXMAT33_H -/** \addtogroup foundation -@{ -*/ - -#include "foundation/PxVec3.h" -#include "foundation/PxQuat.h" - -#if !PX_DOXYGEN -namespace physx -{ -#endif -/*! -\brief 3x3 matrix class - -Some clarifications, as there have been much confusion about matrix formats etc in the past. - -Short: -- Matrix have base vectors in columns (vectors are column matrices, 3x1 matrices). -- Matrix is physically stored in column major format -- Matrices are concaternated from left - -Long: -Given three base vectors a, b and c the matrix is stored as - -|a.x b.x c.x| -|a.y b.y c.y| -|a.z b.z c.z| - -Vectors are treated as columns, so the vector v is - -|x| -|y| -|z| - -And matrices are applied _before_ the vector (pre-multiplication) -v' = M*v - -|x'| |a.x b.x c.x| |x| |a.x*x + b.x*y + c.x*z| -|y'| = |a.y b.y c.y| * |y| = |a.y*x + b.y*y + c.y*z| -|z'| |a.z b.z c.z| |z| |a.z*x + b.z*y + c.z*z| - - -Physical storage and indexing: -To be compatible with popular 3d rendering APIs (read D3d and OpenGL) -the physical indexing is - -|0 3 6| -|1 4 7| -|2 5 8| - -index = column*3 + row - -which in C++ translates to M[column][row] - -The mathematical indexing is M_row,column and this is what is used for _-notation -so _12 is 1st row, second column and operator(row, column)! - -*/ -class PxMat33 -{ - public: - //! Default constructor - PX_CUDA_CALLABLE PX_FORCE_INLINE PxMat33() - { - } - - //! identity constructor - PX_CUDA_CALLABLE PX_INLINE PxMat33(PxIDENTITY r) - : column0(1.0f, 0.0f, 0.0f), column1(0.0f, 1.0f, 0.0f), column2(0.0f, 0.0f, 1.0f) - { - PX_UNUSED(r); - } - - //! zero constructor - PX_CUDA_CALLABLE PX_INLINE PxMat33(PxZERO r) : column0(0.0f), column1(0.0f), column2(0.0f) - { - PX_UNUSED(r); - } - - //! Construct from three base vectors - PX_CUDA_CALLABLE PxMat33(const PxVec3& col0, const PxVec3& col1, const PxVec3& col2) - : column0(col0), column1(col1), column2(col2) - { - } - - //! constructor from a scalar, which generates a multiple of the identity matrix - explicit PX_CUDA_CALLABLE PX_INLINE PxMat33(float r) - : column0(r, 0.0f, 0.0f), column1(0.0f, r, 0.0f), column2(0.0f, 0.0f, r) - { - } - - //! Construct from float[9] - explicit PX_CUDA_CALLABLE PX_INLINE PxMat33(float values[]) - : column0(values[0], values[1], values[2]) - , column1(values[3], values[4], values[5]) - , column2(values[6], values[7], values[8]) - { - } - - //! Construct from a quaternion - explicit PX_CUDA_CALLABLE PX_FORCE_INLINE PxMat33(const PxQuat& q) - { - const float x = q.x; - const float y = q.y; - const float z = q.z; - const float w = q.w; - - const float x2 = x + x; - const float y2 = y + y; - const float z2 = z + z; - - const float xx = x2 * x; - const float yy = y2 * y; - const float zz = z2 * z; - - const float xy = x2 * y; - const float xz = x2 * z; - const float xw = x2 * w; - - const float yz = y2 * z; - const float yw = y2 * w; - const float zw = z2 * w; - - column0 = PxVec3(1.0f - yy - zz, xy + zw, xz - yw); - column1 = PxVec3(xy - zw, 1.0f - xx - zz, yz + xw); - column2 = PxVec3(xz + yw, yz - xw, 1.0f - xx - yy); - } - - //! Copy constructor - PX_CUDA_CALLABLE PX_INLINE PxMat33(const PxMat33& other) - : column0(other.column0), column1(other.column1), column2(other.column2) - { - } - - //! Assignment operator - PX_CUDA_CALLABLE PX_FORCE_INLINE PxMat33& operator=(const PxMat33& other) - { - column0 = other.column0; - column1 = other.column1; - column2 = other.column2; - return *this; - } - - //! Construct from diagonal, off-diagonals are zero. - PX_CUDA_CALLABLE PX_INLINE static const PxMat33 createDiagonal(const PxVec3& d) - { - return PxMat33(PxVec3(d.x, 0.0f, 0.0f), PxVec3(0.0f, d.y, 0.0f), PxVec3(0.0f, 0.0f, d.z)); - } - - /** - \brief returns true if the two matrices are exactly equal - */ - PX_CUDA_CALLABLE PX_INLINE bool operator==(const PxMat33& m) const - { - return column0 == m.column0 && column1 == m.column1 && column2 == m.column2; - } - - //! Get transposed matrix - PX_CUDA_CALLABLE PX_FORCE_INLINE const PxMat33 getTranspose() const - { - const PxVec3 v0(column0.x, column1.x, column2.x); - const PxVec3 v1(column0.y, column1.y, column2.y); - const PxVec3 v2(column0.z, column1.z, column2.z); - - return PxMat33(v0, v1, v2); - } - - //! Get the real inverse - PX_CUDA_CALLABLE PX_INLINE const PxMat33 getInverse() const - { - const float det = getDeterminant(); - PxMat33 inverse; - - if(det != 0) - { - const float invDet = 1.0f / det; - - inverse.column0.x = invDet * (column1.y * column2.z - column2.y * column1.z); - inverse.column0.y = invDet * -(column0.y * column2.z - column2.y * column0.z); - inverse.column0.z = invDet * (column0.y * column1.z - column0.z * column1.y); - - inverse.column1.x = invDet * -(column1.x * column2.z - column1.z * column2.x); - inverse.column1.y = invDet * (column0.x * column2.z - column0.z * column2.x); - inverse.column1.z = invDet * -(column0.x * column1.z - column0.z * column1.x); - - inverse.column2.x = invDet * (column1.x * column2.y - column1.y * column2.x); - inverse.column2.y = invDet * -(column0.x * column2.y - column0.y * column2.x); - inverse.column2.z = invDet * (column0.x * column1.y - column1.x * column0.y); - - return inverse; - } - else - { - return PxMat33(PxIdentity); - } - } - - //! Get determinant - PX_CUDA_CALLABLE PX_INLINE float getDeterminant() const - { - return column0.dot(column1.cross(column2)); - } - - //! Unary minus - PX_CUDA_CALLABLE PX_INLINE const PxMat33 operator-() const - { - return PxMat33(-column0, -column1, -column2); - } - - //! Add - PX_CUDA_CALLABLE PX_INLINE const PxMat33 operator+(const PxMat33& other) const - { - return PxMat33(column0 + other.column0, column1 + other.column1, column2 + other.column2); - } - - //! Subtract - PX_CUDA_CALLABLE PX_INLINE const PxMat33 operator-(const PxMat33& other) const - { - return PxMat33(column0 - other.column0, column1 - other.column1, column2 - other.column2); - } - - //! Scalar multiplication - PX_CUDA_CALLABLE PX_INLINE const PxMat33 operator*(float scalar) const - { - return PxMat33(column0 * scalar, column1 * scalar, column2 * scalar); - } - - friend PxMat33 operator*(float, const PxMat33&); - - //! Matrix vector multiplication (returns 'this->transform(vec)') - PX_CUDA_CALLABLE PX_INLINE const PxVec3 operator*(const PxVec3& vec) const - { - return transform(vec); - } - - // a <op>= b operators - - //! Matrix multiplication - PX_CUDA_CALLABLE PX_FORCE_INLINE const PxMat33 operator*(const PxMat33& other) const - { - // Rows from this <dot> columns from other - // column0 = transform(other.column0) etc - return PxMat33(transform(other.column0), transform(other.column1), transform(other.column2)); - } - - //! Equals-add - PX_CUDA_CALLABLE PX_INLINE PxMat33& operator+=(const PxMat33& other) - { - column0 += other.column0; - column1 += other.column1; - column2 += other.column2; - return *this; - } - - //! Equals-sub - PX_CUDA_CALLABLE PX_INLINE PxMat33& operator-=(const PxMat33& other) - { - column0 -= other.column0; - column1 -= other.column1; - column2 -= other.column2; - return *this; - } - - //! Equals scalar multiplication - PX_CUDA_CALLABLE PX_INLINE PxMat33& operator*=(float scalar) - { - column0 *= scalar; - column1 *= scalar; - column2 *= scalar; - return *this; - } - - //! Equals matrix multiplication - PX_CUDA_CALLABLE PX_INLINE PxMat33& operator*=(const PxMat33& other) - { - *this = *this * other; - return *this; - } - - //! Element access, mathematical way! - PX_DEPRECATED PX_CUDA_CALLABLE PX_FORCE_INLINE float operator()(unsigned int row, unsigned int col) const - { - return (*this)[col][row]; - } - - //! Element access, mathematical way! - PX_DEPRECATED PX_CUDA_CALLABLE PX_FORCE_INLINE float& operator()(unsigned int row, unsigned int col) - { - return (*this)[col][row]; - } - - // Transform etc - - //! Transform vector by matrix, equal to v' = M*v - PX_CUDA_CALLABLE PX_FORCE_INLINE const PxVec3 transform(const PxVec3& other) const - { - return column0 * other.x + column1 * other.y + column2 * other.z; - } - - //! Transform vector by matrix transpose, v' = M^t*v - PX_CUDA_CALLABLE PX_INLINE const PxVec3 transformTranspose(const PxVec3& other) const - { - return PxVec3(column0.dot(other), column1.dot(other), column2.dot(other)); - } - - PX_CUDA_CALLABLE PX_FORCE_INLINE const float* front() const - { - return &column0.x; - } - - PX_DEPRECATED PX_CUDA_CALLABLE PX_FORCE_INLINE PxVec3& operator[](unsigned int num) - { - return (&column0)[num]; - } - PX_DEPRECATED PX_CUDA_CALLABLE PX_FORCE_INLINE const PxVec3& operator[](unsigned int num) const - { - return (&column0)[num]; - } - - // Data, see above for format! - - PxVec3 column0, column1, column2; // the three base vectors -}; - -// implementation from PxQuat.h -PX_CUDA_CALLABLE PX_INLINE PxQuat::PxQuat(const PxMat33& m) -{ - if(m.column2.z < 0) - { - if(m.column0.x > m.column1.y) - { - float t = 1 + m.column0.x - m.column1.y - m.column2.z; - *this = PxQuat(t, m.column0.y + m.column1.x, m.column2.x + m.column0.z, m.column1.z - m.column2.y) * - (0.5f / PxSqrt(t)); - } - else - { - float t = 1 - m.column0.x + m.column1.y - m.column2.z; - *this = PxQuat(m.column0.y + m.column1.x, t, m.column1.z + m.column2.y, m.column2.x - m.column0.z) * - (0.5f / PxSqrt(t)); - } - } - else - { - if(m.column0.x < -m.column1.y) - { - float t = 1 - m.column0.x - m.column1.y + m.column2.z; - *this = PxQuat(m.column2.x + m.column0.z, m.column1.z + m.column2.y, t, m.column0.y - m.column1.x) * - (0.5f / PxSqrt(t)); - } - else - { - float t = 1 + m.column0.x + m.column1.y + m.column2.z; - *this = PxQuat(m.column1.z - m.column2.y, m.column2.x - m.column0.z, m.column0.y - m.column1.x, t) * - (0.5f / PxSqrt(t)); - } - } -} - -#if !PX_DOXYGEN -} // namespace physx -#endif - -/** @} */ -#endif // #ifndef PXFOUNDATION_PXMAT33_H diff --git a/NvCloth/samples/external/PxShared/1.0.21467209.1/include/foundation/PxMat44.h b/NvCloth/samples/external/PxShared/1.0.21467209.1/include/foundation/PxMat44.h deleted file mode 100644 index 95f4636..0000000 --- a/NvCloth/samples/external/PxShared/1.0.21467209.1/include/foundation/PxMat44.h +++ /dev/null @@ -1,376 +0,0 @@ -// 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 PXFOUNDATION_PXMAT44_H -#define PXFOUNDATION_PXMAT44_H -/** \addtogroup foundation -@{ -*/ - -#include "foundation/PxQuat.h" -#include "foundation/PxVec4.h" -#include "foundation/PxMat33.h" -#include "foundation/PxTransform.h" - -#if !PX_DOXYGEN -namespace physx -{ -#endif - -/*! -\brief 4x4 matrix class - -This class is layout-compatible with D3D and OpenGL matrices. More notes on layout are given in the PxMat33 - -@see PxMat33 PxTransform -*/ - -class PxMat44 -{ - public: - //! Default constructor - PX_CUDA_CALLABLE PX_INLINE PxMat44() - { - } - - //! identity constructor - PX_CUDA_CALLABLE PX_INLINE PxMat44(PxIDENTITY r) - : column0(1.0f, 0.0f, 0.0f, 0.0f) - , column1(0.0f, 1.0f, 0.0f, 0.0f) - , column2(0.0f, 0.0f, 1.0f, 0.0f) - , column3(0.0f, 0.0f, 0.0f, 1.0f) - { - PX_UNUSED(r); - } - - //! zero constructor - PX_CUDA_CALLABLE PX_INLINE PxMat44(PxZERO r) : column0(PxZero), column1(PxZero), column2(PxZero), column3(PxZero) - { - PX_UNUSED(r); - } - - //! Construct from four 4-vectors - PX_CUDA_CALLABLE PxMat44(const PxVec4& col0, const PxVec4& col1, const PxVec4& col2, const PxVec4& col3) - : column0(col0), column1(col1), column2(col2), column3(col3) - { - } - - //! constructor that generates a multiple of the identity matrix - explicit PX_CUDA_CALLABLE PX_INLINE PxMat44(float r) - : column0(r, 0.0f, 0.0f, 0.0f) - , column1(0.0f, r, 0.0f, 0.0f) - , column2(0.0f, 0.0f, r, 0.0f) - , column3(0.0f, 0.0f, 0.0f, r) - { - } - - //! Construct from three base vectors and a translation - PX_CUDA_CALLABLE PxMat44(const PxVec3& col0, const PxVec3& col1, const PxVec3& col2, const PxVec3& col3) - : column0(col0, 0), column1(col1, 0), column2(col2, 0), column3(col3, 1.0f) - { - } - - //! Construct from float[16] - explicit PX_CUDA_CALLABLE PX_INLINE PxMat44(float values[]) - : column0(values[0], values[1], values[2], values[3]) - , column1(values[4], values[5], values[6], values[7]) - , column2(values[8], values[9], values[10], values[11]) - , column3(values[12], values[13], values[14], values[15]) - { - } - - //! Construct from a quaternion - explicit PX_CUDA_CALLABLE PX_INLINE PxMat44(const PxQuat& q) - { - const float x = q.x; - const float y = q.y; - const float z = q.z; - const float w = q.w; - - const float x2 = x + x; - const float y2 = y + y; - const float z2 = z + z; - - const float xx = x2 * x; - const float yy = y2 * y; - const float zz = z2 * z; - - const float xy = x2 * y; - const float xz = x2 * z; - const float xw = x2 * w; - - const float yz = y2 * z; - const float yw = y2 * w; - const float zw = z2 * w; - - column0 = PxVec4(1.0f - yy - zz, xy + zw, xz - yw, 0.0f); - column1 = PxVec4(xy - zw, 1.0f - xx - zz, yz + xw, 0.0f); - column2 = PxVec4(xz + yw, yz - xw, 1.0f - xx - yy, 0.0f); - column3 = PxVec4(0.0f, 0.0f, 0.0f, 1.0f); - } - - //! Construct from a diagonal vector - explicit PX_CUDA_CALLABLE PX_INLINE PxMat44(const PxVec4& diagonal) - : column0(diagonal.x, 0.0f, 0.0f, 0.0f) - , column1(0.0f, diagonal.y, 0.0f, 0.0f) - , column2(0.0f, 0.0f, diagonal.z, 0.0f) - , column3(0.0f, 0.0f, 0.0f, diagonal.w) - { - } - - //! Construct from Mat33 and a translation - PX_CUDA_CALLABLE PxMat44(const PxMat33& axes, const PxVec3& position) - : column0(axes.column0, 0.0f), column1(axes.column1, 0.0f), column2(axes.column2, 0.0f), column3(position, 1.0f) - { - } - - PX_CUDA_CALLABLE PxMat44(const PxTransform& t) - { - *this = PxMat44(PxMat33(t.q), t.p); - } - - /** - \brief returns true if the two matrices are exactly equal - */ - PX_CUDA_CALLABLE PX_INLINE bool operator==(const PxMat44& m) const - { - return column0 == m.column0 && column1 == m.column1 && column2 == m.column2 && column3 == m.column3; - } - - //! Copy constructor - PX_CUDA_CALLABLE PX_INLINE PxMat44(const PxMat44& other) - : column0(other.column0), column1(other.column1), column2(other.column2), column3(other.column3) - { - } - - //! Assignment operator - PX_CUDA_CALLABLE PX_INLINE PxMat44& operator=(const PxMat44& other) - { - column0 = other.column0; - column1 = other.column1; - column2 = other.column2; - column3 = other.column3; - return *this; - } - - //! Get transposed matrix - PX_CUDA_CALLABLE PX_INLINE const PxMat44 getTranspose() const - { - return PxMat44( - PxVec4(column0.x, column1.x, column2.x, column3.x), PxVec4(column0.y, column1.y, column2.y, column3.y), - PxVec4(column0.z, column1.z, column2.z, column3.z), PxVec4(column0.w, column1.w, column2.w, column3.w)); - } - - //! Unary minus - PX_CUDA_CALLABLE PX_INLINE const PxMat44 operator-() const - { - return PxMat44(-column0, -column1, -column2, -column3); - } - - //! Add - PX_CUDA_CALLABLE PX_INLINE const PxMat44 operator+(const PxMat44& other) const - { - return PxMat44(column0 + other.column0, column1 + other.column1, column2 + other.column2, - column3 + other.column3); - } - - //! Subtract - PX_CUDA_CALLABLE PX_INLINE const PxMat44 operator-(const PxMat44& other) const - { - return PxMat44(column0 - other.column0, column1 - other.column1, column2 - other.column2, - column3 - other.column3); - } - - //! Scalar multiplication - PX_CUDA_CALLABLE PX_INLINE const PxMat44 operator*(float scalar) const - { - return PxMat44(column0 * scalar, column1 * scalar, column2 * scalar, column3 * scalar); - } - - friend PxMat44 operator*(float, const PxMat44&); - - //! Matrix multiplication - PX_CUDA_CALLABLE PX_INLINE const PxMat44 operator*(const PxMat44& other) const - { - // Rows from this <dot> columns from other - // column0 = transform(other.column0) etc - return PxMat44(transform(other.column0), transform(other.column1), transform(other.column2), - transform(other.column3)); - } - - // a <op>= b operators - - //! Equals-add - PX_CUDA_CALLABLE PX_INLINE PxMat44& operator+=(const PxMat44& other) - { - column0 += other.column0; - column1 += other.column1; - column2 += other.column2; - column3 += other.column3; - return *this; - } - - //! Equals-sub - PX_CUDA_CALLABLE PX_INLINE PxMat44& operator-=(const PxMat44& other) - { - column0 -= other.column0; - column1 -= other.column1; - column2 -= other.column2; - column3 -= other.column3; - return *this; - } - - //! Equals scalar multiplication - PX_CUDA_CALLABLE PX_INLINE PxMat44& operator*=(float scalar) - { - column0 *= scalar; - column1 *= scalar; - column2 *= scalar; - column3 *= scalar; - return *this; - } - - //! Equals matrix multiplication - PX_CUDA_CALLABLE PX_INLINE PxMat44& operator*=(const PxMat44& other) - { - *this = *this * other; - return *this; - } - - //! Element access, mathematical way! - PX_DEPRECATED PX_CUDA_CALLABLE PX_FORCE_INLINE float operator()(unsigned int row, unsigned int col) const - { - return (*this)[col][row]; - } - - //! Element access, mathematical way! - PX_DEPRECATED PX_CUDA_CALLABLE PX_FORCE_INLINE float& operator()(unsigned int row, unsigned int col) - { - return (*this)[col][row]; - } - - //! Transform vector by matrix, equal to v' = M*v - PX_CUDA_CALLABLE PX_INLINE const PxVec4 transform(const PxVec4& other) const - { - return column0 * other.x + column1 * other.y + column2 * other.z + column3 * other.w; - } - - //! Transform vector by matrix, equal to v' = M*v - PX_CUDA_CALLABLE PX_INLINE const PxVec3 transform(const PxVec3& other) const - { - return transform(PxVec4(other, 1.0f)).getXYZ(); - } - - //! Rotate vector by matrix, equal to v' = M*v - PX_CUDA_CALLABLE PX_INLINE const PxVec4 rotate(const PxVec4& other) const - { - return column0 * other.x + column1 * other.y + column2 * other.z; // + column3*0; - } - - //! Rotate vector by matrix, equal to v' = M*v - PX_CUDA_CALLABLE PX_INLINE const PxVec3 rotate(const PxVec3& other) const - { - return rotate(PxVec4(other, 1.0f)).getXYZ(); - } - - PX_CUDA_CALLABLE PX_INLINE const PxVec3 getBasis(int num) const - { - PX_ASSERT(num >= 0 && num < 3); - return (&column0)[num].getXYZ(); - } - - PX_CUDA_CALLABLE PX_INLINE const PxVec3 getPosition() const - { - return column3.getXYZ(); - } - - PX_CUDA_CALLABLE PX_INLINE void setPosition(const PxVec3& position) - { - column3.x = position.x; - column3.y = position.y; - column3.z = position.z; - } - - PX_CUDA_CALLABLE PX_FORCE_INLINE const float* front() const - { - return &column0.x; - } - - PX_DEPRECATED PX_CUDA_CALLABLE PX_FORCE_INLINE PxVec4& operator[](unsigned int num) - { - return (&column0)[num]; - } - PX_DEPRECATED PX_CUDA_CALLABLE PX_FORCE_INLINE const PxVec4& operator[](unsigned int num) const - { - return (&column0)[num]; - } - - PX_CUDA_CALLABLE PX_INLINE void scale(const PxVec4& p) - { - column0 *= p.x; - column1 *= p.y; - column2 *= p.z; - column3 *= p.w; - } - - PX_CUDA_CALLABLE PX_INLINE const PxMat44 inverseRT(void) const - { - PxVec3 r0(column0.x, column1.x, column2.x), r1(column0.y, column1.y, column2.y), - r2(column0.z, column1.z, column2.z); - - return PxMat44(r0, r1, r2, -(r0 * column3.x + r1 * column3.y + r2 * column3.z)); - } - - PX_CUDA_CALLABLE PX_INLINE bool isFinite() const - { - return column0.isFinite() && column1.isFinite() && column2.isFinite() && column3.isFinite(); - } - - // Data, see above for format! - - PxVec4 column0, column1, column2, column3; // the four base vectors -}; - -// implementation from PxTransform.h -PX_CUDA_CALLABLE PX_FORCE_INLINE PxTransform::PxTransform(const PxMat44& m) -{ - PxVec3 column0 = PxVec3(m.column0.x, m.column0.y, m.column0.z); - PxVec3 column1 = PxVec3(m.column1.x, m.column1.y, m.column1.z); - PxVec3 column2 = PxVec3(m.column2.x, m.column2.y, m.column2.z); - - q = PxQuat(PxMat33(column0, column1, column2)); - p = PxVec3(m.column3.x, m.column3.y, m.column3.z); -} - -#if !PX_DOXYGEN -} // namespace physx -#endif - -/** @} */ -#endif // #ifndef PXFOUNDATION_PXMAT44_H diff --git a/NvCloth/samples/external/PxShared/1.0.21467209.1/include/foundation/PxMath.h b/NvCloth/samples/external/PxShared/1.0.21467209.1/include/foundation/PxMath.h deleted file mode 100644 index 7cea398..0000000 --- a/NvCloth/samples/external/PxShared/1.0.21467209.1/include/foundation/PxMath.h +++ /dev/null @@ -1,338 +0,0 @@ -// 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 PXFOUNDATION_PXMATH_H -#define PXFOUNDATION_PXMATH_H - -/** \addtogroup foundation -@{ -*/ - -#include "foundation/PxPreprocessor.h" - -#if PX_VC -#pragma warning(push) -#pragma warning(disable : 4985) // 'symbol name': attributes not present on previous declaration -#endif -#include <math.h> -#if PX_VC -#pragma warning(pop) -#endif - -#include <float.h> -#include "foundation/PxIntrinsics.h" -#include "foundation/PxAssert.h" - -#if !PX_DOXYGEN -namespace physx -{ -#endif - -// constants -static const float PxPi = float(3.141592653589793); -static const float PxHalfPi = float(1.57079632679489661923); -static const float PxTwoPi = float(6.28318530717958647692); -static const float PxInvPi = float(0.31830988618379067154); -static const float PxInvTwoPi = float(0.15915494309189533577); -static const float PxPiDivTwo = float(1.57079632679489661923); -static const float PxPiDivFour = float(0.78539816339744830962); - -/** -\brief The return value is the greater of the two specified values. -*/ -template <class T> -PX_CUDA_CALLABLE PX_FORCE_INLINE T PxMax(T a, T b) -{ - return a < b ? b : a; -} - -//! overload for float to use fsel on xbox -template <> -PX_CUDA_CALLABLE PX_FORCE_INLINE float PxMax(float a, float b) -{ - return intrinsics::selectMax(a, b); -} - -/** -\brief The return value is the lesser of the two specified values. -*/ -template <class T> -PX_CUDA_CALLABLE PX_FORCE_INLINE T PxMin(T a, T b) -{ - return a < b ? a : b; -} - -template <> -//! overload for float to use fsel on xbox -PX_CUDA_CALLABLE PX_FORCE_INLINE float PxMin(float a, float b) -{ - return intrinsics::selectMin(a, b); -} - -/* -Many of these are just implemented as PX_CUDA_CALLABLE PX_FORCE_INLINE calls to the C lib right now, -but later we could replace some of them with some approximations or more -clever stuff. -*/ - -/** -\brief abs returns the absolute value of its argument. -*/ -PX_CUDA_CALLABLE PX_FORCE_INLINE float PxAbs(float a) -{ - return intrinsics::abs(a); -} - -PX_CUDA_CALLABLE PX_FORCE_INLINE bool PxEquals(float a, float b, float eps) -{ - return (PxAbs(a - b) < eps); -} - -/** -\brief abs returns the absolute value of its argument. -*/ -PX_CUDA_CALLABLE PX_FORCE_INLINE double PxAbs(double a) -{ - return ::fabs(a); -} - -/** -\brief abs returns the absolute value of its argument. -*/ -PX_CUDA_CALLABLE PX_FORCE_INLINE int32_t PxAbs(int32_t a) -{ - return ::abs(a); -} - -/** -\brief Clamps v to the range [hi,lo] -*/ -template <class T> -PX_CUDA_CALLABLE PX_FORCE_INLINE T PxClamp(T v, T lo, T hi) -{ - PX_ASSERT(lo <= hi); - return PxMin(hi, PxMax(lo, v)); -} - -//! \brief Square root. -PX_CUDA_CALLABLE PX_FORCE_INLINE float PxSqrt(float a) -{ - return intrinsics::sqrt(a); -} - -//! \brief Square root. -PX_CUDA_CALLABLE PX_FORCE_INLINE double PxSqrt(double a) -{ - return ::sqrt(a); -} - -//! \brief reciprocal square root. -PX_CUDA_CALLABLE PX_FORCE_INLINE float PxRecipSqrt(float a) -{ - return intrinsics::recipSqrt(a); -} - -//! \brief reciprocal square root. -PX_CUDA_CALLABLE PX_FORCE_INLINE double PxRecipSqrt(double a) -{ - return 1 / ::sqrt(a); -} - -//! trigonometry -- all angles are in radians. - -//! \brief Sine of an angle ( <b>Unit:</b> Radians ) -PX_CUDA_CALLABLE PX_FORCE_INLINE float PxSin(float a) -{ - return intrinsics::sin(a); -} - -//! \brief Sine of an angle ( <b>Unit:</b> Radians ) -PX_CUDA_CALLABLE PX_FORCE_INLINE double PxSin(double a) -{ - return ::sin(a); -} - -//! \brief Cosine of an angle (<b>Unit:</b> Radians) -PX_CUDA_CALLABLE PX_FORCE_INLINE float PxCos(float a) -{ - return intrinsics::cos(a); -} - -//! \brief Cosine of an angle (<b>Unit:</b> Radians) -PX_CUDA_CALLABLE PX_FORCE_INLINE double PxCos(double a) -{ - return ::cos(a); -} - -/** -\brief Tangent of an angle. -<b>Unit:</b> Radians -*/ -PX_CUDA_CALLABLE PX_FORCE_INLINE float PxTan(float a) -{ - return ::tanf(a); -} - -/** -\brief Tangent of an angle. -<b>Unit:</b> Radians -*/ -PX_CUDA_CALLABLE PX_FORCE_INLINE double PxTan(double a) -{ - return ::tan(a); -} - -/** -\brief Arcsine. -Returns angle between -PI/2 and PI/2 in radians -<b>Unit:</b> Radians -*/ -PX_CUDA_CALLABLE PX_FORCE_INLINE float PxAsin(float f) -{ - return ::asinf(PxClamp(f, -1.0f, 1.0f)); -} - -/** -\brief Arcsine. -Returns angle between -PI/2 and PI/2 in radians -<b>Unit:</b> Radians -*/ -PX_CUDA_CALLABLE PX_FORCE_INLINE double PxAsin(double f) -{ - return ::asin(PxClamp(f, -1.0, 1.0)); -} - -/** -\brief Arccosine. -Returns angle between 0 and PI in radians -<b>Unit:</b> Radians -*/ -PX_CUDA_CALLABLE PX_FORCE_INLINE float PxAcos(float f) -{ - return ::acosf(PxClamp(f, -1.0f, 1.0f)); -} - -/** -\brief Arccosine. -Returns angle between 0 and PI in radians -<b>Unit:</b> Radians -*/ -PX_CUDA_CALLABLE PX_FORCE_INLINE double PxAcos(double f) -{ - return ::acos(PxClamp(f, -1.0, 1.0)); -} - -/** -\brief ArcTangent. -Returns angle between -PI/2 and PI/2 in radians -<b>Unit:</b> Radians -*/ -PX_CUDA_CALLABLE PX_FORCE_INLINE float PxAtan(float a) -{ - return ::atanf(a); -} - -/** -\brief ArcTangent. -Returns angle between -PI/2 and PI/2 in radians -<b>Unit:</b> Radians -*/ -PX_CUDA_CALLABLE PX_FORCE_INLINE double PxAtan(double a) -{ - return ::atan(a); -} - -/** -\brief Arctangent of (x/y) with correct sign. -Returns angle between -PI and PI in radians -<b>Unit:</b> Radians -*/ -PX_CUDA_CALLABLE PX_FORCE_INLINE float PxAtan2(float x, float y) -{ - return ::atan2f(x, y); -} - -/** -\brief Arctangent of (x/y) with correct sign. -Returns angle between -PI and PI in radians -<b>Unit:</b> Radians -*/ -PX_CUDA_CALLABLE PX_FORCE_INLINE double PxAtan2(double x, double y) -{ - return ::atan2(x, y); -} - -//! \brief returns true if the passed number is a finite floating point number as opposed to INF, NAN, etc. -PX_CUDA_CALLABLE PX_FORCE_INLINE bool PxIsFinite(float f) -{ - return intrinsics::isFinite(f); -} - -//! \brief returns true if the passed number is a finite floating point number as opposed to INF, NAN, etc. -PX_CUDA_CALLABLE PX_FORCE_INLINE bool PxIsFinite(double f) -{ - return intrinsics::isFinite(f); -} - -PX_CUDA_CALLABLE PX_FORCE_INLINE float PxFloor(float a) -{ - return ::floorf(a); -} - -PX_CUDA_CALLABLE PX_FORCE_INLINE float PxExp(float a) -{ - return ::expf(a); -} - -PX_CUDA_CALLABLE PX_FORCE_INLINE float PxCeil(float a) -{ - return ::ceilf(a); -} - -PX_CUDA_CALLABLE PX_FORCE_INLINE float PxSign(float a) -{ - return physx::intrinsics::sign(a); -} - -PX_CUDA_CALLABLE PX_FORCE_INLINE float PxPow(float x, float y) -{ - return ::powf(x, y); -} - -PX_CUDA_CALLABLE PX_FORCE_INLINE float PxLog(float x) -{ - return ::logf(x); -} - -#if !PX_DOXYGEN -} // namespace physx -#endif - -/** @} */ -#endif // #ifndef PXFOUNDATION_PXMATH_H diff --git a/NvCloth/samples/external/PxShared/1.0.21467209.1/include/foundation/PxMathUtils.h b/NvCloth/samples/external/PxShared/1.0.21467209.1/include/foundation/PxMathUtils.h deleted file mode 100644 index 11ddde5..0000000 --- a/NvCloth/samples/external/PxShared/1.0.21467209.1/include/foundation/PxMathUtils.h +++ /dev/null @@ -1,73 +0,0 @@ -// 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 PXFOUNDATION_PXMATHUTILS_H -#define PXFOUNDATION_PXMATHUTILS_H - -/** \addtogroup common - @{ -*/ - -#include "foundation/Px.h" - -#if !PX_DOXYGEN -namespace physx -{ -#endif - -/** -\brief finds the shortest rotation between two vectors. - -\param[in] from the vector to start from -\param[in] target the vector to rotate to -\return a rotation about an axis normal to the two vectors which takes one to the other via the shortest path -*/ - -PX_FOUNDATION_API PxQuat PxShortestRotation(const PxVec3& from, const PxVec3& target); - -/* \brief diagonalizes a 3x3 symmetric matrix y - -The returned matrix satisfies M = R * D * R', where R is the rotation matrix for the output quaternion, R' its -transpose, and D the diagonal matrix - -If the matrix is not symmetric, the result is undefined. - -\param[in] m the matrix to diagonalize -\param[out] axes a quaternion rotation which diagonalizes the matrix -\return the vector diagonal of the diagonalized matrix. -*/ - -PX_FOUNDATION_API PxVec3 PxDiagonalize(const PxMat33& m, PxQuat& axes); - -#if !PX_DOXYGEN -} // namespace physx -#endif - -/** @} */ -#endif diff --git a/NvCloth/samples/external/PxShared/1.0.21467209.1/include/foundation/PxMemory.h b/NvCloth/samples/external/PxShared/1.0.21467209.1/include/foundation/PxMemory.h deleted file mode 100644 index b0191e3..0000000 --- a/NvCloth/samples/external/PxShared/1.0.21467209.1/include/foundation/PxMemory.h +++ /dev/null @@ -1,110 +0,0 @@ -// 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 PXFOUNDATION_PXMEMORY_H -#define PXFOUNDATION_PXMEMORY_H - -/** \addtogroup foundation -@{ -*/ - -#include "foundation/Px.h" -#include "foundation/PxIntrinsics.h" -#include "foundation/PxSimpleTypes.h" - -#if !PX_DOXYGEN -namespace physx -{ -#endif - -/** -\brief Sets the bytes of the provided buffer to zero. - -\param dest Pointer to block of memory to set zero. -\param count Number of bytes to set to zero. - -\return Pointer to memory block (same as input) -*/ -PX_FORCE_INLINE void* PxMemZero(void* dest, PxU32 count) -{ - return physx::intrinsics::memZero(dest, count); -} - -/** -\brief Sets the bytes of the provided buffer to the specified value. - -\param dest Pointer to block of memory to set to the specified value. -\param c Value to set the bytes of the block of memory to. -\param count Number of bytes to set to the specified value. - -\return Pointer to memory block (same as input) -*/ -PX_FORCE_INLINE void* PxMemSet(void* dest, PxI32 c, PxU32 count) -{ - return physx::intrinsics::memSet(dest, c, count); -} - -/** -\brief Copies the bytes of one memory block to another. The memory blocks must not overlap. - -\note Use #PxMemMove if memory blocks overlap. - -\param dest Pointer to block of memory to copy to. -\param src Pointer to block of memory to copy from. -\param count Number of bytes to copy. - -\return Pointer to destination memory block -*/ -PX_FORCE_INLINE void* PxMemCopy(void* PX_RESTRICT dest, const void* PX_RESTRICT src, PxU32 count) -{ - return physx::intrinsics::memCopy(dest, src, count); -} - -/** -\brief Copies the bytes of one memory block to another. The memory blocks can overlap. - -\note Use #PxMemCopy if memory blocks do not overlap. - -\param dest Pointer to block of memory to copy to. -\param src Pointer to block of memory to copy from. -\param count Number of bytes to copy. - -\return Pointer to destination memory block -*/ -PX_FORCE_INLINE void* PxMemMove(void* dest, const void* src, PxU32 count) -{ - return physx::intrinsics::memMove(dest, src, count); -} - -#if !PX_DOXYGEN -} // namespace physx -#endif - -/** @} */ -#endif // PXFOUNDATION_PXMEMORY_H diff --git a/NvCloth/samples/external/PxShared/1.0.21467209.1/include/foundation/PxPlane.h b/NvCloth/samples/external/PxShared/1.0.21467209.1/include/foundation/PxPlane.h deleted file mode 100644 index dcd542a..0000000 --- a/NvCloth/samples/external/PxShared/1.0.21467209.1/include/foundation/PxPlane.h +++ /dev/null @@ -1,145 +0,0 @@ -// 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 PXFOUNDATION_PXPLANE_H -#define PXFOUNDATION_PXPLANE_H - -/** \addtogroup foundation -@{ -*/ - -#include "foundation/PxMath.h" -#include "foundation/PxVec3.h" - -#if !PX_DOXYGEN -namespace physx -{ -#endif - -/** -\brief Representation of a plane. - - Plane equation used: n.dot(v) + d = 0 -*/ -class PxPlane -{ - public: - /** - \brief Constructor - */ - PX_CUDA_CALLABLE PX_FORCE_INLINE PxPlane() - { - } - - /** - \brief Constructor from a normal and a distance - */ - PX_CUDA_CALLABLE PX_FORCE_INLINE PxPlane(float nx, float ny, float nz, float distance) : n(nx, ny, nz), d(distance) - { - } - - /** - \brief Constructor from a normal and a distance - */ - PX_CUDA_CALLABLE PX_FORCE_INLINE PxPlane(const PxVec3& normal, float distance) : n(normal), d(distance) - { - } - - /** - \brief Constructor from a point on the plane and a normal - */ - PX_CUDA_CALLABLE PX_FORCE_INLINE PxPlane(const PxVec3& point, const PxVec3& normal) - : n(normal), d(-point.dot(n)) // p satisfies normal.dot(p) + d = 0 - { - } - - /** - \brief Constructor from three points - */ - PX_CUDA_CALLABLE PX_FORCE_INLINE PxPlane(const PxVec3& p0, const PxVec3& p1, const PxVec3& p2) - { - n = (p1 - p0).cross(p2 - p0).getNormalized(); - d = -p0.dot(n); - } - - /** - \brief returns true if the two planes are exactly equal - */ - PX_CUDA_CALLABLE PX_INLINE bool operator==(const PxPlane& p) const - { - return n == p.n && d == p.d; - } - - PX_CUDA_CALLABLE PX_FORCE_INLINE float distance(const PxVec3& p) const - { - return p.dot(n) + d; - } - - PX_CUDA_CALLABLE PX_FORCE_INLINE bool contains(const PxVec3& p) const - { - return PxAbs(distance(p)) < (1.0e-7f); - } - - /** - \brief projects p into the plane - */ - PX_CUDA_CALLABLE PX_FORCE_INLINE PxVec3 project(const PxVec3& p) const - { - return p - n * distance(p); - } - - /** - \brief find an arbitrary point in the plane - */ - PX_CUDA_CALLABLE PX_FORCE_INLINE PxVec3 pointInPlane() const - { - return -n * d; - } - - /** - \brief equivalent plane with unit normal - */ - - PX_CUDA_CALLABLE PX_FORCE_INLINE void normalize() - { - float denom = 1.0f / n.magnitude(); - n *= denom; - d *= denom; - } - - PxVec3 n; //!< The normal to the plane - float d; //!< The distance from the origin -}; - -#if !PX_DOXYGEN -} // namespace physx -#endif - -/** @} */ -#endif // #ifndef PXFOUNDATION_PXPLANE_H diff --git a/NvCloth/samples/external/PxShared/1.0.21467209.1/include/foundation/PxPreprocessor.h b/NvCloth/samples/external/PxShared/1.0.21467209.1/include/foundation/PxPreprocessor.h deleted file mode 100644 index 1bb74a4..0000000 --- a/NvCloth/samples/external/PxShared/1.0.21467209.1/include/foundation/PxPreprocessor.h +++ /dev/null @@ -1,536 +0,0 @@ -// 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 PXFOUNDATION_PXPREPROCESSOR_H -#define PXFOUNDATION_PXPREPROCESSOR_H - -#include <stddef.h> -#if !defined(PX_GENERATE_META_DATA) -#include <ciso646> -#endif -/** \addtogroup foundation - @{ -*/ - -/* -The following preprocessor identifiers specify compiler, OS, and architecture. -All definitions have a value of 1 or 0, use '#if' instead of '#ifdef'. -*/ - -/** -Compiler defines, see http://sourceforge.net/p/predef/wiki/Compilers/ -*/ -#if defined(_MSC_VER) -#if _MSC_VER >= 1900 -#define PX_VC 14 -#elif _MSC_VER >= 1800 -#define PX_VC 12 -#elif _MSC_VER >= 1700 -#define PX_VC 11 -#elif _MSC_VER >= 1600 -#define PX_VC 10 -#elif _MSC_VER >= 1500 -#define PX_VC 9 -#else -#error "Unknown VC version" -#endif -#elif defined(__clang__) -#define PX_CLANG 1 -#elif defined(__GNUC__) // note: __clang__ implies __GNUC__ -#define PX_GCC 1 -#else -#error "Unknown compiler" -#endif - -/** -Operating system defines, see http://sourceforge.net/p/predef/wiki/OperatingSystems/ -*/ -#if defined(_XBOX_ONE) -#define PX_XBOXONE 1 -#elif defined(_WIN64) // note: _XBOX_ONE implies _WIN64 -#define PX_WIN64 1 -#elif defined(_WIN32) // note: _M_PPC implies _WIN32 -#define PX_WIN32 1 -#elif defined(__ANDROID__) -#define PX_ANDROID 1 -#elif defined(__linux__) || defined (__EMSCRIPTEN__) // note: __ANDROID__ implies __linux__ -#define PX_LINUX 1 -#elif defined(__APPLE__) && (defined(__arm__) || defined(__arm64__)) -#define PX_IOS 1 -#elif defined(__APPLE__) -#define PX_OSX 1 -#elif defined(__ORBIS__) -#define PX_PS4 1 -#elif defined(__NX__) -#define PX_NX 1 -#else -#error "Unknown operating system" -#endif - -/** -Architecture defines, see http://sourceforge.net/p/predef/wiki/Architectures/ -*/ -#if defined(__x86_64__) || defined(_M_X64) // ps4 compiler defines _M_X64 without value -#define PX_X64 1 -#elif defined(__i386__) || defined(_M_IX86) || defined (__EMSCRIPTEN__) -#define PX_X86 1 -#elif defined(__arm64__) || defined(__aarch64__) -#define PX_A64 1 -#elif defined(__arm__) || defined(_M_ARM) -#define PX_ARM 1 -#elif defined(__ppc__) || defined(_M_PPC) || defined(__CELLOS_LV2__) -#define PX_PPC 1 -#else -#error "Unknown architecture" -#endif - -/** -SIMD defines -*/ -#if !defined(PX_SIMD_DISABLED) -#if defined(__i386__) || defined(_M_IX86) || defined(__x86_64__) || defined(_M_X64) || (defined (__EMSCRIPTEN__) && defined(__SSE2__)) -#define PX_SSE2 1 -#endif -#if defined(_M_ARM) || defined(__ARM_NEON__) || defined(__ARM_NEON) -#define PX_NEON 1 -#endif -#if defined(_M_PPC) || defined(__CELLOS_LV2__) -#define PX_VMX 1 -#endif -#endif - -/** -define anything not defined on this platform to 0 -*/ -#ifndef PX_VC -#define PX_VC 0 -#endif -#ifndef PX_CLANG -#define PX_CLANG 0 -#endif -#ifndef PX_GCC -#define PX_GCC 0 -#endif -#ifndef PX_XBOXONE -#define PX_XBOXONE 0 -#endif -#ifndef PX_WIN64 -#define PX_WIN64 0 -#endif -#ifndef PX_WIN32 -#define PX_WIN32 0 -#endif -#ifndef PX_ANDROID -#define PX_ANDROID 0 -#endif -#ifndef PX_LINUX -#define PX_LINUX 0 -#endif -#ifndef PX_IOS -#define PX_IOS 0 -#endif -#ifndef PX_OSX -#define PX_OSX 0 -#endif -#ifndef PX_PS4 -#define PX_PS4 0 -#endif -#ifndef PX_NX -#define PX_NX 0 -#endif -#ifndef PX_X64 -#define PX_X64 0 -#endif -#ifndef PX_X86 -#define PX_X86 0 -#endif -#ifndef PX_A64 -#define PX_A64 0 -#endif -#ifndef PX_ARM -#define PX_ARM 0 -#endif -#ifndef PX_PPC -#define PX_PPC 0 -#endif -#ifndef PX_SSE2 -#define PX_SSE2 0 -#endif -#ifndef PX_NEON -#define PX_NEON 0 -#endif -#ifndef PX_VMX -#define PX_VMX 0 -#endif - -/* -define anything not defined through the command line to 0 -*/ -#ifndef PX_DEBUG -#define PX_DEBUG 0 -#endif -#ifndef PX_CHECKED -#define PX_CHECKED 0 -#endif -#ifndef PX_PROFILE -#define PX_PROFILE 0 -#endif -#ifndef PX_NVTX -#define PX_NVTX 0 -#endif -#ifndef PX_DOXYGEN -#define PX_DOXYGEN 0 -#endif - -/** -family shortcuts -*/ -// compiler -#define PX_GCC_FAMILY (PX_CLANG || PX_GCC) -// os -#define PX_WINDOWS_FAMILY (PX_WIN32 || PX_WIN64) -#define PX_MICROSOFT_FAMILY (PX_XBOXONE || PX_WINDOWS_FAMILY) -#define PX_LINUX_FAMILY (PX_LINUX || PX_ANDROID) -#define PX_APPLE_FAMILY (PX_IOS || PX_OSX) // equivalent to #if __APPLE__ -#define PX_UNIX_FAMILY (PX_LINUX_FAMILY || PX_APPLE_FAMILY) // shortcut for unix/posix platforms -#if defined(__EMSCRIPTEN__) -#define PX_EMSCRIPTEN 1 -#else -#define PX_EMSCRIPTEN 0 -#endif -// architecture -#define PX_INTEL_FAMILY (PX_X64 || PX_X86) -#define PX_ARM_FAMILY (PX_ARM || PX_A64) -#define PX_P64_FAMILY (PX_X64 || PX_A64) // shortcut for 64-bit architectures - -/** -C++ standard library defines -*/ -#if defined(_LIBCPP_VERSION) || PX_WIN64 || PX_WIN32 || PX_PS4 || PX_XBOXONE || PX_EMSCRIPTEN -#define PX_LIBCPP 1 -#else -#define PX_LIBCPP 0 -#endif - -// legacy define for PhysX -#define PX_WINDOWS (PX_WINDOWS_FAMILY && !PX_ARM_FAMILY) - -/** -Assert macro -*/ -#ifndef PX_ENABLE_ASSERTS -#if PX_DEBUG && !defined(__CUDACC__) -#define PX_ENABLE_ASSERTS 1 -#else -#define PX_ENABLE_ASSERTS 0 -#endif -#endif - -/** -DLL export macros -*/ -#ifndef PX_C_EXPORT -#if PX_WINDOWS_FAMILY || PX_LINUX -#define PX_C_EXPORT extern "C" -#else -#define PX_C_EXPORT -#endif -#endif - -#if PX_UNIX_FAMILY&& __GNUC__ >= 4 -#define PX_UNIX_EXPORT __attribute__((visibility("default"))) -#else -#define PX_UNIX_EXPORT -#endif - -#if PX_WINDOWS_FAMILY -#define PX_DLL_EXPORT __declspec(dllexport) -#define PX_DLL_IMPORT __declspec(dllimport) -#else -#define PX_DLL_EXPORT PX_UNIX_EXPORT -#define PX_DLL_IMPORT -#endif - -/** -Define API function declaration - -PX_FOUNDATION_DLL=1 - used by the DLL library (PhysXCommon) to export the API -PX_FOUNDATION_DLL=0 - for windows configurations where the PX_FOUNDATION_API is linked through standard static linking -no definition - this will allow DLLs and libraries to use the exported API from PhysXCommon - -*/ - -#if PX_WINDOWS_FAMILY && !PX_ARM_FAMILY -#ifndef PX_FOUNDATION_DLL -#define PX_FOUNDATION_API PX_DLL_IMPORT -#elif PX_FOUNDATION_DLL -#define PX_FOUNDATION_API PX_DLL_EXPORT -#endif -#elif PX_UNIX_FAMILY -#ifdef PX_FOUNDATION_DLL -#define PX_FOUNDATION_API PX_UNIX_EXPORT -#endif -#endif - -#ifndef PX_FOUNDATION_API -#define PX_FOUNDATION_API -#endif - -/** -Calling convention -*/ -#ifndef PX_CALL_CONV -#if PX_MICROSOFT_FAMILY -#define PX_CALL_CONV __cdecl -#else -#define PX_CALL_CONV -#endif -#endif - -/** -Pack macros - disabled on SPU because they are not supported -*/ -#if PX_VC -#define PX_PUSH_PACK_DEFAULT __pragma(pack(push, 8)) -#define PX_POP_PACK __pragma(pack(pop)) -#elif PX_GCC_FAMILY -#define PX_PUSH_PACK_DEFAULT _Pragma("pack(push, 8)") -#define PX_POP_PACK _Pragma("pack(pop)") -#else -#define PX_PUSH_PACK_DEFAULT -#define PX_POP_PACK -#endif - -/** -Inline macro -*/ -#define PX_INLINE inline -#if PX_MICROSOFT_FAMILY -#pragma inline_depth(255) -#endif - -/** -Force inline macro -*/ -#if PX_VC -#define PX_FORCE_INLINE __forceinline -#elif PX_LINUX // Workaround; Fedora Core 3 do not agree with force inline and PxcPool -#define PX_FORCE_INLINE inline -#elif PX_GCC_FAMILY -#define PX_FORCE_INLINE inline __attribute__((always_inline)) -#else -#define PX_FORCE_INLINE inline -#endif - -/** -Noinline macro -*/ -#if PX_MICROSOFT_FAMILY -#define PX_NOINLINE __declspec(noinline) -#elif PX_GCC_FAMILY -#define PX_NOINLINE __attribute__((noinline)) -#else -#define PX_NOINLINE -#endif - -/** -Restrict macro -*/ -#if defined(__CUDACC__) -#define PX_RESTRICT __restrict__ -#else -#define PX_RESTRICT __restrict -#endif - -/** -Noalias macro -*/ -#if PX_MICROSOFT_FAMILY -#define PX_NOALIAS __declspec(noalias) -#else -#define PX_NOALIAS -#endif - -/** -Alignment macros - -PX_ALIGN_PREFIX and PX_ALIGN_SUFFIX can be used for type alignment instead of aligning individual variables as follows: -PX_ALIGN_PREFIX(16) -struct A { -... -} PX_ALIGN_SUFFIX(16); -This declaration style is parsed correctly by Visual Assist. - -*/ -#ifndef PX_ALIGN -#if PX_MICROSOFT_FAMILY -#define PX_ALIGN(alignment, decl) __declspec(align(alignment)) decl -#define PX_ALIGN_PREFIX(alignment) __declspec(align(alignment)) -#define PX_ALIGN_SUFFIX(alignment) -#elif PX_GCC_FAMILY -#define PX_ALIGN(alignment, decl) decl __attribute__((aligned(alignment))) -#define PX_ALIGN_PREFIX(alignment) -#define PX_ALIGN_SUFFIX(alignment) __attribute__((aligned(alignment))) -#elif defined __CUDACC__ -#define PX_ALIGN(alignment, decl) __align__(alignment) decl -#define PX_ALIGN_PREFIX(alignment) -#define PX_ALIGN_SUFFIX(alignment) __align__(alignment)) -#else -#define PX_ALIGN(alignment, decl) -#define PX_ALIGN_PREFIX(alignment) -#define PX_ALIGN_SUFFIX(alignment) -#endif -#endif - -/** -Deprecated macro -- To deprecate a function: Place PX_DEPRECATED at the start of the function header (leftmost word). -- To deprecate a 'typedef', a 'struct' or a 'class': Place PX_DEPRECATED directly after the keywords ('typdef', -'struct', 'class'). - -Use these macro definitions to create warnings for deprecated functions -\#define PX_DEPRECATED __declspec(deprecated) // Microsoft -\#define PX_DEPRECATED __attribute__((deprecated())) // GCC -*/ -#define PX_DEPRECATED - -/** -General defines -*/ - -// static assert -#if(defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7))) || (PX_PS4) || (PX_APPLE_FAMILY) || (PX_NX) -#define PX_COMPILE_TIME_ASSERT(exp) typedef char PxCompileTimeAssert_Dummy[(exp) ? 1 : -1] __attribute__((unused)) -#else -#define PX_COMPILE_TIME_ASSERT(exp) typedef char PxCompileTimeAssert_Dummy[(exp) ? 1 : -1] -#endif - -#if PX_GCC_FAMILY -#define PX_OFFSET_OF(X, Y) __builtin_offsetof(X, Y) -#else -#define PX_OFFSET_OF(X, Y) offsetof(X, Y) -#endif - -#define PX_OFFSETOF_BASE 0x100 // casting the null ptr takes a special-case code path, which we don't want -#define PX_OFFSET_OF_RT(Class, Member) \ - (reinterpret_cast<size_t>(&reinterpret_cast<Class*>(PX_OFFSETOF_BASE)->Member) - size_t(PX_OFFSETOF_BASE)) - -// check that exactly one of NDEBUG and _DEBUG is defined -#if !defined(NDEBUG) ^ defined(_DEBUG) -#error Exactly one of NDEBUG and _DEBUG needs to be defined! -#endif - -// make sure PX_CHECKED is defined in all _DEBUG configurations as well -#if !PX_CHECKED && PX_DEBUG -#error PX_CHECKED must be defined when PX_DEBUG is defined -#endif - -#ifdef __CUDACC__ -#define PX_CUDA_CALLABLE __host__ __device__ -#else -#define PX_CUDA_CALLABLE -#endif - -// avoid unreferenced parameter warning -// preferred solution: omit the parameter's name from the declaration -template <class T> -PX_CUDA_CALLABLE PX_INLINE void PX_UNUSED(T const&) -{ -} - -// Ensure that the application hasn't tweaked the pack value to less than 8, which would break -// matching between the API headers and the binaries -// This assert works on win32/win64, but may need further specialization on other platforms. -// Some GCC compilers need the compiler flag -malign-double to be set. -// Apparently the apple-clang-llvm compiler doesn't support malign-double. -#if PX_PS4 || PX_APPLE_FAMILY -struct PxPackValidation -{ - char _; - long a; -}; -#elif PX_ANDROID -struct PxPackValidation -{ - char _; - double a; -}; -#else -struct PxPackValidation -{ - char _; - long long a; -}; -#endif -#if !PX_APPLE_FAMILY -PX_COMPILE_TIME_ASSERT(PX_OFFSET_OF(PxPackValidation, a) == 8); -#endif - -// use in a cpp file to suppress LNK4221 -#if PX_VC -#define PX_DUMMY_SYMBOL \ - namespace \ - { \ - char PxDummySymbol; \ - } -#else -#define PX_DUMMY_SYMBOL -#endif - -#if PX_GCC_FAMILY -#define PX_WEAK_SYMBOL __attribute__((weak)) // this is to support SIMD constant merging in template specialization -#else -#define PX_WEAK_SYMBOL -#endif - -// Macro for avoiding default assignment and copy, because doing this by inheritance can increase class size on some -// platforms. -#define PX_NOCOPY(Class) \ - \ -protected: \ - Class(const Class&); \ - Class& operator=(const Class&); - -#define PX_STRINGIZE_HELPER(X) #X -#define PX_STRINGIZE(X) PX_STRINGIZE_HELPER(X) - -#define PX_CONCAT_HELPER(X, Y) X##Y -#define PX_CONCAT(X, Y) PX_CONCAT_HELPER(X, Y) - -#ifndef DISABLE_CUDA_PHYSX -//CUDA is currently supported only on windows -#define PX_SUPPORT_GPU_PHYSX ((PX_WINDOWS_FAMILY) || (PX_LINUX && PX_X64)) -#else -#define PX_SUPPORT_GPU_PHYSX 0 -#endif - -#define PX_SUPPORT_COMPUTE_PHYSX 0 - -/** @} */ -#endif // #ifndef PXFOUNDATION_PXPREPROCESSOR_H diff --git a/NvCloth/samples/external/PxShared/1.0.21467209.1/include/foundation/PxProfiler.h b/NvCloth/samples/external/PxShared/1.0.21467209.1/include/foundation/PxProfiler.h deleted file mode 100644 index 4864969..0000000 --- a/NvCloth/samples/external/PxShared/1.0.21467209.1/include/foundation/PxProfiler.h +++ /dev/null @@ -1,116 +0,0 @@ -// 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. - -#ifndef PXFOUNDATION_PXPROFILER_H -#define PXFOUNDATION_PXPROFILER_H - -#include "foundation/PxFoundation.h" - -namespace physx -{ - -/** -\brief The pure virtual callback interface for general purpose instrumentation and profiling of GameWorks modules as -well as applications -*/ -class PxProfilerCallback -{ -protected: - virtual ~PxProfilerCallback() {} - -public: - /************************************************************************************************************************** - Instrumented profiling events - ***************************************************************************************************************************/ - - /** - \brief Mark the beginning of a nested profile block - \param[in] eventName Event name. Must be a persistent const char * - \param[in] detached True for cross thread events - \param[in] contextId the context id of this zone. Zones with the same id belong to the same group. 0 is used for no specific group. - \return Returns implementation-specific profiler data for this event - */ - virtual void* zoneStart(const char* eventName, bool detached, uint64_t contextId) = 0; - - /** - \brief Mark the end of a nested profile block - \param[in] profilerData The data returned by the corresponding zoneStart call (or NULL if not available) - \param[in] eventName The name of the zone ending, must match the corresponding name passed with 'zoneStart'. Must be a persistent const char *. - \param[in] detached True for cross thread events. Should match the value passed to zoneStart. - \param[in] contextId The context of this zone. Should match the value passed to zoneStart. - - \note eventName plus contextId can be used to uniquely match up start and end of a zone. - */ - virtual void zoneEnd(void* profilerData, const char* eventName, bool detached, uint64_t contextId) = 0; -}; - -class PxProfileScoped -{ - public: - PX_FORCE_INLINE PxProfileScoped(const char* eventName, bool detached, uint64_t contextId) : mCallback(PxGetProfilerCallback()), mProfilerData(NULL) - { - if(mCallback) - { - mEventName = eventName; - mContextId = contextId; - mDetached = detached; - mProfilerData = mCallback->zoneStart(eventName, detached, contextId); - } - } - - PX_FORCE_INLINE ~PxProfileScoped() - { - if(mCallback) - mCallback->zoneEnd(mProfilerData, mEventName, mDetached, mContextId); - } - physx::PxProfilerCallback* mCallback; - const char* mEventName; - void* mProfilerData; - uint64_t mContextId; - bool mDetached; -}; - -} // end of physx namespace - -#if PX_DEBUG || PX_CHECKED || PX_PROFILE - #define PX_PROFILE_ZONE(x, y) \ - physx::PxProfileScoped PX_CONCAT(_scoped, __LINE__)(x, false, y) - #define PX_PROFILE_START_CROSSTHREAD(x, y) \ - if(PxGetProfilerCallback()) \ - PxGetProfilerCallback()->zoneStart(x, true, y) - #define PX_PROFILE_STOP_CROSSTHREAD(x, y) \ - if(PxGetProfilerCallback()) \ - PxGetProfilerCallback()->zoneEnd(NULL, x, true, y) -#else - #define PX_PROFILE_ZONE(x, y) - #define PX_PROFILE_START_CROSSTHREAD(x, y) - #define PX_PROFILE_STOP_CROSSTHREAD(x, y) -#endif - -#define PX_PROFILE_POINTER_TO_U64(pointer) static_cast<uint64_t>(reinterpret_cast<size_t>(pointer)) - -#endif // PXFOUNDATION_PXPROFILER_H diff --git a/NvCloth/samples/external/PxShared/1.0.21467209.1/include/foundation/PxQuat.h b/NvCloth/samples/external/PxShared/1.0.21467209.1/include/foundation/PxQuat.h deleted file mode 100644 index 1313b0e..0000000 --- a/NvCloth/samples/external/PxShared/1.0.21467209.1/include/foundation/PxQuat.h +++ /dev/null @@ -1,403 +0,0 @@ -// 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 PXFOUNDATION_PXQUAT_H -#define PXFOUNDATION_PXQUAT_H - -/** \addtogroup foundation -@{ -*/ - -#include "foundation/PxVec3.h" -#if !PX_DOXYGEN -namespace physx -{ -#endif - -/** -\brief This is a quaternion class. For more information on quaternion mathematics -consult a mathematics source on complex numbers. - -*/ - -class PxQuat -{ - public: - /** - \brief Default constructor, does not do any initialization. - */ - PX_CUDA_CALLABLE PX_FORCE_INLINE PxQuat() - { - } - - //! identity constructor - PX_CUDA_CALLABLE PX_INLINE PxQuat(PxIDENTITY r) : x(0.0f), y(0.0f), z(0.0f), w(1.0f) - { - PX_UNUSED(r); - } - - /** - \brief Constructor from a scalar: sets the real part w to the scalar value, and the imaginary parts (x,y,z) to zero - */ - explicit PX_CUDA_CALLABLE PX_FORCE_INLINE PxQuat(float r) : x(0.0f), y(0.0f), z(0.0f), w(r) - { - } - - /** - \brief Constructor. Take note of the order of the elements! - */ - PX_CUDA_CALLABLE PX_FORCE_INLINE PxQuat(float nx, float ny, float nz, float nw) : x(nx), y(ny), z(nz), w(nw) - { - } - - /** - \brief Creates from angle-axis representation. - - Axis must be normalized! - - Angle is in radians! - - <b>Unit:</b> Radians - */ - PX_CUDA_CALLABLE PX_INLINE PxQuat(float angleRadians, const PxVec3& unitAxis) - { - PX_ASSERT(PxAbs(1.0f - unitAxis.magnitude()) < 1e-3f); - const float a = angleRadians * 0.5f; - const float s = PxSin(a); - w = PxCos(a); - x = unitAxis.x * s; - y = unitAxis.y * s; - z = unitAxis.z * s; - } - - /** - \brief Copy ctor. - */ - PX_CUDA_CALLABLE PX_FORCE_INLINE PxQuat(const PxQuat& v) : x(v.x), y(v.y), z(v.z), w(v.w) - { - } - - /** - \brief Creates from orientation matrix. - - \param[in] m Rotation matrix to extract quaternion from. - */ - PX_CUDA_CALLABLE PX_INLINE explicit PxQuat(const PxMat33& m); /* defined in PxMat33.h */ - - /** - \brief returns true if quat is identity - */ - PX_CUDA_CALLABLE PX_FORCE_INLINE bool isIdentity() const - { - return x==0.0f && y==0.0f && z==0.0f && w==1.0f; - } - - /** - \brief returns true if all elements are finite (not NAN or INF, etc.) - */ - PX_CUDA_CALLABLE bool isFinite() const - { - return PxIsFinite(x) && PxIsFinite(y) && PxIsFinite(z) && PxIsFinite(w); - } - - /** - \brief returns true if finite and magnitude is close to unit - */ - PX_CUDA_CALLABLE bool isUnit() const - { - const float unitTolerance = 1e-4f; - return isFinite() && PxAbs(magnitude() - 1) < unitTolerance; - } - - /** - \brief returns true if finite and magnitude is reasonably close to unit to allow for some accumulation of error vs - isValid - */ - PX_CUDA_CALLABLE bool isSane() const - { - const float unitTolerance = 1e-2f; - return isFinite() && PxAbs(magnitude() - 1) < unitTolerance; - } - - /** - \brief returns true if the two quaternions are exactly equal - */ - PX_CUDA_CALLABLE PX_INLINE bool operator==(const PxQuat& q) const - { - return x == q.x && y == q.y && z == q.z && w == q.w; - } - - /** - \brief converts this quaternion to angle-axis representation - */ - PX_CUDA_CALLABLE PX_INLINE void toRadiansAndUnitAxis(float& angle, PxVec3& axis) const - { - const float quatEpsilon = 1.0e-8f; - const float s2 = x * x + y * y + z * z; - if(s2 < quatEpsilon * quatEpsilon) // can't extract a sensible axis - { - angle = 0.0f; - axis = PxVec3(1.0f, 0.0f, 0.0f); - } - else - { - const float s = PxRecipSqrt(s2); - axis = PxVec3(x, y, z) * s; - angle = PxAbs(w) < quatEpsilon ? PxPi : PxAtan2(s2 * s, w) * 2.0f; - } - } - - /** - \brief Gets the angle between this quat and the identity quaternion. - - <b>Unit:</b> Radians - */ - PX_CUDA_CALLABLE PX_INLINE float getAngle() const - { - return PxAcos(w) * 2.0f; - } - - /** - \brief Gets the angle between this quat and the argument - - <b>Unit:</b> Radians - */ - PX_CUDA_CALLABLE PX_INLINE float getAngle(const PxQuat& q) const - { - return PxAcos(dot(q)) * 2.0f; - } - - /** - \brief This is the squared 4D vector length, should be 1 for unit quaternions. - */ - PX_CUDA_CALLABLE PX_FORCE_INLINE float magnitudeSquared() const - { - return x * x + y * y + z * z + w * w; - } - - /** - \brief returns the scalar product of this and other. - */ - PX_CUDA_CALLABLE PX_FORCE_INLINE float dot(const PxQuat& v) const - { - return x * v.x + y * v.y + z * v.z + w * v.w; - } - - PX_CUDA_CALLABLE PX_INLINE PxQuat getNormalized() const - { - const float s = 1.0f / magnitude(); - return PxQuat(x * s, y * s, z * s, w * s); - } - - PX_CUDA_CALLABLE PX_INLINE float magnitude() const - { - return PxSqrt(magnitudeSquared()); - } - - // modifiers: - /** - \brief maps to the closest unit quaternion. - */ - PX_CUDA_CALLABLE PX_INLINE float normalize() // convert this PxQuat to a unit quaternion - { - const float mag = magnitude(); - if(mag != 0.0f) - { - const float imag = 1.0f / mag; - - x *= imag; - y *= imag; - z *= imag; - w *= imag; - } - return mag; - } - - /* - \brief returns the conjugate. - - \note for unit quaternions, this is the inverse. - */ - PX_CUDA_CALLABLE PX_INLINE PxQuat getConjugate() const - { - return PxQuat(-x, -y, -z, w); - } - - /* - \brief returns imaginary part. - */ - PX_CUDA_CALLABLE PX_INLINE PxVec3 getImaginaryPart() const - { - return PxVec3(x, y, z); - } - - /** brief computes rotation of x-axis */ - PX_CUDA_CALLABLE PX_FORCE_INLINE PxVec3 getBasisVector0() const - { - const float x2 = x * 2.0f; - const float w2 = w * 2.0f; - return PxVec3((w * w2) - 1.0f + x * x2, (z * w2) + y * x2, (-y * w2) + z * x2); - } - - /** brief computes rotation of y-axis */ - PX_CUDA_CALLABLE PX_FORCE_INLINE PxVec3 getBasisVector1() const - { - const float y2 = y * 2.0f; - const float w2 = w * 2.0f; - return PxVec3((-z * w2) + x * y2, (w * w2) - 1.0f + y * y2, (x * w2) + z * y2); - } - - /** brief computes rotation of z-axis */ - PX_CUDA_CALLABLE PX_FORCE_INLINE PxVec3 getBasisVector2() const - { - const float z2 = z * 2.0f; - const float w2 = w * 2.0f; - return PxVec3((y * w2) + x * z2, (-x * w2) + y * z2, (w * w2) - 1.0f + z * z2); - } - - /** - rotates passed vec by this (assumed unitary) - */ - PX_CUDA_CALLABLE PX_FORCE_INLINE const PxVec3 rotate(const PxVec3& v) const - { - const float vx = 2.0f * v.x; - const float vy = 2.0f * v.y; - const float vz = 2.0f * v.z; - const float w2 = w * w - 0.5f; - const float dot2 = (x * vx + y * vy + z * vz); - return PxVec3((vx * w2 + (y * vz - z * vy) * w + x * dot2), (vy * w2 + (z * vx - x * vz) * w + y * dot2), - (vz * w2 + (x * vy - y * vx) * w + z * dot2)); - } - - /** - inverse rotates passed vec by this (assumed unitary) - */ - PX_CUDA_CALLABLE PX_FORCE_INLINE const PxVec3 rotateInv(const PxVec3& v) const - { - const float vx = 2.0f * v.x; - const float vy = 2.0f * v.y; - const float vz = 2.0f * v.z; - const float w2 = w * w - 0.5f; - const float dot2 = (x * vx + y * vy + z * vz); - return PxVec3((vx * w2 - (y * vz - z * vy) * w + x * dot2), (vy * w2 - (z * vx - x * vz) * w + y * dot2), - (vz * w2 - (x * vy - y * vx) * w + z * dot2)); - } - - /** - \brief Assignment operator - */ - PX_CUDA_CALLABLE PX_FORCE_INLINE PxQuat& operator=(const PxQuat& p) - { - x = p.x; - y = p.y; - z = p.z; - w = p.w; - return *this; - } - - PX_CUDA_CALLABLE PX_FORCE_INLINE PxQuat& operator*=(const PxQuat& q) - { - const float tx = w * q.x + q.w * x + y * q.z - q.y * z; - const float ty = w * q.y + q.w * y + z * q.x - q.z * x; - const float tz = w * q.z + q.w * z + x * q.y - q.x * y; - - w = w * q.w - q.x * x - y * q.y - q.z * z; - x = tx; - y = ty; - z = tz; - - return *this; - } - - PX_CUDA_CALLABLE PX_FORCE_INLINE PxQuat& operator+=(const PxQuat& q) - { - x += q.x; - y += q.y; - z += q.z; - w += q.w; - return *this; - } - - PX_CUDA_CALLABLE PX_FORCE_INLINE PxQuat& operator-=(const PxQuat& q) - { - x -= q.x; - y -= q.y; - z -= q.z; - w -= q.w; - return *this; - } - - PX_CUDA_CALLABLE PX_FORCE_INLINE PxQuat& operator*=(const float s) - { - x *= s; - y *= s; - z *= s; - w *= s; - return *this; - } - - /** quaternion multiplication */ - PX_CUDA_CALLABLE PX_INLINE PxQuat operator*(const PxQuat& q) const - { - return PxQuat(w * q.x + q.w * x + y * q.z - q.y * z, w * q.y + q.w * y + z * q.x - q.z * x, - w * q.z + q.w * z + x * q.y - q.x * y, w * q.w - x * q.x - y * q.y - z * q.z); - } - - /** quaternion addition */ - PX_CUDA_CALLABLE PX_FORCE_INLINE PxQuat operator+(const PxQuat& q) const - { - return PxQuat(x + q.x, y + q.y, z + q.z, w + q.w); - } - - /** quaternion subtraction */ - PX_CUDA_CALLABLE PX_FORCE_INLINE PxQuat operator-() const - { - return PxQuat(-x, -y, -z, -w); - } - - PX_CUDA_CALLABLE PX_FORCE_INLINE PxQuat operator-(const PxQuat& q) const - { - return PxQuat(x - q.x, y - q.y, z - q.z, w - q.w); - } - - PX_CUDA_CALLABLE PX_FORCE_INLINE PxQuat operator*(float r) const - { - return PxQuat(x * r, y * r, z * r, w * r); - } - - /** the quaternion elements */ - float x, y, z, w; -}; - -#if !PX_DOXYGEN -} // namespace physx -#endif - -/** @} */ -#endif // #ifndef PXFOUNDATION_PXQUAT_H diff --git a/NvCloth/samples/external/PxShared/1.0.21467209.1/include/foundation/PxSimpleTypes.h b/NvCloth/samples/external/PxShared/1.0.21467209.1/include/foundation/PxSimpleTypes.h deleted file mode 100644 index 6ecba13..0000000 --- a/NvCloth/samples/external/PxShared/1.0.21467209.1/include/foundation/PxSimpleTypes.h +++ /dev/null @@ -1,112 +0,0 @@ -// 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 PXFOUNDATION_PXSIMPLETYPES_H -#define PXFOUNDATION_PXSIMPLETYPES_H - -/** \addtogroup foundation - @{ -*/ - -// Platform specific types: -// Design note: Its OK to use int for general loop variables and temps. - -#include "foundation/PxPreprocessor.h" -#if PX_VC -#pragma warning(push) -#pragma warning(disable : 4668) // suppressing warning generated by Microsoft Visual Studio when including this standard -// header -#endif - -#if PX_LINUX -#define __STDC_LIMIT_MACROS -#endif - -#include <stdint.h> -#if PX_VC -#pragma warning(pop) -#endif - -#if PX_VC // we could use inttypes.h starting with VC12 -#define PX_PRIu64 "I64u" -#else -#if !PX_PS4 && !PX_APPLE_FAMILY -#define __STDC_FORMAT_MACROS -#endif -#include <inttypes.h> -#define PX_PRIu64 PRIu64 -#endif - -namespace physx -{ -typedef int64_t PxI64; -typedef uint64_t PxU64; -typedef int32_t PxI32; -typedef uint32_t PxU32; -typedef int16_t PxI16; -typedef uint16_t PxU16; -typedef int8_t PxI8; -typedef uint8_t PxU8; -typedef float PxF32; -typedef double PxF64; -typedef float PxReal; -} - -// Type ranges - -// These are here because we sometimes have non-IEEE compliant platforms to deal with. -// Removal is under consideration (issue GWSD-34) - -#define PX_MAX_F32 3.4028234663852885981170418348452e+38F -// maximum possible float value -#define PX_MAX_F64 DBL_MAX // maximum possible double value - -#define PX_EPS_F32 FLT_EPSILON // maximum relative error of float rounding -#define PX_EPS_F64 DBL_EPSILON // maximum relative error of double rounding - -#define PX_MAX_REAL PX_MAX_F32 -#define PX_EPS_REAL PX_EPS_F32 -#define PX_NORMALIZATION_EPSILON float(1e-20f) - -// Legacy type ranges used by PhysX -#define PX_MAX_I8 INT8_MAX -#define PX_MIN_I8 INT8_MIN -#define PX_MAX_U8 UINT8_MAX -#define PX_MIN_U8 UINT8_MIN -#define PX_MAX_I16 INT16_MAX -#define PX_MIN_I16 INT16_MIN -#define PX_MAX_U16 UINT16_MAX -#define PX_MIN_U16 UINT16_MIN -#define PX_MAX_I32 INT32_MAX -#define PX_MIN_I32 INT32_MIN -#define PX_MAX_U32 UINT32_MAX -#define PX_MIN_U32 UINT32_MIN - -/** @} */ -#endif // #ifndef PXFOUNDATION_PXSIMPLETYPES_H diff --git a/NvCloth/samples/external/PxShared/1.0.21467209.1/include/foundation/PxStrideIterator.h b/NvCloth/samples/external/PxShared/1.0.21467209.1/include/foundation/PxStrideIterator.h deleted file mode 100644 index 1e4c448..0000000 --- a/NvCloth/samples/external/PxShared/1.0.21467209.1/include/foundation/PxStrideIterator.h +++ /dev/null @@ -1,353 +0,0 @@ -// 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 PXFOUNDATION_PXSTRIDEITERATOR_H -#define PXFOUNDATION_PXSTRIDEITERATOR_H - -#include "foundation/Px.h" -#include "foundation/PxAssert.h" - -/** \addtogroup foundation - @{ -*/ - -#if !PX_DOXYGEN -namespace physx -{ -#endif - -/** -\brief Iterator class for iterating over arrays of data that may be interleaved with other data. - -This class is used for iterating over arrays of elements that may have a larger element to element -offset, called the stride, than the size of the element itself (non-contiguous). - -The template parameter T denotes the type of the element accessed. The stride itself -is stored as a member field so multiple instances of a PxStrideIterator class can have -different strides. This is useful for cases were the stride depends on runtime configuration. - -The stride iterator can be used for index based access, e.g.: -\code - PxStrideIterator<PxVec3> strideArray(...); - for (unsigned i = 0; i < 10; ++i) - { - PxVec3& vec = strideArray[i]; - ... - } -\endcode -or iteration by increment, e.g.: -\code - PxStrideIterator<PxVec3> strideBegin(...); - PxStrideIterator<PxVec3> strideEnd(strideBegin + 10); - for (PxStrideIterator<PxVec3> it = strideBegin; it < strideEnd; ++it) - { - PxVec3& vec = *it; - ... - } -\endcode - -Two special cases: -- A stride of sizeof(T) represents a regular c array of type T. -- A stride of 0 can be used to describe re-occurrence of the same element multiple times. - -*/ -template <typename T> -class PxStrideIterator -{ - -#if !PX_DOXYGEN - template <typename X> - struct StripConst - { - typedef X Type; - }; - - template <typename X> - struct StripConst<const X> - { - typedef X Type; - }; -#endif - - public: - /** - \brief Constructor. - - Optionally takes a pointer to an element and a stride. - - \param[in] ptr pointer to element, defaults to NULL. - \param[in] stride stride for accessing consecutive elements, defaults to the size of one element. - */ - explicit PX_INLINE PxStrideIterator(T* ptr = NULL, PxU32 stride = sizeof(T)) : mPtr(ptr), mStride(stride) - { - PX_ASSERT(mStride == 0 || sizeof(T) <= mStride); - } - - /** - \brief Copy constructor. - - \param[in] strideIterator PxStrideIterator to be copied. - */ - PX_INLINE PxStrideIterator(const PxStrideIterator<typename StripConst<T>::Type>& strideIterator) - : mPtr(strideIterator.ptr()), mStride(strideIterator.stride()) - { - PX_ASSERT(mStride == 0 || sizeof(T) <= mStride); - } - - /** - \brief Get pointer to element. - */ - PX_INLINE T* ptr() const - { - return mPtr; - } - - /** - \brief Get stride. - */ - PX_INLINE PxU32 stride() const - { - return mStride; - } - - /** - \brief Indirection operator. - */ - PX_INLINE T& operator*() const - { - return *mPtr; - } - - /** - \brief Dereferencing operator. - */ - PX_INLINE T* operator->() const - { - return mPtr; - } - - /** - \brief Indexing operator. - */ - PX_INLINE T& operator[](unsigned int i) const - { - return *byteAdd(mPtr, i * stride()); - } - - /** - \brief Pre-increment operator. - */ - PX_INLINE PxStrideIterator& operator++() - { - mPtr = byteAdd(mPtr, stride()); - return *this; - } - - /** - \brief Post-increment operator. - */ - PX_INLINE PxStrideIterator operator++(int) - { - PxStrideIterator tmp = *this; - mPtr = byteAdd(mPtr, stride()); - return tmp; - } - - /** - \brief Pre-decrement operator. - */ - PX_INLINE PxStrideIterator& operator--() - { - mPtr = byteSub(mPtr, stride()); - return *this; - } - - /** - \brief Post-decrement operator. - */ - PX_INLINE PxStrideIterator operator--(int) - { - PxStrideIterator tmp = *this; - mPtr = byteSub(mPtr, stride()); - return tmp; - } - - /** - \brief Addition operator. - */ - PX_INLINE PxStrideIterator operator+(unsigned int i) const - { - return PxStrideIterator(byteAdd(mPtr, i * stride()), stride()); - } - - /** - \brief Subtraction operator. - */ - PX_INLINE PxStrideIterator operator-(unsigned int i) const - { - return PxStrideIterator(byteSub(mPtr, i * stride()), stride()); - } - - /** - \brief Addition compound assignment operator. - */ - PX_INLINE PxStrideIterator& operator+=(unsigned int i) - { - mPtr = byteAdd(mPtr, i * stride()); - return *this; - } - - /** - \brief Subtraction compound assignment operator. - */ - PX_INLINE PxStrideIterator& operator-=(unsigned int i) - { - mPtr = byteSub(mPtr, i * stride()); - return *this; - } - - /** - \brief Iterator difference. - */ - PX_INLINE int operator-(const PxStrideIterator& other) const - { - PX_ASSERT(isCompatible(other)); - int byteDiff = static_cast<int>(reinterpret_cast<const PxU8*>(mPtr) - reinterpret_cast<const PxU8*>(other.mPtr)); - return byteDiff / static_cast<int>(stride()); - } - - /** - \brief Equality operator. - */ - PX_INLINE bool operator==(const PxStrideIterator& other) const - { - PX_ASSERT(isCompatible(other)); - return mPtr == other.mPtr; - } - - /** - \brief Inequality operator. - */ - PX_INLINE bool operator!=(const PxStrideIterator& other) const - { - PX_ASSERT(isCompatible(other)); - return mPtr != other.mPtr; - } - - /** - \brief Less than operator. - */ - PX_INLINE bool operator<(const PxStrideIterator& other) const - { - PX_ASSERT(isCompatible(other)); - return mPtr < other.mPtr; - } - - /** - \brief Greater than operator. - */ - PX_INLINE bool operator>(const PxStrideIterator& other) const - { - PX_ASSERT(isCompatible(other)); - return mPtr > other.mPtr; - } - - /** - \brief Less or equal than operator. - */ - PX_INLINE bool operator<=(const PxStrideIterator& other) const - { - PX_ASSERT(isCompatible(other)); - return mPtr <= other.mPtr; - } - - /** - \brief Greater or equal than operator. - */ - PX_INLINE bool operator>=(const PxStrideIterator& other) const - { - PX_ASSERT(isCompatible(other)); - return mPtr >= other.mPtr; - } - - private: - PX_INLINE static T* byteAdd(T* ptr, PxU32 bytes) - { - return const_cast<T*>(reinterpret_cast<const T*>(reinterpret_cast<const PxU8*>(ptr) + bytes)); - } - - PX_INLINE static T* byteSub(T* ptr, PxU32 bytes) - { - return const_cast<T*>(reinterpret_cast<const T*>(reinterpret_cast<const PxU8*>(ptr) - bytes)); - } - - PX_INLINE bool isCompatible(const PxStrideIterator& other) const - { - int byteDiff = static_cast<int>(reinterpret_cast<const PxU8*>(mPtr) - reinterpret_cast<const PxU8*>(other.mPtr)); - return (stride() == other.stride()) && (abs(byteDiff) % stride() == 0); - } - - T* mPtr; - PxU32 mStride; -}; - -/** -\brief Addition operator. -*/ -template <typename T> -PX_INLINE PxStrideIterator<T> operator+(int i, PxStrideIterator<T> it) -{ - it += i; - return it; -} - -/** -\brief Stride iterator factory function which infers the iterator type. -*/ -template <typename T> -PX_INLINE PxStrideIterator<T> PxMakeIterator(T* ptr, PxU32 stride = sizeof(T)) -{ - return PxStrideIterator<T>(ptr, stride); -} - -/** -\brief Stride iterator factory function which infers the iterator type. -*/ -template <typename T> -PX_INLINE PxStrideIterator<const T> PxMakeIterator(const T* ptr, PxU32 stride = sizeof(T)) -{ - return PxStrideIterator<const T>(ptr, stride); -} - -#if !PX_DOXYGEN -} // namespace physx -#endif - -/** @} */ -#endif // PXFOUNDATION_PXSTRIDEITERATOR_H diff --git a/NvCloth/samples/external/PxShared/1.0.21467209.1/include/foundation/PxTransform.h b/NvCloth/samples/external/PxShared/1.0.21467209.1/include/foundation/PxTransform.h deleted file mode 100644 index ddba031..0000000 --- a/NvCloth/samples/external/PxShared/1.0.21467209.1/include/foundation/PxTransform.h +++ /dev/null @@ -1,215 +0,0 @@ -// 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 PXFOUNDATION_PXTRANSFORM_H -#define PXFOUNDATION_PXTRANSFORM_H -/** \addtogroup foundation - @{ -*/ - -#include "foundation/PxQuat.h" -#include "foundation/PxPlane.h" - -#if !PX_DOXYGEN -namespace physx -{ -#endif - -/*! -\brief class representing a rigid euclidean transform as a quaternion and a vector -*/ - -class PxTransform -{ - public: - PxQuat q; - PxVec3 p; - - PX_CUDA_CALLABLE PX_FORCE_INLINE PxTransform() - { - } - - PX_CUDA_CALLABLE PX_FORCE_INLINE explicit PxTransform(const PxVec3& position) : q(PxIdentity), p(position) - { - } - - PX_CUDA_CALLABLE PX_FORCE_INLINE explicit PxTransform(PxIDENTITY r) : q(PxIdentity), p(PxZero) - { - PX_UNUSED(r); - } - - PX_CUDA_CALLABLE PX_FORCE_INLINE explicit PxTransform(const PxQuat& orientation) : q(orientation), p(0) - { - PX_ASSERT(orientation.isSane()); - } - - PX_CUDA_CALLABLE PX_FORCE_INLINE PxTransform(float x, float y, float z, PxQuat aQ = PxQuat(PxIdentity)) - : q(aQ), p(x, y, z) - { - } - - PX_CUDA_CALLABLE PX_FORCE_INLINE PxTransform(const PxVec3& p0, const PxQuat& q0) : q(q0), p(p0) - { - PX_ASSERT(q0.isSane()); - } - - PX_CUDA_CALLABLE PX_FORCE_INLINE explicit PxTransform(const PxMat44& m); // defined in PxMat44.h - - /** - \brief returns true if the two transforms are exactly equal - */ - PX_CUDA_CALLABLE PX_INLINE bool operator==(const PxTransform& t) const - { - return p == t.p && q == t.q; - } - - PX_CUDA_CALLABLE PX_FORCE_INLINE PxTransform operator*(const PxTransform& x) const - { - PX_ASSERT(x.isSane()); - return transform(x); - } - - //! Equals matrix multiplication - PX_CUDA_CALLABLE PX_INLINE PxTransform& operator*=(PxTransform& other) - { - *this = *this * other; - return *this; - } - - PX_CUDA_CALLABLE PX_FORCE_INLINE PxTransform getInverse() const - { - PX_ASSERT(isFinite()); - return PxTransform(q.rotateInv(-p), q.getConjugate()); - } - - PX_CUDA_CALLABLE PX_FORCE_INLINE PxVec3 transform(const PxVec3& input) const - { - PX_ASSERT(isFinite()); - return q.rotate(input) + p; - } - - PX_CUDA_CALLABLE PX_FORCE_INLINE PxVec3 transformInv(const PxVec3& input) const - { - PX_ASSERT(isFinite()); - return q.rotateInv(input - p); - } - - PX_CUDA_CALLABLE PX_FORCE_INLINE PxVec3 rotate(const PxVec3& input) const - { - PX_ASSERT(isFinite()); - return q.rotate(input); - } - - PX_CUDA_CALLABLE PX_FORCE_INLINE PxVec3 rotateInv(const PxVec3& input) const - { - PX_ASSERT(isFinite()); - return q.rotateInv(input); - } - - //! Transform transform to parent (returns compound transform: first src, then *this) - PX_CUDA_CALLABLE PX_FORCE_INLINE PxTransform transform(const PxTransform& src) const - { - PX_ASSERT(src.isSane()); - PX_ASSERT(isSane()); - // src = [srct, srcr] -> [r*srct + t, r*srcr] - return PxTransform(q.rotate(src.p) + p, q * src.q); - } - - /** - \brief returns true if finite and q is a unit quaternion - */ - - PX_CUDA_CALLABLE bool isValid() const - { - return p.isFinite() && q.isFinite() && q.isUnit(); - } - - /** - \brief returns true if finite and quat magnitude is reasonably close to unit to allow for some accumulation of error - vs isValid - */ - - PX_CUDA_CALLABLE bool isSane() const - { - return isFinite() && q.isSane(); - } - - /** - \brief returns true if all elems are finite (not NAN or INF, etc.) - */ - PX_CUDA_CALLABLE PX_FORCE_INLINE bool isFinite() const - { - return p.isFinite() && q.isFinite(); - } - - //! Transform transform from parent (returns compound transform: first src, then this->inverse) - PX_CUDA_CALLABLE PX_FORCE_INLINE PxTransform transformInv(const PxTransform& src) const - { - PX_ASSERT(src.isSane()); - PX_ASSERT(isFinite()); - // src = [srct, srcr] -> [r^-1*(srct-t), r^-1*srcr] - PxQuat qinv = q.getConjugate(); - return PxTransform(qinv.rotate(src.p - p), qinv * src.q); - } - - /** - \brief transform plane - */ - - PX_CUDA_CALLABLE PX_FORCE_INLINE PxPlane transform(const PxPlane& plane) const - { - PxVec3 transformedNormal = rotate(plane.n); - return PxPlane(transformedNormal, plane.d - p.dot(transformedNormal)); - } - - /** - \brief inverse-transform plane - */ - - PX_CUDA_CALLABLE PX_FORCE_INLINE PxPlane inverseTransform(const PxPlane& plane) const - { - PxVec3 transformedNormal = rotateInv(plane.n); - return PxPlane(transformedNormal, plane.d + p.dot(plane.n)); - } - - /** - \brief return a normalized transform (i.e. one in which the quaternion has unit magnitude) - */ - PX_CUDA_CALLABLE PX_FORCE_INLINE PxTransform getNormalized() const - { - return PxTransform(p, q.getNormalized()); - } -}; - -#if !PX_DOXYGEN -} // namespace physx -#endif - -/** @} */ -#endif // #ifndef PXFOUNDATION_PXTRANSFORM_H diff --git a/NvCloth/samples/external/PxShared/1.0.21467209.1/include/foundation/PxUnionCast.h b/NvCloth/samples/external/PxShared/1.0.21467209.1/include/foundation/PxUnionCast.h deleted file mode 100644 index 7bead42..0000000 --- a/NvCloth/samples/external/PxShared/1.0.21467209.1/include/foundation/PxUnionCast.h +++ /dev/null @@ -1,64 +0,0 @@ -// 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 PXFOUNDATION_PXUNIONCAST_H -#define PXFOUNDATION_PXUNIONCAST_H - -#include "foundation/Px.h" - -/** \addtogroup foundation -@{ -*/ - -#if !PX_DOXYGEN -namespace physx -{ -#endif - -template <class A, class B> -PX_FORCE_INLINE A PxUnionCast(B b) -{ - union AB - { - AB(B bb) : _b(bb) - { - } - B _b; - A _a; - } u(b); - return u._a; -} - -#if !PX_DOXYGEN -} // namespace physx -#endif - -/** @} */ - -#endif // PXFOUNDATION_PXUNIONCAST_H diff --git a/NvCloth/samples/external/PxShared/1.0.21467209.1/include/foundation/PxVec2.h b/NvCloth/samples/external/PxShared/1.0.21467209.1/include/foundation/PxVec2.h deleted file mode 100644 index bee58e8..0000000 --- a/NvCloth/samples/external/PxShared/1.0.21467209.1/include/foundation/PxVec2.h +++ /dev/null @@ -1,347 +0,0 @@ -// 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 PXFOUNDATION_PXVEC2_H -#define PXFOUNDATION_PXVEC2_H - -/** \addtogroup foundation -@{ -*/ - -#include "foundation/PxMath.h" - -#if !PX_DOXYGEN -namespace physx -{ -#endif - -/** -\brief 2 Element vector class. - -This is a 2-dimensional vector class with public data members. -*/ -class PxVec2 -{ - public: - /** - \brief default constructor leaves data uninitialized. - */ - PX_CUDA_CALLABLE PX_FORCE_INLINE PxVec2() - { - } - - /** - \brief zero constructor. - */ - PX_CUDA_CALLABLE PX_FORCE_INLINE PxVec2(PxZERO r) : x(0.0f), y(0.0f) - { - PX_UNUSED(r); - } - - /** - \brief Assigns scalar parameter to all elements. - - Useful to initialize to zero or one. - - \param[in] a Value to assign to elements. - */ - explicit PX_CUDA_CALLABLE PX_FORCE_INLINE PxVec2(float a) : x(a), y(a) - { - } - - /** - \brief Initializes from 2 scalar parameters. - - \param[in] nx Value to initialize X component. - \param[in] ny Value to initialize Y component. - */ - PX_CUDA_CALLABLE PX_FORCE_INLINE PxVec2(float nx, float ny) : x(nx), y(ny) - { - } - - /** - \brief Copy ctor. - */ - PX_CUDA_CALLABLE PX_FORCE_INLINE PxVec2(const PxVec2& v) : x(v.x), y(v.y) - { - } - - // Operators - - /** - \brief Assignment operator - */ - PX_CUDA_CALLABLE PX_FORCE_INLINE PxVec2& operator=(const PxVec2& p) - { - x = p.x; - y = p.y; - return *this; - } - - /** - \brief element access - */ - PX_DEPRECATED PX_CUDA_CALLABLE PX_FORCE_INLINE float& operator[](int index) - { - PX_ASSERT(index >= 0 && index <= 1); - - return reinterpret_cast<float*>(this)[index]; - } - - /** - \brief element access - */ - PX_DEPRECATED PX_CUDA_CALLABLE PX_FORCE_INLINE const float& operator[](int index) const - { - PX_ASSERT(index >= 0 && index <= 1); - - return reinterpret_cast<const float*>(this)[index]; - } - - /** - \brief returns true if the two vectors are exactly equal. - */ - PX_CUDA_CALLABLE PX_FORCE_INLINE bool operator==(const PxVec2& v) const - { - return x == v.x && y == v.y; - } - - /** - \brief returns true if the two vectors are not exactly equal. - */ - PX_CUDA_CALLABLE PX_FORCE_INLINE bool operator!=(const PxVec2& v) const - { - return x != v.x || y != v.y; - } - - /** - \brief tests for exact zero vector - */ - PX_CUDA_CALLABLE PX_FORCE_INLINE bool isZero() const - { - return x == 0.0f && y == 0.0f; - } - - /** - \brief returns true if all 2 elems of the vector are finite (not NAN or INF, etc.) - */ - PX_CUDA_CALLABLE PX_INLINE bool isFinite() const - { - return PxIsFinite(x) && PxIsFinite(y); - } - - /** - \brief is normalized - used by API parameter validation - */ - PX_CUDA_CALLABLE PX_FORCE_INLINE bool isNormalized() const - { - const float unitTolerance = 1e-4f; - return isFinite() && PxAbs(magnitude() - 1) < unitTolerance; - } - - /** - \brief returns the squared magnitude - - Avoids calling PxSqrt()! - */ - PX_CUDA_CALLABLE PX_FORCE_INLINE float magnitudeSquared() const - { - return x * x + y * y; - } - - /** - \brief returns the magnitude - */ - PX_CUDA_CALLABLE PX_FORCE_INLINE float magnitude() const - { - return PxSqrt(magnitudeSquared()); - } - - /** - \brief negation - */ - PX_CUDA_CALLABLE PX_FORCE_INLINE PxVec2 operator-() const - { - return PxVec2(-x, -y); - } - - /** - \brief vector addition - */ - PX_CUDA_CALLABLE PX_FORCE_INLINE PxVec2 operator+(const PxVec2& v) const - { - return PxVec2(x + v.x, y + v.y); - } - - /** - \brief vector difference - */ - PX_CUDA_CALLABLE PX_FORCE_INLINE PxVec2 operator-(const PxVec2& v) const - { - return PxVec2(x - v.x, y - v.y); - } - - /** - \brief scalar post-multiplication - */ - PX_CUDA_CALLABLE PX_FORCE_INLINE PxVec2 operator*(float f) const - { - return PxVec2(x * f, y * f); - } - - /** - \brief scalar division - */ - PX_CUDA_CALLABLE PX_FORCE_INLINE PxVec2 operator/(float f) const - { - f = 1.0f / f; // PT: inconsistent notation with operator /= - return PxVec2(x * f, y * f); - } - - /** - \brief vector addition - */ - PX_CUDA_CALLABLE PX_FORCE_INLINE PxVec2& operator+=(const PxVec2& v) - { - x += v.x; - y += v.y; - return *this; - } - - /** - \brief vector difference - */ - PX_CUDA_CALLABLE PX_FORCE_INLINE PxVec2& operator-=(const PxVec2& v) - { - x -= v.x; - y -= v.y; - return *this; - } - - /** - \brief scalar multiplication - */ - PX_CUDA_CALLABLE PX_FORCE_INLINE PxVec2& operator*=(float f) - { - x *= f; - y *= f; - return *this; - } - /** - \brief scalar division - */ - PX_CUDA_CALLABLE PX_FORCE_INLINE PxVec2& operator/=(float f) - { - f = 1.0f / f; // PT: inconsistent notation with operator / - x *= f; - y *= f; - return *this; - } - - /** - \brief returns the scalar product of this and other. - */ - PX_CUDA_CALLABLE PX_FORCE_INLINE float dot(const PxVec2& v) const - { - return x * v.x + y * v.y; - } - - /** return a unit vector */ - - PX_CUDA_CALLABLE PX_FORCE_INLINE PxVec2 getNormalized() const - { - const float m = magnitudeSquared(); - return m > 0.0f ? *this * PxRecipSqrt(m) : PxVec2(0, 0); - } - - /** - \brief normalizes the vector in place - */ - PX_CUDA_CALLABLE PX_FORCE_INLINE float normalize() - { - const float m = magnitude(); - if(m > 0.0f) - *this /= m; - return m; - } - - /** - \brief a[i] * b[i], for all i. - */ - PX_CUDA_CALLABLE PX_FORCE_INLINE PxVec2 multiply(const PxVec2& a) const - { - return PxVec2(x * a.x, y * a.y); - } - - /** - \brief element-wise minimum - */ - PX_CUDA_CALLABLE PX_FORCE_INLINE PxVec2 minimum(const PxVec2& v) const - { - return PxVec2(PxMin(x, v.x), PxMin(y, v.y)); - } - - /** - \brief returns MIN(x, y); - */ - PX_CUDA_CALLABLE PX_FORCE_INLINE float minElement() const - { - return PxMin(x, y); - } - - /** - \brief element-wise maximum - */ - PX_CUDA_CALLABLE PX_FORCE_INLINE PxVec2 maximum(const PxVec2& v) const - { - return PxVec2(PxMax(x, v.x), PxMax(y, v.y)); - } - - /** - \brief returns MAX(x, y); - */ - PX_CUDA_CALLABLE PX_FORCE_INLINE float maxElement() const - { - return PxMax(x, y); - } - - float x, y; -}; - -PX_CUDA_CALLABLE static PX_FORCE_INLINE PxVec2 operator*(float f, const PxVec2& v) -{ - return PxVec2(f * v.x, f * v.y); -} - -#if !PX_DOXYGEN -} // namespace physx -#endif - -/** @} */ -#endif // #ifndef PXFOUNDATION_PXVEC2_H diff --git a/NvCloth/samples/external/PxShared/1.0.21467209.1/include/foundation/PxVec3.h b/NvCloth/samples/external/PxShared/1.0.21467209.1/include/foundation/PxVec3.h deleted file mode 100644 index 7c15afb..0000000 --- a/NvCloth/samples/external/PxShared/1.0.21467209.1/include/foundation/PxVec3.h +++ /dev/null @@ -1,393 +0,0 @@ -// 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 PXFOUNDATION_PXVEC3_H -#define PXFOUNDATION_PXVEC3_H - -/** \addtogroup foundation -@{ -*/ - -#include "foundation/PxMath.h" - -#if !PX_DOXYGEN -namespace physx -{ -#endif - -/** -\brief 3 Element vector class. - -This is a 3-dimensional vector class with public data members. -*/ -class PxVec3 -{ - public: - /** - \brief default constructor leaves data uninitialized. - */ - PX_CUDA_CALLABLE PX_FORCE_INLINE PxVec3() - { - } - - /** - \brief zero constructor. - */ - PX_CUDA_CALLABLE PX_FORCE_INLINE PxVec3(PxZERO r) : x(0.0f), y(0.0f), z(0.0f) - { - PX_UNUSED(r); - } - - /** - \brief Assigns scalar parameter to all elements. - - Useful to initialize to zero or one. - - \param[in] a Value to assign to elements. - */ - explicit PX_CUDA_CALLABLE PX_FORCE_INLINE PxVec3(float a) : x(a), y(a), z(a) - { - } - - /** - \brief Initializes from 3 scalar parameters. - - \param[in] nx Value to initialize X component. - \param[in] ny Value to initialize Y component. - \param[in] nz Value to initialize Z component. - */ - PX_CUDA_CALLABLE PX_FORCE_INLINE PxVec3(float nx, float ny, float nz) : x(nx), y(ny), z(nz) - { - } - - /** - \brief Copy ctor. - */ - PX_CUDA_CALLABLE PX_FORCE_INLINE PxVec3(const PxVec3& v) : x(v.x), y(v.y), z(v.z) - { - } - - // Operators - - /** - \brief Assignment operator - */ - PX_CUDA_CALLABLE PX_FORCE_INLINE PxVec3& operator=(const PxVec3& p) - { - x = p.x; - y = p.y; - z = p.z; - return *this; - } - - /** - \brief element access - */ - PX_DEPRECATED PX_CUDA_CALLABLE PX_FORCE_INLINE float& operator[](unsigned int index) - { - PX_ASSERT(index <= 2); - - return reinterpret_cast<float*>(this)[index]; - } - - /** - \brief element access - */ - PX_DEPRECATED PX_CUDA_CALLABLE PX_FORCE_INLINE const float& operator[](unsigned int index) const - { - PX_ASSERT(index <= 2); - - return reinterpret_cast<const float*>(this)[index]; - } - /** - \brief returns true if the two vectors are exactly equal. - */ - PX_CUDA_CALLABLE PX_FORCE_INLINE bool operator==(const PxVec3& v) const - { - return x == v.x && y == v.y && z == v.z; - } - - /** - \brief returns true if the two vectors are not exactly equal. - */ - PX_CUDA_CALLABLE PX_FORCE_INLINE bool operator!=(const PxVec3& v) const - { - return x != v.x || y != v.y || z != v.z; - } - - /** - \brief tests for exact zero vector - */ - PX_CUDA_CALLABLE PX_FORCE_INLINE bool isZero() const - { - return x == 0.0f && y == 0.0f && z == 0.0f; - } - - /** - \brief returns true if all 3 elems of the vector are finite (not NAN or INF, etc.) - */ - PX_CUDA_CALLABLE PX_INLINE bool isFinite() const - { - return PxIsFinite(x) && PxIsFinite(y) && PxIsFinite(z); - } - - /** - \brief is normalized - used by API parameter validation - */ - PX_CUDA_CALLABLE PX_FORCE_INLINE bool isNormalized() const - { - const float unitTolerance = 1e-4f; - return isFinite() && PxAbs(magnitude() - 1) < unitTolerance; - } - - /** - \brief returns the squared magnitude - - Avoids calling PxSqrt()! - */ - PX_CUDA_CALLABLE PX_FORCE_INLINE float magnitudeSquared() const - { - return x * x + y * y + z * z; - } - - /** - \brief returns the magnitude - */ - PX_CUDA_CALLABLE PX_FORCE_INLINE float magnitude() const - { - return PxSqrt(magnitudeSquared()); - } - - /** - \brief negation - */ - PX_CUDA_CALLABLE PX_FORCE_INLINE PxVec3 operator-() const - { - return PxVec3(-x, -y, -z); - } - - /** - \brief vector addition - */ - PX_CUDA_CALLABLE PX_FORCE_INLINE PxVec3 operator+(const PxVec3& v) const - { - return PxVec3(x + v.x, y + v.y, z + v.z); - } - - /** - \brief vector difference - */ - PX_CUDA_CALLABLE PX_FORCE_INLINE PxVec3 operator-(const PxVec3& v) const - { - return PxVec3(x - v.x, y - v.y, z - v.z); - } - - /** - \brief scalar post-multiplication - */ - PX_CUDA_CALLABLE PX_FORCE_INLINE PxVec3 operator*(float f) const - { - return PxVec3(x * f, y * f, z * f); - } - - /** - \brief scalar division - */ - PX_CUDA_CALLABLE PX_FORCE_INLINE PxVec3 operator/(float f) const - { - f = 1.0f / f; - return PxVec3(x * f, y * f, z * f); - } - - /** - \brief vector addition - */ - PX_CUDA_CALLABLE PX_FORCE_INLINE PxVec3& operator+=(const PxVec3& v) - { - x += v.x; - y += v.y; - z += v.z; - return *this; - } - - /** - \brief vector difference - */ - PX_CUDA_CALLABLE PX_FORCE_INLINE PxVec3& operator-=(const PxVec3& v) - { - x -= v.x; - y -= v.y; - z -= v.z; - return *this; - } - - /** - \brief scalar multiplication - */ - PX_CUDA_CALLABLE PX_FORCE_INLINE PxVec3& operator*=(float f) - { - x *= f; - y *= f; - z *= f; - return *this; - } - /** - \brief scalar division - */ - PX_CUDA_CALLABLE PX_FORCE_INLINE PxVec3& operator/=(float f) - { - f = 1.0f / f; - x *= f; - y *= f; - z *= f; - return *this; - } - - /** - \brief returns the scalar product of this and other. - */ - PX_CUDA_CALLABLE PX_FORCE_INLINE float dot(const PxVec3& v) const - { - return x * v.x + y * v.y + z * v.z; - } - - /** - \brief cross product - */ - PX_CUDA_CALLABLE PX_FORCE_INLINE PxVec3 cross(const PxVec3& v) const - { - return PxVec3(y * v.z - z * v.y, z * v.x - x * v.z, x * v.y - y * v.x); - } - - /** return a unit vector */ - - PX_CUDA_CALLABLE PX_FORCE_INLINE PxVec3 getNormalized() const - { - const float m = magnitudeSquared(); - return m > 0.0f ? *this * PxRecipSqrt(m) : PxVec3(0, 0, 0); - } - - /** - \brief normalizes the vector in place - */ - PX_CUDA_CALLABLE PX_FORCE_INLINE float normalize() - { - const float m = magnitude(); - if(m > 0.0f) - *this /= m; - return m; - } - - /** - \brief normalizes the vector in place. Does nothing if vector magnitude is under PX_NORMALIZATION_EPSILON. - Returns vector magnitude if >= PX_NORMALIZATION_EPSILON and 0.0f otherwise. - */ - PX_CUDA_CALLABLE PX_FORCE_INLINE float normalizeSafe() - { - const float mag = magnitude(); - if(mag < PX_NORMALIZATION_EPSILON) - return 0.0f; - *this *= 1.0f / mag; - return mag; - } - - /** - \brief normalizes the vector in place. Asserts if vector magnitude is under PX_NORMALIZATION_EPSILON. - returns vector magnitude. - */ - PX_CUDA_CALLABLE PX_FORCE_INLINE float normalizeFast() - { - const float mag = magnitude(); - PX_ASSERT(mag >= PX_NORMALIZATION_EPSILON); - *this *= 1.0f / mag; - return mag; - } - - /** - \brief a[i] * b[i], for all i. - */ - PX_CUDA_CALLABLE PX_FORCE_INLINE PxVec3 multiply(const PxVec3& a) const - { - return PxVec3(x * a.x, y * a.y, z * a.z); - } - - /** - \brief element-wise minimum - */ - PX_CUDA_CALLABLE PX_FORCE_INLINE PxVec3 minimum(const PxVec3& v) const - { - return PxVec3(PxMin(x, v.x), PxMin(y, v.y), PxMin(z, v.z)); - } - - /** - \brief returns MIN(x, y, z); - */ - PX_CUDA_CALLABLE PX_FORCE_INLINE float minElement() const - { - return PxMin(x, PxMin(y, z)); - } - - /** - \brief element-wise maximum - */ - PX_CUDA_CALLABLE PX_FORCE_INLINE PxVec3 maximum(const PxVec3& v) const - { - return PxVec3(PxMax(x, v.x), PxMax(y, v.y), PxMax(z, v.z)); - } - - /** - \brief returns MAX(x, y, z); - */ - PX_CUDA_CALLABLE PX_FORCE_INLINE float maxElement() const - { - return PxMax(x, PxMax(y, z)); - } - - /** - \brief returns absolute values of components; - */ - PX_CUDA_CALLABLE PX_FORCE_INLINE PxVec3 abs() const - { - return PxVec3(PxAbs(x), PxAbs(y), PxAbs(z)); - } - - float x, y, z; -}; - -PX_CUDA_CALLABLE static PX_FORCE_INLINE PxVec3 operator*(float f, const PxVec3& v) -{ - return PxVec3(f * v.x, f * v.y, f * v.z); -} - -#if !PX_DOXYGEN -} // namespace physx -#endif - -/** @} */ -#endif // #ifndef PXFOUNDATION_PXVEC3_H diff --git a/NvCloth/samples/external/PxShared/1.0.21467209.1/include/foundation/PxVec4.h b/NvCloth/samples/external/PxShared/1.0.21467209.1/include/foundation/PxVec4.h deleted file mode 100644 index e33eddf..0000000 --- a/NvCloth/samples/external/PxShared/1.0.21467209.1/include/foundation/PxVec4.h +++ /dev/null @@ -1,376 +0,0 @@ -// 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 PXFOUNDATION_PXVEC4_H -#define PXFOUNDATION_PXVEC4_H -/** \addtogroup foundation -@{ -*/ -#include "foundation/PxMath.h" -#include "foundation/PxVec3.h" -#include "foundation/PxAssert.h" - -/** -\brief 4 Element vector class. - -This is a 4-dimensional vector class with public data members. -*/ -#if !PX_DOXYGEN -namespace physx -{ -#endif - -class PxVec4 -{ - public: - /** - \brief default constructor leaves data uninitialized. - */ - PX_CUDA_CALLABLE PX_INLINE PxVec4() - { - } - - /** - \brief zero constructor. - */ - PX_CUDA_CALLABLE PX_FORCE_INLINE PxVec4(PxZERO r) : x(0.0f), y(0.0f), z(0.0f), w(0.0f) - { - PX_UNUSED(r); - } - - /** - \brief Assigns scalar parameter to all elements. - - Useful to initialize to zero or one. - - \param[in] a Value to assign to elements. - */ - explicit PX_CUDA_CALLABLE PX_INLINE PxVec4(float a) : x(a), y(a), z(a), w(a) - { - } - - /** - \brief Initializes from 3 scalar parameters. - - \param[in] nx Value to initialize X component. - \param[in] ny Value to initialize Y component. - \param[in] nz Value to initialize Z component. - \param[in] nw Value to initialize W component. - */ - PX_CUDA_CALLABLE PX_INLINE PxVec4(float nx, float ny, float nz, float nw) : x(nx), y(ny), z(nz), w(nw) - { - } - - /** - \brief Initializes from 3 scalar parameters. - - \param[in] v Value to initialize the X, Y, and Z components. - \param[in] nw Value to initialize W component. - */ - PX_CUDA_CALLABLE PX_INLINE PxVec4(const PxVec3& v, float nw) : x(v.x), y(v.y), z(v.z), w(nw) - { - } - - /** - \brief Initializes from an array of scalar parameters. - - \param[in] v Value to initialize with. - */ - explicit PX_CUDA_CALLABLE PX_INLINE PxVec4(const float v[]) : x(v[0]), y(v[1]), z(v[2]), w(v[3]) - { - } - - /** - \brief Copy ctor. - */ - PX_CUDA_CALLABLE PX_INLINE PxVec4(const PxVec4& v) : x(v.x), y(v.y), z(v.z), w(v.w) - { - } - - // Operators - - /** - \brief Assignment operator - */ - PX_CUDA_CALLABLE PX_INLINE PxVec4& operator=(const PxVec4& p) - { - x = p.x; - y = p.y; - z = p.z; - w = p.w; - return *this; - } - - /** - \brief element access - */ - PX_DEPRECATED PX_CUDA_CALLABLE PX_INLINE float& operator[](unsigned int index) - { - PX_ASSERT(index <= 3); - - return reinterpret_cast<float*>(this)[index]; - } - - /** - \brief element access - */ - PX_DEPRECATED PX_CUDA_CALLABLE PX_INLINE const float& operator[](unsigned int index) const - { - PX_ASSERT(index <= 3); - - return reinterpret_cast<const float*>(this)[index]; - } - - /** - \brief returns true if the two vectors are exactly equal. - */ - PX_CUDA_CALLABLE PX_INLINE bool operator==(const PxVec4& v) const - { - return x == v.x && y == v.y && z == v.z && w == v.w; - } - - /** - \brief returns true if the two vectors are not exactly equal. - */ - PX_CUDA_CALLABLE PX_INLINE bool operator!=(const PxVec4& v) const - { - return x != v.x || y != v.y || z != v.z || w != v.w; - } - - /** - \brief tests for exact zero vector - */ - PX_CUDA_CALLABLE PX_INLINE bool isZero() const - { - return x == 0 && y == 0 && z == 0 && w == 0; - } - - /** - \brief returns true if all 3 elems of the vector are finite (not NAN or INF, etc.) - */ - PX_CUDA_CALLABLE PX_INLINE bool isFinite() const - { - return PxIsFinite(x) && PxIsFinite(y) && PxIsFinite(z) && PxIsFinite(w); - } - - /** - \brief is normalized - used by API parameter validation - */ - PX_CUDA_CALLABLE PX_INLINE bool isNormalized() const - { - const float unitTolerance = 1e-4f; - return isFinite() && PxAbs(magnitude() - 1) < unitTolerance; - } - - /** - \brief returns the squared magnitude - - Avoids calling PxSqrt()! - */ - PX_CUDA_CALLABLE PX_INLINE float magnitudeSquared() const - { - return x * x + y * y + z * z + w * w; - } - - /** - \brief returns the magnitude - */ - PX_CUDA_CALLABLE PX_INLINE float magnitude() const - { - return PxSqrt(magnitudeSquared()); - } - - /** - \brief negation - */ - PX_CUDA_CALLABLE PX_INLINE PxVec4 operator-() const - { - return PxVec4(-x, -y, -z, -w); - } - - /** - \brief vector addition - */ - PX_CUDA_CALLABLE PX_INLINE PxVec4 operator+(const PxVec4& v) const - { - return PxVec4(x + v.x, y + v.y, z + v.z, w + v.w); - } - - /** - \brief vector difference - */ - PX_CUDA_CALLABLE PX_INLINE PxVec4 operator-(const PxVec4& v) const - { - return PxVec4(x - v.x, y - v.y, z - v.z, w - v.w); - } - - /** - \brief scalar post-multiplication - */ - - PX_CUDA_CALLABLE PX_INLINE PxVec4 operator*(float f) const - { - return PxVec4(x * f, y * f, z * f, w * f); - } - - /** - \brief scalar division - */ - PX_CUDA_CALLABLE PX_INLINE PxVec4 operator/(float f) const - { - f = 1.0f / f; - return PxVec4(x * f, y * f, z * f, w * f); - } - - /** - \brief vector addition - */ - PX_CUDA_CALLABLE PX_INLINE PxVec4& operator+=(const PxVec4& v) - { - x += v.x; - y += v.y; - z += v.z; - w += v.w; - return *this; - } - - /** - \brief vector difference - */ - PX_CUDA_CALLABLE PX_INLINE PxVec4& operator-=(const PxVec4& v) - { - x -= v.x; - y -= v.y; - z -= v.z; - w -= v.w; - return *this; - } - - /** - \brief scalar multiplication - */ - PX_CUDA_CALLABLE PX_INLINE PxVec4& operator*=(float f) - { - x *= f; - y *= f; - z *= f; - w *= f; - return *this; - } - /** - \brief scalar division - */ - PX_CUDA_CALLABLE PX_INLINE PxVec4& operator/=(float f) - { - f = 1.0f / f; - x *= f; - y *= f; - z *= f; - w *= f; - return *this; - } - - /** - \brief returns the scalar product of this and other. - */ - PX_CUDA_CALLABLE PX_INLINE float dot(const PxVec4& v) const - { - return x * v.x + y * v.y + z * v.z + w * v.w; - } - - /** return a unit vector */ - - PX_CUDA_CALLABLE PX_INLINE PxVec4 getNormalized() const - { - float m = magnitudeSquared(); - return m > 0.0f ? *this * PxRecipSqrt(m) : PxVec4(0, 0, 0, 0); - } - - /** - \brief normalizes the vector in place - */ - PX_CUDA_CALLABLE PX_INLINE float normalize() - { - float m = magnitude(); - if(m > 0.0f) - *this /= m; - return m; - } - - /** - \brief a[i] * b[i], for all i. - */ - PX_CUDA_CALLABLE PX_INLINE PxVec4 multiply(const PxVec4& a) const - { - return PxVec4(x * a.x, y * a.y, z * a.z, w * a.w); - } - - /** - \brief element-wise minimum - */ - PX_CUDA_CALLABLE PX_INLINE PxVec4 minimum(const PxVec4& v) const - { - return PxVec4(PxMin(x, v.x), PxMin(y, v.y), PxMin(z, v.z), PxMin(w, v.w)); - } - - /** - \brief element-wise maximum - */ - PX_CUDA_CALLABLE PX_INLINE PxVec4 maximum(const PxVec4& v) const - { - return PxVec4(PxMax(x, v.x), PxMax(y, v.y), PxMax(z, v.z), PxMax(w, v.w)); - } - - PX_CUDA_CALLABLE PX_INLINE PxVec3 getXYZ() const - { - return PxVec3(x, y, z); - } - - /** - \brief set vector elements to zero - */ - PX_CUDA_CALLABLE PX_INLINE void setZero() - { - x = y = z = w = 0.0f; - } - - float x, y, z, w; -}; - -PX_CUDA_CALLABLE static PX_INLINE PxVec4 operator*(float f, const PxVec4& v) -{ - return PxVec4(f * v.x, f * v.y, f * v.z, f * v.w); -} - -#if !PX_DOXYGEN -} // namespace physx -#endif - -/** @} */ -#endif // #ifndef PXFOUNDATION_PXVEC4_H diff --git a/NvCloth/samples/external/PxShared/1.0.21467209.1/include/foundation/nx/PxNXIntrinsics.h b/NvCloth/samples/external/PxShared/1.0.21467209.1/include/foundation/nx/PxNXIntrinsics.h deleted file mode 100644 index adf3bf5..0000000 --- a/NvCloth/samples/external/PxShared/1.0.21467209.1/include/foundation/nx/PxNXIntrinsics.h +++ /dev/null @@ -1,138 +0,0 @@ -/* - * Copyright (c) 2008-2015, NVIDIA CORPORATION. All rights reserved. - * - * NVIDIA CORPORATION and its licensors retain all intellectual property - * and proprietary rights in and to this software, 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. - */ -// Copyright (c) 2004-2008 AGEIA Technologies, Inc. All rights reserved. -// Copyright (c) 2001-2004 NovodeX AG. All rights reserved. - - -#ifndef PX_FOUNDATION_PX_NX_INTRINSICS_H -#define PX_FOUNDATION_PX_NX_INTRINSICS_H - -#include "foundation/Px.h" -#include "foundation/PxAssert.h" - -#if !PX_NX - #error "This file should only be included by NX builds!!" -#endif - -#include <math.h> -#include <float.h> - -#include "nn/cstd/cstd_CMath.h" - -#if !PX_DOXYGEN -namespace physx -{ -namespace intrinsics -{ -#endif - - //! \brief platform-specific absolute value - PX_CUDA_CALLABLE PX_FORCE_INLINE float abs(float a) { return ::fabsf(a); } - - //! \brief platform-specific select float - PX_CUDA_CALLABLE PX_FORCE_INLINE float fsel(float a, float b, float c) { return (a >= 0.0f) ? b : c; } - - //! \brief platform-specific sign - PX_CUDA_CALLABLE PX_FORCE_INLINE float sign(float a) { return (a >= 0.0f) ? 1.0f : -1.0f; } - - //! \brief platform-specific reciprocal - PX_CUDA_CALLABLE PX_FORCE_INLINE float recip(float a) { return 1.0f/a; } - - //! \brief platform-specific reciprocal estimate - PX_CUDA_CALLABLE PX_FORCE_INLINE float recipFast(float a) { return 1.0f/a; } - - //! \brief platform-specific square root - PX_CUDA_CALLABLE PX_FORCE_INLINE float sqrt(float a) { return ::sqrtf(a); } - - //! \brief platform-specific reciprocal square root - PX_CUDA_CALLABLE PX_FORCE_INLINE float recipSqrt(float a) { return 1.0f/::sqrtf(a); } - - //! \brief platform-specific reciprocal square root estimate - PX_CUDA_CALLABLE PX_FORCE_INLINE float recipSqrtFast(float a) { return 1.0f/::sqrtf(a); } - - //! \brief platform-specific sine - PX_CUDA_CALLABLE PX_FORCE_INLINE float sin(float a) { return ::sinf(a); } - - //! \brief platform-specific cosine - PX_CUDA_CALLABLE PX_FORCE_INLINE float cos(float a) { return ::cosf(a); } - - //! \brief platform-specific minimum - PX_CUDA_CALLABLE PX_FORCE_INLINE float selectMin(float a, float b) { return a<b ? a : b; } - - //! \brief platform-specific maximum - PX_CUDA_CALLABLE PX_FORCE_INLINE float selectMax(float a, float b) { return a>b ? a : b; } - - //! \brief platform-specific finiteness check - PX_CUDA_CALLABLE PX_FORCE_INLINE bool isFinite(float a) - { -#ifdef __CUDACC__ - return isfinite(a) ? true : false; -#else - return !nn::cstd::IsNan(a) && !nn::cstd::IsInf(a); -#endif - } - - //! \brief platform-specific finiteness check - PX_CUDA_CALLABLE PX_FORCE_INLINE bool isFinite(double a) - { -#ifdef __CUDACC__ - return isfinite(a) ? true : false; -#else - return !nn::cstd::IsNan(a) && !nn::cstd::IsInf(a); -#endif - } - - /*! - Sets \c count bytes starting at \c dst to zero. - */ - PX_FORCE_INLINE void* memZero(void* PX_RESTRICT dest, uint32_t count) - { - return memset(dest, 0, count); - } - - /*! - Sets \c count bytes starting at \c dst to \c c. - */ - PX_FORCE_INLINE void* memSet(void* PX_RESTRICT dest, int32_t c, uint32_t count) - { - return memset(dest, c, count); - } - - /*! - Copies \c count bytes from \c src to \c dst. User memMove if regions overlap. - */ - PX_FORCE_INLINE void* memCopy(void* PX_RESTRICT dest, const void* PX_RESTRICT src, uint32_t count) - { - return memcpy(dest, src, count); - } - - /*! - Copies \c count bytes from \c src to \c dst. Supports overlapping regions. - */ - PX_FORCE_INLINE void* memMove(void* PX_RESTRICT dest, const void* PX_RESTRICT src, uint32_t count) - { - return memmove(dest, src, count); - } - - /*! - Set 128B to zero starting at \c dst+offset. Must be aligned. - */ - PX_FORCE_INLINE void memZero128(void* PX_RESTRICT dest, uint32_t offset = 0) - { - PX_ASSERT(((size_t(dest)+offset) & 0x7f) == 0); - memSet((char* PX_RESTRICT)dest+offset, 0, 128); - } - -#if !PX_DOXYGEN -} // namespace intrinsics -} // namespace physx -#endif - -#endif diff --git a/NvCloth/samples/external/PxShared/1.0.21467209.1/include/foundation/unix/PxUnixIntrinsics.h b/NvCloth/samples/external/PxShared/1.0.21467209.1/include/foundation/unix/PxUnixIntrinsics.h deleted file mode 100644 index 7b9b9f3..0000000 --- a/NvCloth/samples/external/PxShared/1.0.21467209.1/include/foundation/unix/PxUnixIntrinsics.h +++ /dev/null @@ -1,181 +0,0 @@ -// 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 PXFOUNDATION_PXUNIXINTRINSICS_H -#define PXFOUNDATION_PXUNIXINTRINSICS_H - -#include "foundation/Px.h" -#include "foundation/PxAssert.h" - -#if !(PX_LINUX || PX_ANDROID || PX_PS4 || PX_APPLE_FAMILY) -#error "This file should only be included by Unix builds!!" -#endif - -#if PX_LINUX && PX_ARM - // Linux ARM toolchain can somehow end up including cmath header after math.h, which will undef a bunch of macros and place them in std namespace - #ifndef isfinite - #define isfinite std::isfinite - #endif -#endif - -#include <math.h> -#include <float.h> - -namespace physx -{ -namespace intrinsics -{ -//! \brief platform-specific absolute value -PX_CUDA_CALLABLE PX_FORCE_INLINE float abs(float a) -{ - return ::fabsf(a); -} - -//! \brief platform-specific select float -PX_CUDA_CALLABLE PX_FORCE_INLINE float fsel(float a, float b, float c) -{ - return (a >= 0.0f) ? b : c; -} - -//! \brief platform-specific sign -PX_CUDA_CALLABLE PX_FORCE_INLINE float sign(float a) -{ - return (a >= 0.0f) ? 1.0f : -1.0f; -} - -//! \brief platform-specific reciprocal -PX_CUDA_CALLABLE PX_FORCE_INLINE float recip(float a) -{ - return 1.0f / a; -} - -//! \brief platform-specific reciprocal estimate -PX_CUDA_CALLABLE PX_FORCE_INLINE float recipFast(float a) -{ - return 1.0f / a; -} - -//! \brief platform-specific square root -PX_CUDA_CALLABLE PX_FORCE_INLINE float sqrt(float a) -{ - return ::sqrtf(a); -} - -//! \brief platform-specific reciprocal square root -PX_CUDA_CALLABLE PX_FORCE_INLINE float recipSqrt(float a) -{ - return 1.0f / ::sqrtf(a); -} - -PX_CUDA_CALLABLE PX_FORCE_INLINE float recipSqrtFast(float a) -{ - return 1.0f / ::sqrtf(a); -} - -//! \brief platform-specific sine -PX_CUDA_CALLABLE PX_FORCE_INLINE float sin(float a) -{ - return ::sinf(a); -} - -//! \brief platform-specific cosine -PX_CUDA_CALLABLE PX_FORCE_INLINE float cos(float a) -{ - return ::cosf(a); -} - -//! \brief platform-specific minimum -PX_CUDA_CALLABLE PX_FORCE_INLINE float selectMin(float a, float b) -{ - return a < b ? a : b; -} - -//! \brief platform-specific maximum -PX_CUDA_CALLABLE PX_FORCE_INLINE float selectMax(float a, float b) -{ - return a > b ? a : b; -} - -//! \brief platform-specific finiteness check (not INF or NAN) -PX_CUDA_CALLABLE PX_FORCE_INLINE bool isFinite(float a) -{ - return !!isfinite(a); -} - -//! \brief platform-specific finiteness check (not INF or NAN) -PX_CUDA_CALLABLE PX_FORCE_INLINE bool isFinite(double a) -{ - return !!isfinite(a); -} - -/*! -Sets \c count bytes starting at \c dst to zero. -*/ -PX_FORCE_INLINE void* memZero(void* dest, uint32_t count) -{ - return memset(dest, 0, count); -} - -/*! -Sets \c count bytes starting at \c dst to \c c. -*/ -PX_FORCE_INLINE void* memSet(void* dest, int32_t c, uint32_t count) -{ - return memset(dest, c, count); -} - -/*! -Copies \c count bytes from \c src to \c dst. User memMove if regions overlap. -*/ -PX_FORCE_INLINE void* memCopy(void* PX_RESTRICT dest, const void* PX_RESTRICT src, uint32_t count) -{ - return memcpy(dest, src, count); -} - -/*! -Copies \c count bytes from \c src to \c dst. Supports overlapping regions. -*/ -PX_FORCE_INLINE void* memMove(void* dest, const void* src, uint32_t count) -{ - return memmove(dest, src, count); -} - -/*! -Set 128B to zero starting at \c dst+offset. Must be aligned. -*/ -PX_FORCE_INLINE void memZero128(void* dest, uint32_t offset = 0) -{ - PX_ASSERT(((size_t(dest) + offset) & 0x7f) == 0); - memSet(reinterpret_cast<char*>(dest) + offset, 0, 128); -} - -} // namespace intrinsics -} // namespace physx - -#endif // #ifndef PXFOUNDATION_PXUNIXINTRINSICS_H diff --git a/NvCloth/samples/external/PxShared/1.0.21467209.1/include/foundation/windows/PxWindowsFoundationDelayLoadHook.h b/NvCloth/samples/external/PxShared/1.0.21467209.1/include/foundation/windows/PxWindowsFoundationDelayLoadHook.h deleted file mode 100644 index 1d42185..0000000 --- a/NvCloth/samples/external/PxShared/1.0.21467209.1/include/foundation/windows/PxWindowsFoundationDelayLoadHook.h +++ /dev/null @@ -1,71 +0,0 @@ -// 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 PX_FOUNDATION_DELAY_LOAD_HOOK -#define PX_FOUNDATION_DELAY_LOAD_HOOK - -#include "foundation/PxPreprocessor.h" - -/** \addtogroup foundation -@{ -*/ - -#if !PX_DOXYGEN -namespace physx -{ -#endif - /** - \brief PxFoundationDelayLoadHook - - This is a helper class for delay loading the PxFoundation dll. - If a PxFoundation dll with a non-default file name needs to be loaded, - PxFoundationDelayLoadHook can be sub-classed to provide the custom file names. - - Once the names are set, the instance must be set for use by the loading dll. - */ - class PxFoundationDelayLoadHook - { - public: - PxFoundationDelayLoadHook() {} - virtual ~PxFoundationDelayLoadHook() {} - - virtual const char* getPxFoundationDEBUGDllName() const = 0; - virtual const char* getPxFoundationCHECKEDDllName() const = 0; - virtual const char* getPxFoundationPROFILEDllName() const = 0; - virtual const char* getPxFoundationDllName() const = 0; - - protected: - private: - }; - -#if !PX_DOXYGEN -} // namespace physx -#endif -/** @} */ -#endif diff --git a/NvCloth/samples/external/PxShared/1.0.21467209.1/include/foundation/windows/PxWindowsIntrinsics.h b/NvCloth/samples/external/PxShared/1.0.21467209.1/include/foundation/windows/PxWindowsIntrinsics.h deleted file mode 100644 index 766558e..0000000 --- a/NvCloth/samples/external/PxShared/1.0.21467209.1/include/foundation/windows/PxWindowsIntrinsics.h +++ /dev/null @@ -1,188 +0,0 @@ -// 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 PXFOUNDATION_PXWINDOWSINTRINSICS_H -#define PXFOUNDATION_PXWINDOWSINTRINSICS_H - -#include "foundation/Px.h" -#include "foundation/PxAssert.h" - -#if !PX_WINDOWS_FAMILY -#error "This file should only be included by Windows builds!!" -#endif - -#include <math.h> -#include <float.h> - -#if !PX_DOXYGEN -namespace physx -{ -namespace intrinsics -{ -#endif - -//! \brief platform-specific absolute value -PX_CUDA_CALLABLE PX_FORCE_INLINE float abs(float a) -{ - return ::fabsf(a); -} - -//! \brief platform-specific select float -PX_CUDA_CALLABLE PX_FORCE_INLINE float fsel(float a, float b, float c) -{ - return (a >= 0.0f) ? b : c; -} - -//! \brief platform-specific sign -PX_CUDA_CALLABLE PX_FORCE_INLINE float sign(float a) -{ - return (a >= 0.0f) ? 1.0f : -1.0f; -} - -//! \brief platform-specific reciprocal -PX_CUDA_CALLABLE PX_FORCE_INLINE float recip(float a) -{ - return 1.0f / a; -} - -//! \brief platform-specific reciprocal estimate -PX_CUDA_CALLABLE PX_FORCE_INLINE float recipFast(float a) -{ - return 1.0f / a; -} - -//! \brief platform-specific square root -PX_CUDA_CALLABLE PX_FORCE_INLINE float sqrt(float a) -{ - return ::sqrtf(a); -} - -//! \brief platform-specific reciprocal square root -PX_CUDA_CALLABLE PX_FORCE_INLINE float recipSqrt(float a) -{ - return 1.0f / ::sqrtf(a); -} - -//! \brief platform-specific reciprocal square root estimate -PX_CUDA_CALLABLE PX_FORCE_INLINE float recipSqrtFast(float a) -{ - return 1.0f / ::sqrtf(a); -} - -//! \brief platform-specific sine -PX_CUDA_CALLABLE PX_FORCE_INLINE float sin(float a) -{ - return ::sinf(a); -} - -//! \brief platform-specific cosine -PX_CUDA_CALLABLE PX_FORCE_INLINE float cos(float a) -{ - return ::cosf(a); -} - -//! \brief platform-specific minimum -PX_CUDA_CALLABLE PX_FORCE_INLINE float selectMin(float a, float b) -{ - return a < b ? a : b; -} - -//! \brief platform-specific maximum -PX_CUDA_CALLABLE PX_FORCE_INLINE float selectMax(float a, float b) -{ - return a > b ? a : b; -} - -//! \brief platform-specific finiteness check (not INF or NAN) -PX_CUDA_CALLABLE PX_FORCE_INLINE bool isFinite(float a) -{ -#ifdef __CUDACC__ - return !!isfinite(a); -#else - return (0 == ((_FPCLASS_SNAN | _FPCLASS_QNAN | _FPCLASS_NINF | _FPCLASS_PINF) & _fpclass(a))); -#endif -} - -//! \brief platform-specific finiteness check (not INF or NAN) -PX_CUDA_CALLABLE PX_FORCE_INLINE bool isFinite(double a) -{ -#ifdef __CUDACC__ - return !!isfinite(a); -#else - return (0 == ((_FPCLASS_SNAN | _FPCLASS_QNAN | _FPCLASS_NINF | _FPCLASS_PINF) & _fpclass(a))); -#endif -} - -/*! -Sets \c count bytes starting at \c dst to zero. -*/ -PX_FORCE_INLINE void* memZero(void* dest, uint32_t count) -{ - return memset(dest, 0, count); -} - -/*! -Sets \c count bytes starting at \c dst to \c c. -*/ -PX_FORCE_INLINE void* memSet(void* dest, int32_t c, uint32_t count) -{ - return memset(dest, c, count); -} - -/*! -Copies \c count bytes from \c src to \c dst. User memMove if regions overlap. -*/ -PX_FORCE_INLINE void* memCopy(void* PX_RESTRICT dest, const void* PX_RESTRICT src, uint32_t count) -{ - return memcpy(dest, src, count); -} - -/*! -Copies \c count bytes from \c src to \c dst. Supports overlapping regions. -*/ -PX_FORCE_INLINE void* memMove(void* dest, const void* src, uint32_t count) -{ - return memmove(dest, src, count); -} - -/*! -Set 128B to zero starting at \c dst+offset. Must be aligned. -*/ -PX_FORCE_INLINE void memZero128(void* dest, uint32_t offset = 0) -{ - PX_ASSERT(((size_t(dest) + offset) & 0x7f) == 0); - memSet(reinterpret_cast<char*>(dest) + offset, 0, 128); -} - -#if !PX_DOXYGEN -} // namespace intrinsics -} // namespace physx -#endif - -#endif // #ifndef PXFOUNDATION_PXWINDOWSINTRINSICS_H diff --git a/NvCloth/samples/external/PxShared/1.0.21467209.1/include/foundation/xboxone/PxXboxOneIntrinsics.h b/NvCloth/samples/external/PxShared/1.0.21467209.1/include/foundation/xboxone/PxXboxOneIntrinsics.h deleted file mode 100644 index b6ddf7a..0000000 --- a/NvCloth/samples/external/PxShared/1.0.21467209.1/include/foundation/xboxone/PxXboxOneIntrinsics.h +++ /dev/null @@ -1,188 +0,0 @@ -// 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 PXFOUNDATION_PXXBOXONEINTRINSICS_H -#define PXFOUNDATION_PXXBOXONEINTRINSICS_H - -#include "foundation/Px.h" -#include "foundation/PxAssert.h" - -#if !PX_XBOXONE -#error "This file should only be included by XboxOne builds!!" -#endif - -#include <math.h> -#include <float.h> - -#if !PX_DOXYGEN -namespace physx -{ -namespace intrinsics -{ -#endif - -//! \brief platform-specific absolute value -PX_FORCE_INLINE float abs(float a) -{ - return ::fabsf(a); -} - -//! \brief platform-specific select float -PX_FORCE_INLINE float fsel(float a, float b, float c) -{ - return (a >= 0.0f) ? b : c; -} - -//! \brief platform-specific sign -PX_FORCE_INLINE float sign(float a) -{ - return (a >= 0.0f) ? 1.0f : -1.0f; -} - -//! \brief platform-specific reciprocal -PX_FORCE_INLINE float recip(float a) -{ - return 1.0f / a; -} - -//! \brief platform-specific reciprocal estimate -PX_FORCE_INLINE float recipFast(float a) -{ - return 1.0f / a; -} - -//! \brief platform-specific square root -PX_FORCE_INLINE float sqrt(float a) -{ - return ::sqrtf(a); -} - -//! \brief platform-specific reciprocal square root -PX_FORCE_INLINE float recipSqrt(float a) -{ - return 1.0f / ::sqrtf(a); -} - -//! \brief platform-specific reciprocal square root estimate -PX_FORCE_INLINE float recipSqrtFast(float a) -{ - return 1.0f / ::sqrtf(a); -} - -//! \brief platform-specific sine -PX_FORCE_INLINE float sin(float a) -{ - return ::sinf(a); -} - -//! \brief platform-specific cosine -PX_FORCE_INLINE float cos(float a) -{ - return ::cosf(a); -} - -//! \brief platform-specific minimum -PX_FORCE_INLINE float selectMin(float a, float b) -{ - return a < b ? a : b; -} - -//! \brief platform-specific maximum -PX_FORCE_INLINE float selectMax(float a, float b) -{ - return a > b ? a : b; -} - -//! \brief platform-specific finiteness check (not INF or NAN) -PX_FORCE_INLINE bool isFinite(float a) -{ -#ifdef __CUDACC__ - return isfinite(a) ? true : false; -#else - return (0 == ((_FPCLASS_SNAN | _FPCLASS_QNAN | _FPCLASS_NINF | _FPCLASS_PINF) & _fpclass(a))); -#endif -} - -//! \brief platform-specific finiteness check (not INF or NAN) -PX_FORCE_INLINE bool isFinite(double a) -{ -#ifdef __CUDACC__ - return isfinite(a) ? true : false; -#else - return (0 == ((_FPCLASS_SNAN | _FPCLASS_QNAN | _FPCLASS_NINF | _FPCLASS_PINF) & _fpclass(a))); -#endif -} - -/*! -Sets \c count bytes starting at \c dst to zero. -*/ -PX_FORCE_INLINE void* memZero(void* dest, uint32_t count) -{ - return memset(dest, 0, count); -} - -/*! -Sets \c count bytes starting at \c dst to \c c. -*/ -PX_FORCE_INLINE void* memSet(void* dest, int32_t c, uint32_t count) -{ - return memset(dest, c, count); -} - -/*! -Copies \c count bytes from \c src to \c dst. User memMove if regions overlap. -*/ -PX_FORCE_INLINE void* memCopy(void* PX_RESTRICT dest, const void* PX_RESTRICT src, uint32_t count) -{ - return memcpy(dest, src, count); -} - -/*! -Copies \c count bytes from \c src to \c dst. Supports overlapping regions. -*/ -PX_FORCE_INLINE void* memMove(void* dest, const void* src, uint32_t count) -{ - return memmove(dest, src, count); -} - -/*! -Set 128B to zero starting at \c dst+offset. Must be aligned. -*/ -PX_FORCE_INLINE void memZero128(void* dest, uint32_t offset = 0) -{ - PX_ASSERT(((size_t(dest) + offset) & 0x7f) == 0); - memSet(reinterpret_cast<char*>(dest) + offset, 0, 128); -} - -#if !PX_DOXYGEN -} // namespace intrinsics -} // namespace physx -#endif - -#endif // #ifndef PXFOUNDATION_PXXBOXONEINTRINSICS_H |