The Raytracer is a project carried out by groups of 4 (see Contributors, during our 2nd year in EPITECH Grand Ecole program.
Its purpose is to recreate in C++ a Raytracer.
The Raytracer is a 3D scene generator that uses the Raytracing technique to create realistic images.
It use a scene file to load the scene and generate the image.
You can run Raytracer like this :
./raytracer [scene_file]For more information, please see the help section.
> ./raytracer --help
USAGE:
./raytracer <scene_file> [options]
DESCRIPTION:
The raytracer generates a 3D scene based on the provided scene file.
<scene_file> The scene file to load
OPTIONS:
-h, --help Display this help message
-v, --version Display the version of the program
-o, --output <file> Specify the output file path
-c, --config <file> Specify the configuration file pathThe Raytracer is designed to be modular and extendable.
It uses plugins to load different types of interfaces, lights, materials, primitives, scene loaders and transformation.
You are free to create your own plugins and add them to the Raytracer while respecting the plugins rules (see the Documentation).
The Raytracer will use the config.txt file to load the plugins and parameters the Raytracer needs.
Config file example:
#The folder where plugins are stored
plugin_folder=plugins
#The plugin to load scene
scene_loader=raytracer_scene_loader_libconfig.so
#The plugin for the raytracer interface
interface=raytracer_interface_sfml.so
#The folder to store the raytracer screenshots
screenshots_folder=screenshotsThe result of this project is an almost perfect Raytracer.
If you discover a problem or an error, don't hesitate to create an issue and report it to us as soon as possible.
| Test name | Result | Crash |
|---|---|---|
| Build via Makefile or CMake | OK | No |
| Results | 100% | No |
TODO
This project is compiled with CMake and Makefile.
This project use C++20 standard, CMake 3.20 or higher and libconfig++.
You can compile the project with this command :
- via CMake and Makefile :
cmake -B build -S . && make -s -C build -jIf you want to debug the program, you can compile the project with this :
- via CMake and Makefile :
cmake -B build -S . -DDEBUG_MODE=ON && make -s -C build -jIf you want clean the project, you can run this command :
- via CMake and Makefile :
cmake -B build -S . && make clean_all -s -C build -jFor plugins, you can find the documentation for each plugin in the docs folder.
- The scene file documentation is accessible here
- The interface documentation is accessible here
- The light documentation is accessible here
- The material documentation is accessible here
- The primitive documentation is accessible here
- The scene loader documentation is accessible here
- The transformation documentation is accessible here
The code documentation is accessible here.
You can generate the documentation with this command :
- via CMake and Makefile:
cmake -B build -S . && make doc -s -C build -jYou need multiple package for generate them :
- doxygen
- doxygen-latex
- doxygen-doxywizard
- graphviz
- You'll need to create a branch where you'll push your code. Once you've completed your tasks on this branch, we'll work together to merge it and check that everything works.
- Every function you add must be code-style and documented.
- If the github actions don't succeed, then ask yourself some questions
- Each commit will contain
[+]or[-]or[~]followed by a message[+]: Add feature[-]: Delete feature[~]: Edit feature
Of course, in exceptional cases, we may depart from these rules.
For this project, we were a group of 4 people. Here are the people in the group:
