Main Page Class List Class Members

# Release Notes

    //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    Blast(tm) SDK 1.1.9 (22-Mar-2024)
    //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

    Changes
    -------
    * Removed reference to deprecated documentation server.

    //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    Blast(tm) SDK 1.1.8 (05-Apr-2021)
    //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

    Bug Fixes
    ---------
    * Fixed exception in TkGroupImpl.

    //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    Blast(tm) SDK 1.1.7 (12-Nov-2020)
    //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

    Changes
    -------
    * (Pull request #17 "Physx4 compatibility") PhysX version updated to 4.1.trunk.26400730, which uses a seprarate PxShared package
    * The bin and lib directory structures have changed to match the new layout of PhysX 4.x.  That is, instead of having
    library files with CHECKED, DEBUG, PROFILE suffixes (or no suffix for release), there are now checked, debug, profile,
    and release subfolders of bin/${compiler} and lib/${compiler}.  Within those subfolders the library files have no
    suffix.

    //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    Blast(tm) SDK 1.1.6 (08-Oct-2020)
    //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

    Changes
    -------
    * Updated license file
    * Updated copyright dates
    * Removed ArtistTool

    Bug Fixes
    ---------
    * Pull request #15 "Fix Blast bond generation"
    * Pull request #16 "Fix invalid pointer access in authoring tools"

    //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    Blast(tm) SDK 1.1.5 (16-Sep-2019)
    //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

    Changes
    -------
    * Extensions API refactored to eliminate use of Px types.
    * Numerous API changes to meet new coding conventions.
    * Packman package manager updated to v. 5.7.2, cleaned up dependency files.
    * Chunks created from islands use padded bounds to determine connectivity.
    * FractureTool::deleteAllChildrenOfChunk renamed FractureTool::deleteChunkSubhierarchy, added ability to delete chunks.
    * NvBlastAsset::testForValidChunkOrder (used when creating an NvBlastAsset) is now more strict, requiring parent chunk descriptors to come before their children.  It is still less strict than the order created by NvBlastBuildAssetDescChunkReorderMap.

    New Features
    ------------
    * Authoring tools:
      * Ability to pass chunk connectivity info to uniteChunks function, enabling chunks split by island detection to  be united.
      * Option to remove original merged chunks in uniteChunks function.
      * The function uniteChunks allows the user to specify a chunk set to merge.  Chunks from that set, and all descendants, are considered for merging.
      * Ability to delete chunks (see note about FractureTool::deleteChunkSubhierarchy in Changes section, above).
      * Added FractureTool::setApproximateBonding function.  Signals the tool to create bonds by proximity instead of just using cut plane data.

    Bug Fixes
    ---------
    * Authoring tools:
      * Fixed chunk reordering bug in BlastTool.
      * Chunks which have been merged using the uniteChunks function may be merged again
      * Restored chunk volume calculation
    * NvBlastBuildAssetDescChunkReorderMap failure cases fixed.

    Known Issues
    ------------
    * Damage shaders in extensions can miss bonds if the damage volume is too small.
    * Authoring code does not use the user-defined allocator (NvBlastGlobals) exclusively.

    //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    Blast(tm) SDK 1.1.4 (24-Oct-2018)
    //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

    Changes
    -------
    * Unity plugin example updated to work with latest Blast SDK.

    New Features
    ------------
    * Authoring tools:
      * Island detection function islandDetectionAndRemoving has a new parameter, createAtNewDepth.
      * Bonds created between island-based chunks.
      * Added "agg" (aggregate) commandline switch to AuthoringTool.  This allows multiple convex hulls per chunk to be generated.
      * Damage pattern authoring interface.

    Bug Fixes
    ---------
    * Build working on later C++ versions (e.g. deprecated UINT32_MAX removed).
    * Authoring tools:
      * Fixed .obj material loading when obj folder is same as working directory.
      * Degenerate face generation fix.
      * Fixed memory leak in FractureTool.
    * Proper memory releasing in samples.
    * Single-actor serialization bugfix when actor has world bonds.
    * Updated PhysX package for Win64 (vc14 and vc15) and Linux64 to 3.4.24990349, improving GRB behavior and fixing GRB crash/failure on Volta and Turing.
    * Documented JSON collision export option introduced in previous version.

    Known Issues
    ------------
    * Damage shaders in extensions can miss bonds if the damage volume is too small.
    * Authoring code does not use the user-defined allocator (NvBlastGlobals) exclusively.

    //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    Blast(tm) SDK 1.1.3 (30-May-2018)
    //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

    Changes
    -------
    * No longer testing Win32 project scripts.  Note generate_projects_vc14win32.bat has been renamed generate_projects_vc14win32_untested.bat.
    * Using a PhysX Packman package that no longer includes APEX.
    * Updated documentation:
      * Authoring documentation mentions restrictions for meshes to be fractured.
      * Added BlastTool reference to README.md.
      * Updated documentation paths in README.md.
    * Using Packman5 for external packages.
    * Authoring tools:
      * In NoiseConfiguration, surfaceResolution changed to samplingInterval.  The latter is reciprocal of resolution and defined for all 3 axes.
      * Improved cutout robustness.
    * Exporter (used by both authoring tools and ApexImporter) has a JSON collision export option.

    New Features
    ------------
    * VC15 Win64 project scripts.  Run generate_projects_vc15win64.bat.
    * Authoring tools:
      * Noisy cutout fracture.
      * Conic cutout option (tapers cut planes relative to central point).
      * Cutout option "useSmoothing."  Add generatad faces to the same smoothing group as original face without noise.
      * Periodic cutout boundary conditions.

    Bug Fixes
    ---------
    * Packman target platform dependencies no longer pulling windows packages into other platforms.
    * Fixed bond generation for cutout fracture.

    Known Issues
    ------------
    * Damage shaders in extensions can miss bonds if the damage volume is too small.
    * Authoring code does not use the user-defined allocator (NvBlastGlobals) exclusively.

    //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    Blast(tm) SDK 1.1.2 (26-Jan-2018)
    //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

    Changes
    -------
    * Improvements to uniteChunks for hierarchy optimization.
    * NvBlastExtAuthoringFindAssetConnectingBonds optimized.
    * APEX dependency has been removed (ExtImport used it).  Now ExtImport has a built-in NvParameterized read that can load an APEX Destructible asset.

    New Features
    ------------
    * FractureTool::setChunkMesh method.
    * Distance threshold added to NvBlastExtAuthoringFindAssetConnectingBonds.
    * NvBlastExtExporter: IMeshFileWriter::setInteriorIndex function, for control of interior material.
    * Cutout and cut fracture methods: NvBlastExtAuthoringCreateCutoutSet and Nv::Blast::CutoutSet API, FractureTool::cut and FractureTool::cutout APIs.
    * NvBlastExtAuthoring:
      * NvBlastExtAuthoringCreateMeshFromFacets function.
      * NvBlastExtUpdateGraphicsMesh function.
      * NvBlastExtAuthoringBuildCollisionMeshes function.
    * UV fitting on interior materials using new FractureTool::fitUvToRect and FractureTool::fitAllUvToRect functions.
    * Multi-material support in OBJ file format.

    Bug Fixes
    ---------
    * Fixed bug causing normals on every other depth level to be flipped when exporting Blast meshes.
    * Fixed bug where faces are missed after hierarchy optimization on a sliced mesh.
    * Fixed subtree chunk count generated in Nv::Blast::Asset::Create (led to a crash in authoring tools, fracturing a pre-fractured mesh).
    * Fixed a crash when loading an obj with bad material indices.
    * Fixed Actor::split so that visibility lists are correctly updated even when the number of split actors exceeds newActorsMaxCount.

    Known Issues
    ------------
    * Damage shaders in extensions can miss bonds if the damage volume is too small.
    * Authoring code does not use the user-defined allocator (NvBlastGlobals) exclusively.

    //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    Blast(tm) SDK 1.1.1 (10-Oct-2017)
    //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

    Changes
    -------
    * NvBlastProgramParams moved to NvBlastExtDamageShaders
    * Materials removed from NvBlastTk

    New Features
    ------------
    * Damage shader acceleration structure
    * Extended support structures via new asset merge functions in NvBlastExtAssetUtils
    * Ability to scale asset components when merging assets with NvBlastExtAssetUtilsMergeAssets
    * NvBlastExtAuthoring
      * Option to fit multiple convex hulls to a chunk (uses VHACD)
      * deleteAllChildrenOfChunk and uniteChunks APIs
    * Triangle damage shader for swept segments
    * Impact damage spread shaders

    Bug Fixes
    ---------
    * Linux build fixes
    * NvBlastExtAuthoring
      * Fracturing tools chunk index fix
      * VoronoiSitesGeneratorImpl::generateInSphere fix
      * More consistent use of NVBLAST_ALLOC and NVBLAST_FREE
      * Boolean tool bug fix

    Known Issues
    ------------
    * Damage shaders in extensions can miss bonds if the damage volume is too small.
    * Authoring code does not use the user-defined allocator (NvBlastGlobals) exclusively.

    //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    Blast(tm) SDK 1.1 (28-Aug-2017)
    //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

    Changes
    -------
    * VC12 is no longer supported.
    * New license header, consistent with PhysX license header.
    * New serialization extension.  NvBlastExtSerialization is now a modular serialization manager.  It loads serializers sets for low-level, Tk, and ExtPx.  Each serializer handles a particular file format and object type.  Currently the universally available format for all object types is Cap'n Proto binary.  The file format is universal, as it uses a header to inform the serialization manager which serializer is needed to deserialize the contained data.  All authoring and import tools write using this format to files with a ".blast" filename extension.
    * Corresponding to the new serialization, the old formats have been deprecated.  In particular, the DataConverter tool has been removed.  Instead see LegacyConverter in the New Features section.
    * TkSerializable virtual base class has been removed.  TkAsset and TkFamily are now derived directly from TkIdentifiable.  Serialization functions have been removed, replaced by the new serialization extension.
    * ExtPxAsset serialization functions have been removed, replaced by the new serialization extension.
    * World bonds.  A bond descriptor can now take the invalid index for one of its chunkIndices.  This will cause an additional support graph node to be created within an asset being created with this descriptor.  This node will not correspond to any chunk (it maps to the invalid index in the graph's chunkIndices array).  Actors that contain this new "world node" may be kept static by the user, emulating world attachment.  This is easily tested using the new low-level function NvBlastActorIsBoundToWorld.
    * With the addition of world bonds (see above), the NvBlastExtImport extension no longer creates an extra "earth chunk" to bind chunks to the world.  Instead, it creates world bonds.
    * ExtPxAsset now contains an NvBlastActorDesc, which is used as the default actor descriptor when creating an ExtPxFamily from the asset.
    * TkFramework no longer has its own allocator and message handler.  Instead, this is part of a new NvBlastGlobals API.  This way, extensions and TkFramework may share the same allocator.
    * SampleAssetViewer
      * Physics simulation now runs concurrently with graphics and some of the sample/blast logic.
      * New Damage tool added: line segment damage
      * Damage tool radius can be set individually for each tool (radial, cutter, line segment, hierarchical).
      * Cubes now removed when a scene is reloaded.
      * Cube throw velocity can be "charged" by holding down the 'F' key.
    * New damage system built around "health," see API changes in NvBlastExtShaders and changes in NvBlastExtImpactDamageManager.
    * NvBlastExtShearGraphShader uses a chunk-based method to find the closest graph node, improving performance.
    * TkGroup no longer uses physx::PxTaskManager interface for task management.  Instead, a TkGroupWorker interface has been added.  The NvBlastExtPhysX extension uses the physx::PxTaskManager to implement this interface.
    * Better error handling in AuthoringTool (stderr and user error handler).
    * More consistent commandline switches in AuthoringTool and ApexImporter (--ll, --tk, --px flags).
    * Various small clean-ups.

    New Features
    ------------
    * NvBlastExtAssetUtils extension
      * Merge multiple assets into one.
      * Add "world bonds" to an asset (see "World bonds" in the Changes section).
      * Transform an NvBlastAsset's geometric data in-place.
    * NvBlastExtAuthoring
      * Open edge detection.
      * Rotation of voronoi cells used for fracturing.
    * "Globals" code (under sdk/globals).  Includes a global allocator, message handler, and profiler API used by TkFramework and extensions.
    * NvBlastExtStress extension, a PhysX-independent API for performing stress calculations with low-level Blast actors.
    * NvBlastActorIsSplitRequired() function for low-level actors.  If this function returns false, NvBlastActorSplit() may be skipped as it will have no effect.
    * NvBlastExtShaders
      * New "Segment Radial Damage" shader.  Damages everything within a given distance of a line segment.
    * New NvBlastExtExporter extension, used commonly by import and authoring tools.  Allows collision data to be stored in one of three ways:
      * JSON format.
      * FBX mesh format (seprate file).
      * FBX mesh format in a second "collision" layer, alongside the graphics mesh nodes corresponding to Blast chunks.
    * LegacyConverter tool has been added, which converts .llasset, .tkasset, .bpxa, .pllasset, .ptkasset, and .pbpxa asset files to the new .blast format using the universal serialization scheme in the new NvBlastExtSerialization extension.
    * NvBlastExtAuthoring
      * Mesh cleaner, tries to remove self intersections and open edges in the interior of a mesh.
      * Ability to set interior material to existing (external) material, or a new material id.
      * Material ID remapping API.

    Bug Fixes
    ---------
    * NvBlastExtAuthoring
      * Slicing normals fix.
    * Various instances of &array[0] to get the data buffer from a std::vector now use data() member function.  This had led to some crashes with empty vectors.
    * SampleAssetViewer
      * Fixed dragging kinematic actor.
      * Now loads the commandline-defined asset also when sample resources were not downloaded yet.
    * Serialization documented.
    * Fixed smoothing groups in FBX exporter code.
    * Impulse passing from parent to child chunks fixed.
    * Reading unskinned fbx meshes correctly.
    * Collision hull generation from fbx meshes fixed.
    * Win32/64 PerfTest crash fix.

    Known Issues
    ------------
    * Damage shaders in extensions can miss bonds if the damage volume is too small.
    * Authoring extension does not perform convex decomposition to fit chunks with multiple collision hulls.
    * Authoring code does not use the user-defined allocator (NvBlastGlobals) exclusively.

    //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    Blast(tm) SDK 1.0 (24-Feb-2017)
    //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

    Changes
    -------
    * tclap, imgui, moved to Packman package
    * Models and textures for the sample application have been moved to Packman
    * Packman packages with platform-specific sections have been split into platform-specific packages
    * Improvements to fracturing tools
    * TkJoint events no longer contain actor data
    * API cleanup:
      * NvBlastActorCreate -> NvBlastFamilyCreateFirstActor
      * NvBlastActorRelease -> NvBlastActorDeactivate
      * NvBlastActorDeserialize -> NvBlastFamilyDeserializeActor
      * Functions that operate on an object start with NvBlast[ObjectName]
      * Functions that create an object purely from a desc start with NvBlastCreate
      * Functions that get scratch start with NvBlast[Object]GetScratchFor[functionname], etc.
      * Object functions take the object as the first input parameter (non-optional output parameters always come first)
      * Removal of NvBlastCommon.h
    * More consistent parameter checking in low-level API
    * NvBlastAlloc and NvBlastFree functions have been removed.  Blast low-level no longer does (de)allocation.  All memory is passed in and managed by the user
    * All Blast low-level functions take a log (NvBlastLog) function pointer (which may still be NULL)
    * Authoring tool now handles FBX mesh format
    * Constructor for TkAssetDesc sets sane defaults
    * Sample uses skinning for the 38k tower, for perf improvement
    * Further optimzations to sample, including using 4 instead of 2 CPU cores and capping the actor count at 40k
    * Linux build (SDK and tests)
    * Renamed TkJointUpdateEvent::eventSubtype -> TkJointUpdateEvent::subtype
    * "LowLevel" extension renamed "ConvertLL"
    * Renamed TkEventReceiver -> TkEventListener

    New Features
    ------------
    * Serialization enabled for XBoxOne

    Bug Fixes
    ---------
    * Can change worker thread count in CPU dispatcher
    * TkJoints created from the TkFramework::createJoint function are now released when the TkFramework is released
    * Various fixes to unit tests
    * Crash fix in CPU dispatcher
    * Returning enough buffer space to handle hierarchical fracturing cases

    Known Issues
    ------------
    * Serialization requires documentation

    //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    Blast(tm) SDK 1.0 beta (24-Jan-2017)
    //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

    Changes
    -------
    * Material API simplified (NvBlastProgramParams)
    * Nv::Blast::ExtPhysics renamed Nv::Blast::ExtPx
    * Various small changes to the low-level API (function renaming, argument list changes, etc.)
    * Extensions libraries reconfigured according to major dependencies and functionality:
      * Authoring
      * Import (depends on PhysX and APEX)
      * PhysX (depends on PhysX)
      * Serialization (depends on PhysX and Cap'n Proto)
      * Shaders
    * Source folder reorganization: low-level, Tk, and extensions all under an sdk folder

    New Features
    ------------
    * TkFamily serialization
    * Versioned data serialization extensions for both low-level and Tk, based on Cap'n Proto
    * TkJoint API, can create joints at runtime, attachments to Newtonian Reference Frame supported
    * CMake projects
    * PackMan used for dependencies
    * Per-bond and per-chunk health initialization
    * XBoxOne and Windows support for perf zones
    * Timers in Tk
    * Stress solver (automatic bond breaking)
    * ExtPx asset serialization, combined TkAsset + PhysX collision meshes (.bpxa files)

    Removed Features
    ----------------
    * TkComposite objects.  Composites may be created using the new TkJoint API in the TkFramework

    Known Issues
    ------------
    * Serialization requires documentation

    //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    Blast(tm) SDK 1.0 alpha (21-Oct-2016)
    //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

    Features
    --------
    * Blast (low-level) library
    * BlastTk (high-level) library
    * BlastExt (extensions) library including:
      * AssetAuthoring
      * DataConverter
      * BlastID Utilities
      * ApexImporter Utilities
      * Materials
      * Physics Manager
      * Sync Layer
    * Tools:
      * ApexImporter
      * DataConverter
      * AuthoringTool
    * Samples:
      * SampleAssetViewer

    Known Issues
    ------------
    * Documentation incomplete
    * TkFamily cannot be serialized
    * Data conversion utility for Tk library does not exist
    * Material API is still changing