New PhysX SDK 3.3.2 release is available for download.

Update March 2015: Bug-fixing PhysX SDK 3.3.3 release is available. Release Notes.

Windows, Linux, OS X, Android and iOS builds are now available for free with source code.

Among various bug-fixes, this version also features support for GPU acceleration on Linux platform (CUDA-capable devices only) and reworked documentation.

PhysX SDK 3.3.2: Release Notes

GENERAL

Added: The PhysXCommon/64.dll, nvcuda.dll and PhysXUpdateLoader/64.dll are loaded and checked for the NVIDIA Corporation digital signature. The signature is expected on all NVIDIA Corporation provided dlls. The application will exit if the signature check fails.

Added the PxDefaultBufferedProfiler extension for simplified SDK profile events extraction.

PxSceneDesc::sanityBounds allows a bounding box to be set for validating the position coordinates of inserted or updated rigid actors and articulations.

Linux: Now supports GPU PhysX .

. Added set/getRunProfiled() for PxDefaultCpuDispatcher to control profiling at task level.

Android: Support for x86 based devices was added.

PxProfileEventHandler::durationToNanoseconds() added. Translates event duration in timestamp (cycles) into nanoseconds.

Added SnippetProfileZone to show how to retrieve profiling information.

Added SnippetCustomJoint to better illustrate custom joint implementation, and removed SnippetExtension.

Added SnippetStepper to demonstrate kinematic updates while substepping with tasks.

Fixed: Significant revision of the user’s guide. Both structure and most content have been modified.

Both structure and most content have been modified. PxTask::runProfiled() now takes threadId as a parameter.

The static pruner now issues a performance warning in debug and checked configurations when a tree rebuild occurs and the tree is not empty.

PxSceneDesc::staticStructure now defaults to PxPruningStructure::eDYNAMIC_AABB_TREE.

Linux: Switched to shared libraries.

Profile zone event names changed to match function calls.

Overlapping read/write errors will now issue a PxErrorCode::eINVALID_OPERATION rather than PxErrorCode::eDEBUG_INFO.

Improved SnippetToleranceScale to better demonstrate the intended use case.

Increased 126 characters limit for warnings on unix platforms, 1k limit on all platforms.

PhysXCommon dll load within PhysX dll now respects dll name. Please see the manual’s PhysXCommon DLL load section.

Fixed search function of user’s guide.

Foundation math classes now have in-place arithmetic operators (+= etc).

Deprecated: Indexing operators taking signed integers in PxVec3, PxVec4, PxMat33, PxMat44, PxStrideIterator have been deprecated.

RIGID BODIES



Fixed: A minor bug in contact generation between capsules and triangle meshes has been fixed, reducing the amount of tunneling cases when CCD is not used.

Discrete contact reports are no longer produced for pairs without PxPairFlag::eDETECT_DISCRETE_CONTACT raised in the filter shader. This change potentially improves performance when using specific shapes for CCD-only collision, which would have previously generated discrtete contacts and then ignored them in the solver.

Trigger reports are no longer produced for pairs without PxPairFlag::eDETECT_DISCRETE_CONTACT raised in the filter shader. PxPairFlag::eTRIGGER_DEFAULT has been modified to include the PxPairFlag::eDETECT_DISCRETE_CONTACT flag.

An incorrect PX_DEPRECATED annotation on the default constructor for PxD6JointDrive has been removed.

PxRigidDynamic::getKinematicTarget() returned a wrong transform if the actor center of mass pose was different from the actor global pose.

Switching a PxRigidDynamic from dynamic to kinematic did not properly suppress existing pairs which turned into kinematic-kinematic or kinematic-static pairs.

PxRigidDynamic::isSleeping() did not return the correct value on the frame the object got inserted if PxScene::addActors() was used and if the object was awake.

PxSceneFlag::eDISABLE_CONTACT_CACHE now correctly works on PS3/SPU.

If an object was added to the scene, put asleep and had overlap with another sleeping object then contact points for that pair might not have been reported once the object woke up.

Potential crash when calling PxScene::resetFiltering() mulitple times for the same actor while the simulation was running has been fixed.

Potential crash when using PxScene::resetFiltering() with shapes that were just added while the simulation was running has been fixed.

A crash in MBP when deleting an object that just went out of broad-phase bounds has been fixed.

A new drive mode has been added to drive articulation joints using rotation vectors.

In contact and trigger reports, the shape references in PxTriggerPair and PxContactPair might not have been properly marked as removed shapes if the removal took place while the simulation was running.

PxPairFlag::eSOLVE_CONTACT is now properly observed if the flag is not set on a contacting pair. A consequence of this fix is that sleeping actors will no longer be woken up due to contact or lost contact with awake actors if PxPairFlag::eSOLVE_CONTACT is not set for the pair.

A memory leak with buffered shape and actor removal has been fixed. The memory leak occurred when the release of an actor’s shapes was followed by the release of the actor, all in-between simulate() and fetchResults().

A bug was fixed which caused incorrect force reports to sometimes be reported.

Fixed a bug where incorrect normals were reported when using PCM contact gen.

Fixed some issues with scaled convex hulls in the PCM contact gen code path.

The accuracy of capsule collision code has been improved.

