Raytracer
2025/5
Ray tracing renderer in C++.

Tech: C++, Math, Rendering
Raytracer Project
Project Overview
This project is a raytracer implementation designed to render 3D scenes based on configuration files. It uses a modular architecture to separate concerns such as mathematical operations, scene parsing, and rendering primitives. The project is written in C++ and follows object-oriented principles.
Requirements
C++17 for filesystem
Project Structure
Here is the directory tree of the project:
Raytracer
Raytracer is a modular C++ ray tracing engine that renders 3D scenes defined by simple configuration files. This repository contains the implementation, example scenes, and generated documentation — suitable for a professional portfolio and demonstration of architecture, parsing and rendering techniques.
Note: this project was developed as part of coursework at EPITECH.
Overview
- Rendering support for common primitives (sphere, plane, cylinder, cone).
- Simple material and light handling (ambient, directional, etc.).
- Scene parsing from configuration files and example scene sets.
- Clean, modular code organization (Math / Primitives / Materials / Scene / Utils).
Quick start
Prerequisites (Debian/Ubuntu):
sudo apt update
sudo apt install -y build-essential cmake libsfml-dev
Build (Make):
make
Build (CMake — recommended):
mkdir -p build && cd build
cmake ..
make
Run an example scene:
./raytracer scenes/mort.conf
Documentation
- Generated Doxygen documentation:
documentation/html/(openindex.html). - Example scenes:
scenes/.
Contributing
- To report an issue: open an issue on the repository.
- To contribute code: create a branch, open a pull request and add your name to
CONTRIBUTORS.md. - Keep contributions minimal and focused (small PRs, clear messages).
Credits
- Developed by a small team and several contributors. See CONTRIBUTORS.md for a general list of contributors.
License
This project is released under the MIT License — see LICENSE for details.
Key features
- Rendering of common primitives (sphere, plane, cylinder, cone, etc.).
- Materials and light handling (ambient, directional, ...).
- Scene parsing from configuration files.
- Modular architecture (Math / Primitives / Materials / Scene / Utils).
Technologies
- Language: C++ (C++17)
- Build system: Make / CMake
Quick install
Basic prerequisites (Debian/Ubuntu):
sudo apt update
sudo apt install -y build-essential cmake libsfml-dev
Build using Make (simple):
make
Build using CMake (recommended):
mkdir -p build && cd build
cmake ..
make
After building, the executable is available at the repository root (or in build/ depending on your configuration). Example:
./raytracer scenes/mort.conf
Examples & documentation
- Generated documentation (Doxygen) is available in
documentation/html/. - Example scene files are available in the
scenes/folder.
Contributing
- To report a bug or request an improvement: open an issue.
- To contribute code: create a branch, open a pull request, and add your name to
CONTRIBUTORS.md. - Please follow the project guidelines (formatting, simple tests, clear commit messages).
Credits & authors
- The project was developed by a small team. The contributors list is available in CONTRIBUTORS.md.
License
This repository is licensed under the MIT License. See LICENSE for the full text.