APEX 1.3 to 1.4 Migration Guide
+++++++++++++++++++++++++++++++

This guide highlights the significant API changes that have occured between APEX 1.3 and APEX 1.4. This guide is aimed at a developer already using APEX 1.3.x who wants to know the minimum amount of work to upgrade to APEX 1.4. Note that the PhysX API has also changed from PhysX 3.3.x to 3.4. Refer to the PhysX documentation for a description of PhysX API changes.

General
=======

Supported PhysX versions
~~~~~~~~~~~~~~~~~~~~~~~~

PhysX 2.* versions not supported in APEX 1.4.
Apex supports 2 builds: with PhysX 3.4 for all modules and and without for Clothing module.
Due to build APEXSDK and Clothing module without PhysX PxFoundation and some other PhysX modules were moved to PxShared library. APEX 1.4 uses this library.

General public interface changes
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
APEX 1.4 parental namespace changed from physx::apex to nvidia::apex.

All public interface files were moved to APEXSDK/inlclude library (the same as PhysX file structure) according to rules:
	framework/public/* => include/*
	module/<moduleName>/public/* => include/<moduleName>/*
	NxParameterized/public/* => include/nvparameterized/*

Nx and NxApex prefixes for public files were removed. For example, NxApexActor.h in APEX 1.4 has name Actor.h. 
But note that in some cases Apex prefix weren't removed, for example, NxApexDefs.h in APEX 1.4 has name ApexDefs.h

NxParameterized was refactored and renamed to NvParameterized.

NxMat33Legacy, NxMat34Legacy support were removed and this types were replaced with physx::PxMat33/physx::PxMat44/physx::PxTransform in all public files.

Global LOD feature was removed from APEXSDK. Corresponding methods were removed:
	Scene.h:	setLODResourceBudget, getLODResourceConsumed
	Module.h:	getLODUnitCost, setLODUnitCost, getLODBenefitValue, setLODBenefitValue, getLODEnabled, setLODEnabled

Physical LOD methods in Actor.h were renamed:
	forcePhysicalLod => forceLod
	getActivePhysicalLod => getActiveLod
	forcePhysicalLod => forceLod

NxApexParameter support was removed from Module.h:
	class NxApexParameter
	Module methods: getNbParameters, getParameters

Removed modules
~~~~~~~~~~~~~~~

DynamicSystem, Explosion, FieldBoundary and NxFluidIos modules were removed in APEX 1.4.


Legacy module
~~~~~~~~~~~~~

In general, assets created with previous versions of APEX should "just work" with APEX 1.4. The application must load the legacy module, which contains all the code that allows APEX to automatically upgrade assets to the latest version.

In APEX 1.4 there is a single legacy module (APEX_Legacy).

    apexSDK->createModule("Legacy");

Likewise, there is a single legacy module header file ModuleLegacy.h. On platforms that use static linking (consoles for example), the application only needs to include ModuleLegacy.h and make single call::

    nvidia::apex::instantiateModuleLegacy();

Rendering interface changes
~~~~~~~~~~~~~~~~~~~~~~~~~~~

Removed methods:
	Scene.h: prepareRenderResourceContexts

Platforms support
~~~~~~~~~~~~~~~~~

Removed PS3 and xbox3 support.
Added PS4 and XboxOne support.

Samples and snippets
~~~~~~~~~~~~~~~~~~~~

Added new samples_v2 and snippets. They are significantly simplier than old samples.
Old samples APEXSDK/samples now for internal use only and they removed from distribution.
