Archive for the ‘PhysX SDK’ Category
About a month ago, NVIDIA has revealed a new unified GPU accelerated physics framework – NVIDIA FLEX – at “The Way It’s Meant To Be Played” press event in Montreal.
Today, Miles Macklin, physics programmer at NVIDIA and lead-developer of the FLEX system, has joined us to share first-hand details about this exciting technology.
PhysXInfo.com: So what is the NVIDIA FLEX exactly ? What are the main features of FLEX ?
Miles Macklin: FLEX is a multi-physics solver for visual effects.
It grew out of the work I did on Position Based Fluids, which was later extended to support two-way coupling between liquids and different object types such as clothing and rigid bodies.
The feature set is largely inspired by tools like Maya’s nCloth and Softimage’s Lagoa. The goal is to bring the capabilities of these off-line applications to real-time games.
NVIDIA has released PhysX SDK 3.3 Beta 2 – first public Beta release of the new major version of the PhysX SDK 3.x
Update: PhysX SDK 3.3.0: Final Release
PhysX SDK 3.3 introduces a broad set of the new features and also presents a vast performance improvement.
|PhysX SDK 3.3 Beta 2 – Release Notes|
- Added PhysXDevice/64.dll to the PC packages. See Windows readme for more details.
- Added support for the NVIDIA Kepler GPU architecture.
- Added support for the Nintendo Wii U console.
- Added support for Windows 8 Modern UI applications (ARM and x86).
- Ported our SIMD library to the ARM NEON architecture.
- Multi Box Pruning (MBP) is offered as an alternative broad phase algorithm to Sweep And Prune (SAP). MBP shows improved performance when all objects are moving or when inserting large numbers of objects. Its generic performance might be inferior to SAP when many objects are sleeping.
- Significant performance and stability optimizations for rigid body solver.
- New function to compute the minimum translational distance and direction to separate two overlapping geometry objects.
- Improved Persisten Contact Manifold (PCM) contact generation mode is now often faster and more robust than the still available legacy path.
- Improved performance of scene queries and contact reports.
- Improved behavior and performance of Continuous Collision Detection (CCD).
- Reduced memory footprint of rigid body classes.
- Added support for sharing shapes among rigid bodies.
- Significantly improved cloth behavior and GPU performance.
- Added support for cloth colliding against itself, other cloth instances, and scene geometry.
- Improved useability of binary and xml serialization.
- Memory can be saved for objects that do not participate in the simulation and are used for scene queries only. For details see the new flag PxActorFlag::eDISABLE_SIMULATION.
Full PhysX SDK 3.3 Beta 2 Release Notes can be viewed here.
“We are excited to extend our PhysX and APEX technologies to Microsoft’s Xbox One console”, said Mike Skolones, product manager for the PhysX SDK at NVIDIA.
“We look forward to the Xbox developer community taking advantage of PhysX and APEX along with Xbox One’s processing power, programmability and next-generation features to design cutting-edge games that deliver an unparalleled and ultra-realistic experience”
Earlier this year, it was also stated that PhysX SDK/APEX SDK will be available for Sony’s Playstation 4 console.
We assume that similar to PS4 case, PhysX for Xbox One will only use console’s CPU for physics calculations, at least at the beginning.
Recent “The Evolution of PhysX” article has unvealed the current situation with performance improvements among various PhysX SDK vesions, however, one interesting case has remained outside the coverage – performance scaling in multithreaded environments.
It is known that, while PhysX SDK 2.8 has rather limited multi-threading capabilities (mostly working on per-scene or per-compartment basis), PhysX SDK 3.x can distribute various tasks across worker threads much more effective, and thus offer better support for multi-core CPUs.
But how well does multi-threading actually work in PhysX 3 (we’ll take the latest 3.3 version)? Using the same PEEL (Physics Engine Evaluation Lab) tool to the record the performance metrics, we will try to shed the light on this question.
Scene #1 – random dynamic primitives in a box
Static container filled with 256 random primitives (sphere, box, capsule).
A quite interesting, unexpected and a little emotional article – The Evolution of PhysX – was published today by Pierre Terdiman, senior software engineer in NVIDIA and one of the developers of the original NovodeX engine.
The performance tests were performed using PEEL – Physics Engine Evaluation Lab, a specialized tool that is using within NVIDIA to research behaviour and performance of various physics engines using a set of standartized scenes.
Recently, the PhysX SDK team began to offer a preview of the upcoming version, PhysX SDK 3.3, to advanced PhysX users — professional developers, who have the time and experience to try out the latest offering, test it and provide feedback to the PhysX SDK team.
If that describes you or your team, do not hesitate to contact PhysXlicensing@nvidia.com and use the words ‘beta-3.3 request’ in the subject line to apply for the SDK 3.3 Closed Beta Testing.
|PhysX SDK 3.3 – Feature Highlights|
Performance and stability optimizations for rigid body solver
Rigid body collision performance was improved up to 15-20% in comparison to SDK 3.2, while memory footprint was reduced.
Please note that we expect more performance improvements in final release
NVIDIA has revealed new bug-fixing release of the PhysX SDK 3.x – PhysX SDK 3.2.4
Update: PhysX SDK 3.3 Closed Beta Testing begins
Update: PhysX SDK 3.2.5 available
|PhysX SDK 3.2.4 – Release Notes|
- Fixed a bug which caused actors to return wrong world bounds if the bounds minimum was above 10000 on any axis.
- Reporting allocation names can now be enabled or disabled (see PxFoundation::setReportAllocationNames). When enabled, some platforms allocate memory through ‘malloc’.
- eEXCEPTION_ON_STARTUP is removed from PxErrorCode and it is no longer needed.
- Added boilerplate.txt to the Tools folder. SpuShaderDump.exe and clang.exe require it.
- PxWindowsDelayLoadHook.h has been moved from Include/foundation/windows to Include/common/windows.
- PxScene::saveToDesc now reports the bounceThresholdVelocity value.
- Fixed a bug in PxDefaultSimulationFilterShader: the value of the second filter constant in the collision filtering equation was ignored and instead the value of the first filter constant was used.
- Fixed a crash bug in PCM collision.
- Rigid Bodies
- Forces applied to bodies (with PxRigidBody::addForce) that go to sleep in the subsequent update now have their applied forces cleared when the body is set to sleep to avoid them being applied in a later update when the body is once more awake. This bug broke the rule that forces applied with PxRigidBody::addForce do not persist beyond the next scene update.
Update: Real Time Dynamic Fracture explained.
Update #2: Introduction to Position Based Fluids.
This demo, showcased at GDC 2013, was used to demonstrate several new features, which will be included in future versions of PhysX SDK and APEX – rigid body simulation with real-time fracturing, improved SPH fluid solver and interaction between the two.
However, due to its simplified nature, PhysX 3 cloth solver is also missing some features, such as tearing, two-way interaction with rigid bodies and self-collision support.
As the first step, updated version of the clothing solver, which will be introduced in PhysX SDK 3.3 and APEX Clothing 1.3 module, will include new self-collision algorithm, that will allow cloth to behave more naturally and also improve formation of folds and wrinkles.
In addition to self-collision, improved cloth solver also supports inter-collision between multiple cloth actors (take that, 2.8 cloth !) for qualitative simulation of complex multi-layered clothing.
For a note, full-body clothing assets, presented in the video, contain roughly ~ 10 000 simulated cloth vertices each and are running on GPU in real-time.
Quite interesting technical demo video was revealed today by Matthias Müller-Fischer, PhysX SDK Research Lead in NVIDIA.
Update: Real Time Dynamic Fracture explained.
It is showcasing a further evolution of a dynamic real-time fracturing and GPU accelerated rigid body simulation algorithm, firstly presented at GDC 2012. As you may see, improved method works perfectly with complex arbitrary meshes, not just basic shapes.
A paper describing this technology, called “Real Time Dynamic Fracture with Volumetric Approximate Convex Decompositions”, will be available for public download later on, once it will be approved for SIGGRAPH.