Looks like hardware makers are remembering what they are selling: hardware. You’d think they always knew that, but apparently they didn’t.
Hardware makers always liked to control their customers, be it end-users or developers. They make proprietary ports and closed interfaces that only work with their stuff. The thought process is something along “If we make sure our hardware is incompatible with whatever runs on our competitor’s hardware, then customers will come and be forced to stay loyal to us.”. Unfortunately these kinds of locked-in devices never really catch on for some reason, whereas open platforms (given they have some good traits) thrive immensely. Try to get absolute power over your customers, and at some point – no matter how great your product is – they’ll get fed up and leave.
What’s mind-boggling is how recent history is littered with failed attempts at binding hardware users. Since it’s closest to what I want to write about, let’s look at PhysX. First it was an attempt to sell physics acceleration hardware – you’d get great effects if you bought a PhysX card and a game that supported it, but without the hardware it was just another bad physics engine. Somehow game developers weren’t as enthusiastic as they were supposed to be. Then along came nVidia and ported PhysX to their GPUs. Now that a major GPU manufacturer is behind this, every game should use the engine, right? Well, somehow not every gamer trashed their Radeon to switch to nVidia and not every developer immediately wanted to make a game that would only run (well) on half the systems out there.
Because as a developer, you want a broad user base. It should be obvious, but somehow it isn’t. Why do MMOs look like they are lagging behind in graphics quality like 3-4 years? Because they want to reach as many users (with old computers) as possible. Imposing any artificial limits on your hardware makes it worse hardware, no matter what your strategy was.
But, almost a year after the release of the OpenCL specification, OpenCL ports of physics engines are being announced – by Intel (Havox), AMD (Bullet) and nVidia (PhysX). So as a developer, you can finally choose an engine and go with it – it should work on all platforms that support OpenCL!