APEX 1.4.1 - Release Notes (APEX has been deprecated)

Note: APEX SDK has been deprecated

Installing APEX

Windows Requirements:

  1. Visual Studio 2010, 2012, 2013 or 2015.

  2. Microsoft DirectX SDK June 2010 or later (to build the Windows APEX samples)

    1. The DirectX include path should be set in Visual Studio in VC++ Directories to build the Windows samples
    2. The DirectX End-User Runtime Web Installer (dxwebsetup.exe) can be downloaded from Microsoft if the prebuilt APEX samples do not run because they cannot find the June 2010 DX runtimes.
  3. Graphics renderer must support at least OpenGL version 1.5 to run the Windows APEX samples in OpenGL mode

APEX for PhysX 3.4 Requirements

  1. PhysX SDK for 3.4 for Windows (the APEX source distribution requires the PhysX source distribution)

SDK Zip Distributions:

The source and binary distributions come in compressed zip distributions. The source distribution does not contain samples, just the core APEX SDK.

Note

To build the APEX projects, the PhysX SDK path in the nxpath.vsprops files must be modified. The UpdatePhysXPaths.vbs script is provided for this purpose. It will modify the nxpath.vsprops files under the compiler folders. Similar Android distribution setup is done by setting up Makefile without using this script. The 3.x PhysX path should contain the folder location (absolute or relative) that contains the “Include” directory.

Note

The APEX SDK source build requires the PhysX 3.4 source distribution.

New in 1.4

General

  • Refactored public API naming convensions
  • Removed global LOD support
  • Refactored APEX samples and added APEX snippets
  • Removed PhysX 2.8.4 support. Added build configuration without PhysX linking for Clothing module

Optimizations

Fixes

Known Issues

New in 1.3.3

General

  • The APEX release build configurations for x86 and x64 now also contain authoring code. On other platforms authoring is still removed for release builds.
  • Windows APEX samples now render using D3D11 by default. Use the -d3d9 command line option to render using D3D9 instead.

Optimizations

Fixes

Known Issues

  • PVD support may not be working on Android.

New in 1.3.2

General

  • Added NVTX profiling support for non-release builds. Traces can be captured using Parallel Nsight Analysis Tools. NVTX is supported only for Windows and Android.

Optimizations

  • Added ability to change render resource lock behavior or disable locking altogether, to improve performance. The setting is per module. See NxModule::setRenderLockMode and NxApexRenderLockMode.
  • Added ability to disable potentially expensive stat collection if it’s not needed. See NxApexSDK::setEnableApexStats.

Fixes

  • Fixed crash if application creates APEX SDK after already connecting to PVD.

Known Issues

  • PVD support may not be working on Android.

New in 1.3.1

General

  • Added VS2012 support for source distributions with PhysX 3.x.
  • Assertions are now enabled in the checked configuration.
  • Added NxApexActor::setEnableDebugVisualization to selectively disable debug visualization on particular actors.
  • The NxUserRenderResourceManager’s surface buffer create and release virtual methods must be implemented by the user. They are only used by particular turbulence features, so if turbulence isn’t being used the implementation can be empty.
  • Starting with NVIDIA R302 drivers, application developers can direct the Optimus driver at runtime to use the High Performance Graphics to render any application - even those applications for which there is no existing application profile. The APEX samples now makes use of this “NvOptimusEnablement” feature to enable High Performance Graphics by default.
  • Debug info added to all PS4 builds except release builds.
  • Android sample builds now generate an APK. This requires some extra defines for Java and Ant. See the Android examples section of the sample documentation for details.

Fixes

  • Fixed rare Named Resource Provider failure to find resource.
  • Using allocViewMatrix(ViewMatrixType::USER_CUSTOMIZED) now works.
  • Cleaned up several PS4 compiler warnings.

Known Issues

  • PVD support may not be working on Android.

New in 1.3

General

  • The legacy modules are all combined in one module, APEX_Legacy.
  • The particle modules are all combined in one module, APEX_Particles (with the exception of Turbulence).
  • The Wind module was removed.
  • The NxUserRenderBoneBufferDesc::maxBones member will now reflect the actual max bones specified in NxUserRenderResourceManager::getMaxBonesForMaterial(). The actual number of bones used will be sent in the NxUserRenderBoneBuffer::writeBuffer() numBones parameter. In previous APEX versions, NxUserRenderBoneBufferDesc::maxBones reflected the minimum(numBones, maxBones).
  • APEX’s output stream will automatically be sent to PVD when the application is connected to PVD.
  • The outputStream member of the NxApexSDKDesc has been removed when using PhysX 3.x. APEX will automatically use the same output stream as PhysX.

Known Issues

  • PVD support may not be working on Android.

New in 1.2.4

General

  • EditorWidgets header files added to binary distributions.
  • Added more asset previews for consistency.
  • PS3 gcc support has been deprecated in APEX 1.2.4 in favor of SNC. The gcc version is still included but not supported.
  • Fixed some allocations that were not going through the user-supplied allocator.

Known Issues

  • There are shadow and flickering issues when running the APEX samples using the DirectX 11 renderer (–d3d11).
  • Some key and button mappings in the APEX samples are incomplete on PS3 and Xbox360.
  • There may be issues connecting to PVD from consoles with the PhysX 2.8.4 build of APEX.

New in 1.2.3

General

  • NxResourceProvider is now case-insensitive by default. To get the old case-sensitive behavior, set resourceProviderIsCaseSensitive true in the NxApexSDKDesc.
  • Fixed issues with re-entrant read locks described below.
  • GPU rigid bodies are no longer supported on pre-Fermi hardware.

