######################
REDsdk 4.0 API Changes
######################



There are several changes to consider:

* Syntactic changes: Labelled "General API update" in the chart below. These are naming changes, parameter order change, migration from ``**`` to ``*&``, etc.
* Behavioural changes: Each class should point to the necessary information to proceed with the requested modifications.

+--------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| File name                            | "Change details"                                                                                                                                                                                                                                                                                                                    |
+======================================+=====================================================================================================================================================================================================================================================================================================================================+
| RED.h                                | .. rubric:: General API update                                                                                                                                                                                                                                                                                                      |
|                                      |                                                                                                                                                                                                                                                                                                                                     |
|                                      | * Moved REDDllHandler symbol to RED.h global header file.                                                                                                                                                                                                                                                                           |
|                                      | * Moved "#undef CreateFont" statement to RED.h global header file (avoids windows conflicts with RED::IResourceManager::CreateFont).                                                                                                                                                                                                |
|                                      |                                                                                                                                                                                                                                                                                                                                     |
|                                      | .. rubric:: New general return codes                                                                                                                                                                                                                                                                                                |
|                                      |                                                                                                                                                                                                                                                                                                                                     |
|                                      | * RED_SCG_READ_ONLY_IMAGE: Access to write to a built-in render image. Built-in render images are (new) default render images accessible from the RED::IViewpointRenderList::GetRenderImage method. See \ref bk_rn_40_multi_render_target_vrls.                                                                                     |
|                                      | * RED_SCG_NO_ROOT_DESTRUCTION: Destruction of the root is restricted.                                                                                                                                                                                                                                                               |
|                                      | * RED_SCG_SHAPE_ALREADY_DESTROYED: Returned if a shape gets released twice. See \ref bk_ba_life_cycle_of_redsdk_objects.                                                                                                                                                                                                            |
|                                      | * RED_SCG_INCONSISTENT_SCENE_UNITS: Returned when two physical lights have inconsistent setups.                                                                                                                                                                                                                                     |
|                                      | * RED_WFLOW_WINDOW_DESTRUCTION_ERROR: Error in the destruction sequence for a window using external contexts.                                                                                                                                                                                                                       |
|                                      |                                                                                                                                                                                                                                                                                                                                     |
|                                      | .. rubric:: New REDNet return codes                                                                                                                                                                                                                                                                                                 |
|                                      |                                                                                                                                                                                                                                                                                                                                     |
|                                      | * All return codes from former REDNet version stored in RNET.h are now merged into RED.h.                                                                                                                                                                                                                                           |
|                                      |                                                                                                                                                                                                                                                                                                                                     |
|                                      | .. rubric:: New Embree return codes                                                                                                                                                                                                                                                                                                 |
|                                      |                                                                                                                                                                                                                                                                                                                                     |
|                                      | * RED_EMBREE_UNSUPPORTED_CPU: Indicates an Embree initialization error. Please refer to the return code documentation.                                                                                                                                                                                                              |
|                                      | * RED_EMBREE_DLL_NOT_FOUND: Application setup problem. The Embree library is missing.                                                                                                                                                                                                                                               |
|                                      |                                                                                                                                                                                                                                                                                                                                     |
|                                      | .. rubric:: New RNET return codes                                                                                                                                                                                                                                                                                                   |
|                                      |                                                                                                                                                                                                                                                                                                                                     |
|                                      | * RED_NO_CONNECTION_TO_LICENSE_SERVER: Seat based licensing connection error.                                                                                                                                                                                                                                                       |
|                                      | * RED_ALL_LICENSES_IN_USE: Seat based licensing capabilities exceeded.                                                                                                                                                                                                                                                              |
|                                      | * RED_INVALID_CUSTOMER_ID: Seat based licensing error.                                                                                                                                                                                                                                                                              |
|                                      | * RED_TIME_OUT: General time-out error.                                                                                                                                                                                                                                                                                             |
+--------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| REDBuiltInShaders_VTBF.h             | Removed files. These files were containing built-in shaders, but barely usable by external applications. If you have the need for any of those, please contact us and we'll send you the necessary shader program source code.                                                                                                      |
+--------------------------------------+                                                                                                                                                                                                                                                                                                                                     | 
| REDBuiltInShaders_VTBEF.h            |                                                                                                                                                                                                                                                                                                                                     |
+--------------------------------------+                                                                                                                                                                                                                                                                                                                                     | 
| REDBuiltInShaders_VTLE.h             |                                                                                                                                                                                                                                                                                                                                     |
+--------------------------------------+                                                                                                                                                                                                                                                                                                                                     | 
| REDBuiltInShaders_VTNF.h             |                                                                                                                                                                                                                                                                                                                                     |
+--------------------------------------+                                                                                                                                                                                                                                                                                                                                     | 
| REDBuiltInShaders_VTNEF.h            |                                                                                                                                                                                                                                                                                                                                     |
+--------------------------------------+                                                                                                                                                                                                                                                                                                                                     | 
| REDBuiltInShaders_VTNL.h             |                                                                                                                                                                                                                                                                                                                                     |
+--------------------------------------+                                                                                                                                                                                                                                                                                                                                     | 
| REDBuiltInShaders_VTNLPE.h           |                                                                                                                                                                                                                                                                                                                                     |
+--------------------------------------+                                                                                                                                                                                                                                                                                                                                     | 
| REDBuiltInShaders.h                  |                                                                                                                                                                                                                                                                                                                                     |
+--------------------------------------+                                                                                                                                                                                                                                                                                                                                     | 
| REDBuiltInShaders_VTBE.h             |                                                                                                                                                                                                                                                                                                                                     |
+--------------------------------------+                                                                                                                                                                                                                                                                                                                                     | 
| REDBuiltInShaders_VTNLP.h            |                                                                                                                                                                                                                                                                                                                                     |
+--------------------------------------+                                                                                                                                                                                                                                                                                                                                     | 
| REDBuiltInShaders_IVSH.h             |                                                                                                                                                                                                                                                                                                                                     |
+--------------------------------------+                                                                                                                                                                                                                                                                                                                                     | 
| REDBuiltInShaders_VTNE.h             |                                                                                                                                                                                                                                                                                                                                     |
+--------------------------------------+                                                                                                                                                                                                                                                                                                                                     | 
| REDBuiltInShaders_VTLP.h             |                                                                                                                                                                                                                                                                                                                                     |
+--------------------------------------+                                                                                                                                                                                                                                                                                                                                     | 
| REDBuiltInShaders_VTL.h              |                                                                                                                                                                                                                                                                                                                                     |
+--------------------------------------+                                                                                                                                                                                                                                                                                                                                     | 
| REDBuiltInShaders_VTNLE.h            |                                                                                                                                                                                                                                                                                                                                     |
+--------------------------------------+                                                                                                                                                                                                                                                                                                                                     | 
| REDBuiltInShaders_VTLPE.h            |                                                                                                                                                                                                                                                                                                                                     |
+--------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| REDCID.h                             | .. rubric:: New classes CIDs                                                                                                                                                                                                                                                                                                        |
|                                      |                                                                                                                                                                                                                                                                                                                                     |
|                                      | * New classes CID defines.                                                                                                                                                                                                                                                                                                          |
|                                      |                                                                                                                                                                                                                                                                                                                                     |
|                                      | .. rubric:: New functions                                                                                                                                                                                                                                                                                                           |
|                                      |                                                                                                                                                                                                                                                                                                                                     |
|                                      | * RED::CID::operator != : An inequality operator.                                                                                                                                                                                                                                                                                   |
|                                      | * RED::CID::GetKey: Access the key stored by a CID.                                                                                                                                                                                                                                                                                 |
+--------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| REDColor.h                           | .. rubric:: New functions                                                                                                                                                                                                                                                                                                           |
|                                      |                                                                                                                                                                                                                                                                                                                                     |
|                                      | * RED::Color::SetRGBA: Define a color from 4 floating point components directly.                                                                                                                                                                                                                                                    |
|                                      | * RED::Color::Random: Get a random color!                                                                                                                                                                                                                                                                                           |
+--------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| REDFactory.h                         | .. rubric:: New functions                                                                                                                                                                                                                                                                                                           |
|                                      |                                                                                                                                                                                                                                                                                                                                     |
|                                      | * RED::Color::SetRGBA: Define a color from 4 floating point components directly.                                                                                                                                                                                                                                                    |
|                                      | * RED::Color::Random: Get a random color!                                                                                                                                                                                                                                                                                           |
+--------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| REDFileSystemTools.h                 | .. rubric:: General API update                                                                                                                                                                                                                                                                                                      |
|                                      |                                                                                                                                                                                                                                                                                                                                     |
|                                      | * Replaced REDFileHandler by FILE*, which is already cross platform.                                                                                                                                                                                                                                                                |
|                                      | * Modified all file methods accordingly.                                                                                                                                                                                                                                                                                            |
+--------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| REDFrameStatistics.h                 | .. rubric:: General API update                                                                                                                                                                                                                                                                                                      |
|                                      |                                                                                                                                                                                                                                                                                                                                     |
|                                      | * RED::FrameStatistics::GetSoftwareRenderStepPassCount becomes RED::FrameStatistics::GetSoftwareRenderStepPassesCount. With plural for "passes".                                                                                                                                                                                    |
|                                      | * RED::FrameStatistics::GetSoftwareIICSamplesCount becomes RED::FrameStatistics::GetSoftwareGICacheSampelsCount.                                                                                                                                                                                                                    |
+--------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| REDIDataManager.h                    | .. rubric:: Context management                                                                                                                                                                                                                                                                                                      |
|                                      |                                                                                                                                                                                                                                                                                                                                     |
|                                      | * Removed RED::IDataManager::CreateContext. Can't be used by a client application.                                                                                                                                                                                                                                                  |
|                                      |                                                                                                                                                                                                                                                                                                                                     |
|                                      | .. rubric:: General API update                                                                                                                                                                                                                                                                                                      |
|                                      |                                                                                                                                                                                                                                                                                                                                     |
|                                      | * All methods had their parameters order changed to follow the general API rule method( output, input ). For instance, RED::IDataManager::GetSceneRoot has swapped parameter. In addition, plural 's' have been added to several methods, such as RED::IDataManager::GetSceneRootsCount instead of RED::IDataManager::GetSceneRoot. |
|                                      |                                                                                                                                                                                                                                                                                                                                     |
|                                      | .. rubric:: New methods and API changes                                                                                                                                                                                                                                                                                             |
|                                      |                                                                                                                                                                                                                                                                                                                                     |
|                                      | * RED::IDataManager::GetFontsCount and RED::IDataManager::GetFont method to access loaded fonts.                                                                                                                                                                                                                                    |
|                                      | * Changed RED::IDataManager::Release to add an explicit support for RED::State transactions.                                                                                                                                                                                                                                        |
|                                      | * Modified RED::IDataManager::ReleaseContext: New 'iDestroyShared' flag allowing destruction of shared data.                                                                                                                                                                                                                        |
+--------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| REDIGeometryDatabase.h               | .. rubric:: New methods and API changes                                                                                                                                                                                                                                                                                             |
|                                      |                                                                                                                                                                                                                                                                                                                                     |
|                                      | * RED::IGeometryDatabase::GetPrimitiveNumber to decode TIDs returned by intersection methods.                                                                                                                                                                                                                                       |
+--------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| REDIGICache.h                        | .. rubric:: New class                                                                                                                                                                                                                                                                                                               |
|                                      |                                                                                                                                                                                                                                                                                                                                     |
|                                      | * RED::IGICache interface for GI cache operations.                                                                                                                                                                                                                                                                                  |
+--------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| REDIImage.h                          | .. rubric:: OpenGL texture access                                                                                                                                                                                                                                                                                                   |
|                                      |                                                                                                                                                                                                                                                                                                                                     |
|                                      | * New RED::IImage::GetOpenGLInfo: access to the OpenGL texture ID of the image.                                                                                                                                                                                                                                                     |
|                                      | * New RED::IImage::GetPixelStorage and RED::IImage::SetPixelStorage to control the storage mode of image pixels. Image pixels can be loaded only on the CPU or GPU side thanks to these methods.                                                                                                                                    |
+--------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| REDIImage2D.h                        | .. rubric:: General API update                                                                                                                                                                                                                                                                                                      |
|                                      |                                                                                                                                                                                                                                                                                                                                     |
|                                      | * Changed RED::IImage2D::GetRenderImage: Migrated parameter from ``**`` to ``*&``.                                                                                                                                                                                                                                                  |
|                                      | * Changed RED::IImage2D::SetFromPixelShader: Migration of shader program ID from int to RED::ShaderProgramID.                                                                                                                                                                                                                       |
+--------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| REDImageTools.h                      | .. rubric:: New image I/O API                                                                                                                                                                                                                                                                                                       |
|                                      |                                                                                                                                                                                                                                                                                                                                     |
|                                      | * New RED::ImageTools image management class for saving images to disk and for reloading images from disk. See \ref bk_im_io.                                                                                                                                                                                                       |
+--------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| REDILicense.h                        | .. rubric:: General API update                                                                                                                                                                                                                                                                                                      |
|                                      |                                                                                                                                                                                                                                                                                                                                     |
|                                      | * Modified RED::ILicense::IsProductActivated. Added product enumeration.                                                                                                                                                                                                                                                            |
|                                      |                                                                                                                                                                                                                                                                                                                                     |
|                                      | .. rubric:: New seat based licensing methods                                                                                                                                                                                                                                                                                        |
|                                      |                                                                                                                                                                                                                                                                                                                                     |
|                                      | * RED::ILicense::SetOnlineLicense.                                                                                                                                                                                                                                                                                                  |
+--------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| REDILightShape.h                     | .. rubric:: New light sampling system                                                                                                                                                                                                                                                                                               |
|                                      |                                                                                                                                                                                                                                                                                                                                     |
|                                      | * Removed the RED::RM_SUN_SOFT_SHADOW_QUALITY render mode. No longer needed with the new light sampling system: See \ref bk_re_sampling_controls_in_redsdk.                                                                                                                                                                         |
+--------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| REDIMaterial.h                       | .. rubric:: General API update                                                                                                                                                                                                                                                                                                      |
|                                      |                                                                                                                                                                                                                                                                                                                                     |
|                                      | * RED::IMaterial::GetShader: Parameter migration from ``**`` to ``*&``.                                                                                                                                                                                                                                                             |
|                                      |                                                                                                                                                                                                                                                                                                                                     |
|                                      | .. rubric:: New functions                                                                                                                                                                                                                                                                                                           |
|                                      |                                                                                                                                                                                                                                                                                                                                     |
|                                      | * RED::IMaterial::GetImageList: Query the list of images used by a material.                                                                                                                                                                                                                                                        |
|                                      | * RED::IMaterial::SetCaustics / RED::IMaterial::GetCaustics: Enable or disable caustics on a material. See \ref bk_re_sw3d_caustics.                                                                                                                                                                                                |
|                                      | * RED::IMaterial::SetDisplacement / RED::IMaterial::GetDisplacement: Enable or disable displacement mapping on a material. See \ref bk_bm_custom_state_displace.                                                                                                                                                                    |
|                                      | * Added the missing RED::IMaterial::GetPolygonOffset.                                                                                                                                                                                                                                                                               |
|                                      | * RED::IMaterial::SetupGenericBumpyDiffuseMaterial: Helper for the setup of a generic material.                                                                                                                                                                                                                                     |
|                                      | * RED::IMaterial::SetupGenericDiffuseMaterial: Helper for the setup of a generic material.                                                                                                                                                                                                                                          |
+--------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| REDIMeshShape.h                      | .. rubric:: New primitive creation API                                                                                                                                                                                                                                                                                              |
|                                      |                                                                                                                                                                                                                                                                                                                                     |
|                                      | * RED::IMeshShape::Quad, RED::IMeshShape::Box, RED::IMeshShape::Sphere, RED::IMeshShape::Cylinder, RED::IMeshShape::Cone, RED::IMeshShape::Torus.                                                                                                                                                                                   |
|                                      | * RED::IMeshShape::BuildCutMesh method to slice a mesh with a reconstruction of the section cut geometries and contours.                                                                                                                                                                                                            |
|                                      | * RED::IMeshShape::Polygon to tessellate an input planar face made of closed contours.                                                                                                                                                                                                                                              |
+--------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| REDIREDFile.h                        | .. rubric:: General API update                                                                                                                                                                                                                                                                                                      |
|                                      |                                                                                                                                                                                                                                                                                                                                     |
|                                      | * RED::IREDFile::WriteShaderProgram: Now uses RED::ShaderProgramID program identifiers.                                                                                                                                                                                                                                             |
+--------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| REDIResourceManager.h                | .. rubric:: General API update                                                                                                                                                                                                                                                                                                      |
|                                      |                                                                                                                                                                                                                                                                                                                                     |
|                                      | * New RED::IResourceManager::FindMaterial and RED::IResourceManager::FindMaterial methods using a string instead of an ID.                                                                                                                                                                                                          |
|                                      | * Migration of shader methods on the RED::ShaderProgramID: RED::IResourceManager::GetShader.                                                                                                                                                                                                                                        |
|                                      | * Removed RED::IResourceManager::LoadBuiltInShaderFromID in accordance with the removal of public built-in shaders.                                                                                                                                                                                                                 |
|                                      | * Rewording RED::InterruptCallback into RED::INTERRUPT_CALLBACK.                                                                                                                                                                                                                                                                    |
|                                      | * Custom shading callbacks registration API: RED::IResourceManager::RegisterShadingCallback and associated methods.                                                                                                                                                                                                                 |
+--------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| REDIShape.h                          | .. rubric:: General API update                                                                                                                                                                                                                                                                                                      |
|                                      |                                                                                                                                                                                                                                                                                                                                     |
|                                      | * RED::IShape::GetChildByID: Parameter changed from ``**`` to ``*&``.                                                                                                                                                                                                                                                               |
|                                      |                                                                                                                                                                                                                                                                                                                                     |
|                                      | .. rubric:: New functions                                                                                                                                                                                                                                                                                                           |
|                                      |                                                                                                                                                                                                                                                                                                                                     |
|                                      | * RED::IShape::GetChildByID: directly using a RED::String as an ID.                                                                                                                                                                                                                                                                 |
+--------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| REDISkyLightShape.h                  | .. rubric:: New methods                                                                                                                                                                                                                                                                                                             |
|                                      |                                                                                                                                                                                                                                                                                                                                     |
|                                      | * RED::ISkyLightShape::GetBackgroundMatrixFromSky to retrieve the transform matrix to apply to a background image to have it synchronized with a skylight texture.                                                                                                                                                                  |
+--------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| REDISoftBucket.h                     | .. rubric:: General API update                                                                                                                                                                                                                                                                                                      |
|                                      |                                                                                                                                                                                                                                                                                                                                     |
|                                      | * Renamed RED::ISoftBucket::GetMinRemainingBucketsCount. Added a plural 's' to 'buckets'.                                                                                                                                                                                                                                           |
|                                      | * Renamed RED::ISoftBucket::GetThreadsCount. Added a plural 's' to 'threads'.                                                                                                                                                                                                                                                       |
+--------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| REDISoftLight.h                      | .. rubric:: General API update                                                                                                                                                                                                                                                                                                      |
|                                      |                                                                                                                                                                                                                                                                                                                                     |
|                                      | * RED::ISoftLight::GetAttenuation: Due to new light parsing API, no longer requires point and normal parameters.                                                                                                                                                                                                                    |
|                                      | * Removed RED::ISoftLight::StartAdaptiveSampling, RED::ISoftLight::StartAdaptiveSamplingVolume, RED::ISoftLight::GetNextWCSSampleVolume. Replaced with RED::ISoftLight::StartSampling and a modified RED::ISoftLight::GetNextWCSSample according to new light sampling API needs.                                                   |
+--------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| REDISoftRayContext.h                 | .. rubric:: General API update                                                                                                                                                                                                                                                                                                      |
|                                      |                                                                                                                                                                                                                                                                                                                                     |
|                                      | * Modified RED::ISoftRayContext::GetShadowColor prototype. Uses a soft light pointer in coherency with new light parsing API for software shading loops.                                                                                                                                                                            |
|                                      | * New light parsing API for software shaders: RED::ISoftRayContext::PrepareLights and RED::ISoftRayContext::GetLight.                                                                                                                                                                                                               |
|                                      | * Renamed RED::ISoftRayContext::EstimateIndirectIllumination into RED::ISoftRayContext::EstimateGI.                                                                                                                                                                                                                                 |
|                                      | * New RED::ISoftRayContext::CanApproximateLighting method to use in the new software shading loop.                                                                                                                                                                                                                                  |
+--------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| REDISoftRenderingContext.h           | .. rubric:: General API update                                                                                                                                                                                                                                                                                                      |
|                                      |                                                                                                                                                                                                                                                                                                                                     |
|                                      | * Modified RED::ISoftRayContext::GetShadowColor prototype. Uses a soft light pointer in coherency with new light parsing API for software shading loops.                                                                                                                                                                            |
|                                      | * New light parsing API for software shaders: RED::ISoftRayContext::PrepareLights and RED::ISoftRayContext::GetLight.                                                                                                                                                                                                               |
|                                      | * Renamed RED::ISoftRayContext::EstimateIndirectIllumination into RED::ISoftRayContext::EstimateGI.                                                                                                                                                                                                                                 |
|                                      | * New RED::ISoftRayContext::CanApproximateLighting method to use in the new software shading loop.                                                                                                                                                                                                                                  |
+--------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| REDIStream.h                         | .. rubric:: New functions                                                                                                                                                                                                                                                                                                           |
|                                      |                                                                                                                                                                                                                                                                                                                                     |
|                                      | * RED::IStream::ReadLine and RED::IStream::ReadData.                                                                                                                                                                                                                                                                                |
+--------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| REDISunLightShape.h                  | .. rubric:: New functions                                                                                                                                                                                                                                                                                                           |
|                                      |                                                                                                                                                                                                                                                                                                                                     |
|                                      | * Added an intensity scaling parameter to RED::ISunLightShape::SetSun and RED::ISunLightShape::GetSun.                                                                                                                                                                                                                              |
+--------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| REDITextShape.h                      | .. rubric:: General API update                                                                                                                                                                                                                                                                                                      |
|                                      |                                                                                                                                                                                                                                                                                                                                     |
|                                      | * Renamed RED::ITextShape::GetStringCount into RED::ITextShape::GetStringsCount. Added missing plural to "strings".                                                                                                                                                                                                                 |
+--------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| REDITransformShape.h                 | .. rubric:: General API update                                                                                                                                                                                                                                                                                                      |
|                                      |                                                                                                                                                                                                                                                                                                                                     |
|                                      | * Added missing constness to RED::ITransformShape::SetMatrix.                                                                                                                                                                                                                                                                       |
+--------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| REDIViewpointRenderList.h            | .. rubric:: Anti-aliasing                                                                                                                                                                                                                                                                                                           |
|                                      |                                                                                                                                                                                                                                                                                                                                     |
|                                      | * Removed RED::IViewpointRenderList::SetHardwareAntiAlias: Hardware anti-aliasing can't be enabled anymore on auxiliary VRLs due to global FBO migration. It must be set on the default window VRL at its creation time using the RED::WindowRenderInfo specification class.                                                        |
|                                      | * New super-scaling option for the engine anti-aliasing, that greatly increase performance at the expense of more memory used: RED::IViewpointRenderList::SetEngineAntiAlias.                                                                                                                                                       |
|                                      |                                                                                                                                                                                                                                                                                                                                     |
|                                      | .. rubric:: Rendering                                                                                                                                                                                                                                                                                                               |
|                                      |                                                                                                                                                                                                                                                                                                                                     |
|                                      | * Renamed RED::IViewpointRenderList::GetViewpointIIC / SetViewpointIIC into RED::IViewpointRenderList::GetViewpointGICache and RED::IViewpointRenderList::SetViewpointGICache.                                                                                                                                                      |
|                                      | * New RED::IViewpointRenderList::SetViewpointGICaches to specify several interpolation GI caches for animations.                                                                                                                                                                                                                    |
|                                      |                                                                                                                                                                                                                                                                                                                                     |
|                                      | .. rubric:: Miscellaneous                                                                                                                                                                                                                                                                                                           |
|                                      |                                                                                                                                                                                                                                                                                                                                     |
|                                      | * Added a missing transform matrix to RED::IViewpointRenderList::GetViewpointSoftClipBox.                                                                                                                                                                                                                                           |
|                                      | * Renamed RED::IViewpointRenderList::GetViewpointCount into RED::IViewpointRenderList::GetViewpointsCount, with a plural 's'.                                                                                                                                                                                                       |
|                                      | * New helper RED::IViewpointRenderList::InsertViewpoint for fast viewpoint insertion into a VRL.                                                                                                                                                                                                                                    |
|                                      |                                                                                                                                                                                                                                                                                                                                     |
|                                      | .. rubric:: New built-in render images API (used in relationship with RED::IWindow::CreateMultiRenderTargetVRL)                                                                                                                                                                                                                     |
|                                      |                                                                                                                                                                                                                                                                                                                                     |
|                                      | * RED::IViewpointRenderList::GetRenderImage,                                                                                                                                                                                                                                                                                        |
|                                      | * RED::IViewpointRenderList::GetRenderDepthImage,                                                                                                                                                                                                                                                                                   |
|                                      | * RED::IViewpointRenderList::GetRenderImagesCount.                                                                                                                                                                                                                                                                                  |
+--------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| REDIWindow.h                         | .. rubric:: New functions                                                                                                                                                                                                                                                                                                           |
|                                      |                                                                                                                                                                                                                                                                                                                                     |
|                                      | * New feedback mode values: RED::FTF_BY_SURFACE_LEVEL_5 and RED::FTF_BY_BLOCKS_LEVEL_5 corresponding to the 5-th level of feedback with 32 x 32 pixels buckets.                                                                                                                                                                     |
|                                      | * RED::IWindow::CreateMultiRenderTargetVRL: Creation of VRLs that have more than one rendering buffer associated to them.                                                                                                                                                                                                           |
|                                      | * RED::IWindow::ExtractGICache: Retrieve a GI cache calculated after a rendering.                                                                                                                                                                                                                                                   |
|                                      |                                                                                                                                                                                                                                                                                                                                     |
|                                      | .. rubric:: General API update                                                                                                                                                                                                                                                                                                      |
|                                      |                                                                                                                                                                                                                                                                                                                                     |
|                                      | * RED::IWindow::FrameTracingIIC is now RED::IWindow::FrameTracingGICache.                                                                                                                                                                                                                                                           |
|                                      | * Removed sticky state number APIs: RED::IWindow::SetStickyStateNumber and RED::IWindow::GetStickyStateNumber. This function is now implicit in the engine and does not require any API call to be done from the client application.                                                                                                |
|                                      | * RED::IWindow::FrameTracingGICache now uses a list of filtering position to validate samples positions for the world IIC generation mode.                                                                                                                                                                                          |
+--------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| REDObject.h                          | .. rubric:: New function                                                                                                                                                                                                                                                                                                            |
|                                      |                                                                                                                                                                                                                                                                                                                                     |
|                                      | * RED::Object::GetIDFromData: Calculate an object ID from an input data array.                                                                                                                                                                                                                                                      |
+--------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| REDOptionList.h                      | .. rubric:: Removed options                                                                                                                                                                                                                                                                                                         |
|                                      |                                                                                                                                                                                                                                                                                                                                     |
|                                      | * RED::OPTIONS_RAY_TILE_WIDTH and RED::OPTIONS_RAY_TILE_HEIGHT. No more internal tiled rendering. All GPUs now have enough memory, making this option useless.                                                                                                                                                                      |
|                                      | * RED::OPTIONS_RAY_AUTO_SAMPLING, RED::OPTIONS_RAY_AUTO_SAMPLING_MIN, RED::OPTIONS_RAY_AUTO_SAMPLING_MAX: No more global automatic sampling options. See \ref bk_re_sampling_controls_in_redsdk. Sampling is now controllable per effect.                                                                                           |
|                                      | * RED::OPTIONS_RAY_GI_CACHE_DIRECT_CONTRIBUTION: Removed the direct lighting contribution option setup in GI caches. It did not generate good quality caches.                                                                                                                                                                       |
|                                      | * RED::OPTIONS_RAY_GI_SAMPLING_ADAPTATION and RED::OPTIONS_RAY_GI_SAMPLING_ADAPTATION_THRESHOLD. No more adaptation in REDsdk.                                                                                                                                                                                                      |
|                                      | * RED::OPTIONS_RAY_SAMPLING_ADAPTATION and RED::OPTIONS_RAY_SAMPLING_ADAPTATION_THRESHOLD: No more adaptation in REDsdk. See \ref bk_re_sampling_controls_in_redsdk.                                                                                                                                                                |
|                                      | * RED::OPTIONS_RAY_PHYSICAL_LIGHT_CUTOFF is replaced by the generic RED::OPTIONS_LIGHT_CUTOFF.                                                                                                                                                                                                                                      |
|                                      |                                                                                                                                                                                                                                                                                                                                     |
|                                      | .. rubric:: New options                                                                                                                                                                                                                                                                                                             |
|                                      |                                                                                                                                                                                                                                                                                                                                     |
|                                      | * RED::OPTIONS_RAY_LIGHTS_SAMPLING_RATE: Light sampling control option.                                                                                                                                                                                                                                                             |
|                                      | * RED::OPTIONS_RAY_GLOSSY_SAMPLING_RATE: Glossiness sampling option.                                                                                                                                                                                                                                                                |
|                                      | * RED::OPTIONS_RAY_USE_EMBREE: Enable using the Embree acceleration kernels. See \ref bk_re_using_embree.                                                                                                                                                                                                                           |
|                                      | * RED::OPTIONS_WINDOW_DRAW_SYNC: Force a GPU synchronization point at the end of a frame.                                                                                                                                                                                                                                           |
|                                      | * RED::OPTIONS_LIGHT_CUTOFF: New light cutoff performance option. See \ref bk_ap_light_cutoff_option.                                                                                                                                                                                                                               |
|                                      | * RED::OPTIONS_RAY_GI_CACHE_PRECISE: GI Cache enhancement option. See \ref bk_pi_rendering_presets.                                                                                                                                                                                                                                 |
|                                      | * RED::OPTIONS_RAY_GI_FOR_GLOSSINESS: Performance option. Approximate glossiness with GI.                                                                                                                                                                                                                                           |
|                                      | * RED::OPTIONS_RAY_GI_FOR_LIGHTING: Performance option. Approximate lighting with GI.                                                                                                                                                                                                                                               |
|                                      | * RED::OPTIONS_RAY_SOFT_PREVIEW: Dynamic previewing option.                                                                                                                                                                                                                                                                         |
+--------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| REDOptionsSet.h                      | Removed file. Was for the setup of useless REDsdk application options in the windows registry.                                                                                                                                                                                                                                      |
+--------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| REDRenderLayer.h                     | .. rubric:: New layers                                                                                                                                                                                                                                                                                                              |
|                                      |                                                                                                                                                                                                                                                                                                                                     |
|                                      | * RED::LT_INDIRECT: Indirect lighting image layer.                                                                                                                                                                                                                                                                                  |
+--------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| REDRenderShader.h                    | .. rubric:: Shader program identifiers migrated from int to RED::ShaderProgramID class. Prototype changes                                                                                                                                                                                                                           |
|                                      |                                                                                                                                                                                                                                                                                                                                     |
|                                      | * RED::RenderShader::SetVertexProgramId, RED::RenderShader::GetVertexProgramId,                                                                                                                                                                                                                                                     |
|                                      | * RED::RenderShader::SetGeometryProgramId, RED::RenderShader::GetGeometryProgramId,                                                                                                                                                                                                                                                 |
|                                      | * RED::RenderShader::SetPixelProgramId, RED::RenderShader::GetPixelProgramId.                                                                                                                                                                                                                                                       |
|                                      |                                                                                                                                                                                                                                                                                                                                     |
|                                      | .. rubric:: API homogenization                                                                                                                                                                                                                                                                                                      |
|                                      |                                                                                                                                                                                                                                                                                                                                     |
|                                      | * RED::RenderShader::GetParameter: Changed parameters from ``**`` to ``*&``.                                                                                                                                                                                                                                                        |
|                                      | * RED::RenderShader::GetPlatformCount into RED::RenderShader::GetPlatformsCount - with a plural 's'.                                                                                                                                                                                                                                |
|                                      | * RED::RenderShader::FakeColorWithImage: Changed parameters from ``**`` to ``*&``.                                                                                                                                                                                                                                                  |
|                                      | * One of the RED::RenderShader::RemoveParameter has been renamed into RED::RenderShader::RemoveParameterFromPlatform due to compilation issues it could cause with a compiler unable to resolve the method to use.                                                                                                                  |
|                                      |                                                                                                                                                                                                                                                                                                                                     |
|                                      | .. rubric:: New input parameters APIs                                                                                                                                                                                                                                                                                               |
|                                      |                                                                                                                                                                                                                                                                                                                                     |
|                                      | * RED::RenderShader::SetInputParameter: Setup input parameters.                                                                                                                                                                                                                                                                     |
|                                      | * RED::RenderShader::GetInputParameter: Retrieve input parameters values.                                                                                                                                                                                                                                                           |
|                                      | * RED::RenderShader::EvaluateFromInputParameters: Force the re-evaluation of a shader from its input parameters.                                                                                                                                                                                                                    |
+--------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| REDRayGIReflectionColorShader.h      | .. rubric:: New shader input parameter API                                                                                                                                                                                                                                                                                          |
+--------------------------------------+                                                                                                                                                                                                                                                                                                                                     | 
| REDRayCutoffShader.h                 |                                                                                                                                                                                                                                                                                                                                     |
+--------------------------------------+                                                                                                                                                                                                                                                                                                                                     | 
| REDRayGIDiffuseShader.h              | * Migration on new shader input parameters for shader queries and modifications.                                                                                                                                                                                                                                                    |
+--------------------------------------+                                                                                                                                                                                                                                                                                                                                     | 
| REDRayGIRefractionColorShader.h      |                                                                                                                                                                                                                                                                                                                                     |
+--------------------------------------+                                                                                                                                                                                                                                                                                                                                     | 
| REDRayReflectionShader.h             |                                                                                                                                                                                                                                                                                                                                     |
+--------------------------------------+                                                                                                                                                                                                                                                                                                                                     | 
| REDRayRefractionShader.h             |                                                                                                                                                                                                                                                                                                                                     |
+--------------------------------------+                                                                                                                                                                                                                                                                                                                                     | 
| REDReflectionShader.h,               |                                                                                                                                                                                                                                                                                                                                     |
+--------------------------------------+                                                                                                                                                                                                                                                                                                                                     | 
| REDRenderShaderAAFilter.h,           |                                                                                                                                                                                                                                                                                                                                     |
+--------------------------------------+                                                                                                                                                                                                                                                                                                                                     | 
| REDRenderShaderAmbient.h,            |                                                                                                                                                                                                                                                                                                                                     |
+--------------------------------------+                                                                                                                                                                                                                                                                                                                                     | 
| REDRenderShaderAnisotropic.h,        |                                                                                                                                                                                                                                                                                                                                     |
+--------------------------------------+                                                                                                                                                                                                                                                                                                                                     | 
| REDRenderShaderEdges.h,              |                                                                                                                                                                                                                                                                                                                                     |
+--------------------------------------+                                                                                                                                                                                                                                                                                                                                     | 
| REDRenderShaderLambert.h,            |                                                                                                                                                                                                                                                                                                                                     |
+--------------------------------------+                                                                                                                                                                                                                                                                                                                                     | 
| REDRenderShaderLogo.h,               |                                                                                                                                                                                                                                                                                                                                     |
+--------------------------------------+                                                                                                                                                                                                                                                                                                                                     | 
| REDRenderShaderRefractionEffect.h,   |                                                                                                                                                                                                                                                                                                                                     |
+--------------------------------------+                                                                                                                                                                                                                                                                                                                                     | 
| REDRenderShaderSolid.h,              |                                                                                                                                                                                                                                                                                                                                     |
+--------------------------------------+                                                                                                                                                                                                                                                                                                                                     | 
| REDRenderShaderViewport.h            |                                                                                                                                                                                                                                                                                                                                     |
+--------------------------------------+                                                                                                                                                                                                                                                                                                                                     | 
| REDRenderShaderEnvironmental.h,      |                                                                                                                                                                                                                                                                                                                                     |
+--------------------------------------+                                                                                                                                                                                                                                                                                                                                     | 
| REDRenderShaderPhong.h,              |                                                                                                                                                                                                                                                                                                                                     |
+--------------------------------------+                                                                                                                                                                                                                                                                                                                                     | 
| REDRenderShaderSectionCut.h,         |                                                                                                                                                                                                                                                                                                                                     |
+--------------------------------------+                                                                                                                                                                                                                                                                                                                                     | 
| REDRenderShaderText.h                |                                                                                                                                                                                                                                                                                                                                     |
+--------------------------------------+                                                                                                                                                                                                                                                                                                                                     | 
| REDRenderShaderVertexColor.h         |                                                                                                                                                                                                                                                                                                                                     |
+--------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| REDSoftShaderCallback.h              | .. rubric:: New return values                                                                                                                                                                                                                                                                                                       |
|                                      |                                                                                                                                                                                                                                                                                                                                     |
|                                      | * RED::SoftShaderCallback::_out_color_indirect: Used to fill in the RED::LT_INDIRECT RED::RenderLayer.                                                                                                                                                                                                                              |
+--------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| REDShaderProgramID.h                 | .. rubric:: New file                                                                                                                                                                                                                                                                                                                |
|                                      |                                                                                                                                                                                                                                                                                                                                     |
|                                      | * RED::ShaderProgramID class. Stores a program ID, that used to be a simple integer in previous REDsdk versions.                                                                                                                                                                                                                    |
+--------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| REDShaderString.h                    | .. rubric:: New functions                                                                                                                                                                                                                                                                                                           |
|                                      |                                                                                                                                                                                                                                                                                                                                     |
|                                      | * RED::ShaderString::VertexTransform from matrix column vectors as variables.                                                                                                                                                                                                                                                       |
|                                      | * RED::ShaderString::ShadowMapGaussianBlur to perform a shader level gaussian blur on a shadow map.                                                                                                                                                                                                                                 |
+--------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| REDSTL.h                             | .. rubric:: General API update                                                                                                                                                                                                                                                                                                      |
|                                      |                                                                                                                                                                                                                                                                                                                                     |
|                                      | * Migration of the RED::Vector and RED::Map classes onto RED::uint64 size values.                                                                                                                                                                                                                                                   |
+--------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| REDStreamingPolicy.h                 | .. rubric:: General API update                                                                                                                                                                                                                                                                                                      |
|                                      |                                                                                                                                                                                                                                                                                                                                     |
|                                      | * Removal of the useless STREAMING_POLICY_CALLBACK and of the related RED::StreamingPolicy::SetCallback method.                                                                                                                                                                                                                     |
|                                      |                                                                                                                                                                                                                                                                                                                                     |
|                                      | .. rubric:: New methods                                                                                                                                                                                                                                                                                                             |
|                                      |                                                                                                                                                                                                                                                                                                                                     |
|                                      | * RED::StreamingPolicy::SetImagesStorage and RED::StreamingPolicy::GetImagesStorage to control the pixel storage of loaded images.                                                                                                                                                                                                  |
+--------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| REDThreads.h                         | New public cross platform multi-threading services.                                                                                                                                                                                                                                                                                 |
+--------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| REDWindowRenderInfo.h                | .. rubric:: General API update                                                                                                                                                                                                                                                                                                      |
|                                      |                                                                                                                                                                                                                                                                                                                                     |
|                                      | * Removal of useless 10 bits display management API.                                                                                                                                                                                                                                                                                |
|                                      | * Removal of engine anti-aliasing control. Engine AA is now only controlled from RED::IViewpointRenderList::SetEngineAntiAlias method.                                                                                                                                                                                              |
+--------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| RNETAdapter.h                        | New REDNet files, migrated from the former REDNet product to REDsdk.                                                                                                                                                                                                                                                                |
+--------------------------------------+                                                                                                                                                                                                                                                                                                                                     | 
| RNETAddress.h                        |                                                                                                                                                                                                                                                                                                                                     |
+--------------------------------------+                                                                                                                                                                                                                                                                                                                                     | 
| RNETLog.h                            |                                                                                                                                                                                                                                                                                                                                     |
+--------------------------------------+                                                                                                                                                                                                                                                                                                                                     | 
| RNETIMessage.h                       |                                                                                                                                                                                                                                                                                                                                     |
+--------------------------------------+                                                                                                                                                                                                                                                                                                                                     | 
| RNETIPeer.h                          |                                                                                                                                                                                                                                                                                                                                     |
+--------------------------------------+                                                                                                                                                                                                                                                                                                                                     | 
| RNETSystem.h                         |                                                                                                                                                                                                                                                                                                                                     |
+--------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
