A Raytracer that receives a scene defined in lua, and produces an image output.

Getting Started

Compilation follows the standard process defined by the UWaterloo CS488 sample projects.

We use premake4 as our cross-platform build system. First you will need to build all the static libraries that the projects depend on. To build the libraries, open up a terminal, and cd to the top level of the CS488 project directory and then run the following:

premake4 gmake

This will build the following static libraries, and place them in the top level lib folder of your cs488 project directory.

  • libcs488-framework.a
  • libglfw3.a
  • libimgui.a

NOTE: As the following is only the relevant Raytracer files, the build system/dependencies and premake4.lua definition files are all missing. The files in this project are provided as-is.



Objectives were completed as defined by the assignment.

The sample.lua scene that is defined is based on the simple.lua, and uses a compositions of items from the sample lua files.


  • Uses a multi-threaded design to increase performance (number of threads can be specified at compile-time)
  • Mirror reflections was the supported offical feature that was added to the project

Standing Issues:

  • Currently there is an issue with the Mesh models. As it stands they only partially render (certain values do)
  • This likely has to do with an issue with the algorithm that was being used
  • Originally used an angle based algorithm (described here) but it did not render the objects


The project icon is retrieved from the Noun Project. The original source material has been altered for the purposes of the project. The icon is used under the terms of the Public Domain.

The project icon is by Arthur Schmitt from the Noun Project.