Little global illumination Monte Carlo path tracer
Ready to build on either Windows or Linux
This repository includes submodules. In order to get everything when you
clone, add the --recursive
flag.
These are the dependencies on both Windows and Linux:
- Eigen (template library)
- Open Asset Import Library (links with libassimp)
- Boost (template libraries; also links with libboost_program_options)
- TinyExr (header-only library)
- Intel Embree (links with libembree)
On Linux, Intel TBB is required:
- Intel Threading Building Blocks (links with libtbb)
You will need VS 2015 because the project uses C++11 language features only available in VS 2015+.
Eigen, Boost, and the Open Asset Import Library can be obtained from NuGet; the project should automatically update the packages on first load. TinyExr is included in the project as a Git submodule and you will get the master version when you clone this repository.
You will need to install Embree separately by running the Windows x64 installer
from their downloads page. The
solution will look for Embree at $(ProgramW6432)\Intel\Embree v2.7.1 x64
,
the default installation location for Embree 2.7.1. (Note that $(ProgramW6432)
is the VS macro for the 64-bit Program Files directory.)
If you install a different version of Embree or you install it at a different
location, edit the PathTracerDependencies.props
file at the root of the
repository to point to your Embree installation.
You should build using g++
. Using clang++
is not guaranteed to work.
You will need to get the development versions of eigen3
, assimp
, boost
,
and tbb
from your package manager (e.g. from apt-get
or from dnf
).
TinyExr is included in the project as a Git submodule and you will get the
master version when you clone this repository.
You will need to install Embree separately from their downloads page. Red Hat-based users can use the RPM installer; Debian-based users should get the tarball.
Some of the comments make reference to Pharr and Humphreys' text
Physically Based Rendering, 2nd edition (Morgan Kaufmann, 2010).
This excellent resource describes the pbrt
renderer in a literate
programming style.
My renderer is also influenced by Kevin Beason's smallpt path tracer.