PhysX 4.0 has been released:
https://github.com/NVIDIAGameWorks/PhysXChanges and Resolved Issues:
GeneralAdded:- New Temporal Gauss Seidel (TGS) solver offering a new level of simulation accuracy.
- New Reduced Coordinate Articulation feature with no relative positional error and realistic actuation.
- New automatic multi-broadphase (ABP) providing better out of the box performance for many use cases.
- New BVH structure supporting better performance for actors with many shapes.
Removed:- PhysX Particle feature.
- PhysX Cloth feature.
- The deprecated active transforms feature has been removed. Please use active actors instead.
- The deprecated multi client behavior feature has been removed.
- The deprecated legacy heightfields have been removed.
Changed:- The PhysX SDK build system is now based on CMake generated build configuration files. For more details, please refer to the PhysX SDK 4.0 Migration Guide.
- The Linux build has been changed to produce static as opposed to shared libraries. The compiler was switched from GCC to Clang.
- The PxShared library contains functionality shared beyond the PhysX SDK. It has been streamlined to a minimal set of headers. The PxFoundation singleton has been moved back to the PhysX SDK, as well as the task manager, CUDA context manager and PhysX Visual Debugger (PVD) functionality.
- PhysXDelayLoadHook and PhysXGpuLoadHook have been simplified, and PxFoundationDelayLoadHook has been removed.
Rigid BodiesAdded:- A new broadphase implementation has been added. See PxBroadPhaseType::eABP for details. This is now the default broadphase implementation.
- TGS: A new rigid body solver, which can produce improved convergence compared to the default rigid body solver.
- Optional torsional friction model to simulate rotational friction when there is just a single point of contact.
- A flag to enable friction constraints to be processed every frame has been added
- PxContactJoint added to represent contacts in inverse dynamics. Not intended for use in simulation.
- A missing PxShape::getReferenceCount() function has been added.
Removed:- PxVisualizationParameter::eDEPRECATED_BODY_JOINT_GROUPS has been removed.
- PxSceneDesc::maxNbObjectsPerRegion has been removed.
- PxRigidActor::createShape() has been removed. Please use PxPhysics::createShape() or PxRigidActorExt::createExclusiveShape() instead
- The deprecated mass parameter in PxTolerancesScale has been removed.
- PxSceneFlag::eDEPRECATED_TRIGGER_TRIGGER_REPORTS has been removed.
Changed:- Aggregates can now contain more than 128 actors.
- Switching a kinematic object to dynamic does not automatically wake up the object anymore. Explicit calls to PxRigidDynamic::wakeUp() are now needed.
- Switching a kinematic object to dynamic re-inserts the object into the broadphase, producing PxPairFlag::eNOTIFY_TOUCH_FOUND events instead of PxPairFlag::eNOTIFY_TOUCH_PERSISTS events.
- PxConvexMeshGeometryFlag::eTIGHT_BOUNDS is now enabled by default for PxConvexMeshGeometry.
- The default max angular velocity for rigid bodies has been changed, from 7 to 100.
ExtensionsAdded:- PxD6Joint now supports per-axis linear limit pairs.
- Added PxSphericalJoint::getSwingYAngle and PxSphericalJoint::getSwingZAngle.
- Added PxD6Joint distance limit debug visualization.
- Added PxD6JointCreate.h file with helper functions to setup the D6 joint in various common configurations.
- Added pyramidal swing limits to the D6 joint.
Removed:- PxComputeHeightFieldPenetration has a new signature.
- PxComputeMeshPenetration has been removed. Use PxComputeTriangleMeshPenetration instead.
Changed:- PxRevoluteJoint now properly supports a -PI*2 to +PI*2 range for its limits, and the accuracy of limits has been improved. In order to use extended limit ranges, PxConstraintFlag::eENABLE_EXTENDED_LIMITS must be raised on the constraint.
- PxD6Joint now properly supports a -PI*2 to +PI*2 range for its twist limit, and the accuracy of the twist limit has been improved. In order to use extended limit ranges, PxConstraintFlag::eENABLE_EXTENDED_LIMITS must be raised on the constraint.
- The accuracy of the D6 joint swing limits has been improved.
- PxDistanceJoint does now always insert constraint row, this change does increase the limit precision.
- PxDistanceJoint::getDistance does not anymore return squared distance.
- PxD6Joint::setDriveVelocity, PxD6Joint::setDrivePosition and PxRevoluteJoint::setDriveVelocity have now additional parameter autowake, which will wake the joint rigids up if true (default behavior).
- Joint shaders now take a bool to define whether to use extended joint limits or not.
- Joint shaders must now provide the cA2w and cB2w vectors, defining the world-space location of the joint anchors for both bodies.
Deprecated:- PxD6Joint::getTwist() has been deprecated. Please use PxD6Joint::getTwistAngle() now.
- The previous PxD6Joint::setLinearLimit() and PxD6Joint::getLinearLimit() functions (supporting a single linear limit value) have been deprecated. Please use PxD6Joint::setDistanceLimit() and PxD6Joint::getDistanceLimit() instead. Or you can also use the new PxD6Joint::setLinearLimit() and PxD6Joint::getLinearLimit() functions, which now support pairs of linear limit values.
Scene queriesRemoved:- PxHitFlag::eDISTANCE has been removed.
- The PxVolumeCache feature has been removed.
- The PxSpatialIndex feature has been removed.
- The deprecated PxSceneFlag::eSUPPRESS_EAGER_SCENE_QUERY_REFIT has been removed.
CookingAdded:- PxBVHStructure added, it computes and stores BVH structure for given bounds. The structure can be used for actors with large amount of shapes to perform scene queries actor centric rather than shape centric. For more information please see guide or snippets.
Removed:- PxPlatform enum has been removed. PhysX supported platforms all share the same endianness
- The deprecated PxCookingParams::meshCookingHint and PxCookingParams::meshSizePerformanceTradeOff parameters have been removed.
- The deprecated PxGetGaussMapVertexLimitForPlatform has been removed, use PxCookingParams::gaussMapLimit instead.
- The deprecated PxConvexMeshCookingType::eINFLATION_INCREMENTAL_HULL and PxCookingParams::skinWidth have been removed.
- PxBVH34MidphaseDesc::numTrisPerLeaf has been renamed to PxBVH34MidphaseDesc::numPrimsPerLeaf