Skip to content

Software Raytracer

Posted on:April 29, 2022
Category:
  • Prototype
Tech Stack:
  • C++

I have picked up this project to learn more about graphics programming, particularly offline rendering. In this case it is a ray tracer or more technically a path tracer. In essence it is an algorithm that calculates a pixel value based on ray-object interaction. Given different material types and their properties, different behaviour can be expected once the ray hits the object, simulating real-life physics of light scattering, reflection and refraction. The end result ends up producing photo-realistic images.

While this is a fairly general and simple solution, it was a good introduction to graphics programming and rendering. I have to thank the online book series Ray Tracing in One Weekend by Peter Shirley for providing an easy to follow and concise introduction to ray tracing.

Results

Render
Render

Progress

24-11-2022 • I have implemented some multithreading to speed up the rendering process. I have divided portions of the image to be rendered based on how many hardware concurrent threads are available. Without multithreading, a 200x133 pixel image takes about 21 seconds to render. With multithreading, using 4 threads, it takes around 12 seconds to render, which is an improvement of ~42% in speed.