:: Back to news index ::

First Beta of PhysX SDK 3.2 is released

with 14 comments

NVIDIA has revealed PhysX SDK 3.2 Beta-1, thus providing early public access to next general release of PhysX 3, enhanced with many features and improvements – as a Christmas present, we suppose.

Update [25.01.2012]: PhysX SDK 3.2 Beta-2 is available

Update #2 [20.03.2012]: SDK 3.2 Beta-3 is released

Update #3 [10.05.2012]: Final release is available

Binary SDKs are available for Windows PC, Linux, Mac OSX and Android platforms.

PhysX SDK 3.2 Beta-1/Beta-2/Beta-3 can be downloaded at Developer Support Center.

If you are experiencing trouble with registration of PhysX Developer account, please refer to our registration guide.

PhysX SDK 3.2 Beta-1/Beta-2/Beta-3 Release Notes:


  • Three new sample applications: SampleCharacterCloth (character with cloth cape and cloth flags), SampleBridges (character controller walking on dynamic bridges and moving platforms), SampleGravity (character controller with arbitrary up vector).
  • On Windows, the PxFoundation instance is now a process wide singleton and part of the new PhysX3Common.dll library.
  • PxCreatePhysics() does not create a PxFoundation instance any longer. The PxFoundation instance has to be created in advance through PxCreateFoundation().
  • Calls to PxCreatePhysics() are not valid anymore if a PxPhysics instance already exists.
  • If profiling information should be sent to the PhysX Visual Debugger, a PxProfileZoneManager instance has to be provided when creating the PxPhysics instance.
  • The version number constant PX_PUBLIC_FOUNDATION_VERSION has been replaced with PX_PHYSICS_VERSION. Both PxFoundation and PxPhysics use the same version number now.
  • The API now distinguishes between input and output stream types.
  • Added mechanism to reduce code size by not linking optional components. See PxCreateBasePhysics() and the PxRegister*() functions.
  • Added getConcreteTypeName() to API classes to provide run time type information.
  • Added PxScene::getTimestamp() to retrieve the simulation counter.
  • PxGetFoundation has been moved to PxGetFoundation.h
  • Changed the functions PxPhysics::releaseUserReferences(), releaseCollection(), addCollection() and releaseCollected() to now take a reference rather than a pointer.
  • The signature of PxCreatePhysics has changed: The Foundation SDK instance must be passed in explicitly. One can also hook profiling information by passing a PxProfileZoneManager.
  • [Beta-3] Contact data block allocation now provides statistics on usage and max usage.
  • [Beta-3] On all platforms except PS3, contact data blocks can be progressively allocated.
  • [Beta-3] Changed the functions PxPhysics::releaseUserReferences(), releaseCollection(), addCollection() and releaseCollected() to now take a reference rather than a pointer.
  • [Beta-3] Default implementations of memory and file streams added in PxDefaultStreams.h
  • [Beta-3] Renamed PxPhysics::getMetaData() to ::PxGetSDKMetaData().
  • [Beta-2] Platform conversion for serialized data has been moved from the ConvX command line tool to the PxBinaryConverter interface in the cooking library.
  • [Beta-2] Documentation has been updated.
  • [Beta-3] Added migration guide page from 3.1 to 3.2 to user’s guide.
  • [Beta-2] Samples have been updated.
  • [Beta-2] Various bug fixes.

Rigid Bodies

  • Introduced a new contact generation mode, see eENABLE_PCM.

Persistent Contact Manifold (PCM) is a fully distance-based collision detection system, which uses the Gilbert-Johnson-Keerthi algorithm (GJK) and the Expanding Polytope Algorithm (EPA) to calculate one contact at the point of deepest penetration. It then uses an incremental method to build up a contact manifold by recycling contacts from past frames, accumulating up to four contacts per frame.

This approach is quite efficient in terms of performance and memory. However, it can reduce stacking stability when simulating with large timesteps, tall stacks and small objects. As this approach is distance-based, it will generate the correct contact points for arbitrary contact offsets/rest offsets.

  • Introduced two new friction simulation modes, see eENABLE_ONE_DIRECTIONAL_FRICTION and eENABLE_TWO_DIRECTIONAL_FRICTION.

