Caitlyn is an reverse path tracer built for implementing raytracing lighting to 'pixellax' 3D visuals. It is built in C++ by a team of students from the University of Waterloo and Wilfrid Laurier University.
'Pixellax' is an art style with a focus on using 2D pixel art in 3D environments with an emphasis on beautiful, colourful lighting. (see our portfolio and Odd Tales' "The Last Night"!)
Interested in getting involved? Contact Connor Loi or Samuel Bai.
Caitlyn MCRT is built on Debian 12. It may work on other distros, but we recommend simply pulling our Docker container with the connortbot/caitlyn-mcrt
repository. We recommend cloning the repository, mounting a volume, initializing our validation submodule, and compiling.
Before continuing:
- Install
Docker Desktop
. - Pull the latest
docker pull connortbot/caitlyn-mcrt:base-v0.2.1
You may pull the repository from within the container or mount a volume. Either works!
Run cmake -B build/ -S .
to create files in the build
folder. cd build
, and make
. Don't forget to initialize the submodules!
Caitlyn renders scenes from our custom filetype .csr
. By default, the caitlyn
executable will read the scene from a scene.csr
file, so you need to have one before running. In this guide, we'll just run the 0.1.5-showcase.csr
, which you can copy from the tests
folder.
To learn how to write CSR files, check out the Basic Guide.
Caitlyn has a user-friendly command line interface, allowing you to customize samples, depth, use multithreading, and more. Once you have the executable, you can run ./caitlyn --help
to see all the options at your disposal.
Let's render a PNG file of the example scene! Ensure that you have your CSR file in the same directory.
./caitlyn -i 0.1.5-showcase.csr -o 0.1.5-showcase.png -t png -s 50
This will read the scene from 0.1.5-showcase.csr
and output as a png
.
And now you have your first caitlyn-rendered scene!
As mentioned in the Quick Start
, caitlyn
will read and build scenes via CSR files. The CSR Basic Guide covers everything from creating objects to custom materials.
To see all the options available to caitlyn
, run:
./caitlyn --help
Flags like --samples
and --depth
control the amount of time spent on the render. If you are unfamiliar with rendering concepts, samples
refer to the amount of rays traced per pixel, which decreases the noise of a render as it increases. depth
refers to the amount of times a ray is simulated to "bounce" around the scene, allowing for realism in reflections, emissives, etc.
Sometimes, CSR files will have features not supported in your version of caitlyn
. You can check this with the version indicator at the top of the CSR file and with ./caitlyn --version
.
For contribution or general inquiries, please email one of us at Connor Loi or Samuel Bai.
Acknowledgements:
Citation:
@software{Caitlyn,
title = {Caitlyn MCRT},
author = {Connor Loi and Samuel Bai},
note = {https://github.com/cypraeno/caitlyn},
version = {0.1.5},
year = 2024
}