A hobby Blinn-Phong shaded ray-tracer written in C++
- Octree mesh acceleration
- Basic multithreading
- JSON scene loading
- SDL2 Window output
- Keyboard controls
- Blinn-Phong shading
- Reflections
- Refractions
- Sphere geometry
- Triangle geometry
- Mesh geometry / model loading
- AABB for mesh-ray collisions
- Environment mapping
- Basic material system
- ASCII output (doesn't play well with environment mapping, works better if you decrease terminal font, can be enabled in
ApolloRaytracer.cpp
) - Multiple cameras and ability to cycle through them
- WASD to move
- QE to move up and down
- arrow keys for camera rotation
- space bar to cycle through cameras in scene
- scenes are loaded using a JSON file (examples can be seen in
assets/scenes/
) - command line options can be seen by running
./apollo --help
make [-j#]
./apollo
- SDL2
- Assimp
- glm
- nlohmann/json
- jarro2783/cxxopts
- models gotten from https://github.com/alecjacobson/common-3d-test-models
- models gotten from http://graphics.stanford.edu/data/3Dscanrep/
- hdrs gotten from https://polyhaven.com