Raytracer

A Custom raytracing engine in C++ developed from scratch, with little to no references.

Introduction

I built a Raytracer from scratch in C++, utilising a custom designed multi-thread architecture. I hand derived all the ray-tracing formulas using nothing but high-school level math.

Coordinate System:

  • X is front/back
  • Y is sideways
  • Z is up/down

Objects implemented (Position X/Y/Z):

  • Sphere (Rotation on Z axis, Radius, Texture map, Normal map, Specular map)
  • Point Lighting (Brightness)
  • Camera (Focal Length, Camera Width, Camera Height)

Image:

  • 1 Channel (for Grayscale, specular map)
  • 3 Channel (for Texture map, Normal map)
  • 4 Channel (for Texture map)

Input/Output:

  • .ppm

Where to find:

Code: Github

Explanation: Blog