Path-Tracing

Introduction

HOOPS Luminate, amongst other rendering algorithms, offers path-tracing to render pre-visualization as well as high end pictures from 3d scenes. It can be turned on when calling RED::IWindow::FrameTracing by selecting the right feedback mode (RED::FTF_PATH_TRACING).

Path-tracing works by sending rays from the eye and following only a single randomly-chosen bounce at each surface interaction. It computes reflections, refractions, lighting and GI at once, without the need of any pre-processing work. Therefore, it makes path-tracing the method of choice when it comes to render immediate, fully-featured pictures.

The main issue with path-tracing is noise which is difficult to remove from the pictures without any additional post-processing. However, in some cases (exterior lighting, object design), path-tracing can still be used to render high-quality final images. Otherwise, the method is perfect for quick pre-visualization of 3d scenes under complex lighting conditions.

Note

In HOOPS Luminate, path-tracing is supported only by realistic materials (RED::IMaterial::SetupRealisticMaterial). Other materials will render black. Caustics, because they can’t be correctly handled by path-tracing) are also discarded when using path-tracing to render.

As mentioned earlier, path-tracing explicitly computes GI without the need of extra structures like the GI cache for examples. So, none of the GI cache parameters is meaningful to the path-tracing method and, as a consequence, it can starts rendering immediately.

Path-Tracing Parameters

Path-tracing in HOOPS Luminate is controlled with only two parameters: the number of paths traced per pixel and the depth of the GI computation.

The number of paths traced per pixel lets you control the quality of each pixel colour estimation. Increasing it enhances the anti-aliasing, the quality of lighting and glossy effects but also the rendering time. You can change the number of paths per pixel by calling RED::IViewpointRenderList::SetSoftAntiAlias. The actual number of paths traced will be the square value of the passed parameter.

../../../../_images/bk_re_sw3d_path_tracing_samples_count.jpg

Variation of the picture quality with the increase in paths count (from left to right respectively: 1 path, 16 paths, 64 paths).

The depth of the GI controls how far in inter-diffuse reflections the renderer goes. Set it to 0 to remove any GI computation. At 1, only one single bounce of indirect lighting will be computed. At 10, 10 bounces will be computed and so on. Increasing this value lets more lighting to be added to the scene but also increase the noise and the rendering time (not in a linearly way though). This parameter is controlled through the RED::OPTIONS_PATH_GI engine option.

../../../../_images/bk_re_sw3d_path_tracing_gi_depth.jpg

Notice how the pictures get lighter with the GI depth (from left to right respectively: 0, 1, 4).