PHYSX NEWS PHYSX SDK
PROJECTS TABLE
GPU PHYSX
GAMES INFO
PHYSX
ARTICLES
PHYSX WIKI FORUM
РУССКИЙ ENGLISH


:: Back to news index ::

February/March UDK supports NVIDIA APEX 1.1

with 13 comments

Almost a year has passed since NVIDIA and Epic Games presented APEX 1.0 integration in Unreal Development Kit (UDK) engine.

And now, February 2012 release of UDK can “please” us with silent introduction of newest APEX 1.1 Framework, which includes updated APEX Clothing and APEX Destruction modules.

Unfortunately, UDN documentation was not yet updated, and some flaws were found in this release - for example, APEX GPU Rigid Body libraries are missing from the February distribution. Not to mention, that not all APEX 1.1 features have made it into UDK.

UPDATE: March UDK is released. Issues with missing GRB libraries were resolved.

UPDATE #2: November 2012 release of UDK adds APEX 1.2.1 support

Please note: only assets created with latest authoring tools - PhysXLab 1.1 and 2.71 DCC plug-ins - are compatible with APEX 1.1

Let’s take a look on some of the new features in APEX 1.1 integration we were able to discover:

APEX DESTRUCTION 1.1:

For additional data on Destruction Module please refer to UDN page

  • GPU Rigid Bodies (GRB). One of the most interesting features of 1.1 release is new ability to calculate rigid body physics on CUDA-capable GPUs, thus achieveing performance improvement in scenes with many destructible actors and simulated chunks, while using exact same assets and settings as for CPU physics.

----- Following is valid only for February 2012 UDK

As we have mentioned, current GRB implementation is missing vital libraries and also has some bugs: you can either wait until March UDK release or try it out now (for your own risk) – using our .dll package (36 mb).

Copy “GRB_1_x86.dll” and “pxtask_cuda_x86.dll” to “UDK\Binaries\Win32\” folder.

Copy “GRB_1_x64.dll” and “pxtask_cuda_x64.dll” to “UDK\Binaries\Win64\” folder.

---- Previous is only valid for February 2012 UDK

Now, to enable GRBs you need to set following parameters in “Engine\Config\BaseEngine.ini” file:

bDisablePhysXHardwareSupport=False

ApexGRBEnable=True

You may also want to tweak following settings:

ApexDestructionMaxChunkIslandCount – maximum number of simulated chunks.

ApexDestructionMaxShapeCount – each chunk could have multiple shapes, so you can limit those too.

ApexGRBGPUMemSceneSize – GPU memory allocated to store scene data (shapes, actors).

ApexGRBGPUMemTempDataSize – GPU memory allocated to store contacts and collision data.

Please note that GPU acceleration: #1 Is only working for Destructible assets, not regular UDK physics actors.  #2 Is not effective in scenes with small amount of physical objects. #3 Supports only one-way interaction with CPU rigid bodies.

It is recommended to install latest GPU driver.

  • New Sort by Benefit option defines how chunks are removed from the scene when resource budget is reached. Benefits calculation is based on screen size (which, itself, depends on size of the chunk/island and distance from the camera) and age of the chunk, not just relative lifetime, as before.

It is enabled by default:

ApexDestructionSortByBenefit=True

Thus, enabling this option will prevent undesirable situations, when, for example, chunks dissapear in front of you as something gets destroyed in the background. New system will also preserve large chunk inslands and delete smaller insignificant chunks in the first place.

  • Ability to have multiple collision hulls per chunk for better representation of objects with concave geometry.

PhysXLab 1.1 performs convex decomposition automatically, while complexity of physical mesh can be controlled by “Collision Quality” settings under “Asset” tab.

Collision hulls (red wireframe) on various quality settings

Increased collision quality can also help to avoid interpenetrations between chunks, but will consume more resources.  But if your chunks are perfectly convex (for example, if Voronoi shattering is used), you can safely reduce quality to 1 or 2, in order to improve performance.

  • Chunks instancing and tiling. Matching chunks created from cutout fracturing can be instanced within the same actor, as well as other destructible actors which reference the same asset – to speed up rendering.

Instancing option (it is located under “Graphics” tab) must be set during authoring process.

APEX CLOTHING 1.1:

For additional data on Clothing module please refer to UDN page

  • Per-actor scaling. Each actor can now be scaled individually and simulated correspondingly.
  • Asynchronous cooking. Cooking will be delayed if another actor already started cooking, in case if several actors with different per-actor scale are created. Actors will not be simulated during this process.

This option is also enabled by default:

ApexClothingAllowAsyncCooking=True

  • Adaptive Target Frequency reduces the high frequency jittering that happens due to slightly varying timesteps, by adapting the per-cloth gravity slightly.

Target frequency is computed as the average over the real last N (normally 60) simulation steps. Number of steps can be defined with following parameter:

ApexClothingAvgSimFrequencyWindow=60

We’ll update this page as more official information will be released.

Written by Zogrim

March 2nd, 2012 at 3:04 pm

