Archive for the ‘Cloth’ tag
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, likely most important GPU PhysX title for this year, was released just a few days ago, and as usuall we have prepared some PhysX comparison materials.
This particular video is focused on how APEX Clothing module is used the enhance game experience.
Update: Part II, dedicated to APEX Particles effects, is released.
Update #2: APEX Clothing in numbers
In general, APEX Clothing content includes:
- Much more detailed (you can even notice how wrinkles are formed), fully simulated clothing for main character – Vito Scaletta.
Standart PhysX Cloth is still being used on consoles and PC (APEX Off settings), but in comparison to APEX Clothing based simulation (APEX High and Medium settings), it is looking chunky and crusty.
- Dynamic clothing for additional characters (Joe, Derek, Steve, etc) and some NPCs, instead of simple skinned mesh.
- Several supplementary effects, like cloth reaction to the wind and shockwaves from explosions.
Sum: High-resolution clothing simulation is nice looking, immersive and promising technology. However, in Mafia II resources are used not optimally – hardly noticable, but very demanding clothing simulation on NPCs can bring your system to knees.
Fortunately, PhysX tweaks discovered for Mafia II demo are working nicely in final version too. Following this guide, you can easily tweak amount of APEX Effects (for example, disable clothing simulation for NPC, but leave it for Vito) and find a compromis between visual fidelity and performance.
Also, keep an eye on Mafia II GPU PhysX info mini-site for additional information and comparison screenshots.
Yes, all that dynamic clothing and particle effects are cool, but actuall performance of Mafia II with APEX PhysX effects set on “Medium” or “High” isn’t very fascinating – even GTX 480 users may met some annoying fps drops and lags. Fortunately, there is a way to tweak APEX content a little.
Note: Interested in how exactly APEX Framework is being used ? Visit Mafia II GPU PhysX profile page for additional information.
Important: Mafia II may have some issue with PhysX System Software installation. If you experiencing major slowdowns, reinstall it using 9.10.0512_SystemSoftware package from \Steam\steamapps\common\mafia ii – public demo\3rd folder.
You also may wanna try new 9.10.0513 PhysX drivers
PART I – APEX CLOTHING
Most performance is devoured by APEX Clothing module (why ? because it is running on CPU, not on GPU), that is responcible for realistic clothing simulation on main and several NPC characters.
Update: tweaking APEX Particles effects
Update #2: following tweaks will work with final version of Mafia II
1) Disabling all clothing
If you can live without flowing Vito trenchcoat and woman’s skirts, you can simply follow the path
\Steam\steamapps\common\mafia ii( – public demo)\edit\APEX
and delete (don’t forget to backup) directory named as
This will remove certain APEX assets, and all character clothing will revert to static skinned mesh (like with APEX set to “Off“), but all particle effects will stay !
Result ? No more realistic cloth, but huge fps increase. 70 average fps vs 25 fps without this trick (APEX set to High, single GTX470 is used, GPU PhysX enabled).
As we mentioned previously, one of the many features of upcoming Unity 3.0 engine is going to be improved PhysX SDK integration. Now, when pre-purshase betas of Unity 3.0 are shipping, additional details have emerged.
According to developers, highlight for Unity 3 is cloth physics on arbitrary and skinned meshes – video of new cloth feature in action was uploaded to YouTube by one of Unity demo team members.
In addition, PhysX core was updated to version 2.8.3., collision layers and “thick” raycast were added.
Update: Another cloth test, with tearing | Cloth features overview from one of beta users
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)