PhysX is an open-source realtime physics engine middleware SDK developed by Nvidia as a part of Nvidia GameWorks software suite.
Initially, video games supporting PhysX were meant to be accelerated by PhysX PPU (expansion cards designed by Ageia). However, after Ageia's acquisition by Nvidia, dedicated PhysX cards have been discontinued in favor of the API being run on CUDA-enabled GeForce GPUs. In both cases, hardware acceleration allowed for the offloading of physics calculations from the CPU, allowing it to perform other tasks instead.
PhysX and other middleware physics engines are used in many video games today because they free game developers from having to write their own code that implements classical mechanics (Newtonian physics) to do, for example, soft body dynamics.
History
What is known today as PhysX originated as a physics simulation engine called NovodeX. The engine was developed by Swiss company NovodeX AG, an ETH Zurich spin-off. In 2004, Ageia acquired NovodeX AG and began developing a hardware technology that could accelerate physics calculations, aiding the CPU. Ageia called the technology PhysX, the SDK was renamed from NovodeX to PhysX, and the accelerator cards were dubbed PPUs (Physics Processing Units).
In its implementation, the first video game to use PhysX technology is The Stalin Subway, released in Russia-only game stores in September 2005.
In 2008, Ageia was itself acquired by graphics technology manufacturer Nvidia. Nvidia started enabling PhysX hardware acceleration on its line of GeForce graphics cards and eventually dropped support for Ageia PPUs.
PhysX SDK 3.0 was released in May 2011 and represented a significant rewrite of the SDK, bringing improvements such as more efficient multithreading and a unified code base for all supported platforms.
At GDC 2015, Nvidia made the source code for PhysX available on GitHub, but required registration at developer.nvidia.com. The proprietary SDK was provided to developers for free for both commercial and non-commercial use on Windows, Linux, macOS, iOS and Android platforms.
On December 3, 2018, PhysX was made open source under a 3-clause BSD license, but this change applied only to computer and mobile platforms.
On November 8, 2022, the open source release was updated to PhysX 5, under the same 3-clause BSD license.
Features
The PhysX engine and SDK are available for Microsoft Windows, macOS, Linux, PlayStation 3, PlayStation 4, Xbox 360, Xbox One, Wii, iOS and Android.
PhysX is a multi-threaded physics simulation SDK. It supports rigid body dynamics, soft body dynamics (like cloth simulation, including tearing and pressurized cloth), ragdolls and character controllers, vehicle dynamics, particles and volumetric fluid simulation.
Hardware acceleration
PPU
A physics processing unit (PPU) is a processor specially designed to alleviate the calculation burden on the CPU, specifically calculations involving physics. PhysX PPUs were offered to consumers in the forms of PCI or PCIe cards by ASUS, BFG Technologies, Dell and ELSA Technology.
Beginning with version 2.8.3 of the PhysX SDK, support for PPU cards was dropped, and PPU cards are no longer manufactured. The last incarnation of PhysX PPU standalone card designed by Ageia had roughly the same PhysX performance as a dedicated 9800GTX.
GPU
After Nvidia's acquisition of Ageia, PhysX development turned away from PPU extension cards and focused instead on the GPGPU capabilities of modern GPUs.
Modern GPUs are very efficient at manipulating and displaying computer graphics, and their highly parallel structure makes them more effective than general-purpose CPUs for accelerating physical simulations using PhysX.
Any CUDA-ready GeForce graphics card (8-series or later GPU with a minimum of 32 cores and a minimum of 256 MB dedicated graphics memory) can take advantage of PhysX without the need to install a dedicated PhysX card.
APEX
Nvidia APEX technology is a multi-platform scalable dynamics framework build around the PhysX SDK. It was first introduced in Mafia II in August 2010. Nvidia's APEX comprises the following modules: APEX Destruction, APEX Clothing, APEX Particles, APEX Turbulence, APEX ForceField and formerly APEX Vegetation which was suspended in 2011.
From version 1.4.1 APEX SDK is deprecated.