Aller au contenu

Structure du projet

Ce document décrit l'organisation des fichiers et répertoires du projet.

Arborescence

suckless-ogl/
├── src/                  # Code source C
│   ├── main.c            # Point d'entrée
│   ├── app.c             # Orchestration principale
│   ├── app_ui.c          # Rendu de l'interface
│   ├── app_input.c       # Gestion des entrées
│   ├── app_env.c         # Environnement HDR
│   ├── app_scene.c       # Scène 3D
│   ├── app_binding.c     # Registre des raccourcis
│   └── platform/         # Couche de portabilité
├── include/              # En-têtes C
├── shaders/              # Shaders GLSL
│   ├── pbr.vert/.frag    # Shader PBR principal
│   ├── skybox.vert/.frag # Rendu de la skybox
│   ├── postprocess/      # Effets de post-traitement
│   └── compute/          # Shaders compute (IBL, exposition)
├── assets/               # Ressources statiques
│   ├── textures/         # Textures PNG/HDR
│   ├── materials/        # Descriptions de matériaux
│   └── fonts/            # Fontes FreeType
├── tests/                # Tests unitaires et d'intégration
├── docs/                 # Documentation MkDocs
├── scripts/              # Scripts d'automatisation
├── deps/                 # Dépendances locales (non gérées par FetchContent)
│   ├── stb/              # stb_image, stb_truetype
│   ├── cglm/             # Mathématiques vectorielles
│   └── glad/             # Chargeur OpenGL
├── CMakeLists.txt        # Configuration CMake
├── Justfile              # Recettes Just
└── Makefile              # Compatibilité make

Modules et responsabilités

src/app.c — Orchestration

Point central de l'application. Initialise tous les sous-systèmes, gère la boucle principale, coordonne les transitions.

src/app_ui.c — Interface utilisateur

Rendu de la superposition d'informations (F1), timeline GPU (F3), aide clavier (H), notifications d'actions.

src/app_input.c — Entrées

Callbacks GLFW pour clavier et souris. Dispatch des commandes via le registre de raccourcis.

src/app_env.c — Environnement

Chargement asynchrone des HDR, génération IBL, transitions entre environnements.

src/app_scene.c — Scène

Gestion des sphères (instanciation, tri Back-to-Front, rendu instancié).

Référence des contrôles

Touche Action
F1 Basculer la superposition d'informations
F3 Basculer la timeline GPU
SHIFT+F3 Position timeline (haut/bas)
F4 Journalisation des métriques dans la console
F Basculer plein écran
H Aide clavier interactive
M Basculer le mode capture souris
E Environnement suivant
SHIFT+E Environnement précédent
T Basculer le mode de transition
B Bloom on/off
SHIFT+B Mode débogage Bloom (étapes)
ALT+B Mode débogage Bloom (mip levels)
+ / - Ajuster l'exposition manuelle
A Basculer l'exposition automatique
R Réinitialiser l'exposition
Esc / Q Quitter

Voir aussi