This project implements a raytracer in OCaml. Features include support for various object types (e.g. spheres, triangles, polygon meshes), textures (e.g. lambertian and metal surfaces), customizable camera angles and position, and user interface. To accomplish this, we wrote a linear algebra and geometry library. Some example meshes that can be rendered are included with this repository (e.g. bunny.obj and teapot.obj) but users can upload custom meshes. For improved efficiency, we implement multithreading. The program can write the scene to a file or render the current scene via the graphical user interface, where the user can move the camera.
View INSTALL.md for instructions on how to use the project!
Team members:
- Arin Barde (asb385)
- Princeden Hom (ph499)
- Benjamin Li (bl788)
- JanetLou Guan (jdg325)