PhysX

Last updated

PhysX
Original author(s) NovodeX AG (ETH Zurich)
Developer(s) Nvidia Corporation
(2008-present)
Ageia
(2004-2008)
NovodeX AG
(2001-2004)
Stable release
Blast 5.0.0; PhysX SDK 5.1.3; Flow 2.0.2 / February 23, 2023 (2023-02-23)
Repository https://github.com/NVIDIA-Omniverse/PhysX (5.x)
https://github.com/NVIDIAGameWorks/PhysX (4.x)
Written in C++
Operating system Microsoft Windows, macOS, Linux, PlayStation 2, PlayStation 3, PlayStation 4, Xbox 360, Xbox One, Wii, iOS, Android
Type Physics simulation
License BSD-3
Website Nvidia PhysX developer site
Documentation
A BFG Physx card BFG physx.jpg
A BFG Physx card

PhysX is an open-source [1] realtime physics engine middleware SDK developed by Nvidia as a part of Nvidia GameWorks software suite.

Contents

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. [2]

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. [3] 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). [4]

In its implementation, the first video game to use PhysX technology is The Stalin Subway, released in Russia-only game stores in September 2005. [5]

In 2008, Ageia was itself acquired by graphics technology manufacturer Nvidia. [6] Nvidia started enabling PhysX hardware acceleration on its line of GeForce graphics cards [7] and eventually dropped support for Ageia PPUs. [8]

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. [2]

At GDC 2015, Nvidia made the source code for PhysX available on GitHub, but required registration at developer.nvidia.com. [9] The proprietary SDK was provided to developers for free for both commercial and non-commercial use on Windows, Linux, macOS, iOS and Android platforms. [10]

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. [11]

On November 8, 2022, the open source release was updated to PhysX 5, under the same 3-clause BSD license. [12]

Features

The PhysX engine and SDK are available for Microsoft Windows, macOS, Linux, [11] PlayStation 3, [13] [14] PlayStation 4, [15] Xbox 360, [16] Xbox One, [17] Wii, [18] iOS and Android. [11]

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

(PC) The top screenshot shows how debris is simulated in Mafia II when PhysX is turned to the highest level in the game settings. The bottom screenshot shows a similar scene with PhysX turned to the lowest level. Mafia physx.jpg
(PC) The top screenshot shows how debris is simulated in Mafia II when PhysX is turned to the highest level in the game settings. The bottom screenshot shows a similar scene with PhysX turned to the lowest level.

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, [19] BFG Technologies, [20] [21] Dell [22] and ELSA Technology. [23]

Beginning with version 2.8.3 of the PhysX SDK, support for PPU cards was dropped, and PPU cards are no longer manufactured. [8] The last incarnation of PhysX PPU standalone card designed by Ageia had roughly the same PhysX performance as a dedicated 9800GTX. [24]

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 [25] ) 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. [26] 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. [27] [28]

From version 1.4.1 APEX SDK is deprecated. [29]

Nvidia FleX

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. [30]

Criticism from Real World Technologies

On July 5, 2010, Real World Technologies published an analysis [31] 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 multithreading 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 [32] 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 multithreading 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. [33]

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. [2]

Usage

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, [34] Panda3D, Diesel, Torque, HeroEngine, and BigWorld. [25]

As one of the handful of major physics engines, it is used in many games, such as The Witcher 3: Wild Hunt , Warframe , Killing Floor 2 , Fallout 4 , Batman: Arkham Knight , Planetside 2, and Borderlands 2 . Most of these games use the CPU to process the physics simulations.

Video games with optional support for hardware-accelerated PhysX often include additional effects such as tearable cloth, dynamic smoke or simulated particle debris. [35] [36] [37]

PhysX in other software

Other software with PhysX support includes:

See also

Related Research Articles

<span class="mw-page-title-main">Coprocessor</span> Type of computer processor

A coprocessor is a computer processor used to supplement the functions of the primary processor. Operations performed by the coprocessor may be floating-point arithmetic, graphics, signal processing, string processing, cryptography or I/O interfacing with peripheral devices. By offloading processor-intensive tasks from the main processor, coprocessors can accelerate system performance. Coprocessors allow a line of computers to be customized, so that customers who do not need the extra performance do not need to pay for it.

<span class="mw-page-title-main">Graphics processing unit</span> Specialized electronic circuit; graphics accelerator

