Real-time raytracer written in C++20 featuring a modular architecture, dynamic plugin system for shapes and an interactive rendering pipeline. The engine includes a graphics abstraction layer, allowing the use of any rendering library; an SFML implementation is currently provided. The project also supports object creation, editing and deletion directly through the GUI while allowing free navigation inside the 3D scene.
- CMake
>= 3.16 - SFML
2.5 - libconfig++ (
config++) dl(Linux)
sudo apt install cmake libsfml-dev libconfig++-devcmake -S . -B build
cmake --build build -jcmake -S . -B build -DCMAKE_BUILD_TYPE=Debug
cmake --build build -jThe raytracer executable will be generated at the project root, while plugins are placed inside the plugins/ directory.
src/
├── Graphics/ # GUI, preview and SFML backend
├── Math/ # Vectors, points and 3D math
├── RayTracer/ # Core raytracer
│ ├── BVH/ # BVH acceleration structure
│ ├── Lights/ # Lighting system
│ └── Shapes/ # Dynamically loaded shapes
├── utils/ # Parsing and utilities
└── main.cpp- Sphere
- Plane
- Cone
- Infinite Cone
- Cylindre
- Infinite Cylinder
- Torus
- TangleCube
| Key | Action |
|---|---|
| ZQSD | Movement |
| Space | Move up |
| Shift | Move down |
| Arrows | Camera orientation |
| A / E | Rotate camera left / right |
| P | saves a screenshot using the PPM P6 format |
- Click on a creation window to open it
- All interactions are handled with the mouse
Escapecloses the creation window
- Right click on a shape
- Press
Delete