Archive for the ‘Articles, Reviews’ Category
And yet another PhysX article has arrived today – this particular one from PClab.pl is mostly focused on GPU PhysX effects analysis and comparison.
Almost every single modern title with hardware accelerated PhysX content (except for Sacred 2 and Darkest of Days) was reviewed, and detailed description of extra PhysX content both in form of text and comparison videos were included. For example:
Batman: Arkham Asylum
Interesting technical article, called “PhysX: Lust, Last oder Frust?” has emerged on Tom’sHardware.de today. It’s purpose is to revisit recent events in GPU PhysX (and CPU execution of PhysX effects) area – thus, basic knowledge of this topic is required.
Update: english version available
x87 vs SSE question gets updated with new CPU instructions tests of Mafia II:
(note: graph is called "vtune_metro2033", so some mistakes may take place)
As new PhysX SDK 2.8.4 with SSE2 compliler option is yet in beta, and Mafia II is based on SDK 2.8.3 – it is still relying on x87 instruction set.
Author correctly remarks, that moving from X87 to SSE usage won’t magically boost performance by 2x times, like several websites are promising, more likely 10-20 % or even less in real applications.
In Mafia II, as you may notice from our comparison video, clothing simulation on main character (Vito Scaletta) is present regardless to APEX PhysX settings, main difference is in Cloth detalization and used technologies – standart PhysX Cloth (APEX PhysX Off) and more advanced APEX Clothing module (APEX PhysX Medium/High).
Clothing detalization is mostly determined by number of vertices, forming a physical cloth mesh.
So, just for curiosity, we decided to count them in Mafia II (with help of AgPerfMon profiler), using different APEX PhysX settings and various Vito’s suits.
Everyone who played Mafia II will eventually notice, that enabling special APEX PhysX content will not only bring you flowing clothing and particle debris, but also significantly reduce framerate – even if you have a proper NVIDIA GPU and latest PhysX System Software.
Update: APEX Clothing in numbers
Update #2: Tests with dedicated PhysX GPU added – PART III.
While preparing our PhysX tweaking guide we have discovered that physically simulated clothing on characters is affecting performance the most. Why that ? Cloth is one of the basic effects, used intensively in many GPU PhysX games – just remember Mirror’s Edge and it’s countless tearable banners and flags. Two answers come to mind:
- Clothing simulation in Mafia II is so detailed and so high-resolution, that only top dedicated GPUs can run it at proper fps.
Unlikely. Even in most intensive scenes total cloth vertices count is not exceeding 8000, while framerate is crawling around 20 fps – on GTX 470.
- Clothing simulation is running on CPU, while it is supposed to be hardware accelerated on GPU.
Plausible. But, as our further tests have revealed, proved to be true for single GPU systems only.
Combine it with facts that a) Cloth in PhysX SDK is not using all available CPU resources by default b) Clothing is heavy computational task in any case – and you’ll see the probable reason of poor performance. Let’s check this theory.
PART I – MAFIA II BENCHMARK.
For the first part of tests we’ll use benchmark, built into Mafia II, running with two sets of APEX effects – Clothing only (Particles are disabled using methods from tweaking guide) and Particles only (Clothing is omitted) – and PhysX acceleration enabled/disabled from NVIDIA Control Panel.
Settings: 1680x1024, AO/AA On, AFx16, APEX High. System: C2Q 9400, GTX 470, 4GB RAM, Win 7 x64, 198.32 GPU drivers, PSS 9.10.0513
Interesting results. While Particles are benefiting from GPU acceleration without doubt, PhysX switch is not affecting Clothing simulation at all.
It seems our assumption was correct – APEX Clothing is calculated on CPU in any case – but let’s confirm it with some deeper research.
Mafia II is about to hit the shelves in US, and since it is, probably, most heavyweight title in 2010 GPU PhysX games line, we can expect a lot of detailed reviews about APEX PhysX special effects, added to the game.
We’ve already posted an benchmarks overview for Mafia II Demo, so let’s focus on final version now:
[23.08.10] Mafia II: Perfection for NVIDIA’s Graphics Plus Technologies ? by HardwareCanucks
APEX effects decription and comparison are pretty basic, and only two GPUs [GTX460/GT240 dedicated] were used for testing, but enough attention was paid to CPU scailing [i5/i7] and CPU usage graphs.
According to benchmarks results, Mafia II is pretty playble on CPU even with APEX set to High.
In the past NVIDIA and their developers took an incredible amount of flak over the use of GPU-processed physics due to the utter lack of optimizations the PhysX API had for the CPU. With Mafia II’s use of the open-minded APEX routines, a corner seems to have been turned because we finally see that it is possible to run these calculations quite smoothly with only a few hiccups on a multi core CPU.
The GPU is still more efficient at physics processing but in some cases you will likely want all of the rendering horsepower it brings to the table. This feature is still nothing more than eye candy but if you can run it, we suggest you do so because it does increase the overall believability of certain scenes.
Mafia II demo version was released only few days ago, but several websites have already prepared some benchmarking and testing articles, focused on APEX PhysX part of the game.
Update: Mafia II Final version – PhysX Reviews roundup.
[11.08.2010] Mafia II – Public Demo GPU test by gamegpu.ru
Russian article. Includes game overview and detailed testing part, with various settings and used ATI/NV GPUs.
[11.08.2010] Mafia II Performance Benchmarks: PhysX and 3D Vision Tested by HiTechLegion
Decent review, with some PhysX benchmarks. Author’s conclusion – “I would rather trade graphical quality than play the game in its highest settings with PhysX disabled.”
With Mafia 2 coming closer to it’s release, hype atmosphere is getting hotter, and apart from other materials you can find on the web, PC Games Hardware has published decent interview with Denby Grace from 2K Czech on several Mafia’s engine features, and PhysX part specifically:
PC Games Hardware: Are there any differences between the Console and the PC Version of Mafia 2 as far as technical as well as visual aspects are concerned, for example GPU accelerated PhysX effects?
Denby Grace: You hit the nail on the head. The biggest difference is the GPU enabled physics effects. While on a system without GPU (consoles and ATI cards), the game will have a great PhysX simulation with particles and cloth, however, if you have the extra hardware we are able to push things to a whole new level which has not yet been seen in open world game before.
Our destructible environments feature thousands of physical particles which in turn can be affected by individual explosion force fields to make them move. It’s all very impressive and it’s these kinds of improvements that high end PC gamers can expect.
Another paper called “Real-Time Simulation of Large Bodies of Water with Small Scale Details” (you can find previous one, Wrinkle Meshes, here) has arrived from Dr. Matthias Müller-Fischer, PhysX SDK research lead at Nvidia Switzerland.
Paper is decribing hybrid grid- and – particle based fluid solver used in latest, and technically most impressive, demo from Nvidia – Raging Rapids Ride.
We present a hybrid water simulation method that combines grid based and particles based approaches. Our specialized shallow water solver can handle arbitrary underlying terrain slopes, arbitrary water depth and supports wet-dry regions tracking. To treat open water scenes we introduce a method for handling non-reflecting boundary conditions. Regions of liquid that cannot be represented by the height field including breaking waves, water falls and splashing due to rigid and soft bodies interaction are automatically turned into spray, splash and foam particles.
The particles are treated as simple non-interacting point masses and they exchange mass and momentum with the height field fluid. We also present a method for procedurally adding small scale waves that are advected with the water flow. We demonstrate the effectiveness of our method in various test scene including a large flowing river along a valley with beaches, big rocks, steep cliffs and waterfalls.
We still hope that this solver will make it into next, 3.x release of PhysX SDK.
In addition, demonstrational video is available (61 mb)
David Kanter from RealWorldTech.com in his “PhysX87: Software Deficiency” article has hypothesized that origin of slow execution of PhysX content on CPU is fact that PhysX SDK is mostly based on x87 rather than faster SSE instruction set.
“On modern CPUs, SSE can easily run 1.3-2X faster than similar x87 code” – stated Kanter.
However, TGDaily has managed to recieve commentaries from Bryan Del Rizzo, Nvidia spokesperson
[And although] our SDK does [include] some SSE code, we found [that] non-SSE code can result in higher performance than SSE in many situations. [Nevertheless], we will continue to use SSE and plan to enable it by default in future releases. That being said, not all developers want SSE enabled by default, because they still want support for older CPUs for their SW versions.
Update: official responce from Nvidia – We’re not hobbling CPU PhysX
Update #2: some more Nvidia statements at this ars technica article
Update #3: and more at Hothardware.com article “NVIDIA Sheds Light On Lack Of PhysX CPU Optimizations”
But lets get back to original article. According to David, sole reason for PhysX SDK to rely on outdated x87 instruction is to make “Nvidia GPUs looks a lot better than the CPU“. This idea was inherited other websites, like TechReport.com
The PhysX logo is intended as a selling point for games taking full advantage of Nvidia hardware, but it now may take on a stronger meaning: intentionally slow on everything else.
and Semi Accurate
In the end, there is one thing that is unquestionably clear, if you remove the de-optimizations that Nvidia inflicts only on the PC CPU version of PhysX, the GPU version would unquestionably be slower than a modern CPU.
Unfortunately, previous authors are missing few vital points: PhysX SDK is used in many games running on CPU, and physics level in those titles can be easily compared to physics content in games based on other “non crippled” physics engines, like Havok; nor there are any games, that can offer content, similar to GPU PhysX effects, but running on CPU with stable framerate.
And, most important, GPU can accelerate only few parts of PhysX code – rigid bodies, joints, raycasts, forcefields, broadphase, etc – rely purely on CPU, so what is the reason not to optimize those at the full potential, to make PhysX SDK more attractive for developers (and thus increase number of games with GPU PhysX support) ?! Something is telling us that reason “just to make GPUs look better over CPU” is not so obvious.
And what do you think ? Tell us in comments.
Dr. Matthias Müller-Fischer, PhysX SDK research lead at Nvidia Switzerland, Novodex founder and man behind many core PhysX algorithms, like Position Based Dynamics solver for cloth and soft-bodies, has published another interesting paper – Wrinkle Meshes.
We present a simple and fast method to add wrinkles to dynamic meshes such as simulated cloth or the skin of an animated character. To get the desired surface details, we attach a higher resolution wrinkle mesh to the coarse base mesh allowing the wrinkle vertices to deviate from their attachment positions within a limited range. The shape of the wrinkle mesh is determined by a static solver which runs in parallel to the motion of the base mesh. Our method can be used to automatically enhance a purely animated skin mesh with wrinkles which would be atedious task to do by hand.
The fact that the tessellation of the wrinkle mesh can be chosen independently of the structure of the base mesh can be used to control the look of the wrinkles. The locations of wrinkle formation can be defined by painting the maximum distance the wrinkle mesh is allowed to deviate from the base mesh. The second important application of wrinkle meshes is to add detail to simulated meshes such as cloth. Our method allows one to reduce the resolution of the simulation mesh without losing interesting surface detail. This speeds up the simulation, collision detection and handling and it reduces stretchiness. We show the efficiency and visual quality of the approach in a real-time setting.
In generally, that means more detailed cloth simulation with less resourse consumption. Previous research – Hierarchical Position Based Dynamics – was already added in PhysX SDK 2.8.3 so we believe that Wrinkle Meshes will appear in PhysX SDK or APEX Clothing module soon enough.
Also, you can download demonstrational video (63 mb)