OptiX advanced samples on github

The OptiX Advanced Samples have been updated to support the OptiX SDK 8.0.0 release.

The major difference in the new OptiX SDK 8.0.0 release is the addition of the Shader Execution Reordering (SER) functionality affecting Ada Lovelace GPUs.
Please read this OptiX Programming Guide chapter for more information:
https://raytracing-docs.nvidia.com/optix8/guide/index.html#shader_execution_reordering#shader-execution-reordering

SER is demonstrated inside the SDK’s optixPathTracer example and inside the MDL_renderer of these advanced examples
https://github.com/NVIDIA/OptiX_Apps/blob/master/apps/MDL_renderer/shaders/raygeneration.cu#L177

This small change from the optixTrace to the new optixTraverse, optixReorder, optixInvoke device functions for SER, where the shader ID is given as coherency hint bits to optixReorder, results in a 55% performance improvement (88 fps to 137 fps) of the scene_mdl_vMaterials.txt scene.
(Benchmarked under Windows 10 and 535.98 drivers on RTX 6000 Ada with interop 0 inside the system_mdl_vMaterials.txt and the application’s benchmark mode (command line option -m 1) measuring the raw raytracing performance without display.)

The Shader Execution Reordering performance is dependent on the amount of local memory used inside the program domain which calls optixReorder.
For example, the MDL_renderer is using 272 bytes of local memory inside the ray generation program of which much is the per ray payload structure.
In an experiment which reduced that size down to 124 bytes by removing the support for nested materials, which reduces the material stack entries, the performance improved by 87% (89 fps to 167 fps) instead. YMMV.

1 Like