2.2 KiB
2.2 KiB
ARCHI_MESH_MATERIAL.md
La nouvelle vision architecturale : L'Atelier de Rendu
Pour comprendre notre structure, imagine que tu veux peindre 10 tableaux différents.
Avant : Chaque tableau possédait sa propre cuisine et ses propres outils. C'était inefficace.
Après : Tu as un Atelier (Renderer) qui orchestre le dessin et possède les outils de base (Device, Queue, Format). Il utilise des Recettes (Material + PipelineCache) pour définir l'apparence et traite des Toiles (Mesh) pour la géométrie.
1. Le Mesh (La Géométrie)
Il est purement passif. Il ne sait pas comment il est affiché, il sait seulement ce qu'il est.
- Contenu :
vertex_buffer, optionnellementindex_buffer, et les compteurs (num_vertices,num_indices). - Rôle : Fournir les données brutes au GPU.
2. Le Material & PipelineCache (Le Look & La Recette)
Le look est découplé de la géométrie via une gestion centralisée.
- PipelineCache : Bibliothèque de recettes. Il charge les shaders (WGSL), compile les
RenderPipeline, et les met en cache (viaHashMap+Arc) pour éviter de dupliquer les ressources GPU. - Material : Instance légère qui pointe vers une recette compilée. Il contient un
shader_idet une référence partagée (Arc) vers leRenderPipeline. - Rôle : Garantir la réutilisation. Si 100 objets partagent le même shader, ils pointent tous vers la même instance compilée.
3. Le Renderer (L'Orchestrateur propriétaire)
Le Renderer a été promu au rang de propriétaire des ressources matérielles.
- Contenu :
device,queue,format. - Rôle :
- Initialisation : Reçoit le
Contextau démarrage et s'approprie ses ressources. - Exécution : Orchestre les appels GPU en utilisant ses ressources internes. Il expose une API simplifiée qui ne demande plus à l'utilisateur de manipuler le
deviceou laqueue. - Présentation : Possède la méthode
present(frame)qui utilise saqueueinterne pour afficher l'image.
- Initialisation : Reçoit le
// Exemple d'orchestration simplifiée dans main.rs
renderer.render(frame.view(), &mesh, &material);
renderer.present(frame); // Plus besoin de passer la queue !