Spartan Engine : un moteur GPU bindless développé par une seule personne
Ce projet transforme « A game engine with a fully bindless, GPU-driven renderer featuring real-time path-traced global illumination, hardware ray tracing, and a physics simulation running at 200Hz, built over 10+ years of R&D. » en une solution open source exploitable, avec une chaîne d’outils réutilisable et des moyens d’intégration pour des cas d’usage concrets.
En bref
- De quoi s’agit-il ?
- Un moteur de R&D personnel avec tracé de chemin en temps réel, simulation de voiture à 200 Hz et base de code à auteur unique.
- À qui s’adresse-t-il ?
- Le projet est un moteur de recherche développé par une seule personne avec une longue liste de fonctionnalités et une licence MIT permissive. Le README ne fournit pas de benchmarks de performance, d'exigences matérielles ou d'instructions d'installation en ligne de commande ; ces détails sont laissés au wiki.
- Puis-je l’utiliser commercialement ?
- Oui. MIT est une licence permissive : vous pouvez utiliser, modifier et vendre un logiciel qui en dépend, à condition de conserver les mentions de droit d’auteur et de licence.
- Est-il encore maintenu ?
- Oui. Les derniers commits datent d’il y a 2 jours.
- En quel langage est-il écrit ?
- Principalement C++, d’après les statistiques de langage de GitHub.
Ces réponses reposent sur les données GitHub du projet (dernière synchronisation le 14 septembre 2026) et sur notre analyse. Elles ne constituent pas un avis juridique.
ANALYSE OPEN SOURCE APPROFONDIE
Un moteur personnel avec une longue histoire
Spartan a commencé comme projet universitaire et, selon le README, a depuis grandi grâce à plus d'une décennie de nuits et de week-ends de travail d'un seul ingénieur. Le même README indique que sa technologie de rendu a été intégrée à Godot Engine et à S.T.A.L.K.E.R. Anomaly, apparaît dans un livre de programmation publié et soutient une communauté Discord également de 600 ingénieurs. Il décrit le moteur comme un effort personnel de R&D, explicitement pas un produit commercial, sans promesses de feuille de route ni file d'attente de support. La philosophie énoncée est de choisir le temps réel sur le cuit, le dynamique sur le statique, et le moderne sur le sûr. Repère SpartanEngine, section 1, paragraphe 1.
Dans le dépôt PanosK92/SpartanEngine, cette rubrique doit être rapprochée des fichiers et des entrées réellement cités par le README. Le texte source établit ce point, mais ne permet pas d'en déduire une garantie de compatibilité, de débit ou de support lorsqu'elle n'est pas explicitement donnée. Repère SpartanEngine, section 1, paragraphe 2.
Pour un contrôle ciblé de « Un moteur personnel avec une longue histoire », relisez la branche master et comparez les sorties obtenues aux exemples du README de SpartanEngine. Toute différence doit être attribuée à une version, une configuration ou une dépendance identifiée, plutôt qu'à une promesse générale. Repère de contrôle 1 pour SpartanEngine. Repère SpartanEngine, section 1, paragraphe 3.
Mondes par défaut
Le moteur démarre dans un écran de sélection de mondes avec plusieurs environnements physiques activés. Le monde Forêt est le plus exigeant, avec 256 millions de brins d'herbe générés procéduralement répartis sur 64,1 km², ainsi que des milliers d'arbres et de rochers. Les autres mondes inclus sont Sponza 4K, Basic, Liminal Space, Showroom, et un monde appelé The Plan, décrit comme une ville imprégnée de néon destinée à pousser le moteur vers la conduite tracée par chemin en temps réel à 60fps. Le README qualifie ce dernier de plan, pas de fonctionnalité terminée. Repère SpartanEngine, section 2, paragraphe 1.
Dans le dépôt PanosK92/SpartanEngine, cette rubrique doit être rapprochée des fichiers et des entrées réellement cités par le README. Le texte source établit ce point, mais ne permet pas d'en déduire une garantie de compatibilité, de débit ou de support lorsqu'elle n'est pas explicitement donnée. Repère SpartanEngine, section 2, paragraphe 2.
Pour un contrôle ciblé de « Mondes par défaut », relisez la branche master et comparez les sorties obtenues aux exemples du README de SpartanEngine. Toute différence doit être attribuée à une version, une configuration ou une dépendance identifiée, plutôt qu'à une promesse générale. Repère de contrôle 2 pour SpartanEngine. Repère SpartanEngine, section 2, paragraphe 3.
Architecture de rendu
Le rendu est construit autour de l'idée que le GPU possède toutes les données. Les ressources telles que la géométrie, les matériaux, les textures, les lumières, les transformations et les AABB vivent dans des tampons globaux persistants. Il existe un chemin de dessin sans liaison où les constantes de poussée ne portent qu'un index vers un tampon de stockage bindless unique. Un seul tampon de sommets et d'indices global contient toute la géométrie, avec un tirage de sommets qui contourne l'assembleur d'entrée. Le rendu indirect piloté par GPU utilise le frustum par meshlet, l'occlusion Hi-Z et le culling de cône arrière ; le CPU émet un DrawIndexedIndirectCount par passe. Les meshlets sont générés avec meshoptimizer, et le HLSL universel est compilé à la fois en Vulkan SPIR-V et DirectX 12. La génération de mips et la compression de textures se font sur le GPU au chargement. Repère SpartanEngine, section 3, paragraphe 1.
Dans le dépôt PanosK92/SpartanEngine, cette rubrique doit être rapprochée des fichiers et des entrées réellement cités par le README. Le texte source établit ce point, mais ne permet pas d'en déduire une garantie de compatibilité, de débit ou de support lorsqu'elle n'est pas explicitement donnée. Repère SpartanEngine, section 3, paragraphe 2.
Pour un contrôle ciblé de « Architecture de rendu », relisez la branche master et comparez les sorties obtenues aux exemples du README de SpartanEngine. Toute différence doit être attribuée à une version, une configuration ou une dépendance identifiée, plutôt qu'à une promesse générale. Repère de contrôle 3 pour SpartanEngine. Repère SpartanEngine, section 3, paragraphe 3.
Éclairage et illumination globale
Pour l'éclairage, le moteur utilise le tracé de chemin ReSTIR avec rééchantillonnage de réservoir spatio-temporel pour une illumination globale multi-rebond en temps réel. L'ombrage différé par clusters construit une grille Z logarithmique sur le GPU et effectue un culling cône contre AABB pour les projecteurs. Les réflexions et ombres tracées par rayons matériels passent par des requêtes de rayons. L'atmosphère comprend la diffusion, l'éclairage basé sur l'image avec normales courbes, des nuages volumétriques décrits comme style Nubis, du brouillard volumétrique avec reprojection temporelle, et un océan FFT avec spectre de Tessendorf et IFFT multi-cascade. Sont également listés les ombres d'espace d'écran inspirées de Days Gone, l'occlusion ambiante XeGTAO, et un atlas de cartes d'ombres avec estimation de pénombre. Repère SpartanEngine, section 4, paragraphe 1.
Dans le dépôt PanosK92/SpartanEngine, cette rubrique doit être rapprochée des fichiers et des entrées réellement cités par le README. Le texte source établit ce point, mais ne permet pas d'en déduire une garantie de compatibilité, de débit ou de support lorsqu'elle n'est pas explicitement donnée. Repère SpartanEngine, section 4, paragraphe 2.
Pour un contrôle ciblé de « Éclairage et illumination globale », relisez la branche master et comparez les sorties obtenues aux exemples du README de SpartanEngine. Toute différence doit être attribuée à une version, une configuration ou une dépendance identifiée, plutôt qu'à une promesse générale. Repère de contrôle 4 pour SpartanEngine. Repère SpartanEngine, section 4, paragraphe 3.
Performance, upscaling et post-traitement
Le rendu prend en charge l'ombrage à taux variable, la mise à l'échelle dynamique de la résolution et l'anticrénelage temporel avec suréchantillonnage intégré (TAAU), utilisant une reprojection d'historique avec tremblement de Halton et clipping de variance. L'upscaling Intel XeSS 3 et FXAA sont également disponibles. Pour le débogage, des miettes de pain personnalisées fournissent un traçage de crash GPU. La caméra physiquement basée utilise l'exposition automatique et des unités de lumière physiques en lumens et kelvins. Les tonemappers incluent ACES, AgX et Gran Turismo 7, ce dernier étant le défaut. La sortie HDR10 est prise en charge, avec bloom, flou de mouvement, profondeur de champ, aberration chromatique, grain de film et netteté CAS. Repère SpartanEngine, section 5, paragraphe 1.
Dans le dépôt PanosK92/SpartanEngine, cette rubrique doit être rapprochée des fichiers et des entrées réellement cités par le README. Le texte source établit ce point, mais ne permet pas d'en déduire une garantie de compatibilité, de débit ou de support lorsqu'elle n'est pas explicitement donnée. Repère SpartanEngine, section 5, paragraphe 2.
Pour un contrôle ciblé de « Performance, upscaling et post-traitement », relisez la branche master et comparez les sorties obtenues aux exemples du README de SpartanEngine. Toute différence doit être attribuée à une version, une configuration ou une dépendance identifiée, plutôt qu'à une promesse générale. Repère de contrôle 5 pour SpartanEngine. Repère SpartanEngine, section 5, paragraphe 3.
Simulation de voiture et systèmes du moteur
Une simulation complète de dynamique de véhicule s'exécute dans la boucle à pas de temps fixe de PhysX à 200Hz. Le README énumère la modélisation des pneus avec Pacejka MF 5.2, la suspension avec contact de balayage d'enveloppe convexe et barres anti-roulis, le transfert de poids, la transmission avec boîte de vitesses à 7 rapports, les freins avec dégradation thermique, l'aérodynamique, la direction, et des aides comme l'ABS et le contrôle de traction. Au-delà des véhicules, le moteur comprend des particules pilotées par GPU, de l'animation squelettique avec IK à deux os, de la physique PhysX, du scripting Lua 5.4 via Sol2, de l'audio 3D avec SDL3, un système d'entités à base de composants, des routes procédurales, un séquenceur de coupes de caméra, un pool de threads conscient du matériel, de la réalité virtuelle OpenXR (marquée WIP), un profileur avec des voies temporelles et un éditeur basé sur ImGui. L'import d'actifs prend en charge plus de 40 formats de modèles, plus de 30 formats d'images et plus de 10 formats de polices. Repère SpartanEngine, section 6, paragraphe 1.
Dans le dépôt PanosK92/SpartanEngine, cette rubrique doit être rapprochée des fichiers et des entrées réellement cités par le README. Le texte source établit ce point, mais ne permet pas d'en déduire une garantie de compatibilité, de débit ou de support lorsqu'elle n'est pas explicitement donnée. Repère SpartanEngine, section 6, paragraphe 2.
Pour un contrôle ciblé de « Simulation de voiture et systèmes du moteur », relisez la branche master et comparez les sorties obtenues aux exemples du README de SpartanEngine. Toute différence doit être attribuée à une version, une configuration ou une dépendance identifiée, plutôt qu'à une promesse générale. Repère de contrôle 6 pour SpartanEngine. Repère SpartanEngine, section 6, paragraphe 3.
Démarrage, communauté et licence
Le README dirige les utilisateurs vers le wiki pour un guide de construction avec génération de projet en un clic et pointe vers Game.cpp comme point d'entrée pour comprendre comment les mondes par défaut se chargent. Un guide de scripting Lua est également sur le wiki. Les contributeurs sont dirigés vers un guide de contribution, et le parrainage couvre l'hébergement Dropbox pour la configuration en un clic. Le README répertorie Godot Engine, qui intègre le TAA de Spartan, et S.T.A.L.K.E.R. Anomaly, qui utilise un addon de rendu à partir de la source de Spartan, ainsi qu'un livre de programmation de Jesse Guerrero. Le dépôt est sous licence MIT, dont l'extrait de licence accorde la permission d'utiliser, copier, modifier, fusionner, publier, distribuer, sous-licencier et vendre des copies, à condition que l'avis de droit d'auteur soit inclus. La licence indique également que le logiciel est fourni « tel quel » sans garantie. Repère SpartanEngine, section 7, paragraphe 1.
Dans le dépôt PanosK92/SpartanEngine, cette rubrique doit être rapprochée des fichiers et des entrées réellement cités par le README. Le texte source établit ce point, mais ne permet pas d'en déduire une garantie de compatibilité, de débit ou de support lorsqu'elle n'est pas explicitement donnée. Repère SpartanEngine, section 7, paragraphe 2.
Pour un contrôle ciblé de « Démarrage, communauté et licence », relisez la branche master et comparez les sorties obtenues aux exemples du README de SpartanEngine. Toute différence doit être attribuée à une version, une configuration ou une dépendance identifiée, plutôt qu'à une promesse générale. Repère de contrôle 7 pour SpartanEngine. Repère SpartanEngine, section 7, paragraphe 3.
Conclusion éditoriale
Le projet est un moteur de recherche développé par une seule personne avec une longue liste de fonctionnalités et une licence MIT permissive. Le README ne fournit pas de benchmarks de performance, d'exigences matérielles ou d'instructions d'installation en ligne de commande ; ces détails sont laissés au wiki. Pour décider de l'adopter, vérifiez le cas d'usage propre à SpartanEngine avec les fichiers et commandes cités dans son README, puis contrôlez les erreurs et sorties attendues dans votre environnement.
Notes de la communauté