NVIDIA has released APEX SDK 1.1 (Build 112), next version of NVIDIA APEX – scalable dynamics framework, oriented on complex physical simulations.
Update: APEX 1.2 is available
In comparison to APEX 1.0 Beta, new version includes many bugfixes, several additions to underlying framework and various new features, like ability to calculate rigid body physics on GPU.
APEX 1.1 contains only Destruction and Clothing modules, and is still based on PhysX SDK 126.96.36.199 – first version with PhysX 3 support is going to be APEX 1.2 (that is supposed to be released in a few months).
NVIDIA APEX SDK 1.1 is available for download at Developer Support Center.
If you are experiencing trouble with registration of PhysX Developer account, please refer to our registration guide.
APEX DESTRUCTION 1.1
- GPU Rigid Bodies: the NxModuleDestructible has settings to enable calculation of Rigid Body physics on GPU.
Highly anticipated feature. While using same assets and same settings, GPU Rigid Bodies are showing significantly higher performance – 70 fps for 5000+ rigid body chunks on single GTX 580 vs 10 fps on Core i7 2600K.
One-way interaction with dynamic CPU actors is also supported (via transfer of momentum). GPU accelerated rigid body physics requires NVIDIA driver 270.81 or later, PhysX 2.8.4 RC6 or later and a CUDA capable GPU.
- Chunk instancing: (when authored to instance) correponding chunks between different destructible actors will be rendered using an instance buffer. This is advantageous if there are many destructible actors which reference the same asset.
- Chunk tiling: (when authored to tile) matching chunks created from cutout fracturing will be instanced within the same actor, as well as other destructible actors which reference the same asset. This can drastically reduce the memory size of the asset.
- LOD setting sets the maximum chunk depth which can be fractured, implementing forcePhysicalLOD interface.
- getChunkLinearVelocity and getChunkAngularVelocity API in the actor.
- Per-actor materials in the actor descriptor.
- Can specify a separate render mesh for static chunks which gets drawn in a single draw call, using the renderStaticChunksSeparately field in the actor descriptor
- Can set a separate set of static materials used by the static mesh if renderStaticChunksSeparately is set.
- minimumFractureDepth added to destructible parameters, to limit the size of the pieces that can be broken free.
- Implements applyTransformation interface to geometrically transform an asset.
- Fracture event callback now consolidates chunk information to reduce the number of fracture events reported.
- NxActor (chunk island) FIFO can now be sorted by “benefit” (takes into account screen size and age of the chunk), so that less-beneficial chunks are removed first.
- NxShape count limit can be set in addition to NxActor count.
- Chunk creation can be amortized over many frames.
- Fracture processing can be amortized over many frames.
- Conforms to new LOD system.
- Removed the per-chunk thread locks, for better performance and resource usage.
- SimpleDestruction has multiple sample scenes, loaded using the keys 1-7.
- Damage reports are no longer issued when a destructible is set free using setDynamic().
- Several crash bugs fixed.
- Ability to have multiple collision hulls per chunk.
- Can cancel the fracture operation.
- “Trim face hulls” option in cutout fracturing.
- Ability to use multiple UV channels and color channels from FBX meshes
- cookChunks does not use the internal ExplicitHierarchicalMesh any longer, only information passed in from the descriptor.
APEX CLOTHING 1.1
- Per-Actor scaling. Each actor can have an individual scale and simulates properly.
- Asynchronous cooking. When several actors with different per-actor scale are created, cooking will be delayed if another actor already started cooking. While waiting, actors will not be simulated.
- Manual substepping: A PhysX scene that will run multiple substeps is now handled properly by clothing. Interpolated simulation meshes will be generated for each individual substep to remove simulation artifacts caused by substepping.
- Teleport without reset: Clothing Actors can now be teleported without all the vertices being reset to the animated positions. This will only lead to good results if only the pose of the actor and not the state of the animation is changed.
- Frozen state: Clothing can be frozen in a given state and will cease simulation. It can then be woken again in the same state. This contrasts the regular way where re-enabled clothing starts from the animated state instead.
- Velocity Callback: A user callback that allows to read and write the velocity values of every simulated vertex. Can be used to play sound depending on certain changes in velocity or to implement i.e. a wind effect.
- Support for morph targets (also known as blendshapes): At actor creation a set of vertex displacements can be used to modify the mesh.
- Platform Tags: Each graphical LOD can have a list of strings attached. When converting the .apx/.apb files to a given platform, LODs that don’t match a certain pattern can be removed based on this.This allows for reducing asset size by removing LODs that are unsuited for a particular platform.
- Correct Simulation Normals: Vertices that are on the border of the simulated and non-simulated part of the physical mesh can have wrongly calculated normals. This setting will try to correct for that.
- Adaptive Target Frequency: Reduces the high frequency jittering that happens due to slightly varying timesteps.
- Pressure: Closed cloth meshes can be filled with pressure.
- Vertex Velocity Clamp: Adds a maximum velocity in all 6 major axis and clamps all velocities to those.
- Switching of graphical LoDs has been improved in respect to copying position and velocity from the old to the new simulation mesh.
- Legacy serialization is gone. Any old .aca file cannot be loaded anymore. They need to be converted to .apx/.apb using the 1.0 ParamTool instead.
- Some API marked as deprecated has been deleted such as NxClothingActor::setFlags().
- Removed separate NxClothingMaterialLibrary (.acml files) as an asset type. Materials are now integrated into the Clothing Asset file directly.
- Parallel physics mesh skinning and parallel mesh-mesh skinning. The frame delay that was introduced by this feature made it useless to most applications.
- New method Interface::clone.
- Handles which are constructed from const Interfaces do not allow to change those Interfaces via setParamXxx.
- Generic reference visitor NxParameterized::getReferences.
- Streamed non-inplace binary deserialization.
- Fixed handling of defaultValue in structs.
- Fixed detection of hint types.
- Automated versioning of legacy classes.
- Customizable order of legacy objects upgrade instead of fixed bottom-up.
- Custom alignments of struct fields.
- ParamTool can now print summary of file contents.
- ParamTool does not support legacy asset formats anymore.
- Changed some error codes.
Render Mesh Asset
- setOverrideMaterial was added to allow switching of material directly at runtime.
- Debug rendering vor vertex normals and tangents.
Use of Cuda 4.1
- Necessary for supporting latest hardware.
P.S. We expect APEX 1.1 integration with UE3/UDK to be available in February 2012 release.