From bb7fab491162578b90ccd1642b893eb048360f62 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Bousqui=C3=A9?= Date: Wed, 16 Sep 2026 13:40:30 +0200 Subject: [PATCH] docs(plan): lock uniform scheme (2 bind groups) and uniform types location (resources/uniform.rs) --- docs/DRAFT.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/docs/DRAFT.md b/docs/DRAFT.md index 53dfa9b..8625471 100644 --- a/docs/DRAFT.md +++ b/docs/DRAFT.md @@ -110,11 +110,12 @@ toucher au rendu (pure façade de données, validable par compilation). --- -## Décisions à acter (à trancher avant l'implémentation) +## Décisions actées (verrouillées avant l'implémentation) | Décision | Option proposée | Justification | |----------|-----------------|---------------| -| Schéma uniforms | 2 bind groups : frame partagé (@0) + object par entité (@1) | Simple, extensible ; évite `var` (limites de taille, hazard) | +| Schéma uniforms | **Acté : 2 bind groups** — frame partagé (@0) + object par entité (@1) | Étendu, portable sur tous backends (Metal/DX12/Vulkan) ; `var` neuf, limites de taille et hazard d'écriture par objet ; 2 binds/draw seulement, trivialement « pipeline bind-less » plus tard | +| Emplacement types uniforms | **Acté : `resources/uniform.rs`** (`FrameUniforms`, `ObjectUniform`, types `Pod` bytemuck) | Couche de données GPU (avec Camera/Mesh/Material/Vertex) ; préserve `math/` pur (sans bytemuck ni couplage wgpu) | | Cache object buffer | `RefCell>` dans `Renderer` | `render_scene(&self)` immuable ; MVP petit nombre d'entités | | Transform dans l'entité | `Entity { mesh_id, material_id, transform }` + `add_entity_with_transform` | `add_entity` garde sa signature (transform identité) | | Layout pipeline | **Acté : un seul layout pour tous** (frame @0 + object @1) ; `basic` unlit = variante de `standard` | 2D = cas particulier 3D (décision utilisateur) ; supprime la fourchette à deux layouts pour toujours |