I think the expose article is more worth a read, especially after that developer's POV blog.https://www.realworldtech.com/physx87/
Several point I think are pertinent.
*PhysX was designed to run on a 32-bit 500 Mhz MIPS CPU, and was single precision by nature. *IMO, the PPU was like having a Raspberry Pi in your PC as a compute off-loader.
*All CPUs being used during the original release period supported SSE2, let alone SSE, while PhysX was single precision code that ran extended precision x87 on CPU.
*They could use packed, single precision SSE for PhysX. Each instruction would execute up to 4 SIMD operations per cycle, rather than just one scalar operation.
*Nvidia had PhysX running on consoles using the AltiVec extensions for PPC, which are very similar to SSE.
*Nvidia has clarified that CPU PhysX is by default single threaded and multi-threading is left to the developer.
Points from the blog article:
*The developer admits merely enabling SSE in the compiler without code optimization would have instantly given 20% performance, then claims there was no point in using it and support would cause compatibility issues. *Just imagine the performance here with multi-threading enabled, even without code optimization.
*The article claims the original version didn't support multi-threading, but I swear multi-threading was working before Nvidia bought out Ageia. I've read some claims saying Ageia CPU physx was faster in some games, simply because those games supported multi-threading. So even if multi-threading wasn't supported early on, it still was eventually supported, but developers were never encouraged to use it.
*The only CPUs I can think of not supporting SSE2 was the Athlon XP and Pentium 3, which nobody was using for Vista and DX10 gaming. I think both still supported SSE.
*Nvidia quickly ported it to CUDA, where it not only saw a performance increase, but barely reduced graphics performance, proving the overhead was minimal, and it was easy to optimize.
**The CUDA version did not support ALL
of the PhysX effects compared to the PPU, yet still ran fine.
*The console version was optimized and used multi-threading way before the PC.
*The newest version of PhysX supposedly runs fine on CPUs.
*Older versions of PhysX games are not compatible with the new PhysX and require the legacy installer, virtually locking out any performance increases for older games.
*The official excuses for PhsyX performance have all been extremely shady, with points easily made against them. The best one was probably multi-threading being left to developers.
*Since the latest version officially supports SSE2 and multi-threading, it no longer has any point in being a vendor lock-in feature, and has been open sourced to keep developers.
IMO, for open source PhysX to be useful, someone has to backport the optimizations for physx2 compatibility. AFAIK, it's not currently possible to install phsyx3 and run those older games with the speed improvements.