← Projets

scop

février 2026

Rust3DVulkanOBJAlgèbre LinéaireTriangulation42
github

Un projet plaisant et satisfaisant, bien que mon choix d’utiliser Vulkan ait ajouté un peu de complexité.

Aperçu

Là où la plupart des étudiants utilisent OpenGL pour ce projet, j’ai choisi Vulkan — pour découvrir plus en détails comment fonctionne une API graphique. Le résultats est un visualiseur qui charge des fichiers OBJ, applique des textures PNG/JPEG, et permet une manipulation complète de l’objet au clavier sur les trois axes, avec une rotation continue sur l’axe Y.

Le moteur de rendu est structuré autour d’objets Vulkan — instance, sélection du périphérique logique / physique, swapchain, render pass, pipeline graphique, descriptor sets, command buffers, primitives de synchronisation — chacun isolé dans son propre module. La gestion de la mémoire GPU est manuelle: les données du fichier OBJ sont transférées de la mémoire locale au périphérique via des staging buffers.

L’effort de débogage le plus important a porté sur la synchronisation des frames. Vulkan impose de suivre deux quantités distinctes: les frames in flight (nombre de frames que le CPU peut préparer en avance sur le GPU) et les images du swapchain (nombre de buffers de présentation). Confondre les deux produit des erreurs de validation ou des situations de compétition (race conditions) difficile à tracer. Réussir la coordination des sémaphores et des fences sur ces deux dimensions a été la courbed’apprentissage la plus raide du projet.

Le parsing OBJ gère les faces concaves par ear clipping — projection de chaque polygone sur un plan 2D, test des “oreilles” candidates via vérifications de convexité par produit vectoriel, avec repli sur une triangulation en éventail (fan triangulation) en cas de géométrie dégénérée. Les coordonées UV manquantes sont générées par projection planaire à partir des normales des faces.

La librairie mathématiques (vecteurs, matrices, transformations, projection en perspective) a été écrite pour le projet Matrix et réutilisée ici directement.

Examples

teapot La célèbre théière de l’Utah.

42

Le sujet exigeait une texture joyeuse avec des poneys, des chatons ou des licornes. Réalisé avec IA.

cottage

Un joli modèle de cottage.