######################
REDsdk 5.1 API Changes
######################

+----------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| File name                  | "Change details"                                                                                                                                                                                                                                             |
+============================+==============================================================================================================================================================================================================================================================+
| ART.h                      | * Global namespace migration of the REDart API, from namespace RPL to namespace ART. All ART include files have been updated.                                                                                                                                |
|                            | * New helper macros to access the most common ART objects.                                                                                                                                                                                                   |
+----------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| ARTIAssetManager.h         | .. rubric:: New methods                                                                                                                                                                                                                                      |
|                            |                                                                                                                                                                                                                                                              |
|                            | * ART::IAssetManager::DeleteAtlas: Cleanup of a loaded atlas.                                                                                                                                                                                                |
|                            | * ART::IAssetManager::CreateAtlas and ART::IAssetManager::DeleteAtlas: Creation and destruction of a flat atlas.                                                                                                                                             |
|                            | * ART::IAssetManager::DeleteGeometry: Cleanup of a created geometry.                                                                                                                                                                                         |
|                            | * ART::IAssetManager::BuildGeometryREDGraph: Turn an ART geometry into a plain REDsdk scene graph.                                                                                                                                                           |
|                            | * ART::IAssetManager::StopGenerateGeometryGICache: Interrupt a GI cache calculation.                                                                                                                                                                         |
|                            | * ART::IAssetManager::ClearGeometryGICache: Helper to cleanup a geometry GI cache.                                                                                                                                                                           |
|                            | * ART::IAssetManager::DeleteReflectionProbesMaps: Cleanup of reflection probes maps.                                                                                                                                                                         |
|                            | * ART::IAssetManager::StopGenerateGeometryVertexAO: Interrupt a geometry vertex AO calculation.                                                                                                                                                              |
|                            | * ART::IAssetManager::DeleteLightStaticShadowMaps: New methods to cleanup the memory of static shadow maps.                                                                                                                                                  |
|                            |                                                                                                                                                                                                                                                              |
|                            | .. rubric:: Modified methods                                                                                                                                                                                                                                 |
|                            |                                                                                                                                                                                                                                                              |
|                            | * ART::IAssetManager::LoadAtlas: The RED::IDataManager loading context is now returned for a proper memory cleanup.                                                                                                                                          |
|                            | * ART::IAssetManager::LoadGeometrySourceFile: No more gamma control on import, an option to select the storage mode of textures, progress callback.                                                                                                          |
|                            | * ART::IAssetManager::GenerateGeometryGICache: Added a ground handling option.                                                                                                                                                                               |
|                            | * ART::IAssetManager::SaveGeometryGICache, ART::IAssetManager::LoadGeometryGICache: Added a sun direction option that corresponds to the cache saved.                                                                                                        |
|                            | * ART::IAssetManager::LoadReflectionProbeMaps: Retrieved the data context for a proper memory cleanup.                                                                                                                                                       |
|                            | * ART::IAssetManager::GenerateGIFilteringPositions: Added a ground altitude control.                                                                                                                                                                         |
|                            | * ART::IAssetManager::ComputeShapePaths: New option flag to add the shape itself in generated paths.                                                                                                                                                         |
|                            |                                                                                                                                                                                                                                                              |
|                            | .. rubric:: Removed methods                                                                                                                                                                                                                                  |
|                            |                                                                                                                                                                                                                                                              |
|                            | * ART::IAssetManager::StartGeometryDefinition and StopGeometryDefinition that became useless.                                                                                                                                                                |
+----------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| ARTIGeometry.h             | .. rubric:: Modified methods                                                                                                                                                                                                                                 |
|                            |                                                                                                                                                                                                                                                              |
|                            | * ART::IGeometry::GetVerticesCount: Added counter values for emissive and masked meshes.                                                                                                                                                                     |
|                            | * ART::IGeometry::IsAutomaticSetOnGround: Query the behavior of the geometry vs. the ground.                                                                                                                                                                 |
|                            |                                                                                                                                                                                                                                                              |
|                            | .. rubric:: Removed methods                                                                                                                                                                                                                                  |
|                            |                                                                                                                                                                                                                                                              |
|                            | * Global color modifiers: SetHSLModifier, SetReflectionModifier and SetTranslucencyModifier. Now controls are in ART::IMaterials.                                                                                                                            |
+----------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| ARTILight.h                | .. rubric:: New methods                                                                                                                                                                                                                                      |
|                            |                                                                                                                                                                                                                                                              |
|                            | * ART::ILight::GetSphereRadius: for physical spherical lights.                                                                                                                                                                                               |
|                            | * ART::ILight::GetShadowMapBlur, ART::ILight::SetShadowMapBlur: Control the light shadow map blur.                                                                                                                                                           |
|                            | * ART::ILight::SetIESData: Specify IES parameters retrieved from the ART::IAssetManager.                                                                                                                                                                     |
+----------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| ARTIMaterial.h             | New file. ART material.                                                                                                                                                                                                                                      |
+----------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| ARTIObserver.h             | .. rubric:: New methods                                                                                                                                                                                                                                      |
|                            |                                                                                                                                                                                                                                                              |
|                            | * ART::IObserver::GetNearFarBackground: Return clipping planes for the background scenery.                                                                                                                                                                   |
|                            | * Background near far override API: ART::IObserver::OverrideNearFarBackground and related accessors.                                                                                                                                                         |
|                            | * ART::IObserver::GetPrimaryRay: Return the picking line getting through a pixel.                                                                                                                                                                            |
+----------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| ARTIOptions.h              | .. rubric:: New ART::DISPLAY_MODE value, ART::DM_OBJECT_ID to visualize object IDs in a scene                                                                                                                                                                |
|                            |                                                                                                                                                                                                                                                              |
|                            |                                                                                                                                                                                                                                                              |
|                            | .. rubric:: New API to control switching fields of views for different display categories (a star in a sky, close orbit): ART::IOptions::SetStarInTheSkyFOVRatio, ART::IOptions::SetCloseOrbitFOVRatio and corresponding accessors                           |
|                            |                                                                                                                                                                                                                                                              |
|                            |                                                                                                                                                                                                                                                              |
|                            | .. rubric:: Removed methods (will be remade public through another API directly at the planetary or atlas level)                                                                                                                                             |
|                            |                                                                                                                                                                                                                                                              |
|                            | * ART::IOptions::SetStarRadianceMultiplier and ART::IOptions::GetStarRadianceMultiplier: to control the star radiance.                                                                                                                                       |
|                            | * ART::IOptions::SetSkyRadianceMultiplier and ART::IOptions::GetSkyRadianceMultiplier: to control the sky radiance.                                                                                                                                          |
|                            | * ART::IOptions::SetSkyMultiplier and ART::IOptions::GetSkyMultiplier: to control the visible sky intensity.                                                                                                                                                 |
|                            | * ART::IOptions::SetCloudsGroundAlbedo and ART::IOptions::GetCloudsGroundAlbedo: Useless after improvements of the shading model.                                                                                                                            |
|                            | * ART::IOptions::SetLightShadowMapBlur and ART::IOptions::GetLightShadowMapBlur: Moved to lights and customizable on a per light basis.                                                                                                                      |
|                            |                                                                                                                                                                                                                                                              |
|                            | .. rubric:: New methods                                                                                                                                                                                                                                      |
|                            |                                                                                                                                                                                                                                                              |
|                            | * ART::IOptions::SetAtmosphericCloudShadows and ART::IOptions::GetAtmosphericCloudShadows: Control the shadowing of clouds over the atmosphere.                                                                                                              |
|                            | * ART::IOptions::SetStarGIStrengthInShadows and ART::IOptions::GetStarGIStrengthInShadows: Control the backlighting and GI produced by the sun in shadowed regions.                                                                                          |
|                            | * ART::IOptions::SetPrismsSplatOverlap and ART::IOptions::GetPrismsSplatOverlap: Control the distance overlapping of prisms with splatting.                                                                                                                  |
|                            | * ART::IOptions::SetThreadsCount, ART::IOptions::GetThreadsCount: Control the number of threads used for all ART calculations.                                                                                                                               |
|                            | * ART::IOptions::SetPlanetLandscapeThreadsCount and ART::IOptions::GetPlanetLandscapeThreadsCount: Set the number of auxiliary threads needed to calculate a landscape.                                                                                      |
+----------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| ARTIPlanet.h               | .. rubric:: New methods                                                                                                                                                                                                                                      |
|                            |                                                                                                                                                                                                                                                              |
|                            | * ART::IPlanet::RefreshGeometryTransform: Modify the position of a geometry.                                                                                                                                                                                 |
|                            |                                                                                                                                                                                                                                                              |
|                            | .. rubric:: Modified methods                                                                                                                                                                                                                                 |
|                            |                                                                                                                                                                                                                                                              |
|                            | * ART::IPlanet::SetAtlas has a return code now. Can't be called once the world simulation has begun.                                                                                                                                                         |
|                            |                                                                                                                                                                                                                                                              |
|                            | .. rubric:: Removed methods                                                                                                                                                                                                                                  |
|                            |                                                                                                                                                                                                                                                              |
|                            | * ART::IPlanet::DestroyGeometry: See the ART::IAssetManager.                                                                                                                                                                                                 |
+----------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| ARTIWorld.h                | .. rubric:: New methods                                                                                                                                                                                                                                      |
|                            |                                                                                                                                                                                                                                                              |
|                            | * ART::IWorld::GetStar to access to the star of a solar or earth based system.                                                                                                                                                                               |
|                            | * ART::IWorld::OverrideGlobalTime, ART::IWorld::GetGlobalTimeOverride: Gain control over the simulation time.                                                                                                                                                |
|                            |                                                                                                                                                                                                                                                              |
|                            | .. rubric:: Modified methods                                                                                                                                                                                                                                 |
|                            |                                                                                                                                                                                                                                                              |
|                            | * ART::IWorld::AddCustomShape: Receives a new flag to choose a default material or a used supplied material.                                                                                                                                                 |
|                            | * ART::IWorld::Save: A progress callback has been added.                                                                                                                                                                                                     |
+----------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| REDFrameStatistics.h       | New RED::RENDERING_PROGRESS_STEP: RED::RPS_WORLD_GI_CACHE_PROCESSING used to track the progress of world GI caches calculations.                                                                                                                             |
+----------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| REDImageTools.h            | Fixed some methods wrong prototypes.                                                                                                                                                                                                                         |
+----------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| REDIOTools.h               | Added a iLocalImages parameter to choose the storage mode of images to the RED::IOTools::Load method.                                                                                                                                                        |
+----------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| REDIMaterial.h             | New RED::MTL_INTERNAL pass marker that can be returned to new OpenGL material customization callback (see RED::OPENGL_MATERIAL_CALLBACK).                                                                                                                    |
+----------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| REDIMeshShape.h            | New RED::MESH_FORMAT value: RED::MFT_HALF_FLOAT for the storage on 2 bytes floating point values.                                                                                                                                                            |
|                            | Modification of the RED::IMeshShape::Polygon method with a better management of UV textures and handling of polygon with different winding rules (RED::POLYGON_WINDING_RULE).                                                                                |
+----------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| REDIPhysicalLightShape.h   | Added a new method RED::IPhysicalLightShape::SetIESValues that can be used to supply IES values to a light without requiring an IES file to be loaded.                                                                                                       |
+----------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| REDIResourceManager.h      | Added new low level OpenGL customization callbacks: RED::IResourceManager::SetOpenGLMaterialCallback, RED::IResourceManager::SetOpenGLBufferCallback and RED::IResourceManager::SetOpenGLViewpointCallback, corresponding accessors and callback prototypes. |
+----------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| REDISoftRayContext.h       | .. rubric:: Modified methods                                                                                                                                                                                                                                 |
|                            |                                                                                                                                                                                                                                                              |
|                            | * RED::ISoftRayContext::PrepareLights: Removed an useless iVolumeSample flag.                                                                                                                                                                                |
+----------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| REDISoftRenderingContext.h | .. rubric:: New methods                                                                                                                                                                                                                                      |
|                            |                                                                                                                                                                                                                                                              |
|                            | * RED::ISoftRenderingContext::GetRayAdaptiveSamplingAllowedTime: Return the amount of time allowed to time based adaptive calculations.                                                                                                                      |
|                            | * RED::ISoftRenderingContext::GetBackgroundImagesIntensityScale: Return the background images intensity scaling factor.                                                                                                                                      |
+----------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| REDITransformShape.h       | Added an option to preserve source IDs of shapes when calling RED::ITransformShape::BuildHLR.                                                                                                                                                                |
+----------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| REDIViewpoint.h            | New RED::IViewpoint::GetRenderShaderParameters method for a direct access to camera render shader parameters.                                                                                                                                                |
+----------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| REDIViewpointRenderList.h  | .. rubric:: New methods                                                                                                                                                                                                                                      |
|                            |                                                                                                                                                                                                                                                              |
|                            | * RED::IViewpointRenderList::GetBackgroundImagesIntensityScale: Retrieve the intensity scaling of a background image.                                                                                                                                        |
|                            | * RED::IViewpointRenderList::SetViewpointSoftMatrix, RED::IViewpointRenderList::GetViewpointSoftMatrix: Supply the camera matrix to RED::IViewpointRenderList::SetViewpointSoftImages for post-processing needs.                                             |
|                            | * RED::IViewpointRenderList::GetInverseProjectionViewportMatrix: Return the VPV inverse matrix for the specified viewpoint.                                                                                                                                  |
|                            |                                                                                                                                                                                                                                                              |
|                            | .. rubric:: Modified methods                                                                                                                                                                                                                                 |
|                            |                                                                                                                                                                                                                                                              |
|                            | * RED::IViewpointRenderList::SetPixelFormat, RED::IViewpointRenderList::GetPixelFormat: Added a parameter to do the operation on a specific buffer in the case of multi-buffered VRLs.                                                                       |
|                            | * RED::IViewpointRenderList::SetBackgroundImages: Added a parameter to change the intensity scale of a background image.                                                                                                                                     |
+----------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| REDIWindow.h               | .. rubric:: Modified methods                                                                                                                                                                                                                                 |
|                            |                                                                                                                                                                                                                                                              |
|                            | * RED::IWindow::CreateVRL: Added an option flag to create a buffer with or without a z-buffer.                                                                                                                                                               |
|                            | * RED::IWindow::CreateMultiRenderTargetVRL: Added an option flag to create a buffer with or without a z-buffer. Added a per buffer format selection.                                                                                                         |
+----------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| REDOptionList.h            | .. rubric:: New options                                                                                                                                                                                                                                      |
|                            |                                                                                                                                                                                                                                                              |
|                            | * RED::OPTIONS_REFRESH_INSTANCE_COUNTERS: Can be turned on to force the refresh of instance counter values without requiring to edit the scene graph.                                                                                                        |
|                            | * RED::OPTIONS_RAY_ADAPTIVE_SAMPLING_ALLOWED_TIME: Used by \ref bk_re_adaptive_sampling, to set adaptation based on time rather than on quality.                                                                                                             |
|                            | * RED::OPTIONS_RAY_GI_ESTIMATOR_FULL_PATH: Can be used to increase the quality of the GI estimator in complex rendering situations.                                                                                                                          |
+----------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| REDPostProcess.h           | .. rubric:: New RED::TONEMAPPING_OPERATOR, RED::TMO_EXPONENTIAL                                                                                                                                                                                              |
|                            |                                                                                                                                                                                                                                                              |
|                            | .. rubric:: New methods                                                                                                                                                                                                                                      |
|                            |                                                                                                                                                                                                                                                              |
|                            | * Glow threshold: RED::PostProcess::SetGlowThreshold and RED::PostProcess::GetGlowThreshold.                                                                                                                                                                 |
|                            | * Depth line post process: RED::PostProcess::SetDepthLine and other configuration methods.                                                                                                                                                                   |
|                            | * Vignette post process: RED::PostProcess::SetVignette and other configuration methods.                                                                                                                                                                      |
|                            | * Lookup tables: RED::PostProcess::SetLUT and other configuration methods.                                                                                                                                                                                   |
|                            | * All CPU methods to compute multi-pass processing effects: for instance RED::PostProcess::ProcessGlowPass1 and other similar methods.                                                                                                                       |
+----------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| REDRenderShaderParameter.h | .. rubric:: New matrices parameters                                                                                                                                                                                                                          |
|                            |                                                                                                                                                                                                                                                              |
|                            | * RED::RenderShaderParameter::REF_VRL_VIEW_MATRIX,                                                                                                                                                                                                           |
|                            | * RED::RenderShaderParameter::REF_VRL_VIEW_PROJECTION_MATRIX,                                                                                                                                                                                                |
|                            | * RED::RenderShaderParameter::REF_VRL_VIEWPORT_MATRIX,                                                                                                                                                                                                       |
|                            | * RED::RenderShaderParameter::REF_VRL_PROJECTION_MATRIX,                                                                                                                                                                                                     |
|                            |                                                                                                                                                                                                                                                              |
|                            | .. rubric:: New inverse matrices parameters                                                                                                                                                                                                                  |
|                            |                                                                                                                                                                                                                                                              |
|                            | * RED::RenderShaderParameter::REF_VRL_VIEW_PROJECTION_VIEWPORT_MATRIX_INVERT,                                                                                                                                                                                |
|                            | * RED::RenderShaderParameter::REF_VRL_MODEL_MATRIX_INVERT,                                                                                                                                                                                                   |
|                            | * RED::RenderShaderParameter::REF_VRL_MODELVIEW_MATRIX_INVERT,                                                                                                                                                                                               |
|                            | * RED::RenderShaderParameter::REF_VRL_MODELVIEW_PROJECTION_MATRIX_INVERT,                                                                                                                                                                                    |
|                            | * RED::RenderShaderParameter::REF_VRL_VIEW_MATRIX_INVERT,                                                                                                                                                                                                    |
|                            | * RED::RenderShaderParameter::REF_VRL_VIEW_PROJECTION_MATRIX_INVERT,                                                                                                                                                                                         |
|                            | * RED::RenderShaderParameter::REF_VRL_VIEWPORT_MATRIX_INVERT,                                                                                                                                                                                                |
|                            | * RED::RenderShaderParameter::REF_VRL_VIEW_PROJECTION_VIEWPORT_MATRIX_INVERT,                                                                                                                                                                                |
|                            | * RED::RenderShaderParameter::REF_VRL_PROJECTION_MATRIX_INVERT.                                                                                                                                                                                              |
+----------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| REDShaderString.h          | New RED::ShaderString::SmoothStep method. Equivalent to GLSL smoothstep function.                                                                                                                                                                            |
+----------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| REDStateShader.h           | Added a missing RED::StateShader::GetBlendingMode accessor.                                                                                                                                                                                                  |
+----------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
