Intrinsic: un moteur de jeux 3D basé sur Vulkan

Intrin­sic est un moteur de jeux vidéo basé sur Vulkan et dévelop­pé par l’alle­mand Ben­jamin Glatzel. Le moteur est open source (licence Apache 2.0 ou GPL v3) et le code est hébergé sur GitHub.

Du côté du ren­du, le moteur sup­porte le Phys­i­cal­ly Based Ren­der­ing (PBR) ain­si que les lumières volumétriques. Les scripts peu­vent être écrits en LUA, un des lan­gages de script les plus sim­ples à utilis­er. L’édi­teur Intrin­sicEd vous accom­pa­gne dans votre créa­tion. Le for­mat FBX per­met d’importer des ressources.

Intrin­sic est mul­ti-plate­forme, le moteur est com­pi­l­able sous Win­dows (VS2015) et Ubun­tu 16.04 mais c’est encore un pro­to­type.

Le moteur de ren­du et le noy­au d’In­trin­sic sont pro­gram­més en C/C++. L’ar­chi­tec­ture per­met de prof­iter des per­for­mances mul­tit­heads des CPU.

Encore un énième moteur de jeu 3D me direz-vous ? Non, ce n’est pas pour ça que je vous en par­le.  En fait, ce pro­jet vous per­met de met­tre les mains dans le cam­bouis… sous le moteur si vous préférez. Vous avez envie de faire un petit pro­jet util­isant l’API Vulkan ? Avec Intrin­sic, vous béné­fi­ciez d’un petit pro­jet (qui se veut grand à terme), qui est déjà bien ficelé puisqu’il dis­pose d’un édi­teur par exem­ple, et que vous pour­rez tri­t­ur­er dans tous les sens pour appren­dre à coder avec Vulkan. Pour rap­pel, Vulkan, c’est OpenGL Next Gen qui apporte de la puis­sance aux mobiles notam­ment. Le Sam­sung Galaxy S7 le sup­porte par exem­ple, voir ce pro­jet avec Unre­al dont nous avions déjà par­lé.

En même temps, je dois vous aver­tir: le code n’est pas com­men­té et sem­ble écrit à l’ar­rache avec des macro inline partout ! Et y‑a au moins un mil­lion de lignes de code… Mais bon, vous pou­vez vous con­cen­tr­er sur cer­taines par­ties comme le ren­der Vulkan par exem­ple (71 fichiers, 510 Ko de sources).

Le pro­jet utilise les bib­lio­thèques suiv­antes :

  • Vulkan SDK / SPIRV-Cross:  Un SDK pour exploiter Vulkan sous Win­dows et Lin­ux. Il facilite l’ac­cès aux fonc­tions bas niveau de Vulkan, et le développe­ment GPU //. Pour Android, il vous fau­dra adapter.
  • Micro­pro­file: petite librairie pour analyser les per­for­mances — assez sim­ple à utilis­er, le tuto prin­ci­pal est ici.
  • EnkiTS : Ges­tion­naire de tâch­es C/C++ assez léger. Voir présen­ta­tion.
  • Gli : OpenGL Image — Liste de fonc­tions (head­ers) pour manip­uler plus facile­ment les images
  • Glm: OpenGL Math­e­mat­ics — Liste de fonc­tions (head­ers) pour les math­é­ma­tiques.
  • Glslang : Pour inté­gr­er un com­pi­la­teur de shaders GLSL
  • Lua­JIT / SOL v2.0:: Per­met d’in­té­gr­er la com­pi­la­tion à la volée de scripts LUA.
  • Rapid­j­son : Per­met de gér­er le for­mat de don­nées JSON
  • SDL 2.0: Fonc­tions de la librairie SDL pour la créa­tion de jeux.
  • Sparsepp: Librairie de ges­tion de Hash Tables/Cartes très rapi­de
  • Tiny­dir: Lib très légère et cross-plat­forme pour gér­er les réper­toires de fichiers.
  • TLSF allo­ca­tor: Allo­ca­tion de mémoire basé sur le mod­èle “Two-Lev­el Seg­re­gat­ed Fit mem­o­ry”, évite la frag­men­ta­tion.
  • PhysX 3: moteur de physique PhysX
  • Qt (édi­teur seule­ment): Librairie de Wid­gets cross-plat­forms
  • FBX SDK (édi­teur seule­ment):  Pour la lec­ture de fichiers FBX (for­mat d’ob­jets 3D).
  • NVTT: Librairies per­me­t­tant d’u­tilis­er les fonc­tions de com­pres­sion de tex­tures de Nvidia.
  • Cloc: Petite lib pour compter les lignes de codes, les blanks, les com­men­taires, etc.
  • 7za: Ges­tion du for­mat 7Zip

D’après un arti­cle paru sur devel­oppez par Lit­tle­White. Vous pou­vez tester la dernière Build ici.

2 réflexions sur « Intrinsic: un moteur de jeux 3D basé sur Vulkan »

  1. Intéres­sant.
    Per­so, je reste sur Godot dont la ver­sion 3.0 qui approche très très vite gér­era le PBR égale­ment. En revanche, choix assumé : OpenGL 3. Pas de Vulkan dans l’im­mé­di­at car on attend de voir la prop­a­ga­tion des dri­vers sur les dif­férentes plate­formes. Je t’in­vite à t’in­téress­er à nou­veau à Godot en lisant le devlog qui a fait son appari­tion : https://godotengine.org/devblog

Laisser un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.