NvBlast.h
Go to the documentation of this file.
1 // This code contains NVIDIA Confidential Information and is disclosed to you
2 // under a form of NVIDIA software license agreement provided separately to you.
3 //
4 // Notice
5 // NVIDIA Corporation and its licensors retain all intellectual property and
6 // proprietary rights in and to this software and related documentation and
7 // any modifications thereto. Any use, reproduction, disclosure, or
8 // distribution of this software and related documentation without an express
9 // license agreement from NVIDIA Corporation is strictly prohibited.
10 //
11 // ALL NVIDIA DESIGN SPECIFICATIONS, CODE ARE PROVIDED "AS IS.". NVIDIA MAKES
12 // NO WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
13 // THE MATERIALS, AND EXPRESSLY DISCLAIMS ALL IMPLIED WARRANTIES OF NONINFRINGEMENT,
14 // MERCHANTABILITY, AND FITNESS FOR A PARTICULAR PURPOSE.
15 //
16 // Information and code furnished is believed to be accurate and reliable.
17 // However, NVIDIA Corporation assumes no responsibility for the consequences of use of such
18 // information or for any infringement of patents or other rights of third parties that may
19 // result from its use. No license is granted by implication or otherwise under any patent
20 // or patent rights of NVIDIA Corporation. Details are subject to change without notice.
21 // This code supersedes and replaces all information previously supplied.
22 // NVIDIA Corporation products are not authorized for use as critical
23 // components in life support devices or systems without express written approval of
24 // NVIDIA Corporation.
25 //
26 // Copyright (c) 2016-2020 NVIDIA Corporation. All rights reserved.
27 
28 
29 #ifndef NVBLAST_H
30 #define NVBLAST_H
31 
32 
33 #include "NvBlastTypes.h"
34 
35 
37 // NvBlastAsset functions
40 
51 
52 
63 
64 
89 NVBLAST_API NvBlastAsset* NvBlastCreateAsset(void* mem, const NvBlastAssetDesc* desc, void* scratch, NvBlastLog logFn);
90 
91 
102 
103 
117 
118 
128 
129 
139 NVBLAST_API bool NvBlastAssetSetID(NvBlastAsset* asset, const NvBlastID* id, NvBlastLog logFn);
140 
141 
151 
152 
161 NVBLAST_API uint32_t NvBlastAssetGetSize(const NvBlastAsset* asset, NvBlastLog logFn);
162 
163 
172 NVBLAST_API uint32_t NvBlastAssetGetChunkCount(const NvBlastAsset* asset, NvBlastLog logFn);
173 
174 
188 
189 
199 
200 
212 
213 
222 NVBLAST_API uint32_t NvBlastAssetGetBondCount(const NvBlastAsset* asset, NvBlastLog logFn);
223 
224 
234 
235 
246 NVBLAST_API const uint32_t* NvBlastAssetGetChunkToGraphNodeMap(const NvBlastAsset* asset, NvBlastLog logFn);
247 
248 
258 
259 
269 
270 
282 
284 
285 
287 // NvBlastAsset helper functions
290 
307 NVBLAST_API bool NvBlastEnsureAssetExactSupportCoverage(NvBlastChunkDesc* chunkDescs, uint32_t chunkCount, void* scratch, NvBlastLog logFn);
308 
309 
333 NVBLAST_API bool NvBlastBuildAssetDescChunkReorderMap(uint32_t* chunkReorderMap, const NvBlastChunkDesc* chunkDescs, uint32_t chunkCount, void* scratch, NvBlastLog logFn);
334 
335 
354 (
355  NvBlastChunkDesc* reorderedChunkDescs,
356  const NvBlastChunkDesc* chunkDescs,
357  uint32_t chunkCount,
358  NvBlastBondDesc* bondDescs,
359  uint32_t bondCount,
360  const uint32_t* chunkReorderMap,
361  bool keepBondNormalChunkOrder,
362  NvBlastLog logFn
363 );
364 
365 
386 (
387  NvBlastChunkDesc* chunkDescs,
388  uint32_t chunkCount,
389  NvBlastBondDesc* bondDescs,
390  uint32_t bondCount,
391  const uint32_t* chunkReorderMap,
392  bool keepBondNormalChunkOrder,
393  void* scratch,
394  NvBlastLog logFn
395 );
396 
397 
415 (
416  NvBlastChunkDesc* chunkDescs,
417  uint32_t chunkCount,
418  NvBlastBondDesc* bondDescs,
419  uint32_t bondCount,
420  uint32_t* chunkReorderMap,
421  bool keepBondNormalChunkOrder,
422  void* scratch,
423  NvBlastLog logFn
424 );
425 
427 
428 
430 // NvBlastFamily functions
433 
443 
444 
454 
455 
463 NVBLAST_API void NvBlastFamilySetAsset(NvBlastFamily* family, const NvBlastAsset* asset, NvBlastLog logFn);
464 
465 
474 NVBLAST_API uint32_t NvBlastFamilyGetSize(const NvBlastFamily* family, NvBlastLog logFn);
475 
476 
486 
487 
497 
498 
510 
511 
520 NVBLAST_API uint32_t NvBlastFamilyGetActorCount(const NvBlastFamily* family, NvBlastLog logFn);
521 
522 
535 
536 
547 NVBLAST_API uint32_t NvBlastFamilyGetActors(NvBlastActor** actors, uint32_t actorsSize, const NvBlastFamily* family, NvBlastLog logFn);
548 
549 
559 NVBLAST_API NvBlastActor* NvBlastFamilyGetChunkActor(const NvBlastFamily* family, uint32_t chunkIndex, NvBlastLog logFn);
560 
561 
571 
573 
574 
576 // NvBlastActor accessor, serialization, and deactivation functions
579 
589 
590 
601 NVBLAST_API uint32_t NvBlastActorGetVisibleChunkIndices(uint32_t* visibleChunkIndices, uint32_t visibleChunkIndicesSize, const NvBlastActor* actor, NvBlastLog logFn);
602 
603 
613 
614 
625 NVBLAST_API uint32_t NvBlastActorGetGraphNodeIndices(uint32_t* graphNodeIndices, uint32_t graphNodeIndicesSize, const NvBlastActor* actor, NvBlastLog logFn);
626 
627 
648 NVBLAST_API const float* NvBlastActorGetBondHealths(const NvBlastActor* actor, NvBlastLog logFn);
649 
650 
661 
662 
673 NVBLAST_API uint32_t NvBlastActorSerialize(void* buffer, uint32_t bufferSize, const NvBlastActor* actor, NvBlastLog logFn);
674 
675 
685 
686 
695 NVBLAST_API uint32_t NvBlastActorGetIndex(const NvBlastActor* actor, NvBlastLog logFn);
696 
697 
707 
709 
710 
712 // NvBlastActor damage and fracturing functions
715 
739 (
740  NvBlastFractureBuffers* commandBuffers,
741  const NvBlastActor* actor,
742  const NvBlastDamageProgram program,
743  const void* programParams,
744  NvBlastLog logFn,
745  NvBlastTimers* timers
746 );
747 
748 
780 (
781  NvBlastFractureBuffers* eventBuffers,
782  NvBlastActor* actor,
783  const NvBlastFractureBuffers* commands,
784  NvBlastLog logFn,
785  NvBlastTimers* timers
786 );
787 
788 
803 (
804  NvBlastActorSplitEvent* result,
805  NvBlastActor* actor,
806  uint32_t newActorsMaxCount,
807  void* scratch,
808  NvBlastLog logFn,
809  NvBlastTimers* timers
810 );
811 
812 
823 
824 
835 
836 
846 
847 
858 
859 
864 
866 
867 
869 // NvBlastTimers functions and helpers
872 
879 
880 
888 NVBLAST_API double NvBlastTicksToSeconds(int64_t ticks);
889 
891 
892 
893 #endif // ifndef NVBLAST_H
uint32_t NvBlastAssetGetFormatVersion(const NvBlastAsset *asset, NvBlastLog logFn)
NvBlastFamily * NvBlastAssetCreateFamily(void *mem, const NvBlastAsset *asset, NvBlastLog logFn)
bool NvBlastActorDeactivate(NvBlastActor *actor, NvBlastLog logFn)
Definition: NvBlastTypes.h:244
Definition: NvBlastTypes.h:395
size_t NvBlastGetAssetMemorySize(const NvBlastAssetDesc *desc, NvBlastLog logFn)
NvBlastActor * NvBlastFamilyCreateFirstActor(NvBlastFamily *family, const NvBlastActorDesc *desc, void *scratch, NvBlastLog logFn)
uint32_t NvBlastFamilyGetActorCount(const NvBlastFamily *family, NvBlastLog logFn)
Definition: NvBlastTypes.h:189
void NvBlastFamilySetAsset(NvBlastFamily *family, const NvBlastAsset *asset, NvBlastLog logFn)
void NvBlastTimersReset(NvBlastTimers *timers)
const NvBlastBond * NvBlastAssetGetBonds(const NvBlastAsset *asset, NvBlastLog logFn)
uint32_t NvBlastAssetGetChunkCount(const NvBlastAsset *asset, NvBlastLog logFn)
uint32_t NvBlastFamilyGetMaxActorCount(const NvBlastFamily *family, NvBlastLog logFn)
Definition: NvBlastTypes.h:345
Definition: NvBlastTypes.h:322
uint32_t NvBlastAssetGetActorSerializationSizeUpperBound(const NvBlastAsset *asset, NvBlastLog logFn)
size_t NvBlastActorGetRequiredScratchForSplit(const NvBlastActor *actor, NvBlastLog logFn)
uint32_t NvBlastActorGetVisibleChunkIndices(uint32_t *visibleChunkIndices, uint32_t visibleChunkIndicesSize, const NvBlastActor *actor, NvBlastLog logFn)
uint32_t NvBlastActorGetMaxActorCountForSplit(const NvBlastActor *actor, NvBlastLog logFn)
const uint32_t * NvBlastAssetGetChunkToGraphNodeMap(const NvBlastAsset *asset, NvBlastLog logFn)
double NvBlastTicksToSeconds(int64_t ticks)
bool NvBlastAssetSetID(NvBlastAsset *asset, const NvBlastID *id, NvBlastLog logFn)
void NvBlastActorGenerateFracture(NvBlastFractureBuffers *commandBuffers, const NvBlastActor *actor, const NvBlastDamageProgram program, const void *programParams, NvBlastLog logFn, NvBlastTimers *timers)
NvBlastActor * NvBlastFamilyGetChunkActor(const NvBlastFamily *family, uint32_t chunkIndex, NvBlastLog logFn)
uint32_t NvBlastActorGetGraphNodeCount(const NvBlastActor *actor, NvBlastLog logFn)
void(* NvBlastLog)(int type, const char *msg, const char *file, int line)
Definition: NvBlastTypes.h:63
NvBlastActor * NvBlastFamilyDeserializeActor(NvBlastFamily *family, const void *buffer, NvBlastLog logFn)
NvBlastID NvBlastFamilyGetAssetID(const NvBlastFamily *family, NvBlastLog logFn)
bool NvBlastBuildAssetDescChunkReorderMap(uint32_t *chunkReorderMap, const NvBlastChunkDesc *chunkDescs, uint32_t chunkCount, void *scratch, NvBlastLog logFn)
size_t NvBlastGetRequiredScratchForCreateAsset(const NvBlastAssetDesc *desc, NvBlastLog logFn)
Definition: NvBlastTypes.h:85
bool NvBlastReorderAssetDescChunks(NvBlastChunkDesc *chunkDescs, uint32_t chunkCount, NvBlastBondDesc *bondDescs, uint32_t bondCount, uint32_t *chunkReorderMap, bool keepBondNormalChunkOrder, void *scratch, NvBlastLog logFn)
void NvBlastApplyAssetDescChunkReorderMap(NvBlastChunkDesc *reorderedChunkDescs, const NvBlastChunkDesc *chunkDescs, uint32_t chunkCount, NvBlastBondDesc *bondDescs, uint32_t bondCount, const uint32_t *chunkReorderMap, bool keepBondNormalChunkOrder, NvBlastLog logFn)
size_t NvBlastFamilyGetRequiredScratchForCreateFirstActor(const NvBlastFamily *family, NvBlastLog logFn)
uint32_t NvBlastActorGetIndex(const NvBlastActor *actor, NvBlastLog logFn)
Definition: NvBlastTypes.h:584
NvBlastAsset * NvBlastCreateAsset(void *mem, const NvBlastAssetDesc *desc, void *scratch, NvBlastLog logFn)
uint32_t NvBlastAssetGetSupportChunkCount(const NvBlastAsset *asset, NvBlastLog logFn)
#define NVBLAST_API
Definition: NvBlastPreprocessor.h:37
Definition: NvBlastTypes.h:481
bool NvBlastActorIsSplitRequired(const NvBlastActor *actor, NvBlastLog logFn)
const NvBlastSupportGraph NvBlastAssetGetSupportGraph(const NvBlastAsset *asset, NvBlastLog logFn)
uint32_t NvBlastAssetGetFirstSubsupportChunkIndex(const NvBlastAsset *asset, NvBlastLog logFn)
uint32_t NvBlastFamilyGetActors(NvBlastActor **actors, uint32_t actorsSize, const NvBlastFamily *family, NvBlastLog logFn)
bool NvBlastActorCanFracture(const NvBlastActor *actor, NvBlastLog logFn)
uint32_t NvBlastActorSplit(NvBlastActorSplitEvent *result, NvBlastActor *actor, uint32_t newActorsMaxCount, void *scratch, NvBlastLog logFn, NvBlastTimers *timers)
bool NvBlastActorIsBoundToWorld(const NvBlastActor *actor, NvBlastLog logFn)
const float * NvBlastActorGetBondHealths(const NvBlastActor *actor, NvBlastLog logFn)
uint32_t NvBlastActorGetSerializationSize(const NvBlastActor *actor, NvBlastLog logFn)
uint32_t NvBlastAssetGetBondCount(const NvBlastAsset *asset, NvBlastLog logFn)
Definition: NvBlastTypes.h:69
Definition: NvBlastTypes.h:292
Definition: NvBlastTypes.h:152
uint32_t NvBlastAssetGetSize(const NvBlastAsset *asset, NvBlastLog logFn)
uint32_t NvBlastActorGetGraphNodeIndices(uint32_t *graphNodeIndices, uint32_t graphNodeIndicesSize, const NvBlastActor *actor, NvBlastLog logFn)
uint32_t NvBlastFamilyGetSize(const NvBlastFamily *family, NvBlastLog logFn)
Definition: NvBlastTypes.h:286
NvBlastID NvBlastAssetGetID(const NvBlastAsset *asset, NvBlastLog logFn)
Definition: NvBlastTypes.h:468
const NvBlastChunk * NvBlastAssetGetChunks(const NvBlastAsset *asset, NvBlastLog logFn)
uint32_t NvBlastFamilyGetFormatVersion(const NvBlastFamily *family, NvBlastLog logFn)
void NvBlastActorApplyFracture(NvBlastFractureBuffers *eventBuffers, NvBlastActor *actor, const NvBlastFractureBuffers *commands, NvBlastLog logFn, NvBlastTimers *timers)
bool NvBlastEnsureAssetExactSupportCoverage(NvBlastChunkDesc *chunkDescs, uint32_t chunkCount, void *scratch, NvBlastLog logFn)
uint32_t NvBlastActorGetVisibleChunkCount(const NvBlastActor *actor, NvBlastLog logFn)
const NvBlastAsset * NvBlastFamilyGetAsset(const NvBlastFamily *family, NvBlastLog logFn)
uint32_t NvBlastAssetGetLeafChunkCount(const NvBlastAsset *asset, NvBlastLog logFn)
uint32_t NvBlastActorSerialize(void *buffer, uint32_t bufferSize, const NvBlastActor *actor, NvBlastLog logFn)
Definition: NvBlastTypes.h:387
NvBlastFamily * NvBlastActorGetFamily(const NvBlastActor *actor, NvBlastLog logFn)
size_t NvBlastAssetGetFamilyMemorySize(const NvBlastAsset *asset, NvBlastLog logFn)
Definition: NvBlastTypes.h:376
void NvBlastApplyAssetDescChunkReorderMapInPlace(NvBlastChunkDesc *chunkDescs, uint32_t chunkCount, NvBlastBondDesc *bondDescs, uint32_t bondCount, const uint32_t *chunkReorderMap, bool keepBondNormalChunkOrder, void *scratch, NvBlastLog logFn)