From 628c1259252e1f3447d4d2d61b241c92c84c0e15 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Bousqui=C3=A9?= Date: Wed, 16 Sep 2026 10:23:42 +0200 Subject: [PATCH] docs: move DRAFT.md into docs/ and confirm step decisions DRAFT.md now lives in docs/. Confirmed the pending design decisions: render() auto-renders the scene by default (Option A, alternative B removed), and simple.rs uses app.renderer.device()/format() via the library API without importing wgpu. --- DRAFT.md => docs/DRAFT.md | 42 +++++++++++++++------------------------ 1 file changed, 16 insertions(+), 26 deletions(-) rename DRAFT.md => docs/DRAFT.md (79%) diff --git a/DRAFT.md b/docs/DRAFT.md similarity index 79% rename from DRAFT.md rename to docs/DRAFT.md index 9283eaa..837b2a7 100644 --- a/DRAFT.md +++ b/docs/DRAFT.md @@ -1,8 +1,8 @@ # DRAFT — Brouillon d'implémentation -> **Usage.** Ce fichier sert de brouillon pour noter les idées et le plan détaillé de l'étape en cours. -> **Son contenu est effacé au début de chaque nouvelle étape.** La source de vérité de l'état est -> le code + README.md ; les docs `docs/*` restent stables. +> **Usage.** Ce fichier (dans `docs/`) sert de brouillon pour noter les idées et le plan détaillé de l'étape +> en cours. **Son contenu est effacé au début de chaque nouvelle étape.** La source de vérité de l'état est +> le code + README.md ; les autres docs `docs/*` restent stables. --- @@ -82,8 +82,7 @@ pub fn render_scene(&self, view: &wgpu::TextureView, scene: &Scene) { ``` - **Batching** : un seul pass pour toutes les entités (aligné sur le principe « batching par matériau » évoqué dans renderer.rs / README Phase 4.3). On évite N submits/encoder alloués à la volée. -- Conserver `render(view, mesh, material)` (API bas-niveau utilisée par `manual.rs`). Le battle placer du code - commun (layout pass / draw d'un mesh) dans un petit helper privé pour éviter la duplication. +- Conserver `render(view, mesh, material)` (API bas-niveau utilisée par `manual.rs`). Le battle placer du code commun (layout pass / draw d'un mesh) dans un petit helper privé pour éviter la duplication. - Import `crate::scene::Scene`. - Documenter selon `docs/DOCUMENTATION.md`. @@ -97,21 +96,14 @@ pub fn render_scene(&self, view: &wgpu::TextureView) { self.renderer.render_scene(view, &self.scene); } ``` -Puis décider où placer l'appel automatique (question de design à trancher à l'implémentation) : - -- **Option A (recommandée)** : rendre `render` du trait **par défaut** en auto-rendu : - ```rust - fn render(&mut self, app: &mut App, frame: &Frame) { - app.render_scene(frame.view()); - } - ``` - → `simple.rs` **n'implémente même pas `render`** : la scène se rend toute seule, exactement l'esprit - « scene auto-render ». L'utilisateur avancé peut surcharger `render` pour contrôler le dessin. -- Option B : garder `render` obligatoire mais vide par défaut + appel manuel de `app.render_scene` dans - `simple.rs`. Moins « magique », garde ~15 lignes quand même. - -> Décision à valider : **Option A** (le README attend le rendu automatique de la scène ; `render()` par -> défaut vide + auto-render est la solution la plus simple pour `simple.rs`). +Le rendu automatique est branché par **défaut** dans le trait (**Option A, décidée**) : +```rust +fn render(&mut self, app: &mut App, frame: &Frame) { + app.render_scene(frame.view()); +} +``` +→ `simple.rs` **n'implémente même pas `render`** : la scène se rend toute seule, exactement l'esprit +« scene auto-render ». L'utilisateur avancé peut surcharger `render` pour contrôler le dessin. ### Étape 3.4 — Remplir `simple.rs` @@ -127,11 +119,9 @@ Puis décider où placer l'appel automatique (question de design à trancher à - Tout ce remplissage se fait dans `AppHandler::update()` (ou dans `run()` avant `app.run(...)` — à voir selon où `app` est constructible ; le plus simple : dans `update(&mut self, app)` une fois). -> ⚠️ Les vertex passent par `Mesh::new(device, ...)` qui exige `wgpu::Device`. Pour rester « sans wgpu » -> dans `simple.rs`, il faut soit exposer un helper de haut niveau (`app.scene.add_quad(...)`, futur), -> soit accepter `app.renderer.device()` (accès bibliothèque, pas wgpu importé par l'utilisateur). -> **Décision à valider** : pour l'étape 1, utiliser `app.renderer.device()`/`app.renderer.format()` -> (l'utilisateur n'importe pas wgpu). Un helper `Scene::add_quad_entity` pourra être ajouté plus tard. +> ⚠️ Les vertex passent par `Mesh::new(device, ...)` qui exige `wgpu::Device`. **Décision prise** : pour +> l'étape 1, utiliser `app.renderer.device()`/`app.renderer.format()` (accès bibliothèque — l'utilisateur +> n'importe pas wgpu). Un helper haut niveau `Scene::add_quad_entity` pourra être ajouté plus tard. ### Étape 3.5 — Validation @@ -145,7 +135,7 @@ cargo fmt --all - Vérifier docs (`docs/DOCUMENTATION.md`) : zéro warning, backticks, chaque item public documenté. - Committer proprement (conventional commits, ex. `feat(app): expose frame view and auto-render scene`). -## 4. Décisions prises / à trancher +## 4. Décisions (actées) | Sujet | Décision | |-------|----------|