The Coulomb friction model is based on the Coulomb laws of friction. It is less efficient than the default friction model and it can require more solver iterations to achieve stable stacking behavior. However, its friction behaviors are much closer to the analytical results than the default friction model so could be preferable for applications where accurate friction behavior is important.

The Coulomb model comes in two variants, one-directional and two-directional. The one-directional approach is similar in terms of workload to the default friction model and can be stable at similar solver iteration counts. Its behavior is closer to the analytical results but diverges slightly. The one-directional approach is a simplification of the full Coulomb model, in which the friction for a given point of contact is reduced to a one-directional friction model.

  • Introduced a new scene query flag PxSceneQueryFlag::eINITIAL_OVERLAP_KEEP to control how initial overhaps are treated in scene queries.
  • Per-triangle materials have been implemented.
  • Changes to material properties are automatically reflected in contact resolution.
  • New helper methods to compute mass properties for a dynamic rigid body taking per shape density/mass values into account (see documentation on PxRigidBodyExt for details).
  • A new set of methods for overlap, sweep and raycast tests based on PxGeometry objects has been introduced. See documentation on PxMeshQuery and PxGeometryQuery for details).
  • The contact report API has changed (for details see the documentation on PxSimulationEventCallback::onContact()). Among the changes are:
    • Reports only get sent for shape pairs which request them. Previously, reports were sent for an actor pair even if the requested shape pair event was not triggered (for example because other shapes of the same actors started colliding etc.)
    • Forces and feature indices are now always provided if applicable.
    • It is much easier now to skip shape pairs or contact point information when traversing the contact report data.
    • The memory footprint of contact reports has been reduced.
  • The members featureIndex0/1 of PxContactPoint have been renamed to internalFaceIndex0/1 for consistency.
  • For trigger reports, the eNOTIFY_TOUCH_PERSISTS event has been deprecated and will be removed in the next release. For performance and flexibility reasons it is recommended to use eNOTIFY_TOUCH_FOUND and eNOTIFY_TOUCH_LOST only and manage the persistent state separately.
  • Added PxConstraintVisualizer interface and code to visualize joint frames and limits.
  • Improved PxBatchQuery API.
  • PxPhysics::getProfileZoneManager() now returns a pointer rather than a reference.
  • PxRigidDynamic::moveKinematic() has been renamed to setKinematicTarget() to underline its precise semantics.
  • Added new function PxShape::getGeometry and class PxGeometryHolder to improve Geometry APIs.
  • [Beta-3] PxCreatePlane now takes a PxPlane equation as a parameter. Note that the interpretation of the distance value is negated relative to 3.1
  • Added new actor creation helpers PxCloneStatic, PxCloneDynamic, PxScaleActor.
  • Added new functions PxTransformFromSegment, PxTransformFromPlaneEquation to simplify creation of planes and capsules.
  • Some methods of PxAggregate have been renamed for consistency or replaced for extended functionality.
  • getMaxSize() is now called getMaxNbActors().
  • getCurrentSize() is now called getNbActors().
  • getActor() has been replaced by getActors() which copies the actor pointers to a user buffer.
  • [Beta-3] Added support for kinematic triangle meshes, planes and heighfields.

