aboutsummaryrefslogtreecommitdiff
path: root/sdk/lowlevel/include
diff options
context:
space:
mode:
authorAnton Novoselov <[email protected]>2017-08-01 12:53:38 +0300
committerAnton Novoselov <[email protected]>2017-08-01 12:53:38 +0300
commit236f03c0b9a4982328ed1201978f7f69d192d9b2 (patch)
treee486f2fa39dba203563895541e92c60ed3e25759 /sdk/lowlevel/include
parentAdded screens to welcome page (diff)
downloadblast-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.h154
-rw-r--r--sdk/lowlevel/include/NvBlastPreprocessor.h45
-rw-r--r--sdk/lowlevel/include/NvBlastProfiler.h52
-rw-r--r--sdk/lowlevel/include/NvBlastTypes.h99
-rw-r--r--sdk/lowlevel/include/NvCTypes.h125
-rw-r--r--sdk/lowlevel/include/NvPreprocessor.h2
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.