REDsdk 4.3

Welcome to REDsdk 4.3!

API changes

For those that directly want to jump into the details, see all API changes here: REDsdk 4.3 API changes.

Overview of changes

This new version of REDsdk is focused on both extending the REDsdk feature set and also keeping REDsdk efficient and performant. Among all changes, we can note:

Browse the page below to discover other changes made for this release!


Background clouds in the sky.

We have put a significative effort in REDsdk 4.3 in the development of a cloud rendering solution. REDsdk 4.3 contains two new rendering solutions for clouds, both of which serve different purposes:

Enhanced multiple importance sampling

Enhanced multiple importance sampling.

We have changed the mathematical method used for multiple-importance sampling calculations in REDsdk 4.3. This results in much better results at no cost. The image above compares results got from REDsdk 4.2 with new results got from REDsdk 4.3. All rendering options are identical and rendering times are identical too.

Enhanced probabilistic light sampling

The scene used for light sampling comparisons.

Rendering scenes with many lights could take a fair amount of time. A new development in REDsdk 4.3 reduces the burden of rendering scenes with many lights by improving the probabilistic distribution of lighting samples. On average, scenes render faster AND get a better quality with less noise. Below is a comparison between REDsdk 4.2 and REDsdk 4.3 with identical rendering parameters on an average scene (6 millions triangles, 25 lights, 200 materials): AA = Anti Aliasing level, L = Lights sampling rate, G = glossiness sampling rate.


REDsdk 4.2 vs. 4.3 sampling comparisons.

Of course, results may differ depending on the used range of settings, and may also differ depending on the number of lights; but the higher the number of lights the greater the speedup factor using REDsdk 4.3 instead of REDsdk 4.2. Note that this only applies to physical lights. Non physical lights are ignored by these improvements.

Adaptive ray-tracing

REDsdk features a new rendering mode based on adaptive sampling for ray-tracing. Adaptive sampling is a technique that reduces the amount of calculation to perform for a pixel based on a quality threshold. Performance savings can reach up to 75% of the rendering time, at the expense of a little loss in quality. The performance gain highly depends on the kind of scene and quality variation, so it's quite difficult to provide numbers, as this depends both on how the quality loss is perceived and on the scene itself. In most cases, the quality loss is barely visible while the image calculation time savings are up to 50%.

Please refer to the following page: Adaptive sampling for all details on how to use adaptive sampling in REDsdk.

New post processing features

New post processing effects available in REDsdk 4.3

The set of post-processing effects available in REDsdk has been increased to include a new set of post-effects:

Then, new color manipulation tools have been added too:

All these effects are available in all REDsdk modes: hardware, hybrid or software. Please look here: Post processing for details.

Real-time improvements

IES profiles are now visible using the GPU.

A few enhancements were made in REDsdk 4.3 to enhance the lighting capabilities of the GPU:

Other miscellaneous enhancements:

High definition matrix migration

A very important change has occurred in REDsdk 4.3 related to GPU rendering: Due to the recent trends in OpenGL evolution, we have chosen to migrate all REDsdk built-in shaders toward using high definition matrices supplied by REDsdk. This means that all REDsdk 4.3 built-in shaders will be using the high definition modelview and modelview-projection matrices that are defined by REDsdk. This solves Floating origins issues and this prepares future changes in OpenGL pipeline where there'll be no more fixed function pipeline (FFP) matrices definitions available to shaders.

Practically, this implies that:

Then, custom shaders may require a migration:

A shader that is not modified and used in one of the REDsdk rendering workflows described above may reveal z-fighting artifacts. This may arise if an internal REDsdk shader uses high definition matrices and the custom shader uses default OpenGL matrices: both matrices are slightly different and rendering different passes with one or the other matrix will cause artifacts to appear. In this case, the shader must be migrated and the matrix names it uses must be changed.

Note that changing matrix names is done at no performance cost. From a user standpoint, this is just a string name change.

Please also note that some shaders still require legacy FFP matrices to be used, such as those used for the rendering of OpenGL fonts (see RED::FNT_TRIANGLE, RED::FNT_LINE and RED::FNT_BITMAP types). These texts can be rendered using materials created by RED::IResourceManager::CreateColorFontMaterial. If these texts are rendered using REDsdk built-in shaders, they won't be displayed anymore until migrated to a shader using legacy transformation matrices.

Debug output for a better error tracking

A new Error tracking feature has been added to REDsdk to provide a better feedback on errors. Practically, the hosting application must declare a callback to gather errors at the time they happen. Depending on the kind of error that occur in REDsdk, extra informations may be available then to facilitate debugging. At the same time, a REDsdk error log file is dumped in the binary folder of the application.

We have tried to add extra informations to describe internal errors the best we could, but as this is an endless process, please don't hesitate to send us those files back with details on the kind of extra informations you'd have appreciated to find, so that we can try to complete our error logs.

Stereoscopic panoramas

A new tutorial (Creating stereoscopic panorama) has been added to show how REDsdk can be used to create stereoscopic panoramas images that can be then loaded to the Oculus or HTC Vive.

Hardware issues

Several changes have been made to the REDsdk configuration to bypass hardware issues: