A path tracer based on UCSD CSE 168 renderer Torrey written in C++ 17. TaKe (็ซน, ใใ) means bamboo in Japanese. It is also a radical in the main author's Chinese last name ็ฎก.
This renderer is implemented from scratch except for the scene parser and some basic mathematical object classes.
- Monte Carlo path tracing
- Bounding volume hierarchies (BVHs) acceleration
- Textures
- Microfacet BRDFs
- Multiple importance sampling (both One-sample model and Multiple-sample model)
- Importance sampled environment light / IBL
- Multithreading acceleration
- Mitsuba scene format parser
- std::variant based polymorphism
Our primary objective is to seamlessly incorporate the key features from the following projects, all of which share the same author with the TaKe renderer:
- Disney principled BSDF from LaJollaTube
- Heterogeneous volumetric rendering from LaJollaTube
- ReSTIR DI (Paper Link) from LajollaPlus
- CUDA Acceleration from Torrey GPU
All the dependencies are included. Use CMake to build.
git clone https://github.com/TaKeTube/TaKe.git
mkdir build
cd build
cmake ..
It requires compilers that support C++17 (gcc version >= 8, clang version >= 7, Apple Clang version >= 11.0, MSVC version >= 19.14).
You could also download the scenes from the following Google drive link: https://drive.google.com/file/d/1SrGaw6AbyfhPs1NAuRjxSEQmf34DPKhm/view?usp=sharing.
Try
cd build
./take scenes/cbox/cbox.xml
This will generate an image "image.exr".
To view the image, use hdrview, or tev.
Below are some images rendered by the above renderers:
Self-designed scene made using assets from https://polyhaven.com/
Disney principled BSDF
Self-designed scene procedurally generated by Houdini
Heterogeneous volumetric rendering
Self-designed scene
ReSTIR DI
Self-designed scene
The renderer is based on Prof. Tzu-Mao Li's UCSD CSE 168 renderer Torrey.
It is heavily inspired by Lajolla, pbrt, mitsuba, the ray tracing series, and darts.
We use pugixml to parse XML files.
We use stb_image and tinyexr for reading & writing images.
We use miniz for compression & decompression.
We use tinyply for parsing PLY files.
Many scenes in the scenes folder are downloaded from: