Releases: NVIDIAGameWorks/Blast
Blast 1.1.5
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
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 1.1.4
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
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 1.1.3
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
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 1.1.2
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
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 1.1.1
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
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 1.1
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
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 1.0 Release
v1.0.0 Updating release notes and version
Blast 1.0 Beta Release
v1.0.0-beta first commit