General
- Note: PS3 platform specific changes can be found in the PS3 readme file.
- Quaternions passed through the API are now considered valid if their magnitude is between 0.99 and 1.01.
- Fixed crash when running out of memory on creation of a triangle mesh.
- For applications using floating point exceptions, the SDK will now mask or avoid exceptions arising from invalid floating point operations (inexact and underflow exceptions may still be generated).
- Fixed a bug with recursive use of the PxScene read/write lock.
- Fixed a shutdown bug with very short lived threads on Linux platforms.
- PhysX version number in error messages now printed in hex for easier reading.
Broad Phase
- Fixed a broad phase crash bug that occurred when deleting shapes with bounds very far from the origin.
Collision Detection
- Documentation of limits of PxShape counts has been added for affected platforms.
- Made kinematics interact better with CCD.
- Adding support for disabled contact response in CCD by respecting the dominance setting. In this case, CCD will emit events but will not alter the motion of the bodies.
- Fixed potential crash in eENABLE_PCM codepath.
Rigid Bodies
- Fixed bug in force based contact reports. An assert could occur when PxPairFlag::eNOTIFY_THRESHOLD_FORCE_PERSISTS was set and PxPairFlag::eNOTIFY_THRESHOLD_FORCE_FOUND was not set.
- Twist Limit range is documented for revolute and D6 joints, and validated.
- Reduced the number of SDK allocations when using CCD.
Scene Queries
- Raycasts against heighfields now return correct actual mesh index, which can be used for getTriangle().
- Fixed bug that caused scene queries to miss hits for static rigid bodies that got moved around (after having been added to the scene).
- Fixed rebuilding the dynamic structure properly when used for static rigid bodies.
- Fixed a rare crash in heightfield raycast code.
Character controller
- A new runtime tessellation feature has been added, that can help reducing FPU accuracy issues in the sweep tests.
Convex hulls
- Zero-sized convex hull data double delete detection fix.
Vehicles
- Vehicles with rigid body actors that are asleep and also have no acceleration or steer inputs are treated as though they are asleep too; that is, they are bypassed completely in the PxVehicleUpdates function. Vehicles with sleeping rigid body actors but with non-zero acceleration or steer inputs are processed as normal in PxVehicleUpdates and will automatically have their rigid body actor woken up.
- New function PxVehicleSetUpdateMode to allow PxVehicleUpdates to select between applying accelerations to vehicle rigid bodies or immediate updating of their velocity.
Particles
- Fixed a non-deterministic crash appearing with rigid bodies using CCD and gpu particles in the same scene.
Physx Visual Debugger
- Material release events are now correctly sent to PVD.
RepX
- Add more RepX class information in PhysXAPI document.
Runtime
- Apple iOS
- Apple Mac OS X
- Google Android (version 2.2 or later for SDK, 2.3 or later required for samples)
- Linux (tested on Ubuntu)
- Microsoft Windows XP or later (NVIDIA Driver ver 295.73 or later is required for GPU acceleration)
- Microsoft Windows RT (formerly known as Windows on ARM) (SDK only, no samples yet)
- Microsoft XBox 360
- Sony Playstation 3
Development
- Microsoft Windows XP or later
- Microsoft Visual Studio 2008, 2010
- Xcode 4.5
Unchanged from from 3.2.2.
General
- Note: PS3 platform specific changes can be found in the PS3 readme file.
- Added Microsoft Windows RT (formerly known as Windows on ARM) support.
- Suspended Sony Playstation Vita support.
- PxScene now exposes methods to make multithreaded sharing of scenes easier, see PxSceneFlags::eREQUIRE_RW_LOCK for details.
- Enabled Win64 DEBUG build to use SIMD enabled code path.
- Fixed bug in quaternion to axis/angle routine which failed on negative w values.
- Fixed crash when using ConvX on a PxCollection with external references.
- Fixed a spurious overlapping read/write error report when using simulation call backs in checked builds.
- The bounce threshold velocity can be set at run-time with PxScene::setBounceThresholdVelocity. Likewise, it can be queried with PxScene::getBounceThresholdVelocity
- Fixed return value of Ps::atomicExchange for POSIX based platforms: Linux, Android, IOS and OSX
- PxGeometryQuery::mtd() has been added, to compute the Minimum Translational Distance between geometry objects.
Broad Phase
- Fixed a broad phase crash bug.
Collision Detection
- Collision detection now more robust when confronted with ill-conditioned scenarios.
- Fixed crash when SDK is unable to create more contact pairs. Now a warning is emitted and the contacts are ignored.
Rigid Bodies
- Improved the numerical stability of articulations.
- The target pose of a kinematically controlled dynamic actor can now get extracted through PxRigidDynamic::getKinematicTarget().
- The new flag PxRigidDynamicFlag::eUSE_KINEMATIC_TARGET_FOR_SCENE_QUERIES makes scene queries use the target pose of a kinematically controlled dynamic actor instead of the actual pose.
- Fixed PxConstraintFlag::eVISUALIZATION having no effect.
- Fixed bug that caused sleep/wake-up notification events to get lost.
- Fixed a bug where sleeping objects were not waking up properly.
- Fixed potential assert when switching a rigid body between kinematic and dynamic with contact reports enabled.
- Fixed a bug where CCD didn't consider the scaling transform for triangle meshes.
- Fixed a potential crash bug when PxConstraintFlag::ePROJECTION gets raised after a joint (that connects to other projecting joints) has been created.
- Fixed a bug that resulted in joint breakage being reported every frame for any broken joint
- Added PxArticulationDriveCache for applying an impulse to an entire articulation
- fixed various crash bugs when sleeping articulations were removed from the scene and re-added
GPU Physics
- Fixed a possible out of bounds array access in GPU particle collision code.
- Updated the GPU PhysX Visual Indicator to allow APEX to hook into it.
- Fixed sample particles crash when there is a cuda kernel error.
- Upgraded GPU tech to CUDA 4.2.
Scene Queries
- PxSceneQueryHit::faceIndex is now filled in for sweeps against convex meshes.
- Added support for sphere and capsule shaped heightfield overlap queries.
- Added an inflation parameter to all sweep queries in PxGeometryQuery, PxBatchQuery, and PxScene. This can be used to maintain a minimum distance between objects when moving them using sweeps.
- Made sure that raycast multiple will include the closest triangle in the results even if the output cannot hold all the triangles that are hit.
- Fixed swept sphere against capsule not properly testing for initial overlap.
- Fixed the normal vector returned from sweeps being sometimes negated.
- Fixed a scenario where raycasting could miss an actor after the user has moved it using setGlobalPose().
- Fixed swept convex against plane sometimes reporting false hits
- Fixed swept/overlap/raycast with convexes that don't have identity scale rotation.
- Fixed a culling bug for box-triangle mesh sweep.
Convex hulls
- Convex hull is rejected if it has less than 4 polygons.
- Additional convex hull check has been added to detect open volumes.
Triangle meshes
- Added triangle mesh flags for 16bit indices and adjacency information.
- Fixed adjacency information order for getTriangle with triangle meshes to respect the vertex order.
HeightFields
- Fixed bug where capsules would bounce as they roll across heightfield edges.
- Fixed bug where spheres would bounce as they roll across heightfield vertices.
- Added adjacency information for getTriangle with height fields.
Particles
- Fixed triangle mesh shapes with ePARTICLE_DRAIN colliding with particles.
- Fixed crash with GPU particles when a lot of grid cells get occupied and vacated within one time step.
Character Controller
- The PxControllerBehaviorFlag::eCCT_USER_DEFINED_RIDE flag has been added.
- Fixed character controller not walking up steps properly if they are not exactly 90 degrees vertical.
- Fixed a bug where the character controller was not able to move up slopes when using a small step offset setting.
- Fixed a bug where the character controller could rise off the ground when blocked by a step.
- Fixed a bug where the character controller could rise off the ground when hitting another character controller.
- Fixed a bug where releasing a shape of a touching actor and then releasing the character controller would crash. Releasing shapes of actors in touch may still lead to crashes in other situations. PxController::invalidateCache() can be used to work around these situations.
CCD
- Fixed culling bug in CCD sweeps with meshes with transforms that caused contacts to be missed
Vehicles
- The vehicle sdk used to make the assumption that wheels 0 and 1 (the front wheels) of a PxVehicleDrive4W responded positively to the input steering wheel angle, while wheels 2 and 3 (the rear wheels) responded in the opposite direction to that of the input steering wheel angle. A consequence of this assumed behaviour was the restriction that PxVehicleWheelData::mMaxSteer was limited to positive values. This restriction has now been relaxed with the caveat that PxVehicleWheelData::mMaxSteer must be in range (-Pi/2, Pi/2). It is now possible to turn each wheel positively or negatively relative to the input steering wheel angle by choosing positive or negative values for PxVehicleWheelData::mMaxSteer. Ackermann steer correction might result in the front and rear wheels competing against each other if the rear and front all steer in the same direction relative to the input steering wheel angle. If this is the case it will be necessary to set the Ackermann accuracy to zero.
- It is now possible to set the engine rotation speed (PxVehicleDriveDynData::setEngineRotationSpeed), the rotation speed of each wheel (PxVehicleWheelsDynData::setWheelRotationSpeed) and the rotation angle of each wheel (PxVehicleWheelsDynData::setWheelRotationAngle). The default values for each of these properties remains zero.
- Wheel contact reporting has been improved with the addition of a number of query functions to the PxVehicleWheelsDynData class. These are getTireDrivableSurfaceContactPoint, getTireDrivableSurfaceContactNormal, getTireLongitudinalDir, getTireLateralDir, getSuspensionForce, getTireDrivableSurfaceShape.
- It is now possible to store a userData pointer per wheel. This allows, for example, each wheel to be associated with a game object. The relevant functions are PxVehicleWheelsDynData::setUserData and PxVehicleWheelsDynData::getUserData.
- The default behavior of PxVehicleWheels::setWheelShapeMapping has changed. Previously, default values were automatically assigned to each wheel at construction so that the ith wheel was mapped to the ith body shape. This, however, made the assumption that there was a wheel shape for each wheel, which is not always true. As a consequence, the default value is now -1, meaning any mapping between body shape and wheel has to be explictily made by calling setWheelShapeMapping.
- It is now possible to query the mapping between wheel and body shape with PxVehicleWheels::getWheelShapeMapping.
- It is now possible to query the tire shader data that has been applied to each wheel with PxVehicleWheelsDynData::getTireForceShaderData.
- The helper function PxVehicleComputeSprungMasses has been added to aid the setup of the suspension sprung masses from the rigid body centre of mass and wheel center coordinates.
- The scene query filter data applied to the suspension raycasts was previously taken from the filter data of the associated body shape. This makes the assumption of a body shape per wheel, which is not always true. As a consequence, the filter data must be explictly set per wheel by calling PxVehicleWheels::setSceneQueryFilterData. The filter data can be queried with PxVehicleWheels::getSceneQueryFilterData.
- Sub-stepping of the vehicle update can now be applied per vehicle with PxVehicleWheelsSimData::setSubStepCount.
- PxVehicleDrivableSurfaceToTireFrictionPairs has been modified so that the dictionary of material pointers can be updated without the necessity of further allocation. The create function has been replaced with separate allocate and setup functions.
- A new vehicle type PxVehicleNoDrive has been added to provide a close approximation to backwards compatibility with the api of the 2.8.x NxWheelShape.
Visual Remote Debugger
- Added PVD compatible profile zones for batched queries.
- Added the ability to capture and inspect scene queries in PVD.
- SDK will now flush the pvd connection stream immediately after cloth or cloth fabric is created or released.
- Fixed the PVD support for articulations.
- Fixed PVD rendering wrong constraint limits.
Documentation
- Wrong statement in PxRigidStatic::release() has been corrected. Static rigid bodies do wake up touching dynamic rigid bodies on release.
- Wrong statement in PxShape::setFlag() has been corrected. It is a valid operation to clear all flags.
- Retroactively added more detail about changes to 3.2.1 release notes below.
Runtime
- Apple iOS
- Apple Mac OS X
- Google Android (version 2.2 or later for SDK, 2.3 or later required for samples)
- Linux (tested on Ubuntu)
- Microsoft Windows XP or later (NVIDIA Driver ver 295.73 or later is required for GPU acceleration)
- Microsoft Windows RT (formerly known as Windows on ARM) (SDK only, no samples yet)
- Microsoft XBox 360
- Sony Playstation 3
Development
- Microsoft Windows XP or later
- Microsoft Visual Studio 2008, 2010
- Xcode 4.2
General
- Memory leaks might get reported when using the debug versions of malloc and free together with the debug version of PhysX on Microsoft Windows platforms with Visual Studio 2010. This is caused by a bug in the Visual Studio 2010 runtime libraries. If such a leak appears immediately after releasing PhysX and all its components, please contact us for information about workarounds.
- Use of articulations may require an increase of 64K in the stack size for threads making API calls and engine worker threads
Please also see the previous lists from 3.2.1 and earlier.
General
- Note: PS3 platform specific changes can be found in the PS3 readme file.
- Added GRB hooks for APEX 1.2.1.
- Some incorrect usages of __restrict have been fixed.
- A crash when the user's code had FPU exceptions enabled has been fixed.
- A rare crash on Win64 has been fixed.
- Removed no longer needed RapidXML library from distribution.
- Binary serialization can now save the names of actors and shapes.
- Removed a RepXUtility.h reinterpret_cast compile warning that happened on some platforms.
- Fixed a spurious overlapping read/write error report when using simulation call backs in checked builds.
- Fixed a bug in PxBinaryConverter when processing PxConvexMesh and PxMaterial assets.
- Fixed bug in implementations of array accessors (PxPhysics::getScenes(), GuMeshFactory::getTriangleMeshes(), GuMeshFactory::getConvexMeshes(), GuMeshFactory::getHeightFields(), PxAggregate::getActors(), PxScene::getAggregates(), PxScene::getArticulations(), PxScene::getConstraints() ) when startIndex > bufferSize.
- Reduced the number of libraries provided for game consoles. The following core libraries are included in the PhysX3 library and are not available separately anymore: LowLevel, LowLevelCloth, PhysX3Common, PhysXProfileSDK, PhysXVisualDebuggerSDK, PvdRuntime, PxTask, SceneQuery, SimulationController.
Documentation
- Clarified documentation regarding use of eSEND_SLEEP_NOTIFIES flag.
- Clarified documentation regarding using different CRT libraries.
- Removed some confusing statements about meta data from the documentation.
- Updated PsPool, PsSort so they can use the user allocator.
Mesh Cooking
- A warning message about negative volumes in the convex mesh cooker could cause a crash.
- Fixed failure to create valid convex hull in cooking when using PxConvexFlag::eINFLATE_CONVEX.
- The convex mesh cooking has been made more robust and properly outputs some error messages that were previously missing.
- Fixed crash bug in x64 version of ClothEdgeQuadifier.
- Adjacency information option for TriangleMeshes. This is controlled using the PxCookingParams::buildTriangleAdjacencies flag, and returned if available by PxMeshQuery::getTriangle().
Broad Phase
- The sdk gracefully handles the case of more than 65536 broadphase pairs and reports a warning that some contacts will be dropped in the event that this limit is exceeded. This affects all platforms except win32/win64/linux/linux64, which support a maximum number of 4294967296 pairs.
Collision Detection
- Fixed a memory corruption bug in heightfield code.
- Fixed a bug in sphere vs mesh contact generation that could result in bad normals.
- Added a flag to enable or disable contact caching, to permit users to make a performance vs memory tradeoff.
- Fixed a crash bug in ContactReport cleanup code.
Rigid Bodies
- The simultaneous raising of both the PxShapeFlag::eSIMULATION_SHAPE and PxShapeFlag::eTRIGGER_SHAPE flags is now explicitly forbidden by the sdk. If any of the two is raised then any attempt to raise the other is rejected by the sdk and an error is passed to the error stream.
Articulations
- The API stubbed in 3.2.0 for applying an impulse to an entire articulation is now implemented.
GPU Physics
- Much more specific error messages for CUDA compute capability related failures.
- Added SM35 support for GK110 GPUs.
- The CUDA contexts provided by the gpu dispatcher can now be shared across scenes.
- Fixed a possible out of bounds array access in GPU particle collision code.
Scene Queries
- Resolved poor GJK sweep convergence.
- Batched queries accept sphere geometry for sweeps.
- Optimized performance of raycasts.
- An internal limit of 65536 objects in the scene-query subsytem has been lifted.
- Fixed a bug where raycasts that sliced through two adjoining heightfields did not return correct results.
- Fixed a crash bug in PxFindOverlapTriangleMeshUtil when doing a sphere overlap query against a heightfield.
Cloth
- PxCloth::setMotionConstraints() now works with NULL parameter.
Character Controller
- PhysX CCT code no longer sets PxShape::userData.
- Intersection of pairs of CCTs now uses the supplied filter data and the supplied callback prefilter. The callback postfilter is not yet hooked up.
- A bug has been fixed whereby the filterData was ignored in one of the scene queries initiated by the PhysX CCT code.
- Introduced a more automatic mechanism for invelidating the character controller's scene cache. As part of this, PxController::reportSceneChanged() was replaced with PxController::invalidateCache().
- Added helper functions PxController::get/setFootPosition() to let user specify the bottom point of the character controller, rather than the center.
- A new helper function, PxController::resize(), has been added to facilitate character controller resizing.
- PxControllerBehaviorFlag::eCCT_CAN_RIDE_ON_OBJECT is not the default behavior anymore.
- The slope limit is only observed when walking on static convex meshes, static triangle meshes, static boxes and static heightfields. The slope limit is not observed when walking on dynamic or kinematic rigid bodies or static capsules or static spheres. This partially fixes a bug where the slope limit was inadvertently considered for shapes attached to dynamic rigid bodies and inadvertently ignored for boxes attached to static shapes.
Vehicles
- The vehicle sdk now reports an error to the error stream and exits from PxVehicleUpates if PxInitVehicleSdk has not been called in advance. This avoids a divide-by-zero error that can arise if the vehicle sdk has not been initialised correctly.
Visual Debugger
- Releasing of cloth fabrics is reported to the VRD.
- Ext::Joint::setActors() call now reported to PVD.
- Fixed crash bug when removing an aggregate containing a PxArticulation, while PVD is running.
Unchanged from from 3.2.
Unchanged from from 3.2.
General
- Added migration guide page from 3.1 to 3.2 to user's guide.
- Three new sample applications: SampleCharacterCloth (character with cloth cape and cloth flags), SampleBridges (character controller walking on dynamic bridges and moving platforms), SampleCustomGravity (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
- 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.
- contact data block allocation now provides statistics on usage and max usage
- On all platforms except PS3, contact data blocks can be progressively allocated
- PxExtensionVisualDebugger has been renamed to PxVisualDebuggerExt, PxExtensionsConnectionType renamed to PxVisualDebuggerConnectionFlag
- Default implementations of memory and file streams added in PxDefaultStreams.h
- Renamed PxPhysics::getMetaData() to ::PxGetSDKMetaData().
- Scene::simulate() now takes a memory block which is used for allocation of temporary data during simulation
- On Windows, CudaContextManagerDesc support appGUID now. It only works on release build. If your application employs PhysX modules that use CUDA you need to use a GUID so that patches for new architectures can be released for your game.You can obtain a GUID for your application from Nvidia.
Rigid Bodies
- Introduced a new contact generation mode, see eENABLE_PCM. Note that this is an experimental feature that still shows simulation artifacts in some scenarios.
- Introduced two new friction simulation modes, see eENABLE_ONE_DIRECTIONAL_FRICTION and eENABLE_TWO_DIRECTIONAL_FRICTION.
- 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.)
- The following PxPairFlags have been removed eNOTIFY_CONTACT_FORCES, eNOTIFY_CONTACT_FORCE_PER_POINT, eNOTIFY_CONTACT_FEATURE_INDICES_PER_POINT. 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.
- 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.
- added PxJoint::getConstraint() to access the underlying constraint object, from which the constraint force can be read
- 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.
- Added support for kinematic triangle meshes, planes and heighfields.
Scene queries
- Dynamic AABBTree has been set as the default dynamic pruning structure.
Particles
- 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.
Cloth
- 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
Vehicles
- 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.
Serialization
- Changed the functions PxPhysics::releaseUserReferences(), releaseCollection(), addCollection() and releaseCollected() to now take a reference rather than a pointer.
- Platform conversion for serialized data has been moved from the ConvX command line tool to the PxBinaryConverter interface in the cooking library.
- Changed some functions in RepXUtility.h and RepX.h to take a reference rather than a pointer.
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.
- The ConvX tool has been removed.
- Removed empty default implementations of functions in PxSimulationEventCallback for consistency and because it can create bugs in user code if function prototypes change between releases. Users must now supply (eventually blank) implementations for all functions.
- Octree and quadtree pruning structures have been removed.
- PxScene.overlapAny has been removed. overlapMultiple with maxNumHits 1 does the same.
Fixed Bugs
- PxScene::getActors() might not work properly when the startIndex parameter is used.
- Improved the doc-comment of PxConvexMesh::getMassInformation().
- RepX instantiation can lose all internal references when addOriginalIdsToObjectMap is false.
- PxSetGroup crashed when used on a compound.
- PhysXCommon.dll can be delay loaded.
- ContactReportStream can now handle huge report numbers and size (resize-able flag) can be set in PxSceneDesc.h.
- Fixed assert in sweep tests.
- Concurrent read/write operations during a PxScene::fetchResults() call were not detected properly and no warning message got sent in checked builds. Forbidden write operations during callbacks triggered by PxScene::fetchResults() (contact/trigger reports etc.) were not covered either.
- Fixed crash bug that occurred during collision detection when more than 16K of contact data was generated. Contacts that generate more than 16K of contact data are now fully supported.
- Fixed crash bug when PhysX Visual Debugger is connected and an object gets modified and then released while the simulation is running.
Runtime
- Apple iOS
- Apple Mac OS X
- Google Android (version 2.2 or later for SDK, 2.3 or later required for samples)
- Linux (tested on Ubuntu)
- Microsoft Windows XP or later (NVIDIA Driver ver 295.73 or later is required for GPU acceleration)
- Microsoft XBox 360
- Sony Playstation 3
- Sony Playstation Vita
Development
- Microsoft Windows XP or later
- Microsoft Visual Studio 2008, 2010
- Xcode 4.2
Binary Serialization
- Meta data generation for PxParticleFluid and PxParticleSystem serializables currently fails.
- For collections that contain jointed rigid bodies all corresponding joints need to be added as well, otherwise deserialization will fail.
Rigid Body Simulation
- Capsules and spheres can struggle to come to rest on even perfectly flat surfaces. To ensure these objects come to rest, it is necessary to increase angular damping on rigid bodies made of these shapes. In addition, flagging the capsule/sphere's material with physx::PxMaterialFlag::eDISABLE_STRONG_FRICTION can help bring these shapes to rest.
Character Cloth Sample
- An NVIDIA GPU with Compute Capability 2.0 or higher is required for GPU accelerated simulation in the SampleCharacterCloth sample, if no such device is present then simulation will be performed on the CPU.
- Note that this is not a general SDK requirement, the clothing SDK supports cards with Compute Capability < 2.0 but with limitations on mesh size.
Character Controller
- Releasing shapes of actors that are in touch with a character controller may lead to crashes. Releasing whole actors doesn't lead to the same problems. PxController::invalidateCache() can be used to work around these issues.
Please also see the previous lists from 3.1.1 and earlier.
General
- Fixed wrong write/read clash checks.
- Removed some compiler warnings from public header files.
- Fixed PxScene::getActors() returning wrong actors when a start index is specified.
Rigid Bodies
- Fixed broken joint projection in connection with kinematics.
- Fixed inaccurate normals returned from height field scene queries.
- Fixed a crash when the geometry of a shape changes and then the actor gets removed from the scene while the simulation is running.
- Fixed a crash when re-adding scene-query shape actors to scene.
Particles
- Fixed crash bug in particle simulation code on GPU.
Cloth
- Fixed a crash when GPU fabrics are shared between cloths.
- Fixed a hang in cloth fiber cooker when handed non-manifold geometry.
Samples
- Fixed SampleVehicles doing an invalid write.
- Fixed SampleVehicle jitter in profile build.
Unchanged from from 3.1.1.
Unchanged from from 3.1.
General
- Ported samples to Linux.
- Fixed crash bug in ConvX.
- Fixed crash bug in the allocator code of PXC_NP_MEM_BLOCK_EXTENSIBLE.
- Fixed crash bug when connected to PVD on various platforms.
- Fixed bogus asserts due to overly strict validation of quaternions.
- Fixed one frame lag in PVD scene statistics.
- Fixed a number of OSX PVD sockets issues.
- Fixed SampleSubmarine code that violated concurrent read/writes restriction.
- Added warnings about read/write hazards to the checked build.
- Fixed RepX not reading joint properties.
- Fixed support for concurrent scene queries.
- Fixed PhysX GPU Visual Indicator support.
- Made it more clear in documentation that simulate(0) is not allowed.
Rigid Bodies
- eNOTIFY_TOUCH_LOST trigger events do now get reported if one of the objects in contact gets deleted (see documentation of PxTriggerPair for details).
- Dynamic rigid bodies with trigger shapes only do not wake up other touching bodies anymore.
- Added lost touch events for trigger reports when objects get deleted.
- Fixed dynamic triggers waking up actors they are triggered by.
- Removed an inapropriate assert from articulation code.
- Fixed problem with the angular momentum conservation of articulations.
- Fixed articulation sleep problems.
- Fixed a linear velocity related bug in CCD.
- Fixed crash bug CCD.
- Optimized performance of joint information being sent to PVD.
Runtime
- Microsoft Windows XP or later
- Microsoft XBox 360
- Sony Playstation 3
- Android 2.2 or later for SDK, 2.3 or later required for samples
- Linux (tested on Ubuntu)
- Mac OS X
Development
- Microsoft Windows XP or later
- Microsoft Visual Studio 2008, 2010
- Xcode 3
Unchanged from from 3.1.
General
- VC10 support has been introduced.
- VC8 support has been discontinued.
- Namespaces cleaned up.
- Extensions, Character Controller and Vehicle source code made available in binary distribution.
- Added x86,x64 suffix to PxTaskCUDA.dll
- Removed boolean return value from PxScene::addActor(...), and similar API calls.
- Added MacOS, Android and Linux to the list of supported platforms. See Supported Platforms below for details.
- Upgraded GPU tech to CUDA 4.
- Cleaned up a large number of warnings at C++ warning level 4, and set SDK to compile with warnings as errors.
- Removed individual sample executables in favor of one Samples executable from PC and console builds.
- Fixed alpha blending in samples.
- Simplified some code in samples.
- Improved ambient lighting in samples.
- Made samples work with older graphics cards.
- Improved and added more content the user's guide.
- No longer passing NULL pointers to user allocator to deallocate.
- Various improvements to Foundation and classes shared with APEX.
Rigid Bodies
- Rigid Body: High performance alternative convex narrow phase code available to source licensees. See PERSISTENT_CONTACT_MANIFOLD in the code.
- Significant advancements in the continuous collision detection algorithm.
- Optimizations and robustness improvements for articulations.
- Added some helper code to the API.
- Added sleep code for articulations.
- Added support for vehicles with more than one chassis shape.
- Solver iteration count for articulations.
- Articulation limit padding configurable.
- The reference count of meshes does now take the application's reference into acount as well and thus has increased by 1 (it used to count the number of objects referencing the mesh only). Note that a mesh does only get destroyed and removed from the list of meshes once the reference count reaches 0.
- Fixed autowake parameter sometimes being ignored.
- Constraint solver optimizations.
- Improved behavior of character controller on steep slopes.
- Binary serialization now saves names.
- Removed some descriptors from API.
- Removed the angular velocity term in the joint positional drive error formula.
- Fixed bug in capsule sweep versus mesh.
- Fixed a crash bug in the tire model.
- Fixed crashing of single link articulations.
- Fixed bug related to removing elements of an aggregate.
- Fixed swapped wheel graphs in sample vehicle.
- Fixed some slow moving bodies falling asleep in midair.
- Fixed missing collisions after a call to resetFiltering.
- Fixed broken autowake option in setAngularVelocity.
- Fixed D6 joint linear limits being uninitialized.
- A large number of misc. bug fixes and optimizations.
- Improved documentation and error messages associated with running out of narrow phase buffer blocks.
- Added articulation documentation.
- Expanded manual sections on joints.
- Improved reference doc for PxSceneQueryHitType.
- Added reference doc for PxSerializable.
Particles
- Particle index allocation removed from SDK. Added index allocation pool to extensions.
- Replaced GPU specific side band API PxPhysicsGpu and PxPhysics::getPhysicsGpu() with PxParticleGpu.
- Memory optimizations on all platforms and options to reduce memory usage according to use case with new per particle system flags:
- PxParticleBaseFlag::eCOLLISION_WITH_DYNAMIC_ACTORS
- PxParticleBaseFlag::ePER_PARTICLE_COLLISION_CACHE_HINT
- Fixed rare crash appearing with multi-threaded non-GPU particle systems and rigid bodies.
- Fixed particles leaking through triangle mesh geometry on GPU.
- Fixed fast particles tunneling through scene geometry in some cases.
- Fixed erroneous collision of particles with teleporting rigid shapes (setGlobalPose).
- Fixed particle sample behavior with some older GPU models.
- Fixed a GPU particle crash bug.
Cloth
- A new solution for simulating cloth and clothing.
Deformables
- Deformables are deprecated and will be removed in the next release. There is a new optimized solution for clothing simulation (see documentation on PxCloth for details).
Runtime
- Microsoft Windows XP or later
- Microsoft XBox 360
- Sony Playstation 3
- Android 2.2 or later for SDK, 2.3 or later required for samples
- Linux (SDK tested on Ubuntu, samples not yet ported)
- Mac OS X
Development
- Microsoft Windows XP or later
- Microsoft Visual Studio 2008, 2010
- Xcode 3
General
- Under VC10, you may get warnings due to conflicting build configuration flags. Workaround: Clear the "Inherit from parent or project defaults" flag for all projects in Project->Properties->C/C++->Command Line. We plan to fix this for the 3.1 general availability release.
Scene Query
- Querying the scene (e.g. using raycastSingle()) from multiple threads simultaneously is not safe.
Cloth
- Even simple parameters of a PxCloth can not be set or accessed while the simulation is running.
RepX
- RepX fails to load elements of aggregate joint parameters (PxD6JointDrive etc.)
Please also see the previous lists from 3.0.
General
This third major version of the SDK is a significant rewrite of the entire technology. We did away with a large amount of legacy clutter and replaced them with a wealth of new features and improvements. Because even the API changes are so significant, it is easier to see it as a whole new product rather than a long list of changes.What we removed:
- The dedicated NVIDIA PhysX PPU hardware is not supported any more.
- Scene compartments are not supported anymore. All created physical objects are now part of one and the same compartment.
- Force fields are not part of the NVIDIA PhysX SDK anymore.
- Splitting a simulation timestep into multiple substeps is not a functionality of the NVIDIA PhysX SDK any longer and has to be implemented above the SDK.
Key new features:
- Articulations: A way to create very stiff joint assemblies.
- Serialization: Save objects in a binary format and load them back quickly!
- Broad Phase Clustering: Put objects that belong together into a single broadphase volume.
- Driverless Model: No need to worry about system software on PC anymore.
- Dynamic Character Controller: A character controller that can robustly walk on dynamic objects.
- Vehicle Library: A toolkit to make vehicles, including an all new tire model.
- Non-Simulation Objects: A staging are outside of the simulation from where you can add things into the simulation at high speed.
- Simulation Task Manager: Take control of the management of simulation tasks.
- Stable Depenetration: Large penetrations can be gracefully recovered from.
- Double Buffering: You can read from and write to the simulated objects while the simulation is running on another thread.
- Mesh Scaling: Create different nonuniformly scaled instances of your meshes and convexes without duplicating the memory.
- Distance Based Collision Detection: Have the simulation create contacts before objects touch, and do away with unsightly overlaps.
- Fast Continuous Collision Detection: Have small and high speed objects collide correctly without sacrificing performance.
- Significantly increased performance and memory footprint, especially on consoles.
- Unified solver for deformables and rigid bodies for great interaction.
- Triangle collision detection with deformables.
- Support for our new Physics Visual Debugger, including integrated profiling.
Math classes
- Matrix based transforms have been replaced by quaternions.
- All angles are now expressed in radians. IN PARTICULAR the PxQuat constructor from axis and angle as well as the getAngleAxis and fromAngleAxis methods now use radians rather than degrees.
Rigid Bodies
- Capsules are now defined to extend along the x rather than the y axis.
- Triangle meshes do not support heightfield functionality anymore. Use the dedicated PxHeightField class instead.
- Dynamic triangle mesh actors are not supported any longer. However, you can decompose your mesh into convex parts and create a dynamic actor consisting of these convex parts.
- The deprecated heightfield property NxHeightFieldDesc::verticalExtent is not supported any longer. Please use the PxHeightFieldDesc::thickness parameter instead.
- NxSpringAndDamperEffector is not supported anymore. Use PxDistanceJoint instead.
- Joints are now part of the PhysX extensions library (PhysXExtensions).
- Wheel shapes have been replaced by the more flexible entity PxWheel. A default wheel implementation, encapsulating most of the old wheel functionality, can be found in the PhysX extensions library (see PxDefaultWheel).
- The NxUtilLib library has been removed. Sweep/overlap/raycast tests and other helper methods can be found in the new GeomUtils library.
- Materials can no longer be accessed through indices. Per triangle material meshes need a material table which can be specified per shape (see PxShape::setMaterials() for details).
- The default material is not available anymore.
Particle Systems, Particle Fluids
- The NxFluid class has been replaced with two classes for separation of functionality and ease of use.
- PxParticleSystem: Particles colliding against the scene.
- PxParticleFluid: Particles simulating a fluid (sph).
- Simplified parameterization for particle systems.
- Using absolute distances instead of relative multipliers to rest spacing
- Simplified sph parameters
- Unified collision parameters with deformable and rigid body features
- Creating and releasing particles is now fully controlled by the application.
- Particle lifetime management isn't provided through the SDK anymore.
- Emitters have been removed from the SDK.
- Drain shapes don't cause particles to be deleted directly, but to be flagged instead.
- Initial particle creation from the particle system descriptor isn't supported anymore.
- Particle data buffer handling has been moved to the SDK.
- Per particle collision rest offset.
- GPU accelerated particle systems.
- Application controllable mesh mirroring to device memory.
- Runtime switching between software and GPU accelerated implementation.
Runtime
- Microsoft Windows XP or and later
- Microsoft XBox360
- Sony Playstation 3
Development
- Microsoft Windows XP or and later
- Microsoft Visual Studio 2008
Rigid Bodies
- Adding or removing a PxAggregate object to the scene is not possible while the simulation is running.
Particle Systems
- Releasing the Physics SDK may result in a crash when using GPU accelerated particle systems. This can be avoided by doing the following before releasing the Physics SDK:
- Releasing the PxScene objects that contain the GPU accelerated particle systems.
- Releasing application mirrored meshes by calling PxPhysicsGpu::releaseTriangleMeshMirror(...), PxPhysicsGpu::releaseHeightFieldMirror(...) or PxPhysicsGpu::releaseConvexMeshMirror(...).
Copyright (C) 2008-2013 NVIDIA Corporation, 2701 San Thomas Expressway, Santa Clara, CA 95050 U.S.A. All rights reserved. www.nvidia.com