Enabling Intel Open Image Denoise

Here is how to activate the denoising using Intel Open Image Denoise:

  • first, make sure the libraries are beside HOOPS Luminate libraries

  • then enable it like this:

// 1. Get the options interface from a viewpoint or the window.
RED::IOptions* options = viewpoint->As< RED::IOptions >();

// 2. Enable Open Image Denoise.
RC_TEST( options->SetOptionValue( RED::OPTIONS_RAY_ENABLE_OPEN_IMAGE_DENOISE, true, iresmgr->GetState() ) );

// 3. That's all!

If RED::IWindow::FrameTracingImageLayers is used instead of the classical RED::IWindow::FrameTracing, the diffuse and normal layers are used to improve the denoising.

// Denoising is improved by providing diffuse and normal buffers with RED::IWindow::FrameTracingImageLayers
RED::Object *imageColor, *imageDepth, *imageDiffuse, *imageNormal;
RC_TEST( iresmgr->CreateImage2D( imageColor, iresmgr->GetState() ) );
RC_TEST( iresmgr->CreateImage2D( imageDepth, iresmgr->GetState() ) );
RC_TEST( iresmgr->CreateImage2D( imageDiffuse, iresmgr->GetState() ) );
RC_TEST( iresmgr->CreateImage2D( imageNormal, iresmgr->GetState() ) );

RED_RC rc;
RED::Vector< RED::RenderLayer > render_layers;
// Color and depth layers are mandatory.
RED::RenderLayer layer1( RED::RenderLayer::LT_COLOR, imageColor, viewpoint, rc );
RC_TEST( rc );
RC_TEST( render_layers.push_back( layer1 ) );

RED::RenderLayer layer2( RED::RenderLayer::LT_DEPTH, imageDepth, viewpoint, rc );
RC_TEST( rc );
RC_TEST( render_layers.push_back( layer2 ) );

// Diffuse and normal layers are optional and improve the denoising.
RED::RenderLayer layer3( RED::RenderLayer::LT_DIFFUSE, imageDiffuse, viewpoint, rc );
RC_TEST( rc );
RC_TEST( render_layers.push_back( layer3 ) );

RED::RenderLayer layer4( RED::RenderLayer::LT_NORMAL, imageNormal, viewpoint, rc );
RC_TEST( rc );
RC_TEST( render_layers.push_back( layer4 ) );

// Rendering:
bool complete = false;
while( !complete )
{
    window->FrameTracingImageLayers( complete, render_layers );
}