PhysX SDK V3.1

NVIDIA announces the release of PhysX SDK V3.1

The PhysX SDK Team is pleased to release the latest minor revision of the PhysX-3 SDK, v3.1.

In development for over three years, PhysX V3 is a major rewrite of the PhysX SDK. Game and application developers have relied on PhysX technology for over 9 years and PhysX has provided collision detection and simulation in over 300 game titles. NVIDIA's engineers have been working closely with game and application developers to redefine the PhysX engine and meet the challenge of providing efficient and reliable simulation across a broad spectrum of multi-core platforms, from smartphones, tablets and consoles to high-end CPU/GPU PC systems. The new design incorporates the changes that have occurred in the gaming industry in a way to enable it to easily evolve in order to accommodate new platforms and future game design transitions.

The PhysX-3 SDK features a task management system that manages dependencies and distributes tasks among threads provided by a thread pool, that can be defined directly by the developer, for tighter and more efficient integration with the application’s task management strategy. Together with other architectural improvements, the new task management system means that PhysX-3 applications will enjoy much greater benefit from multi-core processors than could ever be achieved with earlier versions of PhysX.

Double-buffered actor access

Double buffering allows the client application to read and write to PhysX actors and the PhysX scene while the simulation thread is running. This makes it easier to service other dependencies such as AI and rendering within the main game loop.

With the PhysX-3 SDK, source for all supported platforms is managed in a unified code base. This is major improvement over earlier versions of PhysX, which evolved from a Windows-only code base and therefore had separate headers and source trees for some platforms.

In PhysX-3 developers can combine multiple actors into a single “aggregate”, a collection managed as single bounding box entity in the broadphase stage of the collision pipeline. For example, adding the bones of a ragdoll to an aggregate will reduce the cost of ragdoll insertion and broadphase update, when compared to having a separate AABB for each bone in the broadphase. This helps improve overall performance and memory efficiency of PhysX-3 relative to earlier implementations.

Binary In-place serialization

The PhysX-3 serialization process, whereby objects are moved to and from memory from persistent storage or an equivalent source, is much more powerful and efficient than the approach taken in PhysX-2. Binary in-place serialization is a direct path for instantiating ready-to-run objects in memory, providing quick and efficient insertion into the simulation with minimal data copying and without extra memory allocation.

Out-of-scene actor creation

In earlier versions of PhysX, actors were inserted into the simulation immediately upon creation, and were also destroyed immediately when they were removed from it. In PhysX-3, creating and destroying actors is completely decoupled from scene insertion and removal, thus affording wider latitude for asset management strategies and reducing troublesome compute load spikes. As game worlds grow larger and more complex each year, this improvement is more important than ever.

Released in conjunction with the PhysX-3 SDK, PhysX Visual Debugger (PVD) has also undergone major renovation and now offers support for performance profiling and memory analysis for PhysX-3 applications across all major platforms, as well as improved visualization of PhysX content. Prior to PhysX-3, event profiling for the PhysX SDK was available only on Windows platforms through the NVIDIA Platform Analyzer. The new PVD-based profiling system is an effective response to requests raised by console-focused PhysX developers.