Raytracer docs 🌐 EN

Accueil / Installation

Installation

Prérequis, dépendances externes, compilation avec make et vérification de l’installation.

C++17 clang++ Makefile SFML X11 Plugins .so

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èqueRôle
clang++Compilateur C++. Le Makefile l’invoque explicitement, avec le standard C++17.
makeSystème de build (orchestration de la compilation et de l’édition de liens).
SFMLFenê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 :

ArtefactDescription
./raytracerExécutable principal (cœur du moteur).
plugins/user_interface.soPlugin d’interface graphique (lié à SFML et X11).
plugins/renderer_default.soRenderer « Default » (rendu complet vers image).
plugins/renderer_viewport.soRenderer « 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

CommandeEffet
make / make allCompile l’exécutable et les trois plugins.
make cleanSupprime les fichiers objets .o intermédiaires.
make fcleanEffectue 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.