A graphics processing unit (GPU) is a specialized electronic circuit initially designed to accelerate computer graphics and image processing. After their initial design, GPUs were found to be useful for non-graphic calculations involving embarrassingly parallel problems due to their parallel structure. Other non-graphical uses include the training of neural networks and cryptocurrency mining.

<span class="mw-page-title-main">Havok (software)</span> Video game middleware

Havok is a middleware software suite developed by the Irish company Havok. Havok provides a physics engine component and related functions to video games.

General-purpose computing on graphics processing units is the use of a graphics processing unit (GPU), which typically handles computation only for computer graphics, to perform computation in applications traditionally handled by the central processing unit (CPU). The use of multiple video cards in one computer, or large numbers of graphics chips, further parallelizes the already parallel nature of graphics processing.

<span class="mw-page-title-main">Physics engine</span> Software for approximate simulation of physical systems

A physics engine is computer software that provides an approximate simulation of certain physical systems, such as rigid body dynamics, soft body dynamics, and fluid dynamics, of use in the domains of computer graphics, video games and film (CGI). Their main uses are in video games, in which case the simulations are in real-time. The term is sometimes used more generally to describe any software system for simulating physical phenomena, such as high-performance scientific simulation.

A physics processing unit (PPU) is a dedicated microprocessor designed to handle the calculations of physics, especially in the physics engine of video games. It is an example of hardware acceleration.

<span class="mw-page-title-main">Ageia</span> Fabless semiconductor company

Ageia, founded in 2002, was a fabless semiconductor company. In 2004, Ageia acquired NovodeX, the company who created PhysX – a Physics Processing Unit chip capable of performing game physics calculations much faster than general purpose CPUs; they also licensed out the PhysX SDK, a large physics middleware library for game production.

<span class="mw-page-title-main">Autodesk Softimage</span> Discontinued 3D graphics software

Autodesk Softimage, or simply Softimage was a 3D computer graphics application, for producing 3D computer graphics, 3D modeling, and computer animation. Now owned by Autodesk and formerly titled Softimage|XSI, the software has been predominantly used in the film, video game, and advertising industries for creating computer generated characters, objects, and environments.

<span class="mw-page-title-main">CUDA</span> Parallel computing platform and programming model

Compute Unified Device Architecture (CUDA) is a parallel computing platform and application programming interface (API) that allows software to use certain types of graphics processing units (GPUs) for accelerated general-purpose processing, an approach called general-purpose computing on GPUs (GPGPU). CUDA API and its runtime: The CUDA API is an extension of the C programming language that adds the ability to specify thread-level parallelism in C and also to specify GPU device specific operations (like moving data between the CPU and the GPU). CUDA is a software layer that gives direct access to the GPU's virtual instruction set and parallel computational elements for the execution of compute kernels. In addition to drivers and runtime kernels, the CUDA platform includes compilers, libraries and developer tools to help programmers accelerate their applications.

<span class="mw-page-title-main">Larrabee (microarchitecture)</span> Canceled Intel GPGPU chip

Larrabee is the codename for a cancelled GPGPU chip that Intel was developing separately from its current line of integrated graphics accelerators. It is named after either Mount Larrabee or Larrabee State Park in Whatcom County, Washington, near the town of Bellingham. The chip was to be released in 2010 as the core of a consumer 3D graphics card, but these plans were cancelled due to delays and disappointing early performance figures. The project to produce a GPU retail product directly from the Larrabee research project was terminated in May 2010 and its technology was passed on to the Xeon Phi. The Intel MIC multiprocessor architecture announced in 2010 inherited many design elements from the Larrabee project, but does not function as a graphics processing unit; the product is intended as a co-processor for high performance computing.

Direct2D is a 2D vector graphics application programming interface (API) designed by Microsoft and implemented in Windows 10, Windows 8, Windows 7 and Windows Server 2008 R2, and also Windows Vista and Windows Server 2008.

<span class="mw-page-title-main">OptiX</span> Nvidia ray tracing API using CUDA to compute on GPUs

Nvidia OptiX is a ray tracing API that was first developed around 2009. The computations are offloaded to the GPUs through either the low-level or the high-level API introduced with CUDA. CUDA is only available for Nvidia's graphics products. Nvidia OptiX is part of Nvidia GameWorks. OptiX is a high-level, or "to-the-algorithm" API, meaning that it is designed to encapsulate the entire algorithm of which ray tracing is a part, not just the ray tracing itself. This is meant to allow the OptiX engine to execute the larger algorithm with great flexibility without application-side changes.

<span class="mw-page-title-main">Away3D</span>

Away3D is an open-source platform for developing interactive 3D graphics for video games and applications, in Adobe Flash or HTML5. The platform consists of a 3D world editor, a 3D graphics engine, a 3D physics engine and a compressed 3D model file format (AWD).

Fork Particle is a computer graphics visual effects modeling and software development kit (SDK) developed and sold by Fork Particle, Inc. Fork Particle uses its real time particle system technology to simulate visual effects or particle effects such as CGI explosions, fire, rain, smoke, dust, etc. Fork Particle is used in video games and visual simulation software such as a flight simulator. It has been licensed to game developers for Windows, macOS, Linux, PlayStation 3, PlayStation 4, Xbox 360 and Xbox One.

<span class="mw-page-title-main">Mantle (API)</span> Low-overhead rendering API

Mantle was a low-overhead rendering API targeted at 3D video games. AMD originally developed Mantle in cooperation with DICE, starting in 2013. Mantle was designed as an alternative to Direct3D and OpenGL, primarily for use on personal computers, although Mantle supports the GPUs present in the PlayStation 4 and in the Xbox One. In 2015, Mantle's public development was suspended and in 2019 completely discontinued, as DirectX 12 and the Mantle-derived Vulkan rose in popularity.

<span class="mw-page-title-main">AMD TrueAudio</span>

TrueAudio is the name given to AMD's ASIC intended to serve as dedicated co-processor for the calculations of computationally expensive advanced audio signal processing, such as convolution reverberation effects and 3D audio effects. TrueAudio is integrated into some of the AMD GPUs and APUs available since 2013.

Nvidia NVENC is a feature in Nvidia graphics cards that performs video encoding, offloading this compute-intensive task from the CPU to a dedicated part of the GPU. It was introduced with the Kepler-based GeForce 600 series in March 2012.

Nvidia GameWorks is a middleware software suite developed by Nvidia. The Visual FX, PhysX, and Optix SDKs provide a wide range of enhancements pre-optimized for Nvidia GPUs. GameWorks is partially open-source. The competing solution being in development by AMD is GPUOpen, which was announced to be free and open-source software under the MIT License.

<span class="mw-page-title-main">Nvidia RTX</span> Development platform for rendering graphics

Nvidia RTX is a professional visual computing platform created by Nvidia, primarily used in workstations for designing complex large-scale models in architecture and product design, scientific visualization, energy exploration, and film and video production, as well as being used in mainstream PCs for gaming.

Nvidia GTC is a global artificial intelligence (AI) conference for developers that brings together developers, engineers, researchers, inventors, and IT professionals. Topics focus on AI, computer graphics, data science, machine learning and autonomous machines. Each conference begins with a keynote from Nvidia CEO and Founder Jensen Huang, followed by a variety of sessions and talks with experts from around the world.

