|Original author(s)||NovodeX (ETH Zurich)|
9.17.0329 / April 6, 2017
|Operating system||Microsoft Windows, macOS, Linux, PlayStation 2, PlayStation 3, PlayStation 4, Xbox 360, Xbox One, Wii, iOS, Android|
|License||Proprietary and commercial|
|Website||Nvidia PhysX developer site|
PhysX is a proprietary realtime physics engine middleware SDK. PhysX was authored at NovodeX, an ETH Zurich spin-off. In 2004, NovodeX was acquired by Ageia, and in February 2008, Ageia was acquired by Nvidia.
Video games supporting hardware acceleration by PhysX can be accelerated by either a PhysX PPU or a CUDA-enabled GeForce GPU (if it has at least 32 cores and a minimum of 256 MB dedicated graphics memory), thus offloading physics calculations from the CPU, allowing it to perform other tasks instead.
Middleware physics engines free game developers from writing their own code which implements classical mechanics (Newtonian physics) to do e.g. soft body dynamics. PhysX is one of the handful of physics engines used in the large majority of today's games.
The PhysX engine and SDK are available for Microsoft Windows, macOS, Linux, PlayStation 2, PlayStation 3, PlayStation 4, Xbox 360, Xbox One and the Wii. The PhysX SDK is provided to developers for free for both commercial and non-commercial use on Windows. For Linux, macOS and Android platforms the PhysX SDK is free for educational and non-commercial use. At GDC 2015, Nvidia made PhysX' source code available on GitHub, but requiring registration on the developer.nvidia.com.
What is known today as PhysX originated as a physics simulation engine called NovodeX. The multi-threaded engine was developed by Swiss company NovodeX AG. 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 PPU (physics processing unit), and the SDK was renamed from NovodeX to PhysX.
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 is a multi-threaded physics simulation SDK available for Microsoft Windows, macOS, Linux, PlayStation 3, Xbox 360 and Wii. It supports rigid body dynamics, soft body dynamics, ragdolls and character controllers, vehicle dynamics, particles, volumetric fluid simulation and cloth simulation including tearing and pressurized cloth.
A physics processing unit (PPU) is a processor specially designed to alleviate the calculation burden on the CPU, specifically calculations involving physics. PPU cards with PhysX support were available from the manufacturers ASUS, BFG Technologies 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 stand alone add in card designed by Ageia has roughly the same Physx performance as a dedicated 9800GTX.
After Nvidia's acquisition of Ageia, PhysX development turned away from PPU extension cards and focused instead on the GPGPU capabilities of modern GPUs. A graphics processing unit or GPU (also occasionally called visual processing unit or VPU) is a dedicated graphics rendering device for a personal computer, workstation or game console. 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 a range of complex algorithms, such as accelerating physical simulations using PhysX. A GPU can be located on a dedicated video card, or it can be integrated directly into the motherboard. More than 90% of new desktop and notebook computers have integrated GPUs.
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.
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.
FleX is a particle based simulation technique for real-time visual effects. Traditionally, visual effects are made using a combination of elements created using specialized solvers for rigid bodies, fluids, clothing, etc. Because FleX uses a unified particle representation for all object types, it enables new effects where different simulated substances can interact with each other seamlessly. Such unified physics solvers are a staple of the offline computer graphics world, where tools such as Autodesk Maya's nCloth, and Softimage's Lagoa are widely used. The goal for FleX is to use the power of GPUs to bring the capabilities of these offline applications to real-time computer graphics.
Real World Technologies analysis
On July 5, 2010, Real World Technologies published an analysis of the PhysX architecture. According to this analysis, most of the code used in PhysX applications at the time was based on x87 instructions without any multi-threading optimization. This could cause significant performance drops when running PhysX code on the CPU. The article suggested that a PhysX rewrite using SSE instructions may substantially lessen the performance discrepancy between CPU PhysX and GPU PhysX.
In response to the Real World Technologies analysis, Mike Skolones, product manager of PhysX, said that SSE support had been left behind because most games are developed for consoles first and then ported to the PC. As a result, modern computers run these games faster and better than the consoles even with little or no optimization. Senior PR manager of Nvidia, Bryan Del Rizzo, explained that multi-threading had already been available with CPU PhysX 2.x and that it had been up to the developer to make use of it. He also stated that automatic multithreading and SSE would be introduced with version 3 of the PhysX SDK.
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.
PhysX in video games
PhysX technology is used by game engines such as Unreal Engine (version 3 onwards), Unity, Gamebryo, Vision (version 6 onwards), Instinct Engine, Panda3D, Diesel, Torque, HeroEngine and BigWorld.
As one of the handful of major physics engines, it is used in many games, such as Mirror's Edge, Bulletstorm, Need for Speed: Shift, Castlevania: Lords of Shadow, Mafia II, Alice: Madness Returns, Batman: Arkham City, Borderlands 2, etc. Most of these games use the CPU to process the physics simulations.
PhysX in other software
Other software with PhysX support includes:
- Active Worlds (AW), a 3D virtual reality platform with its client running on Windows
- Autodesk 3ds Max, Autodesk Maya and Autodesk Softimage, computer animation suites
- DarkBASIC Professional (with DarkPHYSICS upgrade), a programming language targeted at game development
- DX Studio, an integrated development environment for creating interactive 3D graphics
- Experior, a 3D platform for simulating and emulating material handling systems (testing of control logic by using a 3D model to provide realistic feedback)
- Futuremark's 3DMark06 and Vantage benchmarking tools
- Microsoft Robotics Studio, an environment for robot control and simulation
- Nvidia's SuperSonic Sled and Raging Rapids Ride, technology demos
- OGRE (via the NxOgre wrapper), an open source rendering engine
- The Physics Abstraction Layer, a physical simulation API abstraction system (it provides COLLADA and Scythe Physics Editor support for PhysX)
- Rayfire, a plug-in for Autodesk 3ds Max that allows fracturing and other physics simulations
- Unity (game engine), a widely popular game engine developed by Unity Technologies
- Bullet (software)
- Havok (software)
- Open Dynamics Engine
- Newton Game Dynamics
- Unreal Engine
- Unity (game engine)
- Vortex (software)
- AGX Multiphysics
- "NVIDIA completes Acquisition of AGEIA Technologies" (Press release). NVIDIA Corporation. February 13, 2008. Retrieved March 18, 2009.
- "PhysX FAQ". Nvidia.com. Retrieved December 10, 2015.
- "NVIDIA announces the release of PhysX SDK V3". Nvidia. Archived from the original on May 24, 2011. Retrieved June 3, 2011.
- "Sony Computer Entertainment Enters Into Strategic Licensing Agreement With AGEIA" (PDF) (Press release). Sony Computer Entertainment, Inc. July 21, 2005. Archived from the original (PDF) on March 11, 2006. Retrieved August 23, 2006.
- "Playstation 3 gets free PhysX from Nvidia". Kotaku.
- Lowe, Scott (March 7, 2013). "Nvidia Announces PhysX Support for PlayStation 4".
- "PhysX – Overview – GeForce". Nvidia.com. Retrieved November 30, 2011.
- "NVIDIA Announces PhysX Support for Microsoft Xbox One Game Console". Nvidia.com. Archived from the original on November 9, 2014. Retrieved November 9, 2014.
- "News – Pre-GDC: Nvidia PhysX Approved For Wii Developers". Gamasutra. March 19, 2009. Retrieved November 30, 2011.
- "PhysX Downloads". Nvidia. Retrieved June 8, 2011.
- "PhysX On GitHub". Nvidia. Retrieved March 6, 2015.
- César A. Berardini (April 12, 2005). "AGEIA Technologies Interview". Archived from the original on September 21, 2011. Retrieved June 8, 2011.
- "PhysX For CUDA, Linux Support A Given?". Phoronix. Phoronix Media. February 14, 2008. Retrieved February 14, 2008.
- "How to restore PPU support with latest PhysX Drivers | PhysXInfo.com – PhysX News". PhysXInfo.com. January 17, 2011. Retrieved November 30, 2011.
-  Archived April 26, 2006, at the Wayback Machine.
- "English articles from PC Games Hardware". www.pcgameshardware.com.
- Olin Coles. "Mafia-II Video Game Performance Review". BenchmarkReviews.com. Retrieved August 23, 2010.
- "APEX". Retrieved June 8, 2011.
- "Category:APEX - PhysX Wiki". PhysXInfo.com. Retrieved 21 July 2013.
- "PhysX87: Software Deficiency". www.realworldtech.com.
- Stokes, Jon (July 8, 2010). "Did NVIDIA cripple its CPU gaming physics library to spite Intel?". Arstechnica.com. Retrieved November 30, 2011.
- "Nvidia: We're not hobbling CPU PhysX | thinq_ | Page 1". Thinq.co.uk. Retrieved November 30, 2011.
- "Instinct Software - Instinct Engine SDK". Instinctengine.com. Retrieved 2013-10-04.
- Matt Butrovich (February 12, 2009). "A look at PhysX in Mirror's Edge". The Tech Report. Retrieved April 6, 2011.
- Rich Brown (September 21, 2009). "Nvidia's PhysX makes PC Batman: Arkham Asylum worth the wait". cNET.com. Retrieved April 6, 2011.
- Matthew Murray (September 2, 2010). "Mafia II: Is Applied PhysX Worth It?". ExtremeTech. Retrieved April 6, 2011.
- Jim Thacker (March 1, 2011). "Videos: Autodesk reveals new features in Maya 2012". cgchannel.com. Retrieved April 6, 2011.
- "3ds Max 2012 and Maya 2012 adds PhysX support". Beyond3D.com. March 1, 2011. Retrieved April 6, 2011.
- Randall Hand (May 5, 2010). "NVidia PhysX and CUDA in Softimage 2011". Vizworld.com. Retrieved April 6, 2011.
- "The Game Creators Integrate AGEIA PhysX Technology into DarkBASIC Professional" (Press release). The Game Creators. March 22, 2006. Archived from the original on April 27, 2006. Retrieved September 23, 2006.
- "Overview". DX Studio. Worldweaver. Retrieved November 2, 2008.
- "AGEIA Joins Futuremark's 3DMark Benchmark Development Program". FindArticles. CBS Interactive. BusinessWire. September 27, 2006. Retrieved November 3, 2008.
- "Simulation Overview". Microsoft Robotics Developer Center. Microsoft.
- Boeing, Adrian. "Engines". Physics Abstraction Layer. Retrieved November 18, 2007.