######################
REDsdk 4.2 API Changes
######################

+-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| File name                         | "Change details"                                                                                                                                                  |
+===================================+===================================================================================================================================================================+
| RED.h                             | .. rubric:: New return codes                                                                                                                                      |
|                                   |                                                                                                                                                                   |
|                                   | * RED_SCG_INVALID_SKIN_MESH_DATA: Animation framework error code.                                                                                                 |
|                                   | * RED_NET_CANT_RESOLVE_DESTINATION: RNET error code.                                                                                                              |
|                                   | * RED_NET_CANT_CREATE_SOCKET: RNET error code.                                                                                                                    |
|                                   |                                                                                                                                                                   |
|                                   | .. rubric:: New defines                                                                                                                                           |
|                                   |                                                                                                                                                                   |
|                                   | * RED_4PI, RED_PI4                                                                                                                                                |
+-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| REDAnimationClip.h                | New file, part of the animation framework!                                                                                                                        |
+-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| REDAnimationData.h                | New file, part of the animation framework!                                                                                                                        |
+-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| REDCID.h                          | New classes CID values.                                                                                                                                           |
+-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| REDColor.h                        | .. rubric:: New methods                                                                                                                                           |
|                                   |                                                                                                                                                                   |
|                                   | * RED::Color construction method from double values.                                                                                                              |
|                                   | * RED::Color::SetRGBA from double values.                                                                                                                         |
+-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| REDFactory.h                      | .. rubric:: Animation system methods                                                                                                                              |
|                                   |                                                                                                                                                                   |
|                                   | * RED::Factory::CreateAnimationClipController.                                                                                                                    |
|                                   | * RED::Factory::CreateSkeletalAnimationClipController.                                                                                                            |
|                                   | * RED::Factory::CreateSkeletalAnimationBlender.                                                                                                                   |
+-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| REDFrameStatistics.h              | .. rubric:: New detailed statistics                                                                                                                               |
|                                   |                                                                                                                                                                   |
|                                   | * New RED::PassStatistics and RED::ViewpointStatistics classes for detailed pass statistics.                                                                      |
|                                   | * New RED::RENDERING_PASS enumeration for pass based statistics.                                                                                                  |
|                                   | * Most methods of the former RED::FrameStatistics class are now found in RED::ViewpointStatistics.                                                                |
|                                   | * New RED::FrameStatistics class with new high level statistics.                                                                                                  |
+-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| REDIAnimationClipController.h     | New file, part of the animation framework!                                                                                                                        |
+-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| REDIDataManager.h                 | .. rubric:: Animation framework methods                                                                                                                           |
|                                   |                                                                                                                                                                   |
|                                   | * Added RED::IDataManager::GetAnimationClipControllersCount and RED::IDataManager::GetAnimationClipController.                                                    |
|                                   | * Added RED::IDataManager::GetSkeletalAnimationClipControllersCount and RED::IDataManager::GetSkeletalAnimationClipController.                                    |
|                                   | * Added RED::IDataManager::GetSkeletalAnimationBlendersCount and RED::IDataManager::GetSkeletalAnimationBlender.                                                  |
+-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| REDIGICache.h                     | .. rubric:: GI replay and miscellaneous methods                                                                                                                   |
|                                   |                                                                                                                                                                   |
|                                   | * Modified RED::IGICache::FilterEstimator: the filtering criteria uses a neighbor count rather than a search radius.                                              |
|                                   | * New RED::IGICache::GPUBuild method to construct a GI cache for GPU replay.                                                                                      |
|                                   | * New RED::IGICache::GetEstimatorPhotonsCount and RED::IGICache::GetCacheSamplesCount query methods.                                                              |
+-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| REDIImageComposite.h              | .. rubric:: Minor changes                                                                                                                                         |
|                                   |                                                                                                                                                                   |
|                                   | * Added missing RED_CIMG_FRESNEL_ALPHACOL parameter.                                                                                                              |
|                                   | * Modified RED::IImageComposite::Layered: Maximum 7 textures can be composited in one layered image.                                                              |
+-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| REDILightShape.h                  | .. rubric:: Light baking                                                                                                                                          |
|                                   |                                                                                                                                                                   |
|                                   | * New RED::RM_BAKED rendering mode for light baking.                                                                                                              |
|                                   |                                                                                                                                                                   |
|                                   | .. rubric:: New complete sky model                                                                                                                                |
|                                   |                                                                                                                                                                   |
|                                   | * New RED::ILightShape::IsMoonLight query method.                                                                                                                 |
+-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| REDIMaterial.h                    | .. rubric:: Realistic material enhancements                                                                                                                       |
|                                   |                                                                                                                                                                   |
|                                   | * Added new realistic features to RED::IMaterial::SetupRealisticMaterial.                                                                                         |
+-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| REDIMaterialController.h          | .. rubric:: Realistic material enhancements                                                                                                                       |
|                                   |                                                                                                                                                                   |
|                                   | * Added new #define statements for new realistic material features.                                                                                               |
|                                   |                                                                                                                                                                   |
|                                   | .. rubric:: New API for setting material controller creation parameters afterwards                                                                                |
|                                   |                                                                                                                                                                   |
|                                   | * RED::IMaterialController::SetName.                                                                                                                              |
|                                   | * RED::IMaterialController::SetCategory.                                                                                                                          |
|                                   | * RED::IMaterialController::SetSubCategory.                                                                                                                       |
|                                   | * RED::IMaterialController::SetDescription.                                                                                                                       |
|                                   | * RED::IMaterialController::SetAuthor.                                                                                                                            |
+-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| REDIMeshShape.h                   | .. rubric:: New skinning methods                                                                                                                                  |
|                                   |                                                                                                                                                                   |
|                                   | * RED::IMeshShape::AddBone, RED::IMeshShape::GetBonesCount.                                                                                                       |
|                                   | * RED::IMeshShape::SetBoneMatrix, RED::IMeshShape::GetBoneMatrix, RED::IMeshShape::GetBoneNeutralPose, RED::IMeshShape::GetBoneName.                              |
|                                   | * RED::IMeshShape::GetBoneParent, RED::IMeshShape::GetBoneChildrenCount, RED::IMeshShape::GetBoneChild.                                                           |
|                                   | * RED::IMeshShape::SetSkinBonesCount, RED::IMeshShape::SetSkinBone.                                                                                               |
|                                   | * RED::IMeshShape::SetSkinVerticesCount, RED::IMeshShape::SetSkinVertex.                                                                                          |
|                                   | * RED::IMeshShape::SetBoneInfluencesCount, RED::IMeshShape::SetBoneInfluence.                                                                                     |
|                                   | * RED::IMeshShape::InitializeSkinning, RED::IMeshShape::DoSkinning, RED::IMeshShape::ResetSkinning, RED::IMeshShape::HasSkinningData.                             |
+-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| REDIMoonLightShape.h              | New file! This is the moon light source. Setup it from RED::ISkyLightShape::SetMoonLight.                                                                         |
+-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| REDIOTools.h                      | .. rubric:: Miscellaneous                                                                                                                                         |
|                                   |                                                                                                                                                                   |
|                                   | * Added a flag to select object types loaded through RED::IOTools::Load and to RED::IOTools::Save.                                                                |
|                                   | * Removed RED::IOLMT_LAMBERT_OR_PHONG, which is useless. Use RED::IOLMT_GENERIC instead.                                                                          |
+-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| REDISkeletalAnimationBlender.h    | New file, part of the animation framework!                                                                                                                        |
+-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| REDISkeletalAnimationController.h | New file, part of the animation framework!                                                                                                                        |
+-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| REDISkyLightShape.h               | .. rubric:: New complete sky model                                                                                                                                |
|                                   |                                                                                                                                                                   |
|                                   | * Added RED::ISkyLightShape::SetPhysicalModel, RED::ISkyLightShape::GetPhysicalModel, RED::ISkyLightShape::IsPhysicalModel: New physical day and night sky model. |
|                                   | * Added RED::ISkyLightShape::SetCustomModel, RED::ISkyLightShape::GetCustomModel, RED::ISkyLightShape::IsCustomModel: User controller sky lighting model.         |
|                                   | * Modified RED::ISkyLightShape::CreatePhysicalSkyTexture to comply to new API.                                                                                    |
|                                   | * Added RED::ISkyLightShape::SetSunLight, RED::ISkyLightShape::SetMoonLight: New sky model API.                                                                   |
|                                   | * Added RED::ISkyLightShape::ComputeSunDirection, RED::ISkyLightShape::ComputeMoonDirection: New sky model helpers.                                               |
|                                   |                                                                                                                                                                   |
|                                   | .. rubric:: Kept the legacy sky texture construction for backward compatibility                                                                                   |
|                                   |                                                                                                                                                                   |
|                                   | * RED::ISkyLightShape::CreatePhysicalSkyTextureLegacy.                                                                                                            |
+-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| REDISoftLight.h                   | .. rubric:: Miscellaneous                                                                                                                                         |
|                                   |                                                                                                                                                                   |
|                                   | * Added RED::ISoftLight::GetShape to access the shape of the light source.                                                                                        |
|                                   |                                                                                                                                                                   |
|                                   | .. rubric:: New complete sky model                                                                                                                                |
|                                   |                                                                                                                                                                   |
|                                   | * New RED::LT_MOON light type enumeration value.                                                                                                                  |
+-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| REDISoftRayContext.h              | .. rubric:: Light baking changes                                                                                                                                  |
|                                   |                                                                                                                                                                   |
|                                   | * Modified RED::ISoftRayContext::PrepareLights to choose to consider baked lights or not in the calculation.                                                      |
|                                   |                                                                                                                                                                   |
|                                   | .. rubric:: Miscellaneous                                                                                                                                         |
|                                   |                                                                                                                                                                   |
|                                   | * Added RED::ISoftRayContext::IsGlossinessAnglesOnly for glossiness angles queries.                                                                               |
+-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| REDISoftRenderingContext.h        | .. rubric:: GI replay and world cache                                                                                                                             |
|                                   |                                                                                                                                                                   |
|                                   | * Added RED::ISoftRenderingContext::GetRayWorldCacheSamplesCount to access the number of samples in a GI world cache.                                             |
|                                   | * New RED::ISoftRenderingContext::IsGIEnabled to query the actual GI settings.                                                                                    |
+-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| REDISunLightShape.h               | .. rubric:: New complete sky model                                                                                                                                |
|                                   |                                                                                                                                                                   |
|                                   | * Removed RED::ISunLightShape::SetSun. The sun is now setup using RED::ISkyLightShape::SetSunLight.                                                               |
+-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| REDIWindow.h                      | .. rubric:: Miscellaneous                                                                                                                                         |
|                                   |                                                                                                                                                                   |
|                                   | * Changed the prototype of RED::IWindow::FrameTracingGICache to always supply a list of filtering positions to the method.                                        |
|                                   | * Added RED::IWindow::GetFrameStatistics to retrieve current frame statistics.                                                                                    |
|                                   | * New RED::IWindow::SetOSHandler method to change the handle of a window during its life.                                                                         |
+-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| REDMath.h                         | .. rubric:: Miscellaneous                                                                                                                                         |
|                                   |                                                                                                                                                                   |
|                                   | * New REDMISPower helper function.                                                                                                                                |
|                                   | * Removed REDNoise. Now in RED::Noise class.                                                                                                                      |
+-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| REDMutex.h                        | New cross platform mutex class.                                                                                                                                   |
+-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| REDNoise.h                        | New file! Implements Perlin and Worley noise in 2D and 3D with or without derivatives calculations.                                                               |
+-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| REDOptionList.h                   | .. rubric:: New options                                                                                                                                           |
|                                   |                                                                                                                                                                   |
|                                   | * New RED::OPTIONS_RAY_WORLD_CACHE_SAMPLES_COUNT: New option to choose the number of samples in a GI cache generated in world mode.                               |
|                                   | * New RED::OPTIONS_RAY_WORLD_CACHE_SAMPLES_SPREAD: Controls the GPU spreading of GI cache samples.                                                                |
|                                   | * New RED::OPTIONS_RAY_FORCE_EMBREE: Forces using Embree, regardless of the scene contents.                                                                       |
|                                   | * New RED::OPTIONS_RAY_TRANSPARENCY_TOLERANCE_GPU: Controls the numerical tolerance of transparency rays in GPU ray-tracing.                                      |
|                                   | * New RED::OPTIONS_FORCE_STENCIL: enable stencil buffers on auxiliary buffers.                                                                                    |
+-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| REDQuaternion.h                   | New file!                                                                                                                                                         |
+-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| REDRenderShader.h                 | .. rubric:: Miscellaneous                                                                                                                                         |
|                                   |                                                                                                                                                                   |
|                                   | * Modified RED::RenderShader::VertexProgramSelection and RED::RenderShader::CompositeTextureSelection for built-in shaders codepath determination.                |
|                                   | * Modified RED::RenderShader::SelectSingleUV: 16 textures maximum allowed.                                                                                        |
|                                   | * New RED_LIGHT_MOON_LIGHT light source geometry and lighting target.                                                                                             |
+-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| REDRenderShaderParameter.h        | .. rubric:: Miscellaneous                                                                                                                                         |
|                                   |                                                                                                                                                                   |
|                                   | * New RED::RenderShaderParameter::REF_RAY_ENDING_NOR_IMAGE: New GPU ray-tracing reference.                                                                        |
|                                   | * New RED::RenderShaderParameter::REF_RAY_WORLD_CACHE_SAMPLE_SPREAD: Reference for RED::OPTIONS_RAY_WORLD_CACHE_SAMPLES_SPREAD.                                   |
+-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| REDShaderProgramID.h              | Modified internal shader classification.                                                                                                                          |
+-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| REDShaderString.h                 | .. rubric:: Miscellaneous                                                                                                                                         |
|                                   |                                                                                                                                                                   |
|                                   | * Modified RED::ShaderString::ReadBumpMap to comply to new built-in shaders texturing capabilities.                                                               |
|                                   | * Added RED::ShaderString::Tex: general texture access method for ARB programs.                                                                                   |
+-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| REDVector3.h                      | New RED::Vector3::Set method from double values.                                                                                                                  |
+-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| REDVolumetricEffect.h             | Modified RED::VolumetricEffect::GetPhase: RGB wavelength phase returned.                                                                                          |
+-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| REDVolumetricEffectBoxVolume.h    | Modified RED::VolumetricEffectBoxVolume::GetPhase: RGB wavelength phase returned.                                                                                 |
+-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| REDVolumetricEffectLightVolume.h  | Modified RED::VolumetricEffectLightVolume::GetPhase: RGB wavelength phase returned.                                                                               |
+-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------+
