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

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).

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.

New REDNet return codes

  • All return codes from former REDNet version stored in RNET.h are now merged into RED.h.

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.

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

New classes CIDs

  • New classes CID defines.

New functions

  • RED::CID::operator != : An inequality operator.

  • RED::CID::GetKey: Access the key stored by a CID.

REDColor.h

New functions

  • RED::Color::SetRGBA: Define a color from 4 floating point components directly.

  • RED::Color::Random: Get a random color!

REDFactory.h

New functions

  • RED::Color::SetRGBA: Define a color from 4 floating point components directly.

  • RED::Color::Random: Get a random color!

REDFileSystemTools.h

General API update

  • Replaced REDFileHandler by FILE*, which is already cross platform.

  • Modified all file methods accordingly.

REDFrameStatistics.h

General API update

  • RED::FrameStatistics::GetSoftwareRenderStepPassCount becomes RED::FrameStatistics::GetSoftwareRenderStepPassesCount. With plural for “passes”.

  • RED::FrameStatistics::GetSoftwareIICSamplesCount becomes RED::FrameStatistics::GetSoftwareGICacheSampelsCount.

REDIDataManager.h

Context management

  • Removed RED::IDataManager::CreateContext. Can’t be used by a client application.

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.

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

New methods and API changes

  • RED::IGeometryDatabase::GetPrimitiveNumber to decode TIDs returned by intersection methods.

REDIGICache.h

New class

  • RED::IGICache interface for GI cache operations.

REDIImage.h

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

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

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

General API update

  • Modified RED::ILicense::IsProductActivated. Added product enumeration.

New seat based licensing methods

  • RED::ILicense::SetOnlineLicense.

REDILightShape.h

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

General API update

  • RED::IMaterial::GetShader: Parameter migration from ** to *&.

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

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

General API update

  • RED::IREDFile::WriteShaderProgram: Now uses RED::ShaderProgramID program identifiers.

REDIResourceManager.h

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

General API update

  • RED::IShape::GetChildByID: Parameter changed from ** to *&.

New functions

  • RED::IShape::GetChildByID: directly using a RED::String as an ID.

REDISkyLightShape.h

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

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

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

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

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

New functions

  • RED::IStream::ReadLine and RED::IStream::ReadData.

REDISunLightShape.h

New functions

  • Added an intensity scaling parameter to RED::ISunLightShape::SetSun and RED::ISunLightShape::GetSun.

REDITextShape.h

General API update

  • Renamed RED::ITextShape::GetStringCount into RED::ITextShape::GetStringsCount. Added missing plural to “strings”.

REDITransformShape.h

General API update

  • Added missing constness to RED::ITransformShape::SetMatrix.

REDIViewpointRenderList.h

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.

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.

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.

New built-in render images API (used in relationship with RED::IWindow::CreateMultiRenderTargetVRL)

  • RED::IViewpointRenderList::GetRenderImage,

  • RED::IViewpointRenderList::GetRenderDepthImage,

  • RED::IViewpointRenderList::GetRenderImagesCount.

REDIWindow.h

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.

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

New function

  • RED::Object::GetIDFromData: Calculate an object ID from an input data array.

REDOptionList.h

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.

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

New layers

  • RED::LT_INDIRECT: Indirect lighting image layer.

REDRenderShader.h

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.

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.

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

New shader input parameter API

  • Migration on new shader input parameters for shader queries and modifications.

REDRayCutoffShader.h

REDRayGIDiffuseShader.h

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

New return values

  • RED::SoftShaderCallback::_out_color_indirect: Used to fill in the RED::LT_INDIRECT RED::RenderLayer.

REDShaderProgramID.h

New file

  • RED::ShaderProgramID class. Stores a program ID, that used to be a simple integer in previous REDsdk versions.

REDShaderString.h

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

General API update

  • Migration of the RED::Vector and RED::Map classes onto RED::uint64 size values.

REDStreamingPolicy.h

General API update

  • Removal of the useless STREAMING_POLICY_CALLBACK and of the related RED::StreamingPolicy::SetCallback method.

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

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