Physically based offline path tracer made in Vulkan with Ray Tracing Pipeline extension. It uses energy conserving BSDF with Diffuse, Dielectric, Metallic and Glass lobes + volumetric scattering. Renders can also be saved as png images. There's also a small writeup on how exactly the participating media is being rendererd if you're interested.
- Windows 10 with MSVC or Linux with GCC (Only debian 12 with GCC 12.2 is tested)
- Either NVIDIA RTX 2000+ series or AMD RX 6000+ series to support all of the extensions below. You may check whether they're present on your device here, maybe it's possible to run on some older hardware.
- VK_KHR_ray_query
- VK_KHR_acceleration_structure
- VK_KHR_ray_tracing_pipeline
- VK_KHR_swapchain
- VK_KHR_deferred_host_operations
- Vulkan SDK
- Cmake 3.5 or higher
git clone --recursive https://github.com/Zydak/Vulkan-Path-Tracer
cd Vulkan-Path-Tracer
mkdir build
cd build
cmake .. -DCMAKE_POLICY_VERSION_MINIMUM=3.5
Then open generated Visual Studio solution and build.
Note
On some versions of msvc the OpenVDB library won't build. You might get an error on line 1935 inside GridBuilder.h. You can comment that line out since it doesn't do anything significant.
// static_assert(util::is_same<ValueType, typename std::result_of<Func(const Coord&)>::type>::value, "GridBuilder: mismatched ValueType");
git clone --recursive https://github.com/Zydak/Vulkan-Path-Tracer
cd Vulkan-Path-Tracer
mkdir build
cd build
cmake .. -DCMAKE_POLICY_VERSION_MINIMUM=3.5
make
Executable will be in build/Debug/VulkanPathTracer.
- BSDF with importance sampling
- Energy compensation implemented according to Practical multiple scattering compensation for microfacet models.
- HDR Environment Maps with importance sampling
- NEE+MIS for environment maps/atmosphere/emissive meshes
- Volumetric scattering with importance sampling implemented according to Production Volume Rendering 2017
- Non uniform volumes imported from OpenVDB files.
- Henyey-Greenstein, Draine, and approximated MIE phase functions implemented according to An Approximate Mie Scattering Function for Fog and Cloud Rendering.
- Multiple Importance Sampling implemented according to Optimally Combining Sampling Techniques for Monte Carlo Rendering
- Emissive Volumes with temperature parametrization
- Multiple Atmospheric Scattering A Scalable and Production Ready Sky and Atmosphere Rendering Technique
- Optimized Cloud Scattering with techniques described in The Design and Evolution of Disney’s Hyperion Renderer
- Textures and Normal Maps
- Editor
- Changing material and path tracing properties at runtime
- Loading your own scenes in any format supported by assimp
- Exporting renders into .PNG files
- Post Processing
- Bloom
- ACES tonemapping
- Anti Aliasing
- Depth of Field
- Russian roulette
- Sampling the GGX Distribution of Visible Normals
- Microfacet Models for Refraction through Rough Surfaces
- Importance Sampling Microfacet-Based BSDFs using the Distribution of Visible Normals
- A Reflectance Model For Computer Graphics
- Practical multiple scattering compensation for microfacet models
- Production Volume Rendering 2017
- Optimally Combining Sampling Techniques for Monte Carlo Rendering
- Scratch a pixel article on volumes
- An Approximate Mie Scattering Function for Fog and Cloud Rendering
- A Scalable and Production Ready Sky and Atmosphere Rendering Technique
- The Design and Evolution of Disney’s Hyperion Renderer
- https://developer.nvidia.com/orca/amazon-lumberyard-bistro - Bistro
- https://www.intel.com/content/www/us/en/developer/topic-technology/graphics-research/samples.html - Sponza
- https://sketchfab.com/3d-models/screaming-dragon-head-3d-print-5712b52618f743b193bdd39459099f25 - Screaming Dragon Head
- https://sketchfab.com/3d-models/dog-statue-49d97ca2fbf34f85b6c88ae8ebc7514f - Dog Statue
- https://github.com/mmacklin/tinsel - Ajax
- https://polyhaven.com/hdris - Env Maps
- https://benedikt-bitterli.me/resources/ - Dragon
- https://wirewheelsclub.com/models/1965-ford-mustang-fastback/ - Mustang
- https://renderman.pixar.com/official-swatch - RenderMan teapot
- https://www.cgbookcase.com/ - Textures for teapots
- https://casual-effects.com/g3d/data10/ - Breakfast Room
- https://luxcorerender.org/example-scenes/ - Cannele & Fromage
- https://disneyanimation.com/resources/clouds/ - Disney Cloud
- https://www.openvdb.org/download/ - Bunny Cloud
- https://jangafx.com/software/embergen/download/free-vdb-animations - Smoke Plume
- https://www.blackboxcolour.com/assets - Cloud pack
- https://samk9632.gumroad.com/l/Freebie-Cloud - Wispy Cloud by Samuel Krug
- https://drive.google.com/file/d/1ACBLnJBbmFzP07djNC1N15qnlqTGHmOM/view - Cloud by Samuel Krug
- https://drive.google.com/drive/folders/17RueIORCc-Na4zjszHbShv9MbV_RUeBo - Cloud Pack by Samuel Krug
- Other clouds courtesy of Samuel Krug
- https://developer.nvidia.com/ue4-sun-temple - Sun Temple