PhysX and its Role In Computer Graphics

Posted: March 18, 2012 in INFR 2350
Tags: ,

Games before PhysX:

Developers back in the day had to precompute how objects would behave in reactions during an event. This meant the same animation would be played during a certain event. PhysX on the other hand can calculate all required physics simulations in real time, giving unique animations and reactions during events in-game.

What is PhysX?

PhysX is a physics engine that is currently owned by Nvidia. Originally PhysX was a part of an expansion card on computer systems similar to a dedicated Graphics card (GPU), but instead this expansion card housed a Physics Processor Unit (PPU). PhysX was a part of a company called Ageia, which was then bought into Nvidia.

The PhysX engine is used widely throughout today’s games and consoles, from Microsoft Windows, Mac OS X, Linux, PS3, Xbox 360, and the Wii.

PhysX is responsible for calculating all physics simulations in games efficiently and quickly. This makes games more realistic in return, giving objects dynamics and realistic reactions to the environment (i.e Fluids).

How does PhysX work?

Before, an expansion card was needed, which was a dedicated PPU. Now with the evolving technology around us, a graphics card with CUDA enabled cores can partake in the physics calculations.

Here is a brief overview on what CUDA is from my previous post:

https://gamedevpanda.wordpress.com/2012/03/11/384/

Because Nvidia acquired Aegia who developed and owned PhysX initially, Nvidia converted over to physics processing directly on the GPU, eliminating the PPU expansion card. GPUs today are very efficient at churning out calculations in a parallel architecture, therefore crunching down numbers quickly.

If you GPU has at least 32 CUDA cores on it (from Nvidia) and 256MB of VRAM on the GPU, then it will be able to handle the PhysX calculations without an extra card. The advantages of this are having 2 or more GPUs in a system, in SLI configuration, allowing an entire GPU dedicated to PhysX calculations, and the other responsible for rendering out the images. These combo is a very efficient and fast way to chew down processing times.

Here is a brief overview of what SLI is if you do not know from a previous post:

https://gamedevpanda.wordpress.com/2012/01/15/what-is-sli-and-how-does-it-make-things-better/

According to Nvidia, “PhysX is designed specifically for hardware acceleration by powerful processors with hundreds of processing cores.” Which means better looking graphics and simulations faster.

Some examples of what PhysX is responsible for in games are the following:

  • Explosions that create dust and collateral debris
  • Characters with complex, jointed geometries, for more life-like motion and interaction
  • Spectacular new weapons with incredible effects
  • Cloth that drapes and tears naturally
  • Dense smoke & fog that billow around objects in motion

Often games will have PhysX options to be enabled or disabled.

Well things don’t have to have PhysX right?

It is true games can run without PhysX, but without it, games can look very lifeless, still, and no very convincing at all. Here are a few comparison videos:

Mirror’s Edge:

[youtube http://www.youtube.com/watch?v=w0xRJt8rcmY&w=560&h=315]

Overview of several games: PhysX on and off:

[youtube http://www.youtube.com/watch?v=-x9B_4qBAkk&w=560&h=315]

Also here are some several videos of more comparisons on Nvidia’s website:

http://www.geforce.com/Hardware/Technologies/physx/videos

Overall, PhysX in games is a very important role in making games look realistic and giving computer graphics the extra boost of reality as well.

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s