Scene queries:

  • [Beta-3]: Dynamic AABBTree has been set as the default dynamic pruning structure.


  • Removed descriptors from particle API: The properties maxParticles and PxParticleBaseFlag::ePER_PARTICLE_REST_OFFSET need to be specified when calling PxPhysics::createParticleSystem() and createParticleFluid(). All other properties can be adjusted after creation through set methods.


  • Added convex collision shapes, see PxCloth::addCollisionConvex().
  • Added friction support, see PxCloth::setFrictionCoefficient()..
  • Added angle based bending constraints, see PxClothPhaseSolverConfig::SolverType::eBENDING
  • Added separation constraints, a spherical volume that particles should stay outside of, see PxCloth::setSeparationConstraints().
  • Added drag, see PxCloth::setDragCoefficient().
  • Added inertia scaling, controls how much movement due to PxCloth::setTargetPose() will affect the cloth.
  • Added support for setting particle previous positions, see PxCloth::setParticles().
  • Added controls for scaling particle mass during collision, this can help reduce edge stretching around joints on characters, see PxCloth::setCollisionMassScale().
  • Particle data is now copied asynchronously from the GPU after simulate (rather than on demand).
  • Improved fabric layout, you can now share fabric data across multiple phases to reduce memory usage, see PxClothFabric.
  • Fixed bug in collision when capsules are tapered at a slope > 1.


  • Added PxVehicleDriveTank, a vehicle class that enables tank behaviors.
  • Support for vehicles with more than 4 wheels, see PxVehicleDrive4W, PxVehicleDriveTank.
  • Significant refactor of vehicle api to allow further types of vehicle to be added.
  • Americal English spelling used in vehicle api.
  • PxVehicle4W replaced with PxVehicleDrive4W, PxVehicle4WSimulationData replaced with PxVehicleDriveSimData4W.
  • Removal of scene query helper functions and structs: PxVehicle4WSceneQueryData, PxVehicle4WSetUpSceneQuery, PxWheelRaycastPreFilter, PxSetupDrivableShapeQueryFilterData, PxSetupNonDrivableShapeQueryFilterData, PxSetupVehicleShapeQueryFilterData. See SampleVehicle_SceneQuery.h for their implementation in SampleVehicle.
  • PxVehicle4WSimpleSetup and PxCreateVehicle4WSimulationData have been removed and replaced with default values in vehicle components, see PxVehicleComponents.h.
  • PxVehicle4WTelemetryData has been replaced with PxVehicleTelemetryData, a class that supports vehicles with any number of wheels, see PxVehicleTelemetryData
  • PxVehicleDrivableSurfaceType no longer stored in PxMaterial::userData. A hash table of PxMaterial pointers is instead used to associate each PxMaterial with a PxVehicleDrivableSurfaceType, see PxVehicleDrivableSurfaceToTireFrictionPairs.
  • PxVehicleTyreData::mLongitudinalStiffness has been replaced with PxVehicleTireData::mLongitudinalStiffnessPerUnitGravity, see PxVehicleTireData.
  • Tire forces now computed from a shader to allow user-specified tire force functions, see PxVehicleTireForceCalculator.
  • Added helper functions to quickly configure 3-wheeled cars, see PxVehicle4WEnable3WTadpoleMode, PxVehicle4WEnable3WDeltaMode.

What we removed:

  • Deformables have been removed. Use the optimized solution for clothing simulation instead (see documentation on PxCloth for details).
  • PxSweepCache is deprecated.
  • PVD is no longer enabled in the release build.
  • Removed anisotropic friction.
  • Removed the CCD mode eSWEPT_CONTACT_PAIRS.
  • PxActorDesc has been removed.
  • [Beta-2] The ConvX tool has been removed.
  • [Beta-3] Removed empty default implementations of functions in PxSimulationEventCallback for consistency.
  • [Beta-3] Octree and quadtree pruning structures have been removed.
  • [Beta-3] PxScene.overlapAny has been removed. overlapMultiple with maxNumHits 1 does the same.

Fixed Bugs:

  • [Beta-3] PxScene::getActors() might not work properly when the startIndex parameter is used.
  • [Beta-3] Improved the doc-comment of PxConvexMesh::getMassInformation().
  • [Beta-3] RepX instantiation can lose all internal references when addOriginalIdsToObjectMap is false.
  • [Beta-3] PxSetGroup crashed when used on a compound.
  • [Beta-3] PhysXCommon.dll can be delay loaded.
  • [Beta-3] ContactReportStream can now handle huge report numbers and size (resize-able flag) can be set in PxSceneDesc.h.
  • [Beta-3] Fixed assert in sweep tests.
  • [Beta-3] Concurrent read/write operations during a PxScene::fetchResults() call were not detected properly and no warning message got sent in checked builds.

Written by Zogrim

December 23rd, 2011 at 2:01 am

Posted in PhysX SDK

Tagged with , ,

14 Responses to 'First Beta of PhysX SDK 3.2 is released'

