Game Physics and the PhysX PPU

One of the properties of graphics that made the feature a good fit for a specialized processor inside a PC is the fact that the task is infinitely parallelizable. Hundreds of thousands, and even millions of pixels need to be processed every frame. The more detailed a rendering needs to be, the more parallel the task becomes. The same is true with physics. As with the visual world, the physical world is continuous rather than discrete. The more processing power we have, the more things we can simulate at once, and the more realistically we can approximate the real world.

But as we’ll see, there is more to it than simply parallel compute power.

In the beginning there was collision detection, and it was good. And then came some semblance of gravity. Over the years, more and more objects in the game world have become interactive and affected by the world around it. Now the game physics world has culminated in the ability to bowl for oil drums with floppy dead people.

Fast, efficient, rigid body simulation has been well developed over the past couple years. A rigid body is basically a single unit that does not deform due to physical interaction. Think of two billiard balls slamming into each other: the balls retain their shape. If one were to drop a billiard ball on a beach ball, we would see a much different reaction: the beach ball would contract and expand a great deal. In current games, we would treat the beach ball, and indeed everything else, as a rigid body object.

Any rigid body object can have a number of forces acting on it at a time depending on the complexity of the simulation. Each object also has its own properties that are used to determine how these forces affect the object. This can scale from simple (mass and shape) to complex (like data to describe how shape and mass distribution affect angular velocity) depending on how accurate the developer wants to make things.

Not much interesting happens if a rigid body is sitting on flat ground and not moving with nothing touching it. Interesting things start to happen when either the user interacts with an object, or multiple rigid bodies interact with each other. We can easily see how these interactions could get complex. Think of bowling or billiards. Now think a little more complex. What happens when a rocket hits a brick wall and all the bricks go flying? Currently, games generally use tens to about a hundred rigid body objects in any given scene. This is somewhat limiting when the game calls for large scale effects or destruction.

So, here’s the real question. Why won’t Intel’s vision of multi and many-core processors be good enough to handle what a discrete PPU could handle?

Of course more parallel processing power will help no matter how it comes. But the deeper issue is data movement. The example AGEIA gave us to think about was a huge pile of bricks; when you push down on one brick near the top, forces are transferred to all other bricks in the stack. This may not be difficult on the scale to hundreds, but how about 30000 objects in a stack? How about keeping track of that while handling deformable (soft body) objects, fluids, and all collision detection in the scene?

The was all this needs to be handled is not simply with lots of parallel independent floating point power, but with lots of parallel floating point power connected by huge bandwidth. The fact that some initial Intel dual core chips will have to go off chip and back on to communicate, not as much performance is gained as possible. Certainly more parallelism is better no matter what, but it’s the high bandwidth that clenches the deal.

AGEIA’s background is in switched fabrics and networking hardware. The one of the keys to their chip is in the way PhysX is able to move high volumes of computed data internally. In order to find the forces on a brick in the middle of a stack that’s been kicked, the forces on all the bricks around it need to be updated.

Getting data into and out of the chip as fast as possible is important as well. For now, AGEIA is sticking with GDDR3 in order to benefit from the high volume (and lower costs) generated by the graphics market. It would be possible for the PhysX to benefit from higher bandwidth solutions like XDR, but for now it is important for AGEIA to minimize the cost/benefit ratio in order to succeed. The company philosophy at the outset is to follow what the graphics market does in terms of on card RAM.

We really don’t know a great deal about the intimate details of the architecture, but a light weight parallel floating point with lots of communications is a good start. We’ve had several guesses at how the hardware works that have been confirmed wrong. But to paraphrase Edison, eliminating all incorrect paths leads to the goal.

It does seem obvious that all physical properties of objects can be uploaded to the hardware initially (like a graphics card does with textures and such) and manipulated/updated every time something changes. We’ll be bringing out as many details as we can as soon as we are able.

Index Final Words
POST A COMMENT

70 Comments

View All Comments

  • patrick0 - Saturday, March 12, 2005 - link

    Only usefull for games?
    Can someone explain this one to me please.

    I can imagine so many programs the PPU could be usefull for. Sound Effects?! Does anyone here have any idea about the power you need to do a lot of SFX at the same time? With a PPU you could easilly build a cheap sound-studio at home. (if someone tells Steinberg how to use them of course).

    I guess they will sell them sub $150 (maybe sub $200 the first month).
    I'm willing to spend $300-$350 if it's really capable of doing what they say it does.
    Reply
  • patrick0 - Saturday, March 12, 2005 - link

    a PPU is a need. No CPU not even quad-core one is capable of processing the amount of data this PPU seems to be able to.
    It seems to take a long time untill we'll have 256-bit memory interface on a mobo, simply because of cost.

    Personal, I'ld love to be able to buy an add-in card with a PPU.
    Probably the PPU will seed up gaming more than SLI. Many games are CPU dependent (all games with SLI). A PPU takes of processing from both the CPU and the GPU.

    They say they will make them as PCI an PCIe x4, just hope the PCIe will be compatible with PCIe x1 or the SLI slot, because you'll need a lot of bandwidth!
    Reply
  • Regs - Saturday, March 12, 2005 - link

    A more interesting thought is to see if Nvidia can some how create their own PPU and connect it via a SLI set up. One gpu connect to a ppu unit on SLI. Now that's a reason to get a PCI-x nvidia motherboard!

    Like Anand stated in his web-blog, I don't imagine ATi or Nvidia will be sitting on the side line for this one much more longer. Like all successful businesses, it all starts with a good idea and a educated risk.
    Reply
  • archcommus - Saturday, March 12, 2005 - link

    Well when 3D hardware acceleration was new, it was an option you turned on and off. If you had a card, you turned it on and got better graphics and speed. If you left it off, things looked a little worse and were a bit slower. Fast forward to now and you need 3D hardware acceleration for everything. I imagine the same will occur with PPU cards. At first it'll be an option that, when turned on, creates better phsyics and better speed. But of course, you could turn it off, to get slightly lesser physics and probably slower speed.

    I am excited about the possibilities of this, too, but damn, I really don't like thinking that another card will be necessary in our future. And like I said before, this is a game that will ONLY come in handy for games, and nothing else, unlike video cards and sound cards and everything else in your computer. So if you buy a PPU card for the next big game, play it and love it, and then don't really play much for a few months, you might be thinking "Damn, why'd I drop 200 bucks for that dumb thing, it's not even being used now!"

    Anyone else with this line of thought?
    Reply
  • jrussel316 - Saturday, March 12, 2005 - link

    dang it sorry double post - anyone know how to edit previous posts? Reply
  • jrussel316 - Saturday, March 12, 2005 - link

    coming from the standpoint of someone who has some experience writing physics engines, this is some of the best news ive heard in a while. It would be downright awesome to have a hardware accellerated sdk that would allow me to code the sort of realism iv'e been dreaming about coding for years. Iv'e made several attempts at an accurate physical world, but every time i try the performance of my cpu just can't keep up with the huge number of calculations. I know im excited about this kind of performance - i cant imagine what the physics engine developers over at ubisoft and epic are dreaming up. exciting times are ahead Reply
  • jrussel316 - Saturday, March 12, 2005 - link

    coming from the standpoint of someone who has some experience writing physics engines, this is some of the best news ive heard in a while. It would be downright awesome to have a hardware accellerated sdk that would allow me to code the sort of realism iv'e been dreaming about coding for years. Iv'e made several attempts at an accurate physical world, but every time i try the performance of my cpu just can't keep up with the huge number of calculations. I know im excited about this kind of performance - i cant imagine what the physics engine developers over at ubisoft and epic are dreaming up. exciting times are ahead Reply
  • Regs - Saturday, March 12, 2005 - link

    I think this is a great idea and it will take off. Anand's article mentioned that these cards will scale like video cards. Meaning there will be intro based, main-stream based, and hardcore based cards ranging from price. Hell, even adding a intro based card to your system with the upcoming Unreal Engine will help improve framerates and add more reality to your gameplay. Ubisoft and Epic are two huge producers of next generation software as well. Far Cry 2 and Unreal 3 anyone? I could only imagine! Valve and Carmack are likely craving over this as well. With dual cores and PPU's coming out, this would be exactly the right type of motivation big-time developers such as these to start writing yet even more advanced gaming engines. I wouldn't be surprised if they all ready started programming the next big thing. Even D3 and HL2 were years in development before we even heard about them. Far Cry we didn't even hear about it before just a few months before its release. Exciting times are ahead! Reply
  • Jeff7181 - Saturday, March 12, 2005 - link

    #20... no dual core will NOT make this PPU worthless. You didn't read ANYTHING did you? Current CPU's can work with 30 to 40 solid body objects at one time... this PPU can handle 30 to 40 THOUSAND solid body objects at one time. Double the CPU's capability to 60 to 80 still doesn't compare to the PPU's capabilities. Reply
  • Jeff7181 - Saturday, March 12, 2005 - link

    #34... they don't have to code specifically for this PPU. All they hvae to do is use the NovodeX physics engine like Epic is doing right now with the Unreal 3 engine. Reply

Log in

Don't have an account? Sign up now