This description will be updated during the development process.
Most of external libraries will be located directly in the source code, to reduce a number of dependencies and make building faster. These libraries and tools you have to install by yourself:
- CMake
- Intel Embree for CPU ray-tracing
Windows is the only one platform, which is completely supported at the moment.
- download and install the latest release of Intel Embree from GitHub;
- add environment variable
EMBREE_LOCATION
pointing to the Embree installation folder provide this parameter to CMake (i.ecmake -DEMBREE_LOCATION=path/to/embree
); - copy embree binaries (embree4.dll and other required dlls) to the
bin
folder in the root directory ofetx-tracer
- add environment variable
Optionally:
- download and install CUDA and OptiX;
- add environment variable
OptiX_INSTALL_DIR
pointing to the OptiX installation folder;
If OptiX and/or CUDA is not available - solution will still be created, but GPU rendering will not be available. Provide DISABLE_GPU
option to CMake to force disable GPU support
After that generating and building a project should be as simple as creating a folder for build files and calling CMake, something like:
cmake -G "Visual Studio 17 2022" ..
or
cmake -G "Visual Studio 17 2022" -DEMBREE_LOCATION=path/to/embree ..
Currently macOS platform is not completely supported, however there are steps towards it.
These libraries are included into the source code in thirdparty
folder:
- enkits - A permissively licensed C and C++ Task Scheduler for creating parallel programs
- imgui - Dear ImGui: Bloat-free Graphical User interface for C++ with minimal dependencies
- jansson - C library for encoding, decoding and manipulating JSON data
- mikktspace - a common standard for tangent space used in baking tools to produce normal maps.
- sokol_app, sokol_gfx, sokol_imgui - minimal cross-platform standalone C headers
- stb_image - stb single-file public domain libraries for C/C++
- tinyexr - tiny OpenEXR image loader/saver library
- tinyobjloader - tiny but powerful single file wavefront obj loader
- nanovdb - the library for loading volumetric data