Files
wsg/docs/ARCHI_RENDERLOOP.md
T
2026-07-06 17:37:13 +02:00

2.5 KiB

Three-Layer Structure

Manager Layer (Context)

Responsabilité : Propriétaire initial du cycle de vie des ressources matérielles (Device, Queue, Surface).

Rôle : Encapsule la complexité du système de fenêtrage et du swapchain. Il fournit les capacités brutes au Renderer lors de son initialisation.


Specialist Layer (Renderer & PipelineCache)

PipelineCache (La Bibliothèque) : Propriétaire de la compilation et du stockage des RenderPipeline. Garantit qu'un shader n'est compilé qu'une seule fois.

Renderer (L'Exécuteur propriétaire) : Il est devenu le propriétaire des ressources matérielles (Device, Queue, Format). Il est agnostique du contenu graphique : il orchestre dynamiquement le rendu des Mesh via les Material et gère seul la présentation des Frame.


Orchestrator Layer (main.rs)

Responsabilité : Logique métier et boucle d'exécution.

Rôle : Coordonne le Context (pour l'init matérielle), le PipelineCache (pour les shaders), et délègue l'exécution au Renderer. Il ne manipule plus directement le Device ou la Queue après la création du Renderer.


Updated Benefits Analysis

Modularité Totale (Decoupling)

Le Renderer est totalement découplé du contenu graphique. Il sait "lier" un Material à un Mesh en utilisant ses propres ressources internes.

Efficacité Mémoire (Resource Sharing)

Grâce au PipelineCache et à l'utilisation de Arc<wgpu::RenderPipeline>, plusieurs Material partagent la même recette compilée sur le GPU. On évite la duplication coûteuse de ressources.

Encapsulation & Robustesse

En transférant la propriété de Device et Queue au Renderer, on élimine les erreurs de transmission de références. Le main.rs devient plus léger et le Renderer devient un point d'entrée unique et sécurisé pour toutes les commandes GPU.

Flexibilité

Le passage à un modèle (Mesh + Material) permet de combiner n'importe quelle géométrie avec n'importe quel effet visuel, tout en laissant le Renderer gérer la boucle de présentation de manière autonome (ex: renderer.present(frame)).


Summary

Cette structure transforme une architecture rigide en un atelier de rendu dynamique. Le Context prépare le terrain, le Renderer devient le propriétaire des ressources et l'orchestrateur de dessin, le PipelineCache fournit les outils, le Material définit le style et le Mesh apporte la forme. Le système est désormais prêt à gérer des scènes complexes avec une API propre et sécurisée.