This is a hobby project using DirectX 12 and utilizing its latest features such as DirectX RayTracing (DXR). This project is inspired by Peter Shirley and his ray tracing book series: In One Weekend, The Next Week, The Rest of Your Life, Alan Wolfe's blog post series on causual shadertoy path tracing and lastly Physically Based Rendering: From Theory to Implementation by Matt Pharr, Wenzel Jakob, and Greg Humphreys.
- Stochastic path tracing
- Bindless resource
- Multi-threaded rendering
- Utilization of multiple queues on the GPU
- Lambertian, Mirror, Glass, and Disney BSDFs
- Point and quad lights
- ECS scene system (Unity-like interface)
- Scene serialization and deserialization using yaml allows quick experimental scene
- Asynchronous resource loading
- Importance sampling of BSDFs and multiple importance sampling of lights
- Implement spectral path tracing
- Implement anti-aliasing techniques
- Implement more materials
- Implement denoising
- Implement compaction to acceleration structures
- Upgrade from DXR 1.0 to DXR 1.1 (inline raytracing)
- Visual Studio 2019
- GPU that supports DXR
- Windows SDK Version 10.0.19041.0
- Windows 10 Version: 20H2
- CMake Version 3.15
- C++ 20
Make sure CMake is in your environmental variable path, if not using the CMake Gui should also work. Once you have cloned the repo, be sure to initialize the submodules.
When the project is build, all the assets and required dlls will be copied to the directory of the executable. Theres a scene folder containing all the scenes for the showcase, those can be loaded in when right clicking on hierarchy and cicking on deserialize.
- 3D Game Programming with DirectX 12 Book by Frank D Luna
- Direct3D 12 programming guide from MSDN
- Physically Based Rendering: From Theory to Implementation by Matt Pharr, Wenzel Jakob, and Greg Humphreys.
- Ray Tracing Gems: High-Quality and Real-Time Rendering with DXR and Other APIs
- Ray Tracing book series (In One Weekend, The Next Week, The Rest of Your Life) by Peter Shirley
- Real-Time Rendering, Fourth Edition by Eric Haines, Naty Hoffman, and Tomas Möller
- Casual Shadertoy Path Tracing series by Alan Wolfe
- D3D12MemoryAllocator
- EnTT
- imgui
- ImGuizmo
- spdlog
- wil
- yaml-cpp
- assimp
- DirectXTex
- DirectXTK12
- dxc
- nativefiledialog
- WinPixEventRuntime
Thanks to Benedikt Bitterli's for rendering resources!