References

  1. "NVIDIA PhysX SDK 4.1". Engadget. Retrieved April 5, 2022.
  2. 1 2 3 "NVIDIA announces the release of PhysX SDK V3". Nvidia. Archived from the original on May 24, 2011. Retrieved June 3, 2011.
  3. "NovodeX AG". ETH Zürich. Archived from the original on January 8, 2018. Retrieved December 4, 2018.
  4. César A. Berardini (April 12, 2005). "AGEIA Technologies Interview". Archived from the original on September 21, 2011. Retrieved June 8, 2011.
  5. "Physics Engine: PhysX". MobyGames. Retrieved September 6, 2023.
  6. "NVIDIA completes Acquisition of AGEIA Technologies" (Press release). NVIDIA Corporation. February 13, 2008. Retrieved March 18, 2009.
  7. "PhysX For CUDA, Linux Support A Given?". Phoronix. Phoronix Media. February 14, 2008. Retrieved February 14, 2008.
  8. 1 2 "How to restore PPU support with latest PhysX Drivers | PhysXInfo.com – PhysX News". PhysXInfo.com. January 17, 2011. Archived from the original on November 24, 2011. Retrieved November 30, 2011.
  9. "PhysX On GitHub". Nvidia . Retrieved March 6, 2015.
  10. "PhysX SDK as of January 7, 2017". Nvidia. Archived from the original on January 7, 2017. Retrieved September 3, 2017.
  11. 1 2 3 "PhysX SDK". NVIDIA Developer. November 28, 2018. Archived from the original on December 5, 2018. Retrieved December 5, 2018.
  12. "Open Source Simulation Expands with NVIDIA PhysX 5 Release". Nvidia. Archived from the original on May 28, 2023. Retrieved June 15, 2023.
  13. "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.
  14. "Playstation 3 gets free PhysX from Nvidia". Kotaku. March 18, 2009.
  15. Lowe, Scott (March 7, 2013). "Nvidia Announces PhysX Support for PlayStation 4".
  16. "PhysX – Overview – GeForce". Nvidia.com. Archived from the original on April 29, 2009. Retrieved November 30, 2011.
  17. "NVIDIA Announces PhysX Support for Microsoft Xbox One Game Console". Nvidia.com. Archived from the original on November 9, 2014. Retrieved November 9, 2014.
  18. "News – Pre-GDC: Nvidia PhysX Approved For Wii Developers". Gamasutra. March 19, 2009. Retrieved November 30, 2011.
  19. "Asus 128mb PhysX Card Review/Preview". July 12, 2006.
  20. "AGEIA And BFG Technologies Enter Into Retail Distribution Agreement". Archived from the original on April 26, 2006.
  21. "BFG Ageia PhysX Card Review". October 1, 2007.
  22. "AGEIA PhysX - graphics card - AGEIA PhysX - 128 MB Specs". Cnet.
  23. "ELSA teams up with Ageia".
  24. "English articles from PC Games Hardware". www.pcgameshardware.com. January 26, 2009.
  25. 1 2 "PhysX FAQ". Nvidia.com. Retrieved December 10, 2015.
  26. Olin Coles. "Mafia-II Video Game Performance Review". BenchmarkReviews.com. Retrieved August 23, 2010.
  27. "APEX" . Retrieved June 8, 2011.
  28. "Category:APEX - PhysX Wiki". PhysXInfo.com. Retrieved July 21, 2013.
  29. "APEX 1.4.1 - Release Notes (APEX has been deprecated)". gameworksdocs.nvidia.com. Retrieved December 5, 2018.
  30. "NVIDIA FleX". NVIDIA Developer. August 13, 2015. Retrieved April 17, 2019.
  31. "PhysX87: Software Deficiency". www.realworldtech.com.
  32. Stokes, Jon (July 8, 2010). "Did NVIDIA cripple its CPU gaming physics library to spite Intel?". Arstechnica.com. Retrieved November 30, 2011.
  33. "Nvidia: We're not hobbling CPU PhysX | thinq_ | Page 1". Thinq.co.uk. Retrieved November 30, 2011.
  34. "Instinct Software - Instinct Engine SDK". Instinctengine.com. Archived from the original on February 13, 2015. Retrieved October 4, 2013.
  35. Matt Butrovich (February 12, 2009). "A look at PhysX in Mirror's Edge". The Tech Report . Retrieved April 6, 2011.
  36. Rich Brown (September 21, 2009). "Nvidia's PhysX makes PC Batman: Arkham Asylum worth the wait". cNET.com . Retrieved April 6, 2011.
  37. Matthew Murray (September 2, 2010). "Mafia II: Is Applied PhysX Worth It?". ExtremeTech . Retrieved April 6, 2011.
  38. "PhysX - Lumberyard User Guide".
  39. Jim Thacker (March 1, 2011). "Videos: Autodesk reveals new features in Maya 2012". cgchannel.com. Retrieved April 6, 2011.
  40. "3ds Max 2012 and Maya 2012 adds PhysX support". Beyond3D.com. March 1, 2011. Archived from the original on July 8, 2017. Retrieved April 6, 2011.
  41. Randall Hand (May 5, 2010). "NVidia PhysX and CUDA in Softimage 2011". Vizworld.com. Retrieved April 6, 2011.
  42. "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.
  43. "Overview". DX Studio. Worldweaver. Archived from the original on July 5, 2009. Retrieved November 2, 2008.
  44. "AGEIA Joins Futuremark's 3DMark Benchmark Development Program". FindArticles . CBS Interactive. BusinessWire. September 27, 2006. Retrieved November 3, 2008.
  45. "Simulation Overview". Microsoft Robotics Developer Center. Microsoft. March 2012.
  46. Boeing, Adrian. "Engines". Physics Abstraction Layer. Retrieved November 18, 2007.
  47. Pierre-Terdiman (March 22, 2019), GitHub - Pierre-Terdiman/PEEL: Physics Engine Evaluation Lab. , retrieved March 22, 2019
  48. "Unreal Engine 4.26 Preview". September 24, 2020.
  49. "Unity - Manual: Physics".