From 6f6b72ae8d28f90157c03daa726ecba235626687 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Bousqui=C3=A9?= Date: Fri, 18 Sep 2026 08:42:35 +0200 Subject: [PATCH] =?UTF-8?q?docs(draft):=20valider=20les=20d=C3=A9cisions?= =?UTF-8?q?=20restantes=20=C3=89tape=208=20(D2,=20D4,=20D5,=20D6)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - D2 : Geometry reste en math (structure de donnees pure), re-export racine - D4 : voie unique Mesh::from_geometry(Arc) ; suppression de l API &[Vertex] - D5 : retention CPU (Arc) + buffers GPU pre-uploades - D6 : convertisseur nomme Geometry::to_vertices() avec regles de remplissage Toutes les decisions D1-D6 et la proposition 8.1 sont desormais validees. --- docs/DRAFT.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/DRAFT.md b/docs/DRAFT.md index 5f66f44..7f4dc36 100644 --- a/docs/DRAFT.md +++ b/docs/DRAFT.md @@ -46,11 +46,11 @@ Valeurs apportées : | # | Question | Options | Décision retenue | Justification | |---|----------|---------|------------------|---------------| | D1 | Format CPU stocké | (a) garder `Geometry` en tableaux éclatés `positions/normals/uvs/indices` ; (b) y ajouter `colors` ; (c) ranger un `Vec` | **(a)+(b) : `Geometry` en tableaux + `colors`, et conversion `Geometry -> Vec`** — **validé 2026-09-18** | Respecte le contrat GPU (`Vertex`) sans duplication conceptuelle : `Geometry` = données CPU pures, `Vertex` = format d'upload interleaved. Le shader lit `color` ⇒ il faut porter la couleur dans `Geometry`. | -| D2 | Où `Geometry` vit / qui le ré-exporte | (a) reste en `math` ; (b) déplacé en `resources` | **(a) reste en `math`**, ré-exporté de `lib.rs` | Cohérent : c'est une structure de *données* pure, comme `Transform`/`Camera`. Exposer via `math::Geometry` (déjà le cas) + une ré-export `resources` optionnelle à la convenance. | +| D2 | Où `Geometry` vit / qui le ré-exporte | (a) reste en `math` ; (b) déplacé en `resources` | **(a) reste en `math`**, ré-exporté de `lib.rs` — **validé 2026-09-18** | Cohérent : c'est une structure de *données* pure, comme `Transform`/`Camera`. Exposer via `math::Geometry` (déjà le cas) + une ré-export `resources` optionnelle à la convenance. | | D3 | Champ `transform` sur `Mesh` | (a) l'ajouter (ROADMAP littéral) ; (b) le laisser sur `Entity` | **(b) : `transform` reste sur `Entity`** — **validé 2026-09-18** | Un `Mesh` est **partagé** par plusieurs entités à des transforms différents (modèle instancé). Mettre un `transform` unique sur `Mesh` casserait ce modèle (Étape 4/7). **Déviation documentée** au ROADMAP 1.2. | -| D4 | API de création | (a) `Mesh::new(device, vertices, indices)` actuel ; (b) `Mesh::new(device, geometry)` ; garder ou non surcharge | **(b) : `Mesh::from_geometry(device, Arc)` ; suppression de l'ancienne voie `&[Vertex]` dans `Mesh` et `Scene`** | Une seule source canonique. Les examples (non contraignants) sont réécrits pour construire une `Geometry`. `Vertex` reste utilisé en interne pour l'upload. | -| D5 | Rétention CPU + GPU | (a) ne garder que GPU ; (b) garder CPU `Arc` **et** les buffers GPU pré-uploadés | **(b) : `Mesh` garde `geometry: Arc` ET `vertex_buffer`/`index_buffer`** | Pas de re-upload par frame (perf) ; le `Arc` sert les phases futures (bbox, compute, textures). Double stockage assumé. | -| D6 | Convertisseur `Geometry -> Vertex` | (a) méthode `Geometry::to_vertices()` ; (b) impl `From<&Geometry>` | **(a) `Geometry::to_vertices()`** (ou `into_vertices`) | Explicite, avec règles de remplissage documentées (normales/UV/couleur par défaut si absents). | +| D4 | API de création | (a) `Mesh::new(device, vertices, indices)` actuel ; (b) `Mesh::new(device, geometry)` ; garder ou non surcharge | **(b) : `Mesh::from_geometry(device, Arc)` ; suppression de l'ancienne voie `&[Vertex]` dans `Mesh` et `Scene`** — **validé 2026-09-18** | Une seule source canonique. Les examples (non contraignants) sont réécrits pour construire une `Geometry`. `Vertex` reste utilisé en interne pour l'upload. | +| D5 | Rétention CPU + GPU | (a) ne garder que GPU ; (b) garder CPU `Arc` **et** les buffers GPU pré-uploadés | **(b) : `Mesh` garde `geometry: Arc` ET `vertex_buffer`/`index_buffer`** — **validé 2026-09-18** | Pas de re-upload par frame (perf) ; le `Arc` sert les phases futures (bbox, compute, textures). Double stockage assumé. | +| D6 | Convertisseur `Geometry -> Vertex` | (a) méthode `Geometry::to_vertices()` ; (b) impl `From<&Geometry>` | **(a) `Geometry::to_vertices()`** (ou `into_vertices`) — **validé 2026-09-18** | Explicite, avec règles de remplissage documentées (normales/UV/couleur par défaut si absents). | ## Étape 8.1 — Étendre `Geometry` (couleur + validation) — **proposition validée 2026-09-18**