Havok Q&A @ GameSpot: GPUs for physics

Discussion in 'GPGPU Technology & Programming' started by SlmDnk, Oct 27, 2005.

  1. Fred

    Newcomer

    Joined:
    Feb 18, 2002
    Messages:
    210
    Likes Received:
    15
    "Sure it is. You just break up the simulated area into multiple separate areas that are non-interacting (an easy way to do this is, for example, to use existing portal-based systems for the separation). Add in some conditions for overlapping regions, and you're set."

    First off all thats not guarenteed to exist, second of all it misses the point.

    You want the same physics processors operating in each noninteracting segment (the definition of parrelization). Which of course is the problem. What happens if you have a really singular event in one area, and nothing much going on in the others. Your whole engine stalls waiting for the complicated physics going on in one patch to process. This dare I say it, is the norm in physics, not the exception. A slightly more informed way would be to subdivide that section over and over again somehow (intelligently), but there again its entirely possible to have numerical mismatches across subdivision intersection intervals and you are back to fallbacks where the dev has to be smart.

    Again the same point over and over again, physics in complicated situations like a real world simulation is NOT a set of linear maps, and you cant make a crude approximation of this either and still have it be believable to a viewer. It will resist any effort to make it so.
     
    #121 Fred, Nov 10, 2005
    Last edited by a moderator: Nov 10, 2005
  2. KimB

    Legend

    Joined:
    May 28, 2002
    Messages:
    12,921
    Likes Received:
    221
    Location:
    Seattle, WA
    Yeah, that's one aspect of improved detail, but it is a nontrivial task from a content creation standpoint. You don't need to just implement a global physics algorithm: you need to supply physics information for each item.

    It looks like physics engines today don't calculate physics from the geometry: you have to supply the geometry in a completely different format (a combination of spheres, cylinders, planes, and other simple objects). You also need to supply a mass (sure, it's just one number, but it may take some thought and tweaking to get it correct...with many objects this may be an issue), and a moment of inertia (in principle this can be calculated from the mass and the shape, assuming uniform density, according to the Novodex manual it doesn't look like it's done this way, because "real" moment of inertia matrices lead to numerical instabilities).

    Then, what about breakable objects? Here you need to supply breaking strengths, the subcomponents that the object breaks into, and so on.

    It's a pretty serious task to get into. Granted, far, far into the future we may have the luxury of just supplying a few materials, and have the game engine generate proper physics properties for you, but that's a long ways off, and will take tons of processing power.

    Personally, I think the primary work right now should go towards shoring up the shortcomings of today's physics engines, specifically numerical instabilities (imagine something similar to dithering to reduce error accumulation) and simulation of multiple objects in contact. More processing will come automatically.
     
  3. KimB

    Legend

    Joined:
    May 28, 2002
    Messages:
    12,921
    Likes Received:
    221
    Location:
    Seattle, WA
    Sure, in some very specific types of games. And even then, you could run the physics processing in parallel with other processing, so you still gain some benefit from parallelism.

    But there are other types of games where you're more interested in calcualting physics interactions in different locations simultaneously. One excellent example would be multiplayer gaming: you want to be calculating the physics interactions for everything that's happening in the level, and many of these interactions are going to be completely independent. The same goes for AI.

    Even in a singular interaction, though, you can still have very isolated interactions. In an explosion, for instance, it should be relatively easy to slice the explosion straight down the center, separating it into two (or more) threads. Objects near the boundary would be calculated by each on the boundary, and you'd give precedence to one or the other processor's result (errors on the scale of a couple of bits should not be visible to the user if we're talking about a complex interaction, which is the only type where you'd be concerned about lack of performance).
     
Loading...

Share This Page

  • About Us

    Beyond3D has been around for over a decade and prides itself on being the best place on the web for in-depth, technically-driven discussion and analysis of 3D graphics hardware. If you love pixels and transistors, you've come to the right place!

    Beyond3D is proudly published by GPU Tools Ltd.
Loading...