diff options
| author | Anton Novoselov <[email protected]> | 2017-08-01 12:53:38 +0300 |
|---|---|---|
| committer | Anton Novoselov <[email protected]> | 2017-08-01 12:53:38 +0300 |
| commit | 236f03c0b9a4982328ed1201978f7f69d192d9b2 (patch) | |
| tree | e486f2fa39dba203563895541e92c60ed3e25759 /sdk/lowlevel/include | |
| parent | Added screens to welcome page (diff) | |
| download | blast-236f03c0b9a4982328ed1201978f7f69d192d9b2.tar.xz blast-236f03c0b9a4982328ed1201978f7f69d192d9b2.zip | |
Blast 1.1 release (windows / linux)
see docs/release_notes.txt for details
Diffstat (limited to 'sdk/lowlevel/include')
| -rw-r--r-- | sdk/lowlevel/include/NvBlast.h | 154 | ||||
| -rw-r--r-- | sdk/lowlevel/include/NvBlastPreprocessor.h | 45 | ||||
| -rw-r--r-- | sdk/lowlevel/include/NvBlastProfiler.h | 52 | ||||
| -rw-r--r-- | sdk/lowlevel/include/NvBlastTypes.h | 99 | ||||
| -rw-r--r-- | sdk/lowlevel/include/NvCTypes.h | 125 | ||||
| -rw-r--r-- | sdk/lowlevel/include/NvPreprocessor.h | 2 |
6 files changed, 312 insertions, 165 deletions
diff --git a/sdk/lowlevel/include/NvBlast.h b/sdk/lowlevel/include/NvBlast.h index d4c91a7..0a4872f 100644 --- a/sdk/lowlevel/include/NvBlast.h +++ b/sdk/lowlevel/include/NvBlast.h @@ -1,12 +1,30 @@ -/* -* Copyright (c) 2016-2017, 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. -*/ +// 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) 2016-2017 NVIDIA Corporation. All rights reserved. + #ifndef NVBLAST_H #define NVBLAST_H @@ -155,6 +173,21 @@ NVBLAST_API uint32_t NvBlastAssetGetChunkCount(const NvBlastAsset* asset, NvBlas /** +Get the number of support chunks in the given asset. This will equal the number of +graph nodes in NvBlastSupportGraph::nodeCount returned by NvBlastAssetGetSupportGraph only +if no extra "world" node was created due to bonds defined between support chunks and the world. +If such bonds were created, then there is an extra graph node representing the world, and this +function will return NvBlastSupportGraph::nodeCount - 1. + +\param[in] asset The asset. +\param[in] logFn User-supplied message function (see NvBlastLog definition). May be NULL. + +\return the number of chunks in the asset. +*/ +NVBLAST_API uint32_t NvBlastAssetGetSupportChunkCount(const NvBlastAsset* asset, NvBlastLog logFn); + + +/** Get the number of leaf chunks in the given asset. \param[in] asset The asset. @@ -280,8 +313,8 @@ Build chunk reorder map. NvBlastCreateAsset function requires NvBlastChunkDesc array to be in correct oder: 1. Root chunks (chunks with invalid parent index) must be first in the asset's chunk list. -2. Chunks in the asset should be arranged such that sibling chunks (chunks with the same parent) are contiguous. -3. Chunks are also should be arranged such that upper-support chunks (support chunks and their parent chunks) should go first in +2. Chunks in the asset must be arranged such that sibling chunks (chunks with the same parent) are contiguous. +3. Chunks must be arranged such that upper-support chunks (support chunks and their parent chunks) go first in chunk list. This function builds chunk reorder map which can be used to order chunk descs. Reordering chunk's descriptors @@ -308,13 +341,14 @@ with new indices. Bonds are kept in the same order, but their 'chunkIndices' fie @see NvBlastBuildAssetDescChunkReorderMap -\param[out] reorderedChunkDescs User-supplied array of size chunkCount to fill with new reordered NvBlastChunkDesc's. -\param[in] chunkDescs Array of chunk descriptors of size chunkCount. -\param[in] chunkCount The number of chunk descriptors. -\param[in] bondDescs Array of bond descriptors of size chunkCount. It will be updated accordingly. -\param[in] bondCount The number of bond descriptors. -\param[in] chunkReorderMap Chunk reorder map to use, must be of size chunkCount. -\param[in] logFn User-supplied message function (see NvBlastLog definition). May be NULL. +\param[out] reorderedChunkDescs User-supplied array of size chunkCount to fill with new reordered NvBlastChunkDesc's. +\param[in] chunkDescs Array of chunk descriptors of size chunkCount. +\param[in] chunkCount The number of chunk descriptors. +\param[in] bondDescs Array of bond descriptors of size chunkCount. It will be updated accordingly. +\param[in] bondCount The number of bond descriptors. +\param[in] chunkReorderMap Chunk reorder map to use, must be of size chunkCount. +\param[in] keepBondNormalChunkOrder If true, bond normals will be flipped if their chunk index order was reveresed by the reorder map. +\param[in] logFn User-supplied message function (see NvBlastLog definition). May be NULL. */ NVBLAST_API void NvBlastApplyAssetDescChunkReorderMap ( @@ -324,6 +358,7 @@ NVBLAST_API void NvBlastApplyAssetDescChunkReorderMap NvBlastBondDesc* bondDescs, uint32_t bondCount, const uint32_t* chunkReorderMap, + bool keepBondNormalChunkOrder, NvBlastLog logFn ); @@ -338,15 +373,26 @@ This overload of function reorders chunks in place. @see NvBlastBuildAssetDescChunkReorderMap -\param[in] chunkDescs Array of chunk descriptors of size chunkCount. It will be updated accordingly. -\param[in] chunkCount The number of chunk descriptors. -\param[in] bondDescs Array of bond descriptors of size chunkCount. It will be updated accordingly. -\param[in] bondCount The number of bond descriptors. -\param[in] chunkReorderMap Chunk reorder map to use, must be of size chunkCount. -\param[in] scratch User-supplied scratch storage, must point to chunkCount * sizeof(NvBlastChunkDesc) valid bytes of memory. -\param[in] logFn User-supplied message function (see NvBlastLog definition). May be NULL. +\param[in] chunkDescs Array of chunk descriptors of size chunkCount. It will be updated accordingly. +\param[in] chunkCount The number of chunk descriptors. +\param[in] bondDescs Array of bond descriptors of size chunkCount. It will be updated accordingly. +\param[in] bondCount The number of bond descriptors. +\param[in] chunkReorderMap Chunk reorder map to use, must be of size chunkCount. +\param[in] keepBondNormalChunkOrder If true, bond normals will be flipped if their chunk index order was reveresed by the reorder map. +\param[in] scratch User-supplied scratch storage, must point to chunkCount * sizeof(NvBlastChunkDesc) valid bytes of memory. +\param[in] logFn User-supplied message function (see NvBlastLog definition). May be NULL. */ -NVBLAST_API void NvBlastApplyAssetDescChunkReorderMapInplace(NvBlastChunkDesc* chunkDescs, uint32_t chunkCount, NvBlastBondDesc* bondDescs, uint32_t bondCount, const uint32_t* chunkReorderMap, void* scratch, NvBlastLog logFn); +NVBLAST_API void NvBlastApplyAssetDescChunkReorderMapInPlace +( + NvBlastChunkDesc* chunkDescs, + uint32_t chunkCount, + NvBlastBondDesc* bondDescs, + uint32_t bondCount, + const uint32_t* chunkReorderMap, + bool keepBondNormalChunkOrder, + void* scratch, + NvBlastLog logFn +); /** @@ -354,17 +400,28 @@ Build and apply chunk reorder map. Function basically calls NvBlastBuildAssetDescChunkReorderMap and NvBlastApplyAssetDescChunkReorderMap. Used for Convenience. -\param[in] chunkDescs Array of chunk descriptors of size chunkCount. It will be updated accordingly. -\param[in] chunkCount The number of chunk descriptors. -\param[in] bondDescs Array of bond descriptors of size chunkCount. It will be updated accordingly. -\param[in] bondCount The number of bond descriptors. -\param[in] chunkReorderMap Chunk reorder map to fill, must be of size chunkCount. -\param[in] scratch User-supplied scratch storage, must point to chunkCount * sizeof(NvBlastChunkDesc) valid bytes of memory. -\param[in] logFn User-supplied message function (see NvBlastLog definition). May be NULL. +\param[in] chunkDescs Array of chunk descriptors of size chunkCount. It will be updated accordingly. +\param[in] chunkCount The number of chunk descriptors. +\param[in] bondDescs Array of bond descriptors of size chunkCount. It will be updated accordingly. +\param[in] bondCount The number of bond descriptors. +\param[in] chunkReorderMap Chunk reorder map to fill, must be of size chunkCount. +\param[in] keepBondNormalChunkOrder If true, bond normals will be flipped if their chunk index order was reveresed by the reorder map. +\param[in] scratch User-supplied scratch storage, must point to chunkCount * sizeof(NvBlastChunkDesc) valid bytes of memory. +\param[in] logFn User-supplied message function (see NvBlastLog definition). May be NULL. \return true iff the chunks did not require reordering (chunkReorderMap is the identity map). */ -NVBLAST_API bool NvBlastReorderAssetDescChunks(NvBlastChunkDesc* chunkDescs, uint32_t chunkCount, NvBlastBondDesc* bondDescs, uint32_t bondCount, uint32_t* chunkReorderMap, void* scratch, NvBlastLog logFn); +NVBLAST_API bool NvBlastReorderAssetDescChunks +( + NvBlastChunkDesc* chunkDescs, + uint32_t chunkCount, + NvBlastBondDesc* bondDescs, + uint32_t bondCount, + uint32_t* chunkReorderMap, + bool keepBondNormalChunkOrder, + void* scratch, + NvBlastLog logFn +); ///@} End NvBlastAsset helper functions @@ -386,6 +443,17 @@ NVBLAST_API uint32_t NvBlastFamilyGetFormatVersion(const NvBlastFamily* family, /** +Retrieve the asset of the given family. + +\param[in] family The family. +\param[in] logFn User-supplied message function (see NvBlastLog definition). May be NULL. + +\return pointer to the asset associated with the family. +*/ +NVBLAST_API const NvBlastAsset* NvBlastFamilyGetAsset(const NvBlastFamily* family, NvBlastLog logFn); + + +/** Set asset to the family. It should be the same asset as the one family was created from (same ID). \param[in] family The family. @@ -776,6 +844,24 @@ Determines if the actor can fracture further. */ NVBLAST_API bool NvBlastActorCanFracture(const NvBlastActor* actor, NvBlastLog logFn); + +/** +Determines if the actor is damaged (was fractured) and split call is required. + +The actor could be damaged by calling NvBlastActorApplyFracture or NvBlastFamilyApplyFracture and NvBlastActorSplit is expected after. +This function gives a hint that NvBlastActorSplit will have some work to be done and actor could potentially be split. +If actor is not damaged calling NvBlastActorSplit will make no effect. + +\return true iff split call is required for this actor. +*/ +NVBLAST_API bool NvBlastActorIsSplitRequired(const NvBlastActor* actor, NvBlastLog logFn); + + +/** +\return true iff this actor contains the "world" support graph node, created when a bond contains the UINT32_MAX value for one of their chunkIndices. +*/ +NVBLAST_API bool NvBlastActorIsBoundToWorld(const NvBlastActor* actor, NvBlastLog logFn); + ///@} End NvBlastActor damage and fracturing functions diff --git a/sdk/lowlevel/include/NvBlastPreprocessor.h b/sdk/lowlevel/include/NvBlastPreprocessor.h index 25a8516..8e5cc78 100644 --- a/sdk/lowlevel/include/NvBlastPreprocessor.h +++ b/sdk/lowlevel/include/NvBlastPreprocessor.h @@ -1,12 +1,30 @@ -/* -* Copyright (c) 2016-2017, 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. -*/ +// 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) 2016-2017 NVIDIA Corporation. All rights reserved. + #ifndef NVBLASTPREPROCESSOR_H #define NVBLASTPREPROCESSOR_H @@ -19,13 +37,4 @@ #define NVBLAST_API NV_C_EXPORT NV_DLL_EXPORT -/** -Macros for more convenient logging -*/ -#define NVBLAST_LOG_ERROR(_logFn, _msg) if (_logFn != nullptr) { _logFn(NvBlastMessage::Error, _msg, __FILE__, __LINE__); } ((void)0) -#define NVBLAST_LOG_WARNING(_logFn, _msg) if (_logFn != nullptr) { _logFn(NvBlastMessage::Warning, _msg, __FILE__, __LINE__); } ((void)0) -#define NVBLAST_LOG_INFO(_logFn, _msg) if (_logFn != nullptr) { _logFn(NvBlastMessage::Info, _msg, __FILE__, __LINE__); } ((void)0) -#define NVBLAST_LOG_DEBUG(_logFn, _msg) if (_logFn != nullptr) { _logFn(NvBlastMessage::Debug, _msg, __FILE__, __LINE__); } ((void)0) - - #endif // ifndef NVBLASTPREPROCESSOR_H diff --git a/sdk/lowlevel/include/NvBlastProfiler.h b/sdk/lowlevel/include/NvBlastProfiler.h deleted file mode 100644 index cd60b4f..0000000 --- a/sdk/lowlevel/include/NvBlastProfiler.h +++ /dev/null @@ -1,52 +0,0 @@ -/* -* Copyright (c) 2016-2017, 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. -*/ - -#ifndef NVBLASTPROFILER_H -#define NVBLASTPROFILER_H - -#include "NvBlastPreprocessor.h" - -namespace physx { - class PxProfilerCallback; -} - -struct NvBlastProfilerDetail -{ - enum Level - { - LOW, - MEDIUM, - HIGH - }; -}; - -/** -Profiler features are only active in checked, debug and profile builds. -*/ - -/** -Set a callback to PVD or another PxProfilerCallback based profiler. -*/ -NVBLAST_API void NvBlastProfilerSetCallback(physx::PxProfilerCallback* pcb); - -/** -Enable events for platform specific profiler tools. Currently supported: -Nsight, PS4, Xbox One -*/ -NVBLAST_API void NvBlastProfilerEnablePlatform(bool); - -/** -Sets the depth of reported profile zones. -Higher levels (more nesting) of instrumentation can have a significant impact. -Defaults to NvBlastProfilerDetail::Level::LOW. -*/ -NVBLAST_API void NvBlastProfilerSetDetail(NvBlastProfilerDetail::Level); - -#endif diff --git a/sdk/lowlevel/include/NvBlastTypes.h b/sdk/lowlevel/include/NvBlastTypes.h index d711842..9fbeef9 100644 --- a/sdk/lowlevel/include/NvBlastTypes.h +++ b/sdk/lowlevel/include/NvBlastTypes.h @@ -1,12 +1,30 @@ -/* -* Copyright (c) 2016-2017, 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. -*/ +// 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) 2016-2017 NVIDIA Corporation. All rights reserved. + #ifndef NVBLASTTYPES_H #define NVBLASTTYPES_H @@ -123,28 +141,6 @@ struct NvBlastDataBlock /////////////////////////////////////////////////////////////////////////////// ///@{ - -/** -Struct-enum which keeps track of the asset data format. -*/ -struct NvBlastAssetDataFormat -{ - enum Version - { - /** Initial version */ - Initial, - - // New formats must come before Count. They should be given descriptive names with more information in comments. - - /** The number of asset formats. */ - Count, - - /** The current version. This should always be Count-1 */ - Current = Count - 1 - }; -}; - - /** Represents a piece of a destructible asset which may be realized as an entity with a physical and graphical component. @@ -189,8 +185,6 @@ struct NvBlastChunk /** Represents the interface between two chunks. At most one bond is created for a chunk pair. -The convention regarding the normal direction is based upon the chunk indices, -pointing from the lower-indexed chunk to the higher-indexed chunk. */ struct NvBlastBond { @@ -283,7 +277,7 @@ struct NvBlastSupportGraph /** Asset (opaque) -Static destructible data, used to create actor familes. +Static destructible data, used to create actor families. Pointer to this struct can be created with NvBlastCreateAsset. @@ -327,11 +321,16 @@ Chunk bond descriptor used to build an asset. See NvBlastAssetDesc. */ struct NvBlastBondDesc { - /** The indices of the chunks linked by this bond. They must be different support chunk indices. */ - uint32_t chunkIndices[2]; - /** Bond data (see NvBlastBond). */ NvBlastBond bond; + + /** + The indices of the chunks linked by this bond. They must be different support chunk indices. + If one of the chunk indices is the invalid index (UINT32_MAX), then this will create a bond between + the chunk indexed by the other index (which must be valid) and "the world." Any actor containing + this bond will cause the function NvBlastActorIsBoundToWorld to return true. + */ + uint32_t chunkIndices[2]; }; @@ -366,28 +365,6 @@ struct NvBlastAssetDesc /////////////////////////////////////////////////////////////////////////////// ///@{ - -/** -Struct-enum which keeps track of the family data format. -*/ -struct NvBlastFamilyDataFormat -{ - enum Version - { - /** Initial version */ - Initial, - - // New formats must come before Count. They should be given descriptive names with more information in comments. - - /** The number of family formats. */ - Count, - - /** The current version. This should always be Count-1 */ - Current = Count - 1 - }; -}; - - /** Family (opaque) @@ -435,7 +412,7 @@ struct NvBlastActorDesc /** Initial health of all support chunks. If not NULL, this must be of length - NvBlastAssetGetSupportGraph(asset, logFn).nodeCount. The elements in the initialSupportChunkHealth + NvBlastAssetGetSupportChunkCount(asset, logFn).nodeCount. The elements in the initialSupportChunkHealth array will correspond to the chunk indices in the NvBlastAssetGetSupportGraph(asset, logFn).chunkIndices array. Every descendent of a support chunk will have its health initialized to its ancestor support chunk's health, so this initializes all lower-support chunk healths. @@ -520,7 +497,9 @@ struct NvBlastGraphShaderActor const uint32_t* adjacentNodeIndices; //!< See NvBlastSupportGraph::adjacentNodeIndices. const uint32_t* adjacentBondIndices; //!< See NvBlastSupportGraph::adjacentBondIndices. const NvBlastBond* assetBonds; //!< NvBlastBonds geometry in the NvBlastAsset. + const NvBlastChunk* assetChunks; //!< NvBlastChunks geometry in the NvBlastAsset. const float* familyBondHealths; //!< Actual bond health values for broken bond detection. + const float* supportChunkHealths; //!< Actual chunk health values for dead chunk detection. }; diff --git a/sdk/lowlevel/include/NvCTypes.h b/sdk/lowlevel/include/NvCTypes.h new file mode 100644 index 0000000..0dcf885 --- /dev/null +++ b/sdk/lowlevel/include/NvCTypes.h @@ -0,0 +1,125 @@ +// 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 NV_C_TYPES_H +#define NV_C_TYPES_H + +#include "NvPreprocessor.h" +#ifdef _MSC_VER +#ifndef _INTPTR +#define _INTPTR 0 +#endif +#endif +#include <stdint.h> + +/** C type for 2-float vectors */ +typedef struct +{ + float x, y; +} NvcVec2; + +/** C type for 3-float vectors */ +typedef struct +{ + float x, y, z; +} NvcVec3; + +/** C type for 4-float vectors */ +typedef struct +{ + float x, y, z, w; +} NvcVec4; + +/** C type for quaternions */ +typedef struct +{ + float x, y, z, w; +} NvcQuat; + +/** C type for transforms */ +typedef struct +{ + NvcQuat q; + NvcVec3 p; +} NvcTransform; + +/** C type for 3x3 matrices */ +typedef struct +{ + NvcVec3 column0, column1, column2, column3; +} NvcMat34; + +/** C type for 3x3 matrices */ +typedef struct +{ + NvcVec3 column0, column1, column2; +} NvcMat33; + +/** C type for 4x4 matrices */ +typedef struct +{ + NvcVec4 column0, column1, column2, column3; +} NvcMat44; + +/** C type for 3d bounding box */ +typedef struct +{ + NvcVec3 minimum; + NvcVec3 maximum; +} NvcBounds3; + +/** C type for a plane */ +typedef struct +{ + NvcVec3 n; + float d; +} NvcPlane; + +/** C type for 2-integer vectors */ +typedef struct +{ + int32_t x, y; +} NvcVec2i; + +/** C type for 3-integer vectors */ +typedef struct +{ + int32_t x, y, z; +} NvcVec3i; + +/** C type for 4-integer vectors */ +typedef struct +{ + int32_t x, y, z, w; +} NvcVec4i; + +/** @} */ + +#endif // NV_C_TYPES_H diff --git a/sdk/lowlevel/include/NvPreprocessor.h b/sdk/lowlevel/include/NvPreprocessor.h index 07a3ebc..01e2d0f 100644 --- a/sdk/lowlevel/include/NvPreprocessor.h +++ b/sdk/lowlevel/include/NvPreprocessor.h @@ -23,7 +23,7 @@ // components in life support devices or systems without express written approval of // NVIDIA Corporation. // -// Copyright (c) 2008-2014 NVIDIA Corporation. All rights reserved. +// 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. |