An isValid() method has been added to constraints, that is satisfied if and only if at least one actor is a dynamic body or articulation link.

A check has been added to prevent constraint construction or modification that would leave the constraint invalid.

In checked builds the PxScene methods addActor(), addActors(), addAggregate() and addCollection() will warn and return if an invalid constraint would be added to the scene.

Deprecated: The following flags have been renamed and deprecated because the name did not properly reflect the root cause. PxContactPairHeaderFlag eDELETED_ACTOR_0 (use eREMOVED_ACTOR_0 instead) eDELETED_ACTOR_1 (use eREMOVED_ACTOR_1 instead) PxContactPairFlag eDELETED_SHAPE_0 (use eREMOVED_SHAPE_0 instead) eDELETED_SHAPE_1 (use eREMOVED_SHAPE_1 instead) PxContactPairHeaderFlag eDELETED_SHAPE_TRIGGER (use eREMOVED_SHAPE_TRIGGER instead) eDELETED_SHAPE_OTHER (use eREMOVED_SHAPE_OTHER instead)



VEHICLES

Added: In profile config the functions PxVehicleUpdates, PxVehiclePostUpdates and PxVehicleSuspensionRaycasts are now tracked with profile events (provided that a PxProfileZoneManager instance was passed to PxCreatePhysics).

Fixed: In checked config PxVehicleDriveTank::allocate enforces the rule that only tanks with even numbers of wheels are legal and warns when this rule is broken.

In checked config PxVehicleDrive4W::allocate enforces the rule that only vehicles with 4 wheels or more are legal and warns when this rule is broken.

PxWheelQueryResult::localPose was incorrectly only set when the vehicle had a corresponding PxShape, as described by PxVehicleWheelsSimData::setWheelShapeMapping. The localPose is now properly set independent of the mapping between wheel and shape.

Wheels resting on moving actors now properly observe the relative speed of the two actors when their relative speed is small. This fixes a bug where at small relative speeds the velocity of the other actor was assumed to be zero.

RepX serialization failed to serialize PxVehicleWheelsSimData::setMinLongSlipDenominator, PxVehicleWheelsSimData::setSubStepCount, PxVehicleWheelsSimData::disableWheel, PxVehicleWheelsSimData::enableWheel and the number of entries in the engine torque curve. These have now been fixed.

PxVehicleConcreteType used for vehicle serialization is now in the public API and has been moved to PxVehicleSDK.h

Very small longitudinal and lateral slip angles could lead to numerical instabilities in some circumstances. A threshold has been introduced to reject very small slip angles by setting them to zero when they are below the threshold.

Vehicles now account for rigid bodies that have been given a zero inertia component in order to lock rotation around the corresponding axis.

Fixed a bug where the sticky wheel constraints sometimes didn’t function correctly.

CLOTH

Fixed: The version number written to the fabric stream changed from PX_PHYSICS_VERSION to 1. A fabric can be created from streams written with version 3.3.0 and later until the stream format changes. Previously, the version of the producer and the consumer of the stream needed to match.

GPU cloth friction against convexes has been fixed.

A crash resulting from deleting a shape in proximity of a cloth with scene collision enabled has been fixed.

SCENE QUERIES

Fixed: PxMeshQuery::sweep now respects PxHitFlag::eMESH_BOTH_SIDES, and supports double-sided input triangles.

PxRigidBodyExt::linearSweepSingle and PxRigidBodyExt::linearSweepMultiple now correctly use query filter data instead of simulation filter data if filter data is not provided.

The spec for raycasts whose origin is located inside a solid object (sphere, box, capsule, convex) has changed back to what it was in 3.3.0. It was accidentally changed in 3.3.1. See the manual for details.

Convex sweeps against heightfields worked only when the heightfield had the identity transform. This has now been fixed to support arbitrary transforms again.

COOKING

Added: Using PxMeshPreprocessingFlag::eFORCE_32BIT_INDICES will always cook meshes with 32-bit triangle indices.

Fixed: Convex hull cooking fix. Some input points could be ignored during cooking, fixed.

Inserted triangle meshes now respect 16 bit indices flag.

GEOMETRY

Fixed: PxHeightFieldDesc::thickness is now limited to [-PX_MAX_BOUNDS_EXTENTS, PX_MAX_BOUNDS_EXTENTS range]. (Previously unbounded).

PARTICLES

Fixed: Setting PxParticleReadDataFlag::eREST_OFFSET_BUFFER on a PxParticleBase instance that was not created with the per particle rest offset option (see PxPhysics::createParticleSystem, PxPhysics::createParticleFluid and PxParticleBaseFlag::ePER_PARTICLE_REST_OFFSET) is not supported. The unsupported configuration may have resulted in crashes. The SDK now rejects this configuration on calling PxParticleBase::setParticleBaseFlag and issues an appropriate warning to the error stream.

Performance improvements on Kepler and above GPUs running SPH.

In rare cases particle systems could access released memory when all interactions with a rigid body shape were lost.

SERIALIZATION

Changed: PxBinaryConverter::convert potentially failed in checked mode with allocators that don’t set 0xcd pattern. This has been fixed now.

Downloads

PhysX SDK 3.3.2 can be downloaded at GameWorks Download Center (registration guide).