docs(plan): lock uniform scheme (2 bind groups) and uniform types location (resources/uniform.rs)
This commit is contained in:
+3
-2
@@ -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 |
|
| Décision | Option proposée | Justification |
|
||||||
|----------|-----------------|---------------|
|
|----------|-----------------|---------------|
|
||||||
| Schéma uniforms | 2 bind groups : frame partagé (@0) + object par entité (@1) | Simple, extensible ; évite `var<immediate>` (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<immediate>` 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<HashMap<label, (Buffer, BindGroup)>>` dans `Renderer` | `render_scene(&self)` immuable ; MVP petit nombre d'entités |
|
| Cache object buffer | `RefCell<HashMap<label, (Buffer, BindGroup)>>` 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é) |
|
| 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 |
|
| 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 |
|
||||||
|
|||||||
Reference in New Issue
Block a user