Accueil / Installation
Installation
Prérequis, dépendances externes, compilation avec make et vérification de l’installation.
Prérequis
Le projet cible un environnement Linux (développé et testé sous WSL2). Il faut disposer des outils et bibliothèques suivants :
| Outil / bibliothèque | Rôle |
|---|---|
clang++ | Compilateur C++. Le Makefile l’invoque explicitement, avec le standard C++17. |
make | Système de build (orchestration de la compilation et de l’édition de liens). |
| SFML | Fenêtre, contexte graphique, entrées et réseau — utilisée par le plugin d’interface. Modules liés : graphics, window, system, network. |
X11 (libX11) | Système de fenêtrage sous Linux (lié via -lX11), requis par le plugin d’interface. |
SFML et X11 ne sont nécessaires que pour le plugin d’interface graphique
(user_interface.so). Le cœur du moteur et les renderers ne dépendent que de la bibliothèque standard C++.
Dépendances déjà fournies
Deux bibliothèques d’en-têtes sont incluses dans le dépôt, sous srcs/external/ — rien à installer. Le Makefile les rend disponibles à la compilation via -isystem srcs/external :
- nlohmann/json (
srcs/external/nlohmann/json.hpp) — lecture et écriture des fichiers de scène au format JSON. - stb_image (
srcs/external/stb_image.h) — chargement d’images (textures) et export PNG des rendus.
Installer SFML et X11 (Debian / Ubuntu)
Sur une distribution basée sur Debian ou Ubuntu :
sudo apt update
sudo apt install clang make libsfml-dev libx11-dev
Les paquets s’appellent libsfml-dev (SFML, tous modules) et libx11-dev
(X11) sous Debian/Ubuntu. Adaptez les noms de paquets selon votre distribution.
Compilation
Depuis la racine du dépôt :
make
Chaque unité de compilation est bâtie avec les drapeaux
-Wall -Wextra -Werror -std=c++17 -fPIC -g -fsanitize=address. Les avertissements sont
donc traités comme des erreurs (-Werror) et AddressSanitizer
(-fsanitize=address) est activé pour détecter les erreurs mémoire à l’exécution.
La construction produit les artefacts suivants :
| Artefact | Description |
|---|---|
./raytracer | Exécutable principal (cœur du moteur). |
plugins/user_interface.so | Plugin d’interface graphique (lié à SFML et X11). |
plugins/renderer_default.so | Renderer « Default » (rendu complet vers image). |
plugins/renderer_viewport.so | Renderer « Viewport » (rendu progressif interactif). |
Le Makefile crée le dossier ./plugins si nécessaire et y dépose les trois bibliothèques
partagées. L’exécutable est produit à la racine.
Les plugins sont chargés à l’exécution depuis le dossier ./plugins
(chemin relatif). Lancez donc ./raytracer depuis la racine du projet,
là où se trouve ce dossier, sinon le chargement des plugins échoue.
Cibles du Makefile
| Commande | Effet |
|---|---|
make / make all | Compile l’exécutable et les trois plugins. |
make clean | Supprime les fichiers objets .o intermédiaires. |
make fclean | Effectue clean puis supprime l’exécutable et les plugins .so. |
make re | Équivalent à fclean puis all (recompilation complète). |
Vérifier l’installation
Une fois la compilation terminée, quelques commandes rapides confirment que tout fonctionne :
# Version (affiche « raytracer version 1.0.0 »)
./raytracer --version
# Aide (liste des options de la ligne de commande)
./raytracer --help
# Premier rendu vers un PNG, sans interface graphique
./raytracer -r sortie.png tests/configs/subject.json
La dernière commande utilise le mode headless (-r / --render) :
elle rend la scène directement dans un fichier sortie.png, sans ouvrir de fenêtre. Si le
nom de sortie est omis, le fichier par défaut est render.png. Consultez la page
Utilisation pour le détail des options et du format de scène.
Note WSL
Sous WSL, l’interface graphique force le rendu OpenGL
logiciel (Mesa / llvmpipe) pour rester stable avec plusieurs fenêtres ouvertes
simultanément. Un message Setting vertical sync not supported peut apparaître au
démarrage : il est bénin et n’empêche pas le fonctionnement.
Dépannage
En cas de problème (dépendances manquantes, plugins introuvables, fenêtres qui ne s’ouvrent pas sous WSL, avertissements liés à AddressSanitizer…), commencez par un rebuild propre :
make re
Pour les problèmes courants et leurs solutions, reportez-vous à la FAQ.