Nvidia Open Sources PhysX, With a Few Caveats Attached
Nvidia has declared PhysX 3.4 is now open source, while the upcoming 4.0 version will be open sourced when it ships later this month. I am genuinely surprised to have written this. Back when Nvidia bought Ageia, it took the company’s idea for a PPU — a Physics Processing Unit to be installed in a PCIe slot and to serve as a game enhancing peripheral — and folded its capabilities into the then-current line of GeForce products. The end result of this was supposed to be a huge improvement in visual fidelity, albeit not visual details that the player could actually interact with. Still, PhysX offered an interesting way to improve game visuals and boost enjoyment if you had an Nvidia card.
There was a great deal of chatter back then about whether PhysX was a “fair” approach for Nvidia to take. I always thought it was. Nvidia had purchased and refined an API that could execute code on its programmable GPU cores in a way AMD, at the time, couldn’t match. PhysX was a major play for Nvidia, one of its first major marketing initiatives intended to build brand loyalty by giving consumers specific incentives to use PhysX and, by extension, more of a reason to buy GeForce cards. The idea that the company would open source the project was laughable.
Fast forward to the present day, and things aren’t so funny. PhysX was initially talked about like a GPU project, but it always had a CPU renderer capable of running in software. While this aspect of the SDK was once controversial, multi-threading support was finally introduced in PhysX SDK 3.0.
PhysX is now licensed under the simple BSD-3 license. The Github depository notes that APEX is included as well, under the same license, then follows with this gem:
The APEX SDK is not needed to build either the PhysX SDK nor the demo and has been deprecated. It is provided for continued support of existing applications only… The APEX SDK distribution contains pre-built binaries supporting GPU acceleration. Re-building the APEX SDK removes support for GPU acceleration.
The SDK is open source. The ability to run it on a GPU, on the other hand, is not. It’s not clear how much this actually matters, since the functions have been deprecated or moved to alternate sources. Regardless, it comes off badly, reading more like Nvidia thumbing its nose at stupid gamers who poke their fingers into areas where they shouldn’t be.
According to Nvidia, this new open source arrangement is being carried about because the company has discovered physics is far more important to its work than previously expected. The company writes that “Physics simulation dovetails with AI, robotics and computer vision, self-driving vehicles, and high performance computing.” These are all major fields of interest for Nvidia, so it’ll be interesting to see what comes of a major push like this. AMD, of course, has had its own ROCm initiative for over a year, but Nvidia has shown little interest in engaging with the open-source community this way.