This is a physically based renderer based on Nori in C++11. The functions supported include path tracing with multiple importance sampling (MIS), photon mapping, volumetric path tracing with MIS, heterogeneous media, different distance sampling and transmittance estimation methods (ray marching, delta tracking, and ratio tracking), bilateral filter with uniform variance denoting, directional light, anisotropic phase function, object instancing, Disney BSDF, environment map and texture, stratified sampling, blend and conductor BSDF, bump mapping. For more information, please view our project website.
The renderer is developed for the rendering competition in ETH Computer Graphics course 2022. Please DO NOT directly copy the code from this repository, we only provide the code for reference.
-
All the codes are tested in the following environment:
- Mac OS (Version 11.6), Linux (Ubuntu 20.04, 22.04)
- CMake (Version 3.16.3, 3.20.2, 3.25.2)
-
Install Qt4: You need to install Qt4 for the heterogeneous volume data reading:
-
Mac:
conda remove --force qt brew uninstall --force qt brew tap cartr/qt4 brew tap-pin cartr/qt4 brew install qt@4 conda install -c pkgw-forge qt4
-
Linux:
sudo add-apt-repository ppa:rock-core/qt4 sudo apt update sudo apt install qt4-dev-tools libqt4-dev sudo apt-get install xorg-dev libglu1-mesa-dev
-
-
Build the code (or you can directly use the compiled release version)
cd code mkdir build cd build cmake .. make -j 4
Please download the scene from polybox, and unzip the file using unzip sample_scene.zip
. The layout should looks like this:
code
└── final_scene
├── bounds.obj
├── earth_water_4.0.exr
├── earth_water_5.0.exr
├── earth_water_5.0.png
├── earth_waterdenoised_4.0.exr
├── earth_waterdenoised_5.0.exr
├── earth_waterdenoised.exr
├── earth_waterdenoised.png
├── earth_water.exr
├── earth_water.png
├── earth_water.xml
├── light.obj
├── meshes
├── obj_chimney_meshes
├── obj_meshes
├── smoke_exp
├── smoke.vol
└── texture
- Run the renderer using:
cd code/build
./kombu ../final_scene/earth_water.xml
The code is released under the GPL-3.0 license.