Subscribe to comments with RSS

  1. As opposed to former SDK the Android sample doesn’t run on Tegra2 with 512MB (DELL Streak 7), can s.o. check with a 1GB device?
    Shader debugger reported zero errors btw.

    E/InputDispatcher(137): channel ‘40ac98d8 com.nvidia.physx.samples.SampleAllInOne/com.nvidia.physx.samples.SamplesActivity (server)’ ~ Consumer closed input channel or an error occurred. events=0×8
    E/InputDispatcher(137): channel ‘40ac98d8 com.nvidia.physx.samples.SampleAllInOne/com.nvidia.physx.samples.SamplesActivity (server)’ ~ Channel is unrecoverably broken and will be disposed!
    I/ActivityManager(137): Process com.nvidia.physx.samples.SampleAllInOne (pid 2020) has died.
    I/WindowManager(137): WINDOW DIED Window{40ac98d8 com.nvidia.physx.samples.SampleAllInOne/com.nvidia.physx.samples.SamplesActivity paused=false}
    D/gralloc(89): Attempting to delete a locked buffer!
    D/gralloc(89): Buffer 21 locks: (tid = 2028 (x1), usage = 0×200)
    D/Zygote(90): Process 2020 terminated by signal (11)
    W/WindowManager(137): java.lang.IllegalArgumentException: Requested window android.os.BinderProxy@4096e7d0 does not exist
    W/WindowManager(137): at$DeathRecipient.binderDied(
    W/WindowManager(137): at android.os.BinderProxy.sendDeathNotice(
    W/WindowManager(137): at Method)
    I/WindowManager(137): WIN DEATH: null
    I/ActivityManager(137): Low Memory: No more background processes.



    23 Dec 11 at 2:40 pm

  2. What features are prepared for GPU acceleration? Or this is not one of the priorities for NV these days?



    27 Dec 11 at 11:57 am

  3. As I know rigid bodies and cloth simulation are fully accelerated with GPU and can be accelerated with CPU. What about vehicles?



    27 Dec 11 at 1:30 pm

  4. mareknr: Or this is not one of the priorities for NV these days?

    Current focus is on expansion of feature set and performance/platforms optimizations, afaik.
    I find it reasonable, since without strong back-end GPU acceleration idea will fail completely.


    As I know rigid bodies and cloth simulation are fully accelerated with GPU and can be accelerated with CPU. What about vehicles?

    Rigid bodies are yet not fully accelerated, and will appear in SDK around PhysX SDK 3.3 (earlier in APEX)

    Vehicles and other complex jointed systems will not make it to GPU, most likely – as it was mentioned at NVIDIA dev. forums



    27 Dec 11 at 3:19 pm

  5. Meanwhile i managed to run the Android demo with 512k memory by installing a so-called “RAM optimizer” (requires root access though).



    26 Jan 12 at 11:38 pm

  6. Stefan: Meanwhile i managed to run the Android demo

    Demos are still without touch controls ?



    27 Jan 12 at 12:46 am

  7. Zogrim: Nice.
    Demos are still without touch controls ?

    The white circles are virtual joysticks, for other functions you have to hit exactly the text fields, i.e. you shouldn’t have stubby fingers :P

    i try to attach another picture with thumbnail.
    Hope it appears correctly here…



    27 Jan 12 at 7:09 pm

  8. Stefan: The white circles are virtual joysticks

    Cool :)
    Requesting more screenshots

    Stefan: Hope it appears correctly here

    If not, I’ll fix it manually



    27 Jan 12 at 8:02 pm

  9. Stefan

    28 Jan 12 at 12:56 pm

  10. Stefan
    Interesting. Thanks !



    28 Jan 12 at 3:00 pm

  11. What are the requirements for the android sdk? Does it require tegra? Would it run on a qualcom 3.2 tablet(512mb dueal core 1ghz)?


    david black

    28 Jan 12 at 11:24 pm

  12. Tegra is required for the DXT/S3TC texture compression used by the sample (and other THD games).
    Probably you can help yourself with the OpenGL proxy “Chainfire3D”.



    29 Jan 12 at 11:52 am

  13. So the samples would not run, but the core sdk uses just generic arm code? What about extensions like neon etc(not sure which my tablet has tho…)


    david black

    29 Jan 12 at 4:37 pm

  14. Tegra2 doesn’t support NEON at all (which makes it unpopular for video de-/encoding).

    At least you need Gingerbread for the usage of “native activity”.

    I’m not sure about other requirements.



    29 Jan 12 at 8:53 pm

Leave a Reply

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