go-raytrace is a simple ray tracing engine using OpenGL 4.6 written in Go. It was created as a study project for the computer science course at Moscow Institute of Physics and Technology.
- supported geometry: spheres and axes-aligned boxes
- lambertian, reflective and transparent materials
- dynamic camera with depth of field effect
- loading scene data from JSON and random scene generation
- Ray Tracing in One Weekend by Peter Shirley: a great book on the basics of raytracing that drove the project from the very start
- Awesome tutorial by Kai Burjack which helped to rewrite the original C++ engine for OpenGL (and also served as a partial inspiration for the scene displayed above)
- Go 1.6+
- OpenGL 4.6 Core
- additional dependencies for the go-gl/glfw package
After cloning the repository and installing all dependencies just navigate to the root folder of the repo and run go build
. Help on how to use the app can be found in controls.txt
file and via ./go-raytrace -help
.
The application has been tested only on Linux Mint, so any feedback on compatability is appreciated.