Following the PhysX SDK 3.3.2 release, updated APEX SDK 1.3.2 is available for download.
Update March 2015: Bug-fixing APEX SDK 3.3.3 release is available.
Despite the minor version number, APEX 1.3.2 includes numerous additions to Destruction and Particles modules.
|APEX SDK 1.3.2: Release Notes|
APEX Framework 1.3.2
- Added NVTX profiling support for non-release builds. Traces can be captured using Parallel Nsight Analysis Tools. NVTX is supported only for Windows and Android.
- Added ability to change render resource lock behavior or disable locking altogether, to improve performance. The setting is per module. See NxModule::setRenderLockMode and NxApexRenderLockMode.
- Added ability to disable potentially expensive stat collection if it’s not needed. See NxApexSDK::setEnableApexStats.
- Fixed crash if application creates APEX SDK after already connecting to PVD.
APEX Destruction 1.3.2
- NxDestructibleParameters now has two new fields: legacyChunkBoundsTestSetting and legacyDamageRadiusSpreadSetting. These control whether or not the legacy settings are used per-actor, with per-asset defaults since it is a part of NxDestructibleParameters.
- NxUserChunkReport has a new virtual callback function onStateChangeNotify that needs to be added to any user implementations. It gets called when chunk visibility changes occur, if the user has enabled it via NxModuleDestructible::scheduleChunkStateEventCallback.
- Destructible authoring API has new functionality that allows it to import full destruction hierarchies.
- NxUserChunkReport has a new virtual callback function releaseOnNoChunksVisible. When the last chunk of an NxDestructibleActor disappears, this callback is called. If the user returns true, APEX will release the destructible actor. If the user chooses to release the actor themselves, they must wait until after fetchResults() completes.
- Voronoi fracture distributes its N sites across all pieces of a multi-mesh.
- Added new FractureVoronoi type to RT fracturing.
- Added maxDepentrationVelocity to behavior groups.
- Fracture event callback runs before PhysX simulate step, so the application has a chance to modify PhysX state before simulation.
- Enabled alpha channel for scatter meshes.
- Added user-defined deletion bounding boxes for destructible chunks.
- Added customizable velocityIterationCount parameter to destructible actors.
- Better conversion of legacy damage spread parameters to the new behavior.
- User-defined support graphs:
- Support for GPU rigid bodies has been removed.
- Functions createTwoWayRb, addTwoWayRb, and releaseTwoWayRb have been deprecated.
- Removed ‘enabled’ parameter from xDestructibleAssetAuthoring::setChunkOverlapsCacheDepth(bool enabled, physx::PxI32 depth = -1), it is now a function parameter of cookChunks
- By default, NxDestructibleActor::applyDamage() will only raycast against static chunks. To match the behavior of previous releases, pass NxDestructibleActorRaycastFlags::AllChunks to NxModuleDestructible::setDamageApplicationRaycastFlags().
- Multiple optimizations to destructible actor creation.
- Faster applyDamage.
- Disabled internal benefit calculations when not using the sort by benefit feature.
- Improved damage event report performance.
- Improved support graph rebuild/update performance.
- Store only a single cooking scale in the destructible module cached data, and use PhysX 3.x’s scaling feature instead. Reduces size of data needed for an application when using destructibles at multiple scales. Note that using a scale of (1,1,1) may still give better PhysX performance.
- Improved render update processing which was previously running on some actors that were sleeping.
- Added ability to disable detailed overlap testing for creation of extended structures. See performDetailedOverlapTestForExtendedStructures destructible actor parameter.
- No more render resource allocation in fetchResults when instanced chunks are used.
- Chunks with shapes that had their simulation flags reset (eSIMULATION_SHAPE) could get their inertia tensors re-calulated incorrectly, leading to bizarre physical behavior.
- Render resource creation for scatter meshes is now happening in updateRenderResources of the DestructibleRenderable, not at Asset creation anymore.
- Fixed case in extended structures where some shapes on broken off islands did not get the correct shape template (including userData).
- Fixed crash in NxDestructibleAsset::releaseAndReturnNxParameterizedInterface when it is called on an asset with existing actors.
- Fixed bug that caused the last chunks’ graphics to remain when they were destroyed due to a debris setting.
- Fixed behavior when “keepVisibleBonesPacked” is false.
- Fixed NxDestructibleActorJoint not working correctly when jointed to a PxActor.
- When using RT fracture, the renderable bounds now take the RT-fracture chunks into account.
- Fixed various small issues with destructible graphics updates.
- Correctly set applied damage user data in damage event reports.
- Fixed a possible crash when a destructible asset name is NULL.
- Added scene locks to protect potentially unsafe asynchronous sweeps.
- Fixed possible nuisance assertions on destructible actor release and when creating kinematic non-static destructibles.
- Fixed damage event assertion.
- APEX was intercepting onTrigger callbacks from PhysX and not passing them along to the application.
- Apply impact forces to newly created actors in the scene.
- Fixed a memory leak on PS4.
- Fixed improperly inflated convexes when skinWidth is 0, causing bad collision geometry.
- Fixed issue where destructible bounds kept growing.
- Fixed other miscellaneous crash issues.
Miscellaneous API changes:
- Moved rebuildCollisionGeometry from NxDestructibleAssetAuthoring to NxDestructibleAsset.
- Renamed “getInstancedChunkCount” to more accurate name “getInstancedChunkMeshCount”.
- API cleanup:
- ExplicitHierarchicalMesh.h renamed to NxExplicitHierarchicalMesh.h
- FractureTools.h renamed to NxFractureToolsStructs.h
- Added NxFractureTools.h to expose helper functions that so far were only accessible through NxDestructibleAssetAuthoring.
- Access NxFractureTools through NxModuleDestructible::getFractureTools().
- Renamed classes and structs in NxExplicitHierarchicalMesh and NxFractureToolsStructs.h to have an Nx prefix
- IDisplacementMapVolume -> NxDisplacementMapVolume
- IExplicitHierarchicalMesh -> NxExplicitHierarchicalMesh
- IEmbedding -> NxEmbedding
- IConvexHull -> NxConvexHull
- MeshProcessingParameters -> NxMeshProcessingParameters
- NoiseParameters -> NxNoiseParameters
- SliceParameters -> NxSliceParameters
- FractureSliceDesc -> NxFractureSliceDesc
- CutoutParameters -> NxCutoutParameters
- FractureCutoutDesc -> NxFractureCutoutDesc
- FractureVoronoiDesc -> NxFractureVoronoiDesc
- Removed “m” prefix of public members of NxMeshProcessingParameters
- mIslandGeneration -> islandGeneration
- mRemoveTJunctions -> removeTJunctions
- mMicrogridSize -> microgridSize
- mVerbosity -> verbosity
APEX Clothing 1.3.2
- It is now safe to call updateRenderResources on the render proxy in parallel, for example in the render thread, if the APEX SDK parameter ‘renderMeshActorLoadMaterialsLazily’ is set to false.
- Added support of partial custom physical meshes.
- Physical LOD is deprecated. Will be removed next version.
- Reduce the amount of data sent to PVD when clothing is in a scene.
- Fixed friction for GPU clothing.
- Fix a race condition when running several clothing scenes in parallel.
- Fixed clothing render proxy: now always return old result before fetch has been called.
- Fixed self-collision jittering on scaled down actors: scale restpositions. Fixed debug rendering when scaled.
- Fixed crash in cloth cooker.
- Fixed initialization pose of clothing collisions when clothing actor uses local space simulation.
- Fixed crash when a clothing actor with a NxClothingTriangleMesh switches LoD.
- Fixed scaling of cloth collision planes.
APEX Particles / Turbulence 1.3.2
- Weighted field sampler collision filtering was added (see migration guide).
- Added RateVsEmitterDuration curve to APEX emitters.
- Added minSamplingFPS parameter to APEX emitter assets to reduce discontinuities of fast moving emitters.
- Added a pose matrix semantic to NxUserRenderInstanceBufferDesc.
- Added topSphericalForce and bottomSphericalForce to VortexFS.
- Added scaling of APEX emitters and field samplers. See setCurrentScale/getCurrentScale methods for attractor, vortex, windFS, emitter, effect package, heat source, substance source, and turbulence actors.
- Added collision filtering for heat sources and substance sources. See fieldSamplerFilterDataName parameter.
- Added OrientScaleAlongScreenVelocity IOFX modifier.
- Removed ‘collisionFilterDataName’ from Turbulence, ParticleIOS, and BasicIOS, since it is redundant under PhysX 3.x. Now just use ‘fieldSamplerFilterDataName’.
- Removed ‘fieldBoundaryFilterDataName’ from various field sampler assets since it is now considered deprecated.
- Removed obsolete semanticFormats from NxUserRenderInstanceBufferDesc.
- Removed support for GPU acceleration on pre-Fermi GPUs.
- HeatSourceActor/SubstanceSourceActor NxParameterized parameter for initial position was renamed to ‘initialPose’ and its type was changed to MAT34.
- HeatSourceActor/SubstanceSourceActor NxParameterized parameter for initial scale was renamed to ‘initialScale’.
- Under PhysX 3.x all collision filtering related to both particles and field samplers now uses the standard PxFilterData and SimulationFilterShader callback.
- Resolved several issues where it was possible to exhaust GPU constant memory under certain heavy loads. APEX will now continue to work under these conditions, although performance may be slightly affected.
- Fixed crash that could occur when using turbulence debug visualization.
- Fixed particle time stats when using CPU particles.
- Fixed uninitialized render volume in EffectPackages. Could lead to particles not getting rendered.
- Fixed possible turbulence crash when using the updatePerFramesRange feature.
- When using opaque mesh rendering, userRenderData is now correctly passed to the application through the NxUserRenderResourceDesc.
- Fixed bad reference counting of opaque meshes.
- Fixed rare race condition that could cause some particles not to be rendered.
- Fixed synchronization issues with PhysX when using ParticleIOS.
- Fixed error in particle benefit calculation that could inject NANs into code.
- Fixed bad LOD calculation with updatePerFramesRange feature.
- Fixed race condition in turbulence.
- Fixed improper render mesh release when using IOFX mesh particle rendering.
- Fixed issues with the turbulence dissipation time feature.
APEX SDK 1.3.2 can be downloaded at GameWorks Download Center (registration guide).