LumenTree is a portable ray tracer written in C++. The implementation is based on Nori, an simple educational ray tracer used in the course Advanced Computer Graphics taught at EPFL. The program supports Windows, Linux, and Mac OS environment and provides basic functionality of simple ray tracing.
LumenTree uses submodules to manage external libraries. To clone from github, add --recursive
to command line.
git clone --recursive https://github.com/li779/LumenTree.git
Cloning repository without --recursive
will result in empty folders, if so, try run
git submodule update --init --recursive
to get all external libraries
Before compiling the project, make sure have CMake installed. On Linux/macOS, make sure have a gcc compiler; On Windows, a Visual Studio 2019 will work.
On Linux/macOS, create a building directory build
and compile project into build
$ cd path-to-LumenTree\
$ mkdir build
$ cd build
$ cmake ..
$ make -j
On Windows, also create a building directory build
. Use CMake to compile project into build. Make sure select "Visual Studio 16 2019" to generate visual studio project file. After that, open LumenTree.sln
with Visual Studio and compile.
- LumenTree natively uses a simple octree to store all shapes in the scene
- A high performance Intel Embree ray tracing kernal can be used by changing CMake options
- diffusive material
- dielectric material
- perfect mirror material
- simple normal integrator
- whitted integrator
- area light for any object in scene
There is a known issue with the NanoGUI version that Nori uses: on Linux systems with an integrated Intel GPU, a bug in the Mesa graphics drivers causes the GUI to freeze on startup. A workaround is to temporarily switch to an older Mesa driver to run Nori. This can be done by running.
export MESA_LOADER_DRIVER_OVERRIDE=i965