A high performance monte-carlo raytracer programmed with CUDA. There are various improval features such as AI denoising, cache first bounce, sort materials, arbitrary mesh loading. etc in it. The implementation of the paper "Edge-Avoiding A-Trous Wavelet Transform for fast Global Illumination Filtering" is in branch atrous as it conflits with the AI denoise feature.
-
Monte-Carlo ray tracer on GPU;
-
BSDF Evaluation: pure diffuse, reflection and refraction, diffuse+specular;
Purely Diffuse Reflective Refractive Diffuse & Reflective -
AI denoise implemented with Intel Open Image Denoise;
Use albedo image as an auxiliary to reduce noise (oidnRayTraced.exe file output denoised result in real-time).
Ray-traced noisy result Albedo Denoised Result -
Use tinyobj to load arbitrary .obj model with its specular,diffuse, emission and bumping textures;
-
Depth of field
Focus on
With Depth-of-Field Without Depth-of-Field -
GPU improvement: stream compaction
-
Cache first intersection
-
Stochastic Sampled Antialiasing
For massive scenes:
- Wavefront pathtracing --group rays by material
Only support win32:
oidnRaytracer.exe directory/to/scene.txt
executable directory example:
--ProjectFolder
|--build
|--bin
|--Release
|--oidnRaytracer.exe
|--models
|--materials
|--a.mtl
|--a.obj
|--textures
|--a_kd.jpg
|--a_ks.jpg
|--a_emi.jpg