Known Issues

  • There are shadow and flickering issues when running the APEX samples using the DirectX 11 renderer (–d3d11).
  • Some key and button mappings in the APEX samples are incomplete on PS3 and Xbox360.
  • There may be issues connecting to PVD from consoles with the PhysX 2.8.4 build of APEX.

New in 1.2.2

General

  • APEX requires the use of the PhysX 3.x scene multiple-reader-single-writer lock to access both APEX and PhysX scene objects when using the PxSceneFlag::eREQUIRE_RW_LOCK flag. This allows the application using APEX to access PhysX objects from multiple threads. For more information, see the “Scene Locking” section of the “Data Access and Buffering” PhysX 3.x documentation. (See Known Issues for limitations when using this lock)

Known Issues

  • There are shadow and flickering issues when running the APEX samples using the DirectX 11 renderer (–d3d11).
  • As of PhysX 3.2.2 the lock offered by the PhysX scene does not support re-entrant read locks. This is currently a problem if the application attempts to use the APEX actor or asset APIs while APEX and PhysX are simulating (for instance, raycasting against an APEX Destructible actor using NxDestructibleActor::raycast). This will be addressed in a future version of APEX.
  • Some key and button mappings in the APEX samples are incomplete on PS3 and Xbox360.
  • There may be issues connecting to PVD from consoles with the PhysX 2.8.4 build of APEX.

New in 1.2.1

General

  • NxApexSphereShape getRadius/setRadius use PxF32 instead of PxVec3 to represent the radius.

Known Issues

  • Some key and button mappings in the APEX samples are incomplete on PS3 and Xbox360.
  • There may be issues connecting to PVD from consoles with the PhysX 2.8.4 build of APEX.

New in 1.2

Visual Studio 2010 Support

  • Both the APEX SDK source and sample projects are distributed solely as Visual Studio 2010 solutions

NxParameterized

  • Added AndroidARM target.
  • Better error checking in xml serializer.
  • Unified behaviour of initParamRef() and setParamRef().

Render Mesh Asset

  • Tangent support the float4 format now (making bitangents unnecessary)

APEX Force Field

  • Existing force field module renamed to field boundary.
  • New force field module which works with APEX Particles and PhysX 3.x objects.

General

  • Added an optional completionTask to NxApexScene::simulate that will be called when fetchResults is ready to be called.
  • The ‘pxtask_cuda’ DLL, which contains the CUDA Context Manager and associated CUDA PxTask functionality, was renamed ‘PhysX3Gpu’.
  • APEX no longer supports using apexuser.dll to override the file stream returned from NxApexSDK::createStream.
  • APEX stats are reported in milliseconds instead of seconds. This was a change done very late in the 1.1 product cycle, so when upgrading from an early 1.1 this is still new in 1.2.
  • NxApexScene::acquirePhysXLock() is now available so that both APEX and the application may access the PhysX 3.2 scene during simulation without performing concurrent write operations. PhysX 3.2 allows “multiple reader/single writer” access, but this has not yet been implemented within APEX.
  • NxApexScene::simulate() has a new parameter called ‘scratchMemBlock’, which may be used by PhysX 3.2 for temporary data during simulation.
  • The Wind and Explosion modules are deprecated and may be removed from a future APEX release. They do not support PhysX 3.2.
  • PS3 gcc support is deprecated in APEX PS3 source distributions. All PS3 gcc support may be removed from a future APEX release in favor of SNC.

Known Issues

  • Some key and button mappings in the APEX samples are incomplete on PS3 and Xbox360.
  • There may be issues connecting to PVD from consoles with the PhysX 2.8.4 build of APEX.

New in 1.1

NxParameterized

  • 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

Serialization

  • 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.2

  • Necessary for supporting latest hardware.

New in 1.0

Use of Cuda 3.0

  • This allows using interop

Use of a new Foundation (Px prefix)

  • No more 3x4 matrix, replaced by a true 4x4 column wise matrix.

Serialization

  • Apex 0.9 binary serialization (.aca, .pda, .arm files) are deprecated. Code to serialize assets to these old formats has been removed. Code to read these old formats is still in place but also deprecated. It will likely be removed for 1.1.
  • As a replacement we are using NxParameterized objects that can be serialized to either xml (.apx) or binary (.apb) files, where binary files can be optimized for specific platforms.
  • Renamed NxParameterized::NxSerialiser to NxParameterized::Serializer

Render mesh asset

  • The authoring pipeline was revised.
  • Each vertex buffer semantic can now use a wide range of possible formats.
  • Added compressed render data formats like BYTE_UNORM4 etc.
  • Changes to instance buffer semantics and formats: removed old POSE format which used Mat34, and now use ROTATION_SCALE (Mat33) and POSITION (Vec3) in its place. Removed unused instance buffer semantics.
  • Opaque meshes can replace render mesh assets. An Opaque mesh is a void pointer to a user implemented render mesh that APEX does not know or understand about. It will still issue render calls using the (opaque) void pointer.

NxModule

  • Generic module generation: Get rid of the various descriptors for Modules and unifiy them as parameterized objects.

NxApexAsset

  • added releaseAndReturnNxParameterizedInterface() which allows reuse of the parameterized object after object destruction.

NxApexRenderable

  • removed lod parameter from dispatchRenderResource method. All modules that support

NxApexScene

  • added finalstep to NxApexScene::simulate() indicating that manual substepping is used and this is the last substep.

Debug Rendering

  • Removed all debug rendering from NxApexSDK object.
  • Added parameterized objects to handle debug rendering configuration for the framework and each module separately.
  • Changed code to set up the view and projection matrix.
  • Parameterized interface to customize debug rendering colors.