Yet Another Educational Ray Tracer
Wakame is a minimalistic ray tracer written in Java. It runs on Windows, Linux, and Mac OS and provides a foundation for the programming assignments in the course Realistic Image Synthesis taught at Cornell University.
Wakame is a Java port of Nori, an educational ray tracer written in C++ by the great Wenzel Jakob. You see, even this web page is a copy of the Nori's web page. Nori is Japanese for a kind of edible seaweed, and wakame is another kind of edible seaweed. Make sense?
Why is such a port even necessary? This is mainly because yours truly just hates dealing with C++ and its compile time hassles.
While Wakame provides much support code to simplify your development work as much as possible, the code that you will initially receive from us does very little: it loads a scene and saves a rendered image as an PFM image—but the actual rendering code is missing, hence the output image just consists of black pixels. Your task will be to extend this system to a full-fledged physically-based renderer as part of programming assignments and your final project.
The Wakame base code provides many features that would be tedious to implement from scratch. The following are included:
- A simple GUI to watch images as they render.
- An XML-based scene file loader.
- Basic point/vector/ray/bounding box classes.
- A pseudorandom number generator (Mersenne-Twitter).
- Support for saving output as PFM file.
- A loder for Wavefrom OBJ files.
- An optimized bounding volume hierarchy (BVH) builder.
- Ray-triangle intersection.
- Code for multi-threaded rendering.
- Image reconstruction filters.
- Statistical $\chi^2$- and $t$-tests for verifying sampling code. (Not implemented yet!)