Skip to content
Switch branches/tags

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time
Jaytrace: a personal ray tracer project


Intersections with spheres, triangles, cubes, and planes
OBJ file support using tinyobjloader
Composable 3D affine transformations using matrices
Lighting model with ambient, diffuse, and specular lighting from multiple lights
Shadows and reflections
Antialiasing with Poisson distribution based point selection

This project primarily serves two purposes: to experiment with interesting algorithms and to create
pretty pictures. I have thus far preferred improved encapsulation and readability of the code over
micro-optimizations, therefore the style of this project does not always feel like traditional
graphics code (especially in academia where many graphics algorithms originate), which favors long
functions close to the metal for speed.

On the other hand, I've tried to write code in a very testable way (like modern web development) and
add unit tests where possible, which is not common (I assume) in high-performance graphics code.
These tradeoffs are not easy, but it has been educational to try to balance the two.  Hopefully, as
I whittle down the list of features I'm exited to implement, I'll have time to optimize the code
further while maintaining readability and extensibility.

CMake 2.8+
Qt 4.6 (core, gui, and test libraries)
Eigen 3.x

Planned features
* kd-tree based intersection checking
* photon mapping or other global illumination systems
* full transparency (diffraction, total internal reflection)
* support for rendering multiple frames for an animation
* OpenCL or CUDA based computation
* network communication to enable multiple machines to work on one output image