A raytracing demo that models the path of individual rays of light as they travel through a virtual 3D scene, calculating how they reflect, refract, and interact with surfaces and materials to produce realistic lighting and shadows.
- Lambertian (matte), metal, dielectric (glass) materials.
- CPU Multithreading. Each thread is responsible to calculate rows of pixels
- Bounded Volume Hierarchy (BVH) for faster ray intersections.
- Triangle mesh rendering.
- Wavefront OBJ parser that supports vertex positions, normal vectors, and texture coordinates.
- Surface normal interpolation using barycentric coordinate.
- XML for creating scenes and specifying parameters
A glass/dielectric dragon showing light refraction
Bunnies with metal and lambertian material
This app was developed using C++20 and Visual Studio 2020 x64. Included dependencies are tinyxml2 and stb.