Forgot your password?
typodupeerror
Graphics Software Hardware

Nvidia Physics Engine Almost Complete 179

Posted by ScuttleMonkey
from the close-only-counts-in-horseshoes-and-hand-grenades dept.
Nvidia has stated that their translation of Ageia's physics engine to CUDA is almost complete. To showcase the capabilities of the new tech Nvidia ran a particle demonstration similar to Intel's Nehalem demo, at ten times the speed. "While Intel's Nehalem demo had 50,000-60,000 particles and ran at 15-20 fps (without a GPU), the particle demo on a GeForce 9800 card resulted in 300 fps. In the very likely event that Nvidia's next-gen parts (G100: GT100/200) will double their shader units, this number could top 600 fps, meaning that Nehalem at 2.53 GHz is lagging 20-40x behind 2006/2007/2008 high-end GPU hardware. However, you can't ignore the fact that Nehalem in fact can run physics."
This discussion has been archived. No new comments can be posted.

Nvidia Physics Engine Almost Complete

Comments Filter:
  • It's just particles (Score:3, Interesting)

    by Animats (122034) on Monday April 14, 2008 @12:14PM (#23064958) Homepage

    This is just a particle system. Smoke, snow, rain, and maybe water look better, but it apparently has no influence on gameplay.

    • by Dr. Eggman (932300) on Monday April 14, 2008 @12:16PM (#23065010)
      Super-soakers Online! Cloth and liquid simulations determine who got wet, how wet, and whether or not that means they're out!
      • by grahamd0 (1129971) on Monday April 14, 2008 @12:22PM (#23065132)
        EA Presents: Cancun Wet T-Shirt Contest 2K9!
      • Super-soakers Online! Cloth and liquid simulations determine who got wet, how wet, and whether or not that means they're out!
        Only if everybody else is using the same brand of physics accelerator, or if some physics API specification makes some guarantees about the output given the inputs. Otherwise, simulations run on multiple machines fall out of sync. A compromise solution is to use coarse particles for game logic and finer particles for iCandy.
        • by Mr Z (6791) on Monday April 14, 2008 @01:30PM (#23066348) Homepage Journal

          Huh? The local physics computations are only being used for presentation and local extrapolation. The server recomputes the relevant physics anyway, and can re-sync everyone periodically. That's how FPSes work to reduce lag--they do local extrapolation, and the server periodically snaps everyone back in line. It sometimes leads to what John Carmack calls "paradoxes" where locally displayed events get undone, but it works.

          So, if some portion of your local physics calculation is purely for local presentation (e.g. game outcome doesn't depend on exactly how dirt particles fly around or boobs bounce, but you want it to look realistic), the server doesn't need to reproduce any of that to model the game correctly. Your screen might look different than someone else's, but in an immaterial way. For the super-soaker example, the server will still compute actual "wetness," possibly with a simplified model that skips computing the goosebumps and most of the dripping water.

          --Joe
          • The local physics computations are only being used for presentation and local extrapolation. The server recomputes the relevant physics anyway, and can re-sync everyone periodically.

            Using how much bandwidth per particle?

            For the super-soaker example, the server will still compute actual "wetness," possibly with a simplified model that skips computing the goosebumps and most of the dripping water.

            That's kind of what I meant by "use coarse particles for game logic and finer particles for iCandy."

          • by nschubach (922175)
            What about larger object... like cars, crates, and large chunks of building? If you are in a multiplayer world and one of the members jumps up on a wall section and your wall didn't land in the same spot, someone will cry foul.
    • Re: (Score:2, Funny)

      by Anonymous Coward
      because if Portal taught us anything, its that modern games have no need for physics!
    • real physics? (Score:3, Interesting)

      by goombah99 (560566)
      To what extend does this contain real physics as opposed to "game" physics. Cuda maps to linear algebra fairly well but most phyics is second order (either algebraically or as differential equations). Are they actually trying to implement those or are they just making things that "look right" but really don't obey physics.

      I recall that in the original Toy Story there is only one place they used "real physics". When the jump rope is thrown off the balcony (for the army men to descend), they used real phys
      • Re: (Score:3, Interesting)

        by king-manic (409855)

        I recall that in the original Toy Story there is only one place they used "real physics". When the jump rope is thrown off the balcony (for the army men to descend), they used real physics to model it's tangled fall. But thye later sent it was not a good idea to use the real physics. Not only was it harder but it didn't really look right and could not be easily tweaked. So all the rest is pretend physics.

        What people perceive a situation to look like and how it would realistically look have drifted a lot. Due partially to the real life rarity of those situations and Hollywood/Video games distortion of it. We all expect shot guns to be massive overkill at medium to short ranges when in reality they don't hit that hard. We expect all explosions to involve flames. We expect bullets to hit with far more kinetic force then they do. We expect a whole lot of things that just don't happen in real life. It doesn't h

    • by s_p_oneil (795792)
      Of course not. It was the same with PhysX. No game developer could release a game that required a PhysX card to play because so few people had one. I wouldn't expect to see games where gameplay has been improved by this until 1-2 years after it is available to everyone. Although if it only works on nVidia cards, we still may not see much until ATI has a similar offering. Game developers always have to account for the lowest common denominator, and that's usually ATI (unless you count embedded chipsets like
      • Re: (Score:3, Informative)

        by CastrTroy (595695)
        You obviously don't remember what it was like when 3D cards first came out. There were many games that were Glide only. Meaning that you had to have a 3DFX graphics card to run them. Back when sound cards first came out, this also happened. You had to have a sound blaster, or Adlib, or Gravis ultrasound, and again only certain cards would work with certain games, I imagine that physics cards could probably work in the same way. Require that you use a certain physics card, or you don't get to play the g
        • by bckrispi (725257)
          More than likely, the physics will be offloaded to the CPU for users w/out a physics card. Most of the 1st gen 3D games would have an option where you could run the game with software rendering.
        • by s_p_oneil (795792)
          There are two things wrong with your argument. The first is that you're wrong, and the second is that your argument is moot because you're not even arguing about the same thing. The argument was about whether it was allowed to affect gameplay. Glide did not affect gameplay, it just made games look nicer and run smoother.

          I started working on my planet rendering engine (http://sponeil.net/) in OpenGL back when I had a Riva 128, and I wrote my first ray tracer a few years before 3DFX cards were even available.
        • by hedwards (940851)
          This was largely my thought. They're probably going to be focusing on things like water, smoke and shards of glass first. As the technology has become more common the programs will likely start to make use of it in areas which are increasingly complex to start. The reason being that those are things which can be done simplistically on present technology, but can be greatly scaled without much additional work. They're also things which can add significantly to the mood and the immersion quality of the gaming
        • OpenPL anyone?
  • Duke! (Score:5, Funny)

    by wild_quinine (998562) on Monday April 14, 2008 @12:15PM (#23064992) Homepage
    The best news about this is that it implies that if hardcore kit kills with it, then at least budget hardware (that many people have already!) can do it acceptably. That means finally seeing games that REQUIRE physics acceleration.

    It'll be like 1996 all over again, only from a physics not graphics perspective. That, and there might be a new Duke Nukem game due out within the next 12 years.

    • Brian Hook is currently working on Duke Nukem Forever. I don't say that this guarantees it will ship, but at least Hook has a record of being able to ship projects.
  • by mmell (832646) <mmell@hotmail.com> on Monday April 14, 2008 @12:19PM (#23065072)
    ...provide Linux drivers, or will the F/OSS community have to reverse-engineer this one?
  • by DoofusOfDeath (636671) on Monday April 14, 2008 @12:24PM (#23065158)
    Is a particle motion simulator a abnormally easy test case?

    When I was getting up to speed on IBM Cell programming, IBM had a programmer's tutorial (excellently written, btw). The example problem they used for their chapter(s?) on code tuning were a particle simulator. It was a wonderful example problem, because it showed how to vectorize a program. But then when we went to vectorize our own algorithm, it didn't fit the Cell's vector programming instructions nearly as cleanly, so in the end we didn't get nearly the performance increase due to vector instructions as did the particle simulator.

    So I'm thinking that just even though CUDA can do a good job with particle motion simulations, we shouldn't remotely assume that it's good for particular algorithms for which each of us is responsible.
    • Re: (Score:2, Interesting)

      by Anonymous Coward
      Yes, particle systems are easy (in terms of physics), because they are essentially just moving points with varying velocities and accelerations... Such a simulation is easy to vectorize (eg: update the position of all points in parallel by performing lots of additions at the same time).

      Actually useful collision detection of say, convex volumes with rotational velocities, with the volumes being stored in a 3D space partition (eg: kd-tree or BSP tree) will likely prove significantly more difficult to parallel
    • by AcidPenguin9873 (911493) on Monday April 14, 2008 @12:46PM (#23065594)

      That's exactly why I'm skeptical of CUDA in general. Rendering graphics is one of those "embarrassingly parallel" operations, where for every frame rendered, each triangle, vertex, and pixel is independent of the others. I don't know much about physics processing, but I'm guessing it's the same. Simply throwing say, 4x more hardware at the problem gives you pretty much the ideal 4x speedup. Once you introduce random data dependencies into the problem, though, parallelization is much harder and you don't get the same speedups.

      There are a lot of easily-parallelizable problems out there, which is great...but then again, there are a lot of not-so-easily-parallelizable problems out there too. I don't think CUDA would do any better than a general-purpose CPU on the latter class of problems.

      • by ardor (673957)

        There are a lot of easily-parallelizable problems out there, which is great...but then again, there are a lot of not-so-easily-parallelizable problems out there too. I don't think CUDA would do any better than a general-purpose CPU on the latter class of problems

        Then .... use CUDA for the former and the CPU for the latter? What was your point again? :)

        • I think I was too generous when I said "a lot of easily-parellelizable problems out there". The rest of them (besides graphics and physics) are in the HPC community - protein folding, SETI, that sort of thing - the stuff people run on BlueGene. Not something your average, everyday user is going to experience, at least not in the near future.

          So then, what's the real benefit of CUDA == GPGPU == general purpose processing on a GPU, if it only speeds up a certain class of general-purpose problems? It starts

      • Physics processing in a particle system is one of those embarrassingly parallel problems. Generally you are throwing large numbers of points into a system with a set number of influences (gravity, wind, attraction to a point) and simulating where they should be without considering collision detection or how they influence each other.

        The moment you have to do collision detection or more detailed constraints, you have a lot more dependencies to work with. Although you can still massage the data into more para
      • Couldn't agree more (Score:2, Informative)

        by Redbaran (918344)
        I'm using CUDA for my masters project, and I've had the same problem that you describe. The way CUDA works, having a conditional statement that evaluates differently in each thread will kill your performance. It makes sense as to why:
        A GeForce 8800GTX has 16 multiprocessors, which each have 8 processors, so a total of 128 processors. It's your basic SIMD (single instruction, multiple data) architecture. So if you have lots of conditions, you go from having 128 processors, to having 16 as your code serialize
    • Is a particle motion simulator a abnormally easy test case?

      Particle motions is an abnormally parellelizable case, the only better example is graphics. So the many core solution runs a lot better than the quad-core one, given simple calculations. That doesn't scale to more inolved calculations on fewer (or more interdependent) bodies.

  • So (Score:3, Funny)

    by Snuz (1271620) on Monday April 14, 2008 @12:29PM (#23065268)
    PC Gaming is dead . . . right?
  • by Handlarn (911194) on Monday April 14, 2008 @12:30PM (#23065274)
    Anyone care to explain why there's such a big difference between a GPU and a CPU? I keep hearing how GPU's are this and that much faster than a CPU at calculations like graphics, physics and such, so naturally I assume there's a big difference that makes us still chose the x86 and x64 CPUs as the main processors of a PC. What are the limitations; why can't just the libraries be ported for GPUs instead of CPUs and why don't we then just run all calculations on a GPU, if they are anything from 2 to 50 times faster?

    It just seems to me that if a graphics card can calculate physics then it would also be able to do pretty much all the same types of calculations that a regular CPU can do, but I am obviously missing a big part of it.

    Experts, continue! :)
    • CPU's are general purpose processors that perform a lot of different functions. GPU's are highly specialized ASICs [wikipedia.org] designed to do one or two things very, very quickly.

      CPU = Jack of all trades, master of none; GPU = the highly trained specialist.
      • by makomk (752139)
        Except that GPUs aren't highly specialised anymore; the latest generation of Nvidia cards are basically just a large number of general-purpose CPU cores.
    • by caerwyn (38056) on Monday April 14, 2008 @12:46PM (#23065592)
      Particle systems are about as perfectly a parallel problem as it's possible to get- and not only that, the calculations are generally very straightforward with few (if any) general CPU control structures (branches, loops, etc).

      As a result, the massively parallel hardware on a GPU that exists to render many triangles/pixels/shader programs/etc at once can be exploited to calculate updates for many particles at once. The CPU is at an inherent disadvantage because it is only leveraging a small subset of it's full capabilities.

      The CPU is very good at *lots* of different tasks. The GPU is phenomenally good at a very specific set of tasks. Physics just happens to fit within that set.
    • by cowscows (103644) on Monday April 14, 2008 @12:54PM (#23065716) Journal
      In its most basic definition, a GPU is just a CPU that's been highly specialized towards graphics. It can't do anything that a CPU can't also do, it just is able to do particular things much faster. Basically, they take a lot of the common tasks that graphics require of a processor, and they put really efficient ways to do it directly into the hardware, and they put a whole lot of them.

      Think of a CPU as a big tool box. There's something in there for every task, including a screwdriver that can be used to put screws into things. Then next to it, you have a big cordless 18 volt drill (The GPU). Way easier to drive screws with that than the manual screwdriver in your toolbox. But when you need to drive a nail instead, yeah you could bash it in with your screw gun, but it's easier to go back to your toolbox and find a hammer.

      I guess that would make a physics processor the nail gun. Or something...
      • Interesting analogy, but you have not characterized the performance differences.

        GPUs have totally pipelined and highly parallel ALU units available to it. Like 64 and 128-way parallelism on 4 channels at once. Compare this to an 8-way CPU system on 2-SIMD operands at once, at between 2 and 4 times the clock rate.

        The other thing is that GPUs have special calculation ALUs that for doing multiple ops at once that are better designed than SSE-2 which is too primitive.

        GPUs just win because they don't need to m
    • Re: (Score:3, Informative)

      by ardor (673957)
      A GPU excels at massively parallel tasks. Stuff like rendering, raytracing (yes! a GPU can raytrace!), DCTs, ... essentially, a GPU is a stream processor that maps a function (a shader) on independent entities (pixels, or vertices).
      Applying a complex formula millions of times, each time with a different set of coefficients? -> GPU.
      GPUs fail at tasks where lots of synchronization or frequent branching is necessary. Stuff like game logic, for instance, or state machines. Your typical office application is
    • Re: (Score:3, Informative)

      by Space cowboy (13680) *
      Simple reason:

      On my Mac Pro, I have 8 3GHz CPU's. Consider that the baseline.

      I have 2 8800GT cards to drive the 30" and 2x23" (rotated, one each side of the 30" :-) monitors. That gives me 224 1.5GHz stream processors in the GPU. Even harmonising GHz, thats 8 compared to 112, and its a lot easier to get a parallel algorithm running efficiently on a GPU than on multiple CPU's due to differing hardware designs...

      Now stream processors aren't quite the same as general purpose processors, but the way they're imp
    • Put simply, CPUs are optimized for things like boolean operations, and GPUs are optimized for things like matrix operations.
    • by ceoyoyo (59147)
      The GPU is very specialized. It can only do certain things.

      If you've got an algorithm where all the pixels/particles/whatever act independently, then the massively parallel architecture of the GPU is for you. If you don't, then you've got to have a CPU.

      If those particles are all moving independently then the GPU gives you a tremendous speed boost. If the particles depend on each other, say, they're charged, then your GPU isn't going to help you out much, but your CPU can do the calculation just fine.

      The
  • by Thanshin (1188877) on Monday April 14, 2008 @12:30PM (#23065290)
    They should test physics systems with spheres on irregular ground, with uneven μ (coefficient of kinetic friction), and changing wind.

    Those are the kind of problems that force programmers to use approximations when using a physics engine.

    The next step is really abstracting the physics from the development, not having pretty water.
    • by Animats (122034) on Monday April 14, 2008 @12:57PM (#23065760) Homepage

      They should test physics systems with spheres on irregular ground, with uneven (coefficient of kinetic friction), and changing wind.

      I always liked to test on the hard cases (see my web site) but, in fact, what game developers and animators want is not realistic physics. The game people want "infinitely destructible environments", where you can blow up anything. And, of course, eye candy. The animation people want physics they can direct, where the starting and ending positions are specified but what happens in the middle might be automated. So most character motion in video games is spliced-together motion capture bits, hand animation, and a bit of physics now and then.

      Most game physics engines today cheat on the hard cases, but by now, they usually cheat in ways that don't do something blatantly nonphysical.

      My original goal, back in 1996 when I was working on this, was to get to a two-person fighting game with real martial arts. The physics engine we had was good enough, although in the era of 200MHz CPUs, a bit slow. But a control system that can do a judo throw against an uncooperative opponent is still out of reach. Worse, controlling a physically realistic martial arts character through a game pad is just hopeless. Play would be like a typical day at the dojo: "You lost your center. Your left foot should have been further forward when you tried that throw." "Yes, sensi". Work out three times a week for a year, and you get to be halfway decent. As a game, that sucks.

      So I created the "ragdoll falling downstairs" cliche as a demo, licensed the technology to a middleware provider, and went on to other things.

      • by PitaBred (632671)
        Even if it's not "realistic", you still need the same rules. The only thing that makes something not realistic are the sizes of the coefficients. Plus a little bit of magic impulse ;)

        I think his test would be a great test... the infinitely destructible environments? Each piece of the destructing thing needs to interact with each other piece in a logical, rules-based fashion, even if it's at 1/5th the gravity of "reality", or no friction, whatever.
  • Oh really? (Score:5, Funny)

    by bconway (63464) on Monday April 14, 2008 @12:41PM (#23065474) Homepage
    However, you can't ignore the fact that Nehalem in fact can run physics.

    In fact, I can.
  • Forgive my naivety,

    but is there such thing as netsted particles?

    Full objects, made of "bound particles" (polygons that when constrained to eachother act as an object) but that whole object can be a particle?

    Then if destroyed the resultant triagles themselves become particles?

    I ask in that I would like to know if a whole seemingly static scene can really be generated/destroyed/interacted with as if everything were particles...

    Or is this how things are already done??

    It just seems to me that super-particles is
    • by Shados (741919)
      I dont know much more than you about the current situation, but in the interviews of The Force Unleashed (360/PS3 versions), thats pretty much how they described their physics engine... so I'm guessing its not a new idea. Something about all of the objects being made of "molecules", and the physics engine had information about these "molecules" and how to break/bend/move them.
      • by _ph1ux_ (216706)
        Awesome!

        They had the first (second) Star Wars Trilogy on TV last night and I got all in the Jedi mood - so its great to hear about this now.

        • by Shados (741919)
          I hate Flash sites, but:

          http://www.lucasarts.com/games/theforceunleashed/ [lucasarts.com]

          Go in the Media gallery, pick the category Web Docs/Videos, and watch "Unleashing the force".

          A little after 1/3rd of the way through, they talk about DMM (Digital Molecular Matter, or something like that), and thats what im refering to. I'm sure its nowhere as sophisticated as they make it sound, but still, it looks cool :)
    • by PitaBred (632671)
      Not really, no. A particle as I understand it is simply a discrete point in space. It has no mass itself. You just render it as if it does. For example, a rain drop has essentially no mass to contribute to physics when you collide with it, but it's rendered to show it as an object, and the physics of it allow it to be directed by wind, etc. Particles just aren't big enough to really worry about collisions, which is what I believe the big difference between particles and "other things" are.

      But I've only
  • by Anonymous Coward on Monday April 14, 2008 @12:53PM (#23065696)
    I want to see 10^88 particles simulated at 10^33 frames / second.
    • Re: (Score:3, Funny)

      by Anonymous Coward
      How do you know you're not?
  • Ok guys, how about we use that embedded anemic GPU for these functions? It would off-load work from the CPU, improving whole-game performance dramatically I would imagine.
    • Using Intel integrated graphics instead of running physics simultaneously with graphics on an nVidia part would free up something like 1-3% of the nVidia's time. I don't think it would be worth it. That little chip is great for simple 2-d graphics, but not much else.
  • I play oblivion and when I kick objects or hit them with an arrow or spell or warhammer, they go flying accurately. They drop accurately, roll accurately, and bounce accurately. And I don't have a physics processor. So how did they do it? How is this some big innovation if they can already put extremely realistic physics into a game with existing technology? And not even existing, OLD! I used to run it on a 6600GT OC and recently got an 8600GTS OC and have an AMD 4400+ X2 and it still did nearly perfe
    • by jjohnson (62583)
      Physics with a few particles is easy, but it scales poorly. It's not hard to calculate a trajectory for a single object that gets hit, but truly destructible environments (the holy grail of games, for now) will require thousands of objects at least.
    • I play oblivion and when I kick objects or hit them with an arrow or spell or warhammer, they go flying accurately.

      Oblivion's physics aren't as complex as they appear. They're just rigid body collisions. That lets you set up Rube Goldberg contraptions and domino stunts in the construction set (complete with comical Altmer abuse in some of the videos I've seen), but it's pretty shallow as far as simulations are concerned. If Bethesda had gone for dynamic destructible environments, then maybe, maybe, grass

    • Physics is over-rated, the big deal with physics when it was 'first' talked about really was for rag-doll physics in FPS games and things like Unreal, where you shoot someone and the body animates from an impact not in a pre-scripted manner but according to impact. Most games pre 2000 had fixed / scripted animations that occored when someone died, also you'd see weird things like when someone dies their body would be hanging off a ledge vertically, with physics these things don't (uaually) happen, the body
  • What about graphics? (Score:3, Interesting)

    by Guspaz (556486) on Monday April 14, 2008 @01:22PM (#23066166)
    It's great that they can do all this physics stuff on the GPU, but they seem to be forgetting the other thing you need that for; graphics. Games like Crysis don't exactly leave room on the GPU to do anything but graphics, and throwing physics into the mix will only make things worse.
    • by 77Punker (673758)
      CUDA isn't yet suited to running on a device that's already running a display. After about 5 seconds of executing code, the program will crash.

      Instead, you need to have either another CUDA capable graphics card on your system or a Tesla. Another option is to run your program on Linux without an X server.

      I'm currently finishing up my senior seminar on CUDA. It's some neat stuff, and I can't wait to see it have everyday uses. In general, data parallel algorithms are easier to implement with CUDA than somethin
      • by am 2k (217885)

        I'm also using CUDA for my master's thesis right now. It's no problem mixing CUDA with OpenGL or Direct3D, in fact, there's even an API for connecting them. If you have some calculation that takes more than 5 seconds to calculate, your code isn't suited for real-time computer graphics anyways (your kernel should only take <20ms to execute, otherwise your frame rate is too low for real-world usage).

        In this way, I've let my program run for an hour without any issues.

        The only issue with CUDA for games is

  • Let's see how well a cluster of these does on nuclear weapon or reactor design.
    • Bad news:

      'Hegde stressed that the PhysX engine does not include quantum mechanics because the company "focuses on physics for fun and entertainment".'

Aren't you glad you're not getting all the government you pay for now?

Working...