Daniel Qin

Novum Documentation

· 254 words · 2 minutes to read

Novum is written in CUDA C++ with the goal of keeping as much of the pipeline in-engine as possible, with dependencies being kept to a minimum. It uses a cmake-driven build system. In practice, Novum is developed essentially 100% from the command-line, with no UI. This also means that unfortunately, Novum is not configured to write to any display buffers or anything of that sort, relying on saving to image files.

Novum uses .rendertron config files to configure renders. Examples can be found in the configs folder.

Currently, Novum is split between two main parts. One is the original engine, built on a software BVH and normal compute kernels, where most offline algorithms live. The other is a real time rendering offshoot engine found in the optixBranch folder, using the same include folder as the main engine, but with its own separate build system. This is to accomdate the OptiX hardware raytracing pipeline that enables algorithms like ReSTIR PT to run fast. The reason that the entire engine is not fitted into the OptiX ecosystem is because the goal of Novum is not neccesarily to ultra-optimize the render speeds for all algorithms (especially offline ones), but rather to provide a flexible research oriented workspace to work on rendering algorithms, which often includes the ability to directly interact with the BVH in flexible ways. Obviously real-time rendering algorithms are a different case, hence the OptiX integration.

Novum is written and tested on a laptop with a laptop RTX 4060 GPU with 8 GB of VRAM.