Kajo Raytracer

Kajo1 is a small raytracer that renders images using multiple importance sampling. This is a variant of the Monte Carlo integration technique in which we compute samples from an integral using several techniques and combine them to get a better estimate of the actual value. In a raytracer this can help to reduce computation time and alleviate noise in the final image without introducing bias.

Kajo currently only supports planes, spheres and spherical lights. There are two rendering backends:

Kajo is licensed under the MIT open source license.


  1. Install dependencies, e.g., on Ubuntu/Debian:

    apt-get install cmake libsdl1.2-dev libsdl-ttf2.0-dev libglew-dev

  2. Check out a copy of the source code:

    git clone https://github.com/skyostil/kajo.git

  3. Prepare the build files with cmake:

    mkdir kajo/build; cd kajo/build; cmake ..

  4. Compile:



In the build directory:

renderer/renderer ../data/spheres.json

Using the OpenGL renderer:

renderer/renderer -r gl ../data/spheres.json


Reading material:

Libraries used:

  1. kajo means a glimmer of light in Finnish. ↩︎