Monday 24 August 2009

On Carmack and the state of GPU physics

For the computer graphics geek, there’s no hotter thing to talk about this decade other than GPU Physics. Recently, John Carmack spouted his take on dedicated physics hardware a.k.a Physics Processing Unit/PPU at QuakeCon 2009 Q&A section (watch here), and suddenly, all the Internet is on rage (pun intended).

So, basically, what Carmack said was about how the multi-CPU cores would be a more suitable path for physics processing in the near future, and PPU is not a viable option. He also said that some physics-intensive stuff can be done normally on a typical GPU ‘when GPUs finally get "reasonably fine-grained context switching and scheduling”’.

Most of the response to this statement is around ‘Carmack is yapping about stuff he has no clue about’, or ‘my PhysX-enabled 8800GT works just fine, so that's not true’, and so on.
Okay, so your Physx-card can render fluffy waving cloth and makes the breaking glass look more bling-a-ling pretty, but then what? Does it do groundbreaking physics calculations that actually affect the game play?

Let’s take two games for comparison then. Half-life 2 and Mirror’s Edge. Now turn off the physics specific codepath for both games (Havok for HL2 and PhysX for ME). Half-life 2 would be downright unplayable, but not Mirror’s Edge, since the latter can run perfectly fine, sans the framerate hit. The reason that Half-life 2 is unplayable is not because of the framerate or the speed of the processing, but it’s because the physics is actually integrated into the gameplay so much that you can’t lift yourself by using the wooden plank and piles of concrete bricks to proceed to the next level. Mirror’s Edge? Oh, don’t worry, you can finish the game without all the physics just fine. Hint: ‘First-order-physics


Not to put aside the majority of PC users still use IGP or weak GPUs with fast CPUs. Havok can be executed by the CPU, while PhysX relies on dedicated graphics chip.

To sum it all, what Carmack, from a developers’ perspective, said was: hey we’re better off using the hardware that >75% of people out there already have, because in the future, the CPU will only get crazier in terms of core count and speed, and not to mention the dawn of a better GPU(s) programmability and branching (GPGPU). It’s a good thing to have a ‘current’ solution like PhysX, but it’s only becoming a niche stuff in the long run.

Is it cheaper to pay a proprietary fee to Nv than to develop a multi-threaded physics game system based on Havok? Yes. But is it the right direction for the next DirectX 11/OpenGL 3.0 generation of hardware? I don’t think so.

No comments: