Jump to content
Sign in to follow this  
Richey79

PhysX

Recommended Posts

Shrapnel can be very cheaply "simulated" through simple probability calculations, i.e. look at the distance of the explosion to the victim and calculate how many pieces of shrapnel are likely to hit him based on the shrapnel density, the victim's size and an element of randomness.

Tracking hundreds or thousands of individual projectiles per explosion in real time seems like overkill.

If they gave us raycasting intercept functions like they have in VBS2 then we could do that already. :( On another note, check out the implementation of fragmentation I just added to ACE.

Share this post


Link to post
Share on other sites
What about shrapnel? Is it going to be simulated by PhysX?

Share this post


Link to post
Share on other sites
arma sees 8 cores, tells windows to only use 4 cores.

Dunno if physX code benefits from hyperthreading, some things scale very well with it.

Hate to tell you, but PhysX itself doesn't support any multithreading. In fact, PhysX is primarily run on nVidia hardware and if it there isn't any nVidia hardware detected it offloads all calculations to the processor with very inefficient code. It was already shown by one programmer who could improve performance significantly by just updating the code to a new instruction set. See http://techgage.com/news/report_nvidia_throttles_physx_performance_on_the_cpu/ , nVidia has nothing to gain from making PhysX more efficient on processors. In fact we are at SSE 4.1 now, while PhysX on processors has yet to use SSE as it is stuck at X87, developed in 1980. That's prehistoric in the vocubalary of computers.

Share this post


Link to post
Share on other sites
If they gave us raycasting intercept functions like they have in VBS2 then we could do that already. :( On another note, check out the implementation of fragmentation I just added to ACE.

Dude thats badass. Thanks!

Share this post


Link to post
Share on other sites
Hate to tell you, but PhysX itself doesn't support any multithreading. In fact, PhysX is primarily run on nVidia hardware and if it there isn't any nVidia hardware detected it offloads all calculations to the processor with very inefficient code. It was already shown by one programmer who could improve performance significantly by just updating the code to a new instruction set. See http://techgage.com/news/report_nvidia_throttles_physx_performance_on_the_cpu/ , nVidia has nothing to gain from making PhysX more efficient on processors. In fact we are at SSE 4.1 now, while PhysX on processors has yet to use SSE as it is stuck at X87, developed in 1980. That's prehistoric in the vocubalary of computers.

Nvidia appears to dispute these claims: http://www.itproportal.com/2010/07/08/nvidia-were-not-hobbling-cpu-physx/

Share this post


Link to post
Share on other sites

nVidia doesn't dispute them, nVidia says it will update PhysX in the future (happened in 2011) to SSE and multithreading is already enabled and dependent on game developers, while singlethreading is the default option for vague reasons. The original article by David Kanter can be found here as well as the benchmark from techreport here. And for those who really want to read anti-nVidia propaganda there is always Charlie to the rescue.

Any processor with one core which was available in the last 3 years was by default insufficient to run any modern game, let alone a game with PhysX. The SSE instruction set as we known it today was first found in a Pentium III (!!!), you don't even want to know how long ago that was (1999 if you do want to know). Arstechnica is here for some more reliable background information. The short version is there was absolutely no viable reason to not support multiplethreading and SSE.

Okay, so in May 2011 nVidia introduced the PhysX 3.0 SDK with finally multithreading set as default and SSE scalar instructions and in October version 3.1 was published as well. nVidia has always been skeptical towards the performance results and said unlike David that large performance improvement would be unlikely, despite all sources claiming at least to expect performance differences of 200% or more. This gets even worse if you consider that both AMD and Intel have drastically improved the efficiency of their processors and optimized SSE instructions in the last years since the articles about the poor CPU performance of PhysX were published. PhysX has two major parts, first of all there is the normal PhysX library which is always run on the processor, whatever GPU accelerator is behind it. This first part is firstly optimized severly to SSE 4.1 and multithreading of course. The second part, the GPU acceleration of PhysX only runs on nVidia hardware which supports CUDA.

Since the new releases in 2011 there has been a lot of speculation. First of all some claim that despite the improvements the hardware acelerated part of PhysX is still very inefficient on processors and can only be run on suitable nVidia hardware. Others say that the calculations are so extensive that it can only be run on a GPU which has hundreds of parallel computing units. It seems like the same discussion from back in the 90's about graphics card but with one difference: undoubtly the GPU could handle PhysX more efficiently, but in all modern games the performance is mostly limited by the GPU and there is some slack CPU performance available. If the CPU would be fast enough for PhysX -the answer remains unclear if it would with sufficient drivers-, it could offload the GPU and any load-balancing will drastically improve the amount of frames you see on your screen during a game. I have yet to come across a review or article which plunges into the PhysX depths and solves the questions how much PhysX 3.x improved performance, how well it runs on non-nVidia hardware and whether it would be possible to run PhysX on a processor and offload the GPU entirely as this is the bottleneck in most modern games, also considering the trend of increased cores and threads from both Intel and AMD. Making a 12-core or 24-core processor is already possible, there is however no reason yet to develop such processor if most applications scale poorly from going to more than 4 cores.

I see it more this way: nVidia has enough reason to bring PhysX to multiple platforms and for that PhysX needs to run efficient on other hardware as well from ARM processors to Intel and AMD processors. This is what nVidia did with the PhysX 3.0 release, to make the PhysX library available to all platforms and developers. However, the PhysX GPU accelerated part is designed specifically for nVidia hardware and nVidia has no desire of course to cut itself by improving performance of Physx on non-nVidia hardware. It is up to speculation whether how easy it is to implement, but fact remains PhysX is owned and developed by nVidia so unless you have nVidia hardware you get a performance penalty for trying to run PhysX on Intel or AMD graphics.

Share this post


Link to post
Share on other sites

So.... the current situation is that PhysX CAN utilise HT. As we're concerned with what it can do and not what it couldn't, we're good to go :)

First of all some claim that despite the improvements the hardware acelerated part of PhysX is still very inefficient on processors and can only be run on suitable nVidia hardware.

Why would anyone be surprised or even concerned about this?

Others say that the calculations are so extensive that it can only be run on a GPU which has hundreds of parallel computing units. It seems like the same discussion from back in the 90's about graphics card but with one difference: undoubtly the GPU could handle PhysX more efficiently, but in all modern games the performance is mostly limited by the GPU and there is some slack CPU performance available. If the CPU would be fast enough for PhysX -the answer remains unclear if it would with sufficient drivers-, it could offload the GPU and any load-balancing will drastically improve the amount of frames you see on your screen during a game. I have yet to come across a review or article which plunges into the PhysX depths and solves the questions how much PhysX 3.x improved performance, how well it runs on non-nVidia hardware and whether it would be possible to run PhysX on a processor and offload the GPU entirely as this is the bottleneck in most modern games, also considering the trend of increased cores and threads from both Intel and AMD. Making a 12-core or 24-core processor is already possible, there is however no reason yet to develop such processor if most applications scale poorly from going to more than 4 cores.

The way I see it: that sort of intensive PhysX work is concerned (mostly) with incidental eye-candy type effects. Minor rubble, smoke particles, flapping cloth etc. In other words almost entirely client-side and unimportant to the sort of effect we're hoping for in ArmA3. I mean, we'd still like it, but we realise it's eye candy only and therefore should be optional with no real gameplay impact.

The stuff we are interested in is the larger stuff, the vehicle collisions, the falling masonry, the ragdoll, concussion, all those things that do have an ingame and, more importantly, multiplay effect. I don't think we require utra performance to get those things, just a robust system with efficient MP broadcastability.

As we now know that PhysX can utilise HT it seems to be an ideal candidate for offloading.

I see it more this way: nVidia has enough reason to bring PhysX to multiple platforms and for that PhysX needs to run efficient on other hardware as well from ARM processors to Intel and AMD processors. This is what nVidia did with the PhysX 3.0 release, to make the PhysX library available to all platforms and developers. However, the PhysX GPU accelerated part is designed specifically for nVidia hardware and nVidia has no desire of course to cut itself by improving performance of Physx on non-nVidia hardware. It is up to speculation whether how easy it is to implement, but fact remains PhysX is owned and developed by nVidia so unless you have nVidia hardware you get a performance penalty for trying to run PhysX on Intel or AMD graphics.

I see more like a performance boost for nVidia hardware than a performance penalty for not ;) as long as there is no active deliberate nerfing of non-nVidia accelerated PhysX then it really should be viewed as such.

Share this post


Link to post
Share on other sites

I see every reason to put my spare (but extremely capable) GPU to good use... dedicated to physics. Thereby freeing up my CPU -and- primary video card each to do what they do best. Reading the last few posts, sounds like I may have missed something along the way. Can someone point to where BIS actually said there will be no hardware acceleration for Arma 3? And if that's actually true, then for the love of God why not???

Share this post


Link to post
Share on other sites
I see every reason to put my spare (but extremely capable) GPU to good use... dedicated to physics. Thereby freeing up my CPU -and- primary video card each to do what they do best. Reading the last few posts, sounds like I may have missed something along the way. Can someone point to where BIS actually said there will be no hardware acceleration for Arma 3? And if that's actually true, then for the love of God why not???

Unless I've missed something too, I'm pretty sure they haven't actually said "there will be no GPU accelerated PhysX features in Arma3", at least not in so many words.

What they have said is that PhysX performance is just fine on a test/dev computer that's running with an AMD/ATI card. That could still mean that there are optional (read: purely cosmetic) GPU accelerated features that are limited to NVidia cards, for example, but there has been absolutely no indication that such things will be implemented.

In other words, all the evidence so far points toward PhysX being CPU only, but there has been no definitive word yet. (Again, unless I missed something.)

Share this post


Link to post
Share on other sites

MadDogX is right. I was about to point you to this thread, which I remembered as the thread in which Pettka said it's CPU only, but turns out I was wrong. Sorry for misinforming you.

Share this post


Link to post
Share on other sites

OK, thanks for clarifying guys. :)

I don't suppose I'm personally looking forward much to purely cosmetic physics extras (i.e. clicking the "HW accelerated" checkbox) we've seen in other games. Rather, I just want to be able to run all the new regular Arma 3 physics on my 2nd GPU, as an option.

The thing that gets me excited, is to see what modders will do in a few months with a proper physics engine and all this extra physics power. Just how many individual chunks can we blow a single object up into? Then on a bigger scale in SP, how far can we push the envelope in terms of destructibility, while maintaining playability? Same thing goes for MP, obviously with syncing and bandwidth a consideration. Then there is the question of mod support for specific commands in the physics engine itself. Rigid bodies, soft bodies, collision primitives, joints, torque, etc. With proper mod support, the sky is the limit.

One way or the other, I'm sure most of us are going to be amazed by the leap forward in physics we're all about to make (regardless if we individually own an nVidia GPU or not). Those of us that can enable HW accelerated physics (on a dedicated GPU or otherwise), will likely be even more amazed.

Share this post


Link to post
Share on other sites
The thing that gets me excited, is to see what modders will do in a few months with a proper physics engine and all this extra physics power. Just how many individual chunks can we blow a single object up into? Then on a bigger scale in SP, how far can we push the envelope in terms of destructibility, while maintaining playability?

I would like to know what modifications can be made to the physx settings and how much control modders will have with the physx.

Share this post


Link to post
Share on other sites
If your CPU has hyper-threading, then turn it off (you have to do it in BIOS settings). Apparently HT decreases performance for a lot of games, including Arma 2.

Since I realized that there have been a few patches since I last checked, I did another benchmark test, taking 5 samples of each with HT turned off and on. I found no significant difference anymore (48.8 vs 48.2 average framerate).

Share this post


Link to post
Share on other sites

ok

but what's happening with this?

r6F3lT1v79I

Share this post


Link to post
Share on other sites

Euphoria is not in ArmA 3 and it is not part of PhysX. Please keep the conversation relevant. Thanks :)

Share this post


Link to post
Share on other sites

Ooops! sorry, I read about this euphoria in the community wishes front page thinking it was somehow Physx related with A3 confirmed features... my bad!

Share this post


Link to post
Share on other sites

I just seen something really cool on a Max Payne 3 gameplay video and was wondering if the physX simulation in Arma3 will be the same. Notice how the dead body is moved when hit by max's legs at 09:18

uIrF9GuryVM

I think small details like that really enhance immersion.

Share this post


Link to post
Share on other sites

You mean detract from immersion. You think that brushing by the body of a 200 lbs man can cause him to slide around on a floor made of wooden slats? If these two individuals are the same weight, that would require the same disturbance in movement, plus the force of friction, on the part of Max Payne. I dare say that Max Payne could fully trip over that dead body and hardly get it to roll over 45 degrees. People are not light, especially unconcious ones. I have carried my fair share of injured people out of the woods (with the help of fire fighters), and it requires all kinds fancy gear. There is no way this could happen under any circumstances.

I guess that's the thing with game development. You say some behaviour would increase immersion for you, I say it would detract from it for me.

Edited by Max Power

Share this post


Link to post
Share on other sites

Yeah, I don't think we should be able to push dead bodies by just "running" at them. I would think that the guy would trip over too or just step onto the dead body.

Specially if the dead body is a soldier with all the gear on.

Share this post


Link to post
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now
Sign in to follow this  

×