13 Responses to 'February/March UDK supports NVIDIA APEX 1.1'

Subscribe to comments with RSS

  1. BTW, on my PC GRBs are working only in 64-bit mode.. for some reason.

    And thanks to David S. from NVIDIA for tips :)

      

    Zogrim

    2 Mar 12 at 3:09 pm

  2. The performance increase looks great.
    I hope we see games really taking advantage of Physx and the new/improved features.

      

    Spets

    3 Mar 12 at 5:58 am

  3. its not working for me, i tried 3 different versions of udk, the dll hack and even the latest udk. i got a quad core 6gbram and a gtx 480 with a 650 watt power supply and win 7 x64 with latest physx software and geforce driver. i dont understand why its not working for me! i tried everything.i made sure to enable physx in the ini and turn on grb in the ini also. what spec machine are you running to do this?

      

    digitaldemolition

    25 Oct 12 at 2:44 pm

  4. digitaldemolition: its not working for me, i tried 3 different versions of udk

    Latest July UDK is actually bugged – GRBs are not working there. But March UDK was working fine.

    Zogrim: i dont understand why its not working for me

    Are you sure GRBs are not working? Best way to determine if simulation is running on GPU, is by observing the behaviour of rigid bodies – on GPU they are more stable and settle down more quickly.

    digitaldemolition: hat spec machine are you running to do this?

    i7 2600K CPU, GTX 580 GPU, 4 GB RAM, Win 7 x64. PSS version, I believe, was 9.12.0213

      

    Zogrim

    25 Oct 12 at 3:09 pm

  5. cool, I downloaded March UDK and I setup the configuration for grb and physx gpu,I’m also using that PhysX version you are using. It seems to be working but on about 100 chunks between 3 stacks of pillars i get about 30fps during the collisions, and on settle it rises back up to 90 fps, i got my framerate smooth set to 120 fps wich is what I get max when the chunks idle. I am temporarily running on a pci express 1.0 x16 slot with a pci express gtx 480 so i’m thinking the data throughput could be throttled by the lack of pci expresss 2.0 x16 slot. I’m going to test it out soon on a pci express 2.0 motherboard and see if there actually is a real difference. I did notice with PhysX gpu on the chunks fall a bit odd, but I know it’s still experimental.

      

    digitaldemolition

    26 Oct 12 at 3:29 pm

  6. digitaldemolition: I did notice with PhysX gpu on the chunks fall a bit odd

    Yep, there may be some skipped contacts (chunks sometimes falling through each other and through the ground).
    Should be fixed in latest build, but I dunno when it is going to be released (November, December)

      

    Zogrim

    26 Oct 12 at 3:42 pm

  7. I have GRB working with the feb 2012 udk and your .dll. With march and all other version i either get “DevPhysics: APEX Debug Warning: physx::apex::ModuleDestructible::init: Failed to load GRB dll: GRBCHECKED_1_1_api2_x64.dll. Even if the GRB dll is present, the load failure could be caused by a missing dependent dll, such as cudart or physXloader.” or “DevPhysics: APEX Debug Warning: physx::apex::ModuleDestructible::init: GRB descriptor parameters not valid. GRB simulation not initialized.”

      

    dario

    12 Apr 13 at 7:23 pm

  8. dario
    Yep, some issues are indeed still present with latest UDKs and GRBs.

    Probably will be solved with APEX 1.2.3 integration

      

    Zogrim

    12 Apr 13 at 8:08 pm

  9. Yeah. Actually, i spoke too soon. Looking closely at the chunk in my feb2012 udk, i see them behaving with cpu physics. And in fact sometimes i do get the “GRB simulation not initialized” warning in the Logs (sometime I didn’t). But… in these amazing videos it works! I wonder why it doesnt’ work on my pc. I have a clean installation of feb and march udk, and followed your procedure.

      

    dario

    14 Apr 13 at 11:24 am

  10. does it say anything about gpu pairs when you type in STAT APEX ?

      

    digitaldemolition

    23 Jun 13 at 3:22 pm

  11. still trying to hack grb’s into uDK lol could someone upload their supposedly hacked udk onto a file sharing site??? I would like to test either Zogrims or someone elses pre-hacked setup.

      

    digitaldemolition

    15 Aug 13 at 4:09 pm

  12. (bump)I would like the directory intact and as-is. possibly inside of a .rar file i will even settle for a multi part .rar upload if someone could be nice enough to do that

      

    digitaldemolition

    15 Aug 13 at 4:11 pm

  13. digitaldemolition: I would like to test either Zogrims or someone elses pre-hacked setup

    I don’t have pre-hack setup =)

    If you want to mess with UDK’s GRB, I would suggest you to download APEX SDK and try to copy GRB .dlls manually.
    GRBs are working fine in APEX SDK.

      

    Zogrim

    16 Aug 13 at 9:37 am


Leave a Reply

*
Copyright © 2009-2014. PhysXInfo.com | About PhysXInfo.com project | Privacy Policy
PhysX is trademark of NVIDIA Corporation