I never thought it was possible. Never, in a million years, would I have guessed that Nvidia would allow anyone to delve into the inner workings of their PhysX technology and be allowed to alter it in any significant way. Even Nvidia’s CEO, Jen-Hsun Huang, would have turned blue in the face repeating the mantra that PhysX was their own technology and that’s the way it was going to remain. But at the 2015 Game Developer’s Conference, a bomb was dropped by Nvidia and Epic Games announcing that anyone using the UE4 engine was now able to view and modify shared source code for CPU-based PhysX.
The news was broken by Tim Sweeney on the Unreal Engine blog, detailing the changes made and what this means for game developers starting today. Developers working in the UE4 engine now have access to not just the source code, but also to the binary libraries and the C++ source access that will even allow them to modify how CPU PhysX works. For all practical purposes when it comes to the UE4 engine, PhysX is now an open-source engine, because developers can engineer in changes to PhysX, test them in their games and submit those changes to Nvidia for review and a possible inclusion inside the official source code for other developers to exploit.
While this is gob-smackingly amazing for game developers who’ve long wanted to alter the behaviour of PhysX in small ways to benefit their games, this also opens up another option that has long been hidden from the rest of the GPU industry – running PhysX on AMD or Intel graphics devices. The C++ and binary access will give developers the option to create a translation layer that will take PhysX commands and translate them into something that is compatible with the OpenCL 1.0 standard. Then, you could theoretically accelerate PhysX on almost any graphics card capable of running OpenCL 1.0 with an acceptable level of performance. It won’t be a native implementation, but then it will always be possible to apply brute force to make this work more smoothly.
However, there is a catch – any kind of work in modifying PhysX to be compatible with OpenCL likely won’t be added into the source code by Nvidia. In fact, a lot of alterations to the source code won’t be standardised in UE4 either. Many games based on it and making use of these modifications will be doing so on their own, and developers will only be able to have things like PhysX working on Radeon graphics if they share their knowledge with others.
Its another feather in the cap of Epic’s engine, but it also highlights how this act has changed the landscape for game engines all on its own. No other game engine has this level of integration or access to PhysX and certainly no other game engine will allow you to alter its behaviour. With the Unreal Engine now being free to all game developers with the condition of sharing your sales profits with Epic, it will be interesting to see if this causes any major shifts away from Unity, Source or CryEngine or any of their contemporaries. You can be sure that engineers Intel are now looking at what kind of deal they can strike with Epic’s competition to allow source access and modification to the Havok physics engine.