feat: multi-lumières directionnelles + ponctuelles (Étape 12, Phase 4.2)

- Light (48 o) + MAX_LIGHTS=8 ; FrameUniforms étendu (ambient, lights[8], compteurs, _pad)
- resources/lights.rs : Lights (1 dir +Z par défaut, non-régression) + into_frame_array
- Scene : API déclarative add_directional_light / add_point_light / set_ambient / clear_lights
- Renderer::write_frame_uniforms upload les lumières/ambiant de la scène
- standard_shader.wgsl : struct Light + boucles d'accumulation (dir + ponctuelles, atténuation linéaire)
- exemple cube : 1 lumière ponctuelle chaude
- Docs : shaders/resources README, README roadmap, ROADMAP (item coché + Spot notée futur)
- Build/test/fmt OK ; non-régression par défaut (1 dir +Z + ambiant blanc)
This commit is contained in:
Jérôme Bousquié
2026-09-18 18:26:38 +02:00
parent 49ecdea249
commit d518948deb
12 changed files with 394 additions and 70 deletions
+2 -13
View File
@@ -1,15 +1,4 @@
# DRAFT — Étape suivante
> 📅 **Document vidé le 2026-09-18** (fin de l'Étape 11, Resize — Phase 4.4, bilan archivé
> dans l'historique git). Ce fichier accueillera le plan de l'étape suivante.
>
> **Étape 11 (2026-09-18) : Gestion du Resize (Surface + Depth) — FAIT & vérifié.**
> `App::resize(w,h)` (`lib/src/app.rs`) reconfigure la surface via `Context::configure` et
> recrée la depth texture via `Renderer::resize_depth` (+ `set_format`), avec re-synchronisation
> de la Scene si le format change (D4). `AppRunner::window_event` branche `WindowEvent::Resized`
> (garde 0×0, D3) et `RedrawRequested` (garde taille nulle, D6).
> Vérifié : `cargo build`/`test` workspace + compilation des exemples OK, et **au runtime**
> (exemple `cube`) le resize (agrandir + rétrécir) ne produit ni crash, ni artefact — rendu
> correct à la nouvelle taille, aspect non déformé.
>
> Source de vérité = code + README.md. Ce document est vidé à la complétion de chaque étape.
> DRAFT vide. L'Étape 12 (Phase 4.2 — multi-lumières) est terminée et son bilan est archivé dans l'historique git
> (commit correspondant). Préparer le plan de l'étape suivante ici.
+2 -1
View File
@@ -139,7 +139,8 @@ generated: { by: human:jerome, at: 2026-07-31T00:00:00Z }
### 4.2 Éclairage avancé
- [x] Lumières hémisphériques *(déjà dans le `standard_shader` : mélange hémisphérique, Étape 2)*
- [ ] Support multi-lumières (directionnelles, ponctuelles)
- [x] Support multi-lumières (directionnelles, ponctuelles) *(Étape 12, 2026-09-18 : liste globale dans la `Scene`, tableau `FrameUniforms.lights[8]`, shader accumule ambiant + directionnelles + ponctuelles, `MAX_LIGHTS = 8`)*
- [ ] Lumières spot (cône + angle) *(futur, post-Étape 12 — hors périmètre du multi-lumières initial ; extension triviale : même struct `Light` + champ d'angle/orientation et boucle d'accumulation dédiée)*
- [ ] Shadows (optionnel)
### 4.3 Optimisations