In this project, it is proposed to know more about the possibilities of RT cores for ray tracing development, as well as their real advantages compared to CPU or GPU development of previous generations. It is also proposed to study the Artificial Intelligence techniques developed by NVIDIA, and other research groups, for the improvement, denoising, and acceleration of the generation of images with ray tracing. For this, one or more ray-tracing applications will be carried out, which may have different objectives: physically realistic ray tracing, real-time ray tracing (with AI-based denoising), path tracing and other methodologies suitable for daylighting analysis.
- Monte carlo ray tracing
- Monte carlo ray tracing with Optix denoiser
- Ray tracing with raster pipeline first hit (hybrid pipeline)
Manuel Machado: Github / Twitter / LinkedIn
This project is still a work in progress.
Download the LunarG SDK from: https://vulkan.lunarg.com/sdk/home
Run build_glfw_windows.bat
The script will clone (https://github.com/glfw/glfw) and build GLFW. Don't forget to check recent issues on Windows building if the process fails, you can always checkout to the last stable tag release, for example v3.3.2
CMake will take care of the rest, if you change the generator make sure to also update the paths in the GLFW section of the CMakeLists.txt to target the new libraries
sudo apt install libglfw3-dev libglfw3
GLM is imported within a git submodule (external_sources/glm), don't forget to initialize it.
1- Download the Binary distribution from http://freeimage.sourceforge.net/.
2- Copy the Dist folder to external_sources
and rename it to freeImage
, the x32
and x64
folders with
the FreeImage.dll
, FreeImage.h
and FreeImage.lib
files must be directly under freeImage
(
/external_sources/freeImage/...)
Note: for this project v3.18.0 was used
TODO: Make a script to take care of this process
Install FreeImage from repository package:
sudo apt-get install libfreeimage-dev
The following scripts will clone (https://github.com/assimp/assimp) and build Assimp. Don't forget to check recent issues on Windows/Linux building if the process fails, you can always checkout to the last stable tag release, for example v5.0.1
CMake will take care of the rest, if you change the generator make sure to also update the paths in the Assimp section of the CMakeLists.txt to target the new libraries
Run build_assimp_windows.bat
Run build_assimp_linux.sh
Install the CUDA SDK from Cuda Zone
Install Optix 3.0 from the NVIDIA Developer page, you will probably need an NVIDIA developer account for this.
By default the Find OptiX will look for OPTIX_PATH
as an environment variable with the installation path or
into "~/NVIDIA-OptiX-SDK-3.0.0-linux64". You can change the path defined in cmake/FindOptiX.cmake
.
By default the Find OptiX will look for OPTIX_PATH
as an environment variable with the installation path or
into "C:/ProgramData/NVIDIA Corporation/OptiX SDK 3.0.0", Optix should be installed there by default, if not, you can
change the path defined in cmake/FindOptiX.cmake
.
Download the assets folder from https://drive.google.com/open?id=1-JLF8sU_Lb6ZqrRwocwZP3AaiztOekPO
and extract it on the root directory of the project /assets/...
Note: The zip has a password (for now) in order to protect some models copyrights.
TODO: create a free public asset folder to download
There's a .clang-format
and .clang-tidy
file defined for the project, in order to write code install and configure
on your IDE, Clangd: https://clangd.llvm.org/installation.html, or both Clang-Format and Clang-Tidy.
Note: you may also want to remove any naming convention settings on your IDE to prevent overriding the clang-tidy readability checks
-
My first steps in Vulkan were possible thanks to Vulkan Tutorial.
-
The first steps of this project were carried out following the demos and examples referenced on the official Khronos website:
- Vulkan reference material / framework by Khronos.
- Sascha Willems' examples and demos, IMO the best samples and demos out there to get started in Vulkan.
- NVIDIA DeignWorks Samples.