NVIDIA PhysX now Open Source, v4.0 available on December 20, 2018

Started by JeGX, December 03, 2018, 02:52:48 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.


NVIDIA is proud to announce PhysX SDK 4.0, available on December 20, 2018. The engine has been upgraded to provide industrial grade simulation quality at game simulation performance. In addition, PhysX SDK has gone open source, starting today with version 3.4!  It is available under the simple 3-Clause BSD license. With access to the source code, developers can debug, customize and extend the PhysX SDK as they see fit.

New features:

-  Temporal Gauss-Seidel Solver (TGS), which makes machinery, characters/ragdolls, and anything else that is jointed or articulated much more robust. TGS dynamically re-computes constraints with each iteration, based on bodies' relative motion.

- Overall stability has been improved with reduced coordinate articulations and joint improvements.

- Increased scalability via new filtering rules for kinematics and statics.

- New Bounding Volume Hierarchies support fast scene queries for actors with a huge number of shapes.

- Infrastructure can now incorporate Cmake projects.

- Announcing PhysX SDK 4.0, an Open-Source Physics Engine @ NVIDIA
- source code @ github
- Introducing PhysX SDK 4.0 @ youtube


NVIDIA PhysX, the most popular physics simulation engine on the planet, is going open source.

We're doing this because physics simulation — long key to immersive games and entertainment — turns out to be more important than we ever thought.

Physics simulation dovetails with AI, robotics and computer vision, self-driving vehicles, and high-performance computing.

t's foundational for so many different things we've decided to provide it to the world in an open source fashion.

Meanwhile, we're building on more than a decade of continuous investment in this area to simulate the world with ever greater fidelity, with on-going research and development to meet the needs of those working in robotics and with autonomous vehicles.

PhysX will now be the only free, open-source physics solution that takes advantage of GPU acceleration and can handle large virtual environments.

It will be available as open source starting Monday, Dec. 3, under the simple BSD-3 license.

Link: https://blogs.nvidia.com/blog/2018/12/03/physx-high-fidelity-open-source/


PhysX 4.0 has been released:


Changes and Resolved Issues:


- 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.

- 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.

- 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 Bodies

- 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.

- 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.

- 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.


- 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.

- PxComputeHeightFieldPenetration has a new signature.
- PxComputeMeshPenetration has been removed. Use PxComputeTriangleMeshPenetration instead.

- 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.

- 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 queries

- 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.


- 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.

- 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