A CPU based offline Renderer for personal interest and education.
- Integrator
- Path Tracing
- Light Tracing
- Bidirectional Path Tracing (BDPT)
Stick closely to veach97. Learning and Coding refer a lot to https://rendering-memo.blogspot.com/2016/03/bidirectional-path-tracing-1-kickoff.html 0. No t == 0 case 1. Shading normal asymmetric Bsdf correction ✅ 2. Some problem with Microfacet Transmissive material (when path length <= 5 is fine) ❌ TODO
- Matertial:
- Lambertain Diffuse (cos weighted)
- Microfacet Reflection and Transmittance (Cook Torrance Model with GGX distribution).
- Perfect Reflective
- Perfect Refractive.
- Unlit. (incompatible with bdpt)
- Sampling
- Importance Sampling
- Multiple Importance Sampling
- Next Event Estimation
- Texture Mapping
- Albedo/Diffuse Map
- Normal Map
- Roughness Map
- Metallicness Map
- Acceleration
- BVH default (midpoint)
- CPU Multi-Threading (std::thread)
- Post Processing
- Bloom
- HDR
- Tone Mapping / Gamma Correction
- Russian Roulette (Throughput) in path tracing
-
Microfacet refractive/translucent ✅
-
BDPT ✅
-
don't rely on .ppm image file
-
6/29/2024:
1.better config file 2.image based lighting 3.Subsurface scattering 4.SAH BVH
$ ./PathTracing.exe config.txt
Develop Environment: MSVC C++17, Visual Studio 2022
cmakelist or makefile of the latest version is TO-DO in the future
Refer to https://github.com/bobhansky/WhittedStyle_Raytracer/blob/main/README.md for more instruction on configuration file.
left: Whitted style Ray Tracing (shading with Blinn Phong Model)
right: Path Tracing
upperleft: BSDF sampling upperright: light Sampling lowerleft: NEE only lowerright: NEE + MIS