Skip to content

A CPU raytracer that simulates the physics of light rays, incorporating features such as dielectric material, triangle mesh rendering, bounded volume hierarchy, and CPU multithreading.

Notifications You must be signed in to change notification settings

azer89/Reza_Raytracer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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.

Features

  • 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

Pictures

A glass/dielectric dragon showing light refraction

Bunnies with metal and lambertian material
bunnies

Bunnies with a red metal material

Another dragon

Metal spheres

References

This app was developed using C++20 and Visual Studio 2020 x64. Included dependencies are tinyxml2 and stb.

About

A CPU raytracer that simulates the physics of light rays, incorporating features such as dielectric material, triangle mesh rendering, bounded volume hierarchy, and CPU multithreading.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages