11## À propos
22
3- Ce tutoriel vous enseignera les bases de l'utilisation de l'API [ Vulkan] ( https://www.khronos.org/vulkan/ ) pour les graphismes
4- et le calcul. Vulkan est une nouvelle API créée par le [ groupe Khronos ] ( https://www.khronos.org/ ) (connu pour OpenGL) qui
5- fournit une bien meilleure abstraction des cartes graphiques modernes. Cette nouvelle interface vous permet de mieux
6- décrire ce que votre application souhaite faire, ce qui peut mener à de meilleures performances et à des comportements moins
7- surprenants comparés à des APIs existantes comme [ OpenGL ] ( https://en.wikipedia.org/wiki/OpenGL ) et
8- [ Direct3D ] ( https://en.wikipedia.org/wiki/Direct3D ) . Les concepts derrière Vulkan sont similaires à ceux de
9- [ Direct3D 12 ] ( https://en.wikipedia.org/wiki/Direct3D#Direct3D_12 ) et [ Metal ] ( https://en.wikipedia.org/wiki/Metal_(API) ) ,
10- mais Vulkan a l'avantage d'être complètement cross-platform et vous permet ainsi de développer pour Windows, Linux, Mac
11- et Android en même temps.
12-
13- Cependant, le prix à payer pour ces avantages est que vous devrez travailler avec une API beaucoup plus redondante.
14- Chaque détail lié à l'API graphique doit être créé à partir de rien par votre application, dont la mise en place d'un
15- framebuffer initial et la gestion de la mémoire pour les objets tels que les buffers et les textures. Le travail du
16- driver graphique sera ainsi grandement réduit, ce qui implique un plus grand travail de votre part pour
17- assurer un comportement correct.
18-
19- Le message à retenir ici est que Vulkan n'est pas fait pour tout le monde. Il cible les programmeurs concernés par la
20- programmation graphique de haute performance, et qui sont prêts à y travailler sérieusement. Si vous êtes plus
21- intéressées dans le développement de jeux vidéos, plutôt que dans les graphismes eux-mêmes, vous devriez plutôt
22- continuer d'utiliser OpenGL et DirectX, qui ne seront pas dépréciés en faveur de Vulkan avant un certain temps. Une autre
23- alternative serait d'utiliser un moteur de jeu comme
3+ Ce tutoriel vous enseignera les bases de l'utilisation de l'API [ Vulkan] ( https://www.khronos.org/vulkan/ ) qui expose
4+ les graphismes et le calcul sur cartes graphiques . Vulkan est une nouvelle API créée par le
5+ [ groupe Khronos ] ( https://www.khronos.org/ ) (connu pour OpenGL). Elle fournit une bien meilleure abstraction des cartes
6+ graphiques modernes. Cette nouvelle interface vous permet de mieux décrire ce que votre application souhaite faire,
7+ ce qui peut mener à de meilleures performances et à des comportements moins variables comparés à des APIs
8+ existantes comme [ OpenGL ] ( https://en.wikipedia.org/wiki/OpenGL ) et
9+ [ Direct3D] ( https://en.wikipedia.org/wiki/Direct3D ) . Les concepts introduits par Vulkan sont similaires à ceux de
10+ [ Direct3D 12 ] ( https://en.wikipedia.org/wiki/Direct3D#Direct3D_12 ) et [ Metal ] ( https://en.wikipedia.org/wiki/Metal_(API) ) .
11+ Cependant Vulkan a l'avantage d'être complètement cross-platform, et vous permet ainsi de développer pour Windows,
12+ Linux, Mac et Android en même temps.
13+
14+ Il y a cependant un contre-coup à ces avantages. L'API vous impose d'être explicite sur chaque détail. Vous ne pourrez
15+ rien laisser au hasard, et il n'y a aucune structure, aucun environnement créé pour vous par défaut. Il faudra le
16+ recréer à partir de rien. Le travail du driver graphique sera ainsi considérablement réduit, ce qui implique un plus
17+ grand travail de votre part pour assurer un comportement correct.
18+
19+ Le message véhiculé ici est que Vulkan n'est pas fait pour tout le monde. Cet API est conçu pour les programmeurs
20+ concernés par la programmation avec GPU de haute performance, et qui sont prêts à y travailler sérieusement. Si vous
21+ êtes intéressées dans le développement de jeux vidéos, et moins dans les graphismes eux-mêmes, vous devriez plutôt
22+ continuer d'utiliser OpenGL et DirectX, qui ne seront pas dépréciés en faveur de Vulkan avant un certain temps. Une
23+ autre alternative serait d'utiliser un moteur de jeu comme
2424[ Unreal Engine] ( https://en.wikipedia.org/wiki/Unreal_Engine#Unreal_Engine_4 ) ou
2525[ Unity] ( https://en.wikipedia.org/wiki/Unity_(game_engine) ) , qui pourront être capables d'utiliser Vulkan tout en
2626exposant une API de bien plus haut niveau.
@@ -35,17 +35,17 @@ Cela étant dit, présentons quelques prérequis pour ce tutoriel:
3535* Un minimum d'expérience dans le domaine de la programmation graphique
3636
3737Ce tutoriel ne considérera pas comme acquis les concepts d'OpenGL et de Direct3D, mais il requiert que vous connaissiez
38- les bases du graphisme 3D. Il n'expliquera pas non plus les mathématiques derrière la projection de perspective, par
38+ les bases du rendu 3D. Il n'expliquera pas non plus les mathématiques derrière la projection de perspective, par
3939exemple. Lisez [ ce livre] ( http://opengl.datenwolf.net/gltut/html/index.html ) pour une bonne introduction des concepts
40- des graphismes 3D. D'autres ressources pour le développement d'application graphiques sont :
40+ de rendu 3D. D'autres ressources pour le développement d'application graphiques sont :
4141* [ Ray tracing en un week-end] ( https://github.com/petershirley/raytracinginoneweekend )
4242* [ Livre sur le Physical Based Rendering] ( http://www.pbr-book.org/ )
4343* Une application de Vulkan dans les moteurs graphiques open source [ Quake] ( https://github.com/Novum/vkQuake ) et de
4444[ DOOM 3] ( https://github.com/DustinHLand/vkDOOM3 )
4545
46- Vous pouvez utiliser le C plutôt que le C++ si vous le souhaitez, mais vous devrez utiliser une autre bibliothèque d'algèbre
47- linéaire et vous structurerez vous-même votre code. Nous utiliserons des possibilités du C++ (RAII, classes) pour
48- organiser la logique et la durée de vie des ressources. Il existe aussi une
46+ Vous pouvez utiliser le C plutôt que le C++ si vous le souhaitez, mais vous devrez utiliser une autre bibliothèque
47+ d'algèbre linéaire et vous structurerez vous-même votre code. Nous utiliserons des possibilités du C++ (RAII,
48+ classes) pour organiser la logique et la durée de vie des ressources. Il existe aussi une
4949[ version alternative] ( https://github.com/bwasty/vulkan-tutorial-rs ) de ce tutoriel pour les développeurs rust.
5050
5151Pour faciliter la tâche des développeurs utilisant d'autres langages de programmation, et pour acquérir de l'expérience
@@ -62,52 +62,53 @@ Si vous préférez lire ce tutoriel en E-book, vous pouvez en télécharger une
6262
6363## Structure du tutoriel
6464
65- Nous allons commencer par une approche globale de la manière dont Vulkan fonctionne , et le travail que nous aurons à faire pour afficher un
66- premier triangle à l'écran. Le but de chaque petite étape aura plus de sens quand vous aurez compris leur rôle dans le
67- fonctionnement global. Ensuite, nous préparerons l'environnement de développement, avec le [ SDK Vulkan ] ( https://lunarg.com/vulkan-sdk/ ) , la
68- [ bibliothèque GLM ] ( http ://glm.g-truc.net/ ) pour les opérations d'algèbre linéaire, et [ GLFW ] ( http://www.glfw.org / ) pour la
69- création de fenêtre. Ce tutoriel couvrira leur mise en place sur Windows avec Visual Studio, sur Linux Ubuntu avec
70- GCC et sur MacOS.
65+ Nous allons commencer par une approche générale du fonctionnement de Vulkan, et verrons d'abord rapidement le travail à
66+ effectuer pour afficher un premier triangle à l'écran. Le but de chaque petite étape aura ainsi plus de sens quand
67+ vous aurez compris leur rôle dans le fonctionnement global. Ensuite, nous préparerons l'environnement de développement,
68+ avec le [ SDK Vulkan ] ( https ://lunarg.com/vulkan-sdk/ ) , la [ bibliothèque GLM ] ( http://glm.g-truc.net / ) pour les opérations
69+ d'algèbre linéaire, et [ GLFW ] ( http://www.glfw.org/ ) pour la création d'une fenêtre. Ce tutoriel couvrira leur mise en
70+ place sur Windows avec Visual Studio, sur Linux Ubuntu avec GCC et sur MacOS.
7171
72- Après cela, nous implémenterons tous les éléments basiques d' un programme Vulkan nécessaires à l'affichage de votre
73- premier triangle. Chaque chapitre suivra approximativement la structure suivante:
72+ Après cela, nous implémenterons tous les éléments nécessaires à un programme Vulkan pour afficher votre premier
73+ triangle. Chaque chapitre suivra approximativement la structure suivante :
7474
75- * Introduction d'un nouveau concept et son but
75+ * Introduction d'un nouveau concept et de son utilité
7676* Utilisation de tous les appels correspondants à l'API pour leur mise en place dans votre programme
7777* Placement d'une partie de ces appels dans des fonctions pour une réutilisation future
7878
7979Bien que chaque chapitre soit écrit comme suite du précédent, il est également possible de lire chacun d'entre eux
8080comme un article introduisant une certaine fonctionnalité de Vulkan. Ainsi le site peut vous être utile comme référence.
8181Toutes les fonctions et les types Vulkan sont liés à leur spécification, vous pouvez donc cliquer dessus pour en
82- apprendre plus. Vulkan est une API récente, il peut donc y avoir des lacunes dans la spécification elle-même. Vous
83- êtes encouragés à transmettre vos retours dans [ ce repo Khronos] ( https://github.com/KhronosGroup/Vulkan-Docs ) .
84-
85- Comme indiqué plus haut, Vulkan est une API assez prolixe, avec de nombreux paramètres, afin de vous fournir un
86- maximum de contrôle sur le hardware graphique. Ansi, des opérations comme créer une texture prennent de nombreuses étapes
87- qui doivent être répétées chaque fois. Nous créerons par conséquent notre propre collection de fonctions d'aide tout le
88- long du tutoriel.
89-
90- Chaque chapitre se conclura avec un lien menant à la totalité du code écrit jusqu'à ce point. Vous pourrez vous y référer
91- si vous avez un quelconque doute quant à la structure du code, ou si vous rencontrez un bug et que voulez comparer. Tous
92- les fichiers de code ont été testés sur des cartes graphiques de différents vendeurs afin d'assurer qu'ils fonctionnent.
93- Chaque chapitre possède également une section pour écrire vos commentaires en relation avec le sujet discuté. Veuillez y
94- indiquer votre plateforme, la version de votre driver, votre code source, le comportement attendu et celui obtenu pour
95- nous aider à vous aider.
96-
97- Ce tutoriel est destiné à être un effort de communauté. Vulkan est encore une API très récente et les meilleures manières
98- d'arriver à un résultat n'ont pas encore été déterminées. Si vous avez un quelconque retour sur le tutoriel et le site
99- lui-même, n'hésitez alors pas à créer une issue ou une pull request sur le
82+ apprendre plus. La spécification est par contre en Anglais. Vulkan est une API récente, il peut donc y avoir des
83+ lacunes dans la spécification elle-même. Vous êtes encouragés à transmettre vos retours dans
84+ [ ce repo Khronos] ( https://github.com/KhronosGroup/Vulkan-Docs ) .
85+
86+ Comme indiqué plus haut, Vulkan est une API assez prolixe, avec de nombreux paramètres, pensés pour vous fournir un
87+ maximum de contrôle sur le hardware graphique. Ainsi des opérations comme créer une texture prennent de nombreuses
88+ étapes qui doivent être répétées chaque fois. Nous créerons notre propre collection de fonctions d'aide tout le long
89+ du tutoriel.
90+
91+ Chaque chapitre se conclura avec un lien menant à la totalité du code écrit jusqu'à ce point. Vous pourrez vous y
92+ référer si vous avez un quelconque doute quant à la structure du code, ou si vous rencontrez un bug et que voulez
93+ comparer. Tous les fichiers de code ont été testés sur des cartes graphiques de différents vendeurs pour pouvoir
94+ affirmer qu'ils fonctionnent. Chaque chapitre possède également une section pour écrire vos commentaires en relation
95+ avec le sujet discuté. Veuillez y indiquer votre plateforme, la version de votre driver, votre code source, le
96+ comportement attendu et celui obtenu pour nous simplifier la tâche de vous aider.
97+
98+ Ce tutoriel est destiné à être un effort de communauté. Vulkan est encore une API très récente et les meilleures
99+ manières d'arriver à un résultat n'ont pas encore été déterminées. Si vous avez un quelconque retour sur le tutoriel
100+ et le site lui-même, n'hésitez alors pas à créer une issue ou une pull request sur le
100101[ repo GitHub] ( https://github.com/Overv/VulkanTutorial ) . Vous pouvez * watch* le dépôt afin d'être notifié des
101- dernières mises à jour du tutoriel .
102+ dernières mises à jour du site .
102103
103- Après que vous avez accompli le rituel de l'affichage de votre premier triangle en Vulkan, nous étendrons le programme pour y
104+ Après avoir accompli le rituel de l'affichage de votre premier triangle avec Vulkan, nous étendrons le programme pour y
104105inclure les transformations linéaires, les textures et les modèles 3D.
105106
106107Si vous avez déjà utilisé une API graphique auparavant, vous devez savoir qu'il y a nombre d'étapes avant d'afficher la
107- première géométrie sur l'écran. Il y a beaucoup de ces étapes préliminaires avec Vulkan, mais vous verrez que chacune
108- d'entre elle est simple à comprendre et n'est pas redondante. Gardez aussi à l'esprit qu'une fois que vous savez
108+ première géométrie sur l'écran. Il y aura beaucoup plus de ces étapes préliminaires avec Vulkan, mais vous verrez que
109+ chacune d'entre elle est simple à comprendre et n'est pas redondante. Gardez aussi à l'esprit qu'une fois que vous savez
109110afficher un triangle - certes peu intéressant -, afficher un modèle 3D parfaitement texturé ne nécessite pas tant de
110- travail supplémentaire, et que chaque étape à partir de ce point est bien plus récompensée visuellement.
111+ travail supplémentaire, et que chaque étape à partir de ce point est bien mieux récompensée visuellement.
111112
112113Si vous rencontrez un problème en suivant ce tutoriel, vérifiez d'abord dans la FAQ que votre problème et sa solution
113114n'y sont pas déjà listés. Si vous êtes toujours coincé après cela, demandez de l'aide dans la section des commentaires
0 commit comments