Skip to content

Commit a451308

Browse files
KrenodenoAlexis Ronez
authored and
Alexis Ronez
committed
Take @DragonJoker 's comments into account
1 parent a9aee47 commit a451308

File tree

1 file changed

+15
-15
lines changed

1 file changed

+15
-15
lines changed

fr/01_Vue_d'Ensemble.md

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,10 @@ utilisée.
55

66
## Origine de Vulkan
77

8-
Comme les APIs précédents, Vulkan est conçue comme une abstraction des
8+
Comme les APIs précédentes, Vulkan est conçue comme une abstraction des
99
[GPUs](https://en.wikipedia.org/wiki/Graphics_processing_unit). Le problème avec la plupart de ces APIs est qu'elles
1010
furent créées à une époque où le hardware graphique était limité à des fonctionnalités prédéfinies tout juste
11-
configurables. Les développeurs devaient fournir les vertices dans un format standardisé, et étaient ainsi à la merci
11+
configurables. Les développeurs devaient fournir les sommets dans un format standardisé, et étaient ainsi à la merci
1212
des constructeurs pour les options d'éclairage et les jeux d'ombre.
1313

1414
Au fur et à mesure que les cartes graphiques progressèrent, elles offrirent de plus en plus de fonctionnalités
@@ -24,7 +24,7 @@ multithreading, menant à des goulot d'étranglement du coté du CPU. Au-delà d
2424
été témoin de l’arrivée de matériel mobile. Ces GPUs portables ont des architectures différentes qui prennent en compte
2525
des contraintes spatiales ou énergétiques.
2626

27-
Vulkan résout ces problèmes en ayant été repensée à partir de rien pour des architectures modernes. Il réduit le travail
27+
Vulkan résout ces problèmes en ayant été repensée à partir de rien pour des architectures modernes. Elle réduit le travail
2828
du driver en permettant (en fait en demandant) au développeur d’expliciter ses objectifs en passant par une API plus
2929
prolixe. Elle permet à plusieurs threads d’invoquer des commandes de manière asynchrone. Elle supprime les différences lors
3030
de la compilation des shaders en imposant un format en bytecode compilé par un compilateur officiel. Enfin, elle
@@ -39,9 +39,9 @@ simplement de vous donner une vue d’ensemble afin d’y replacer tous les él
3939

4040
### Étape 1 - Instance et sélection d’un Physical Device
4141

42-
Une application commence par paramétrer l’API à l’aide d’une «`VkInstance`». Une instance est crée en décrivant votre
42+
Une application commence par paramétrer l’API à l’aide d’une «`VkInstance`». Une instance est créée en décrivant votre
4343
application et les extensions que vous comptez utiliser. Après avoir créé votre `VkInstance`, vous pouvez demander l’accès
44-
à du hardware compatible avec Vulkan, et ainsi sélectionner un ou plusieurs «VkPhysicalDevice» pour y réaliser vos
44+
à du hardware compatible avec Vulkan, et ainsi sélectionner un ou plusieurs «`VkPhysicalDevice`» pour y réaliser vos
4545
opérations. Vous pouvez traiter des informations telles que la taille de la VRAM ou des capacités de la carte graphique,
4646
et ainsi préférer par exemple du matériel dédié.
4747

@@ -50,7 +50,7 @@ et ainsi préférer par exemple du matériel dédié.
5050
Après avoir séléctionné le hardware qui vous convient, vous devez créer un «`VkDevice`» (logical device). Vous décrivez
5151
pour cela quelles `VkPhysicalDeviceFeatures` vous utiliserez, comme l’affichage multi-fenêtre ou des floats de 64 bits.
5252
Vous devrez également spécifier quelles `vkQueueFamilies` vous utiliserez. La plupart des opérations, comme les
53-
commandes d’affichage et les allocations de mémoire, sont exécutés de manière asynchrone en les envoyant à une VkQueue.
53+
commandes d’affichage et les allocations de mémoire, sont exécutés de manière asynchrone en les envoyant à une `VkQueue`.
5454
Ces queues sont crées à partir d’une famille de queues, chacune de ces dernières supportant uniquement une certaine
5555
collection d’opérations. Il pourrait par exemple y avoir des familles différentes pour les graphismes, le calcul et les
5656
opérations mémoire. L’existence d’une famille peut aussi être un critère pour la sélection d’un physical
@@ -78,7 +78,7 @@ d’assurer que l’image sur laquelle nous travaillons n’est pas celle utilis
7878
l’image affichée est complète. Chaque fois que nous voudrons afficher une image nous devrons demander à la swap chain de
7979
nous fournir une cible disponible. Une fois le traitement de la cible terminé, nous la rendrons à la swap chain qui
8080
l’utilisera en temps voulu pour l’affichage à l’écran. Le nombre de cibles et les conditions de leur affichage dépend
81-
du mode utilisé lors du paramétrage de la swap chain. Ceux-ci peuvent être le double buffering (synchronisation verticale)
81+
du mode utilisé lors du paramétrage de la Swap Chain. Ceux-ci peuvent être le double buffering (synchronisation verticale)
8282
ou le triple buffering. Nous détaillerons tout cela dans le chapitre dédié à la Swap Chain.
8383

8484
### Étape 4 - Image Views et Framebuffers
@@ -91,7 +91,7 @@ Framebuffers pour chacune d’entre elles, puis sélectionnerons celle qui nous
9191

9292
### Étape 5 - Render Passes
9393

94-
Avec Vulkan, une Render Pass décrit le type d’images utilisées lors du rendu, comment elles sont utilisées et
94+
Avec Vulkan, une Render Pass décrit les types d’images utilisées lors du rendu, comment elles sont utilisées et
9595
comment leur contenu doit être traité. Pour notre affichage d’un triangle, nous dirons à Vulkan que nous utilisons une
9696
seule image pour la couleur et que nous voulons qu’elle soit préparée avant l’affichage en la remplissant d’une couleur
9797
opaque. Là où la passe décrit le type d’images utilisées, un Framebuffer sert à lier les emplacements utilisés par la
@@ -105,7 +105,7 @@ programmables à l’aide de `VkShaderModules`. Ces derniers sont créés à par
105105
informé des cibles du rendu utilisées dans le pipeline, ce que nous lui disons en référençant la render pass.
106106

107107
L’une des particularités les plus importantes de Vulkan est que la quasi totalité de la configuration des étapes doit
108-
être réalisée à l’avance. Cela implique que si vous voulez changer un shader ou la conformation des vertices, la
108+
être réalisée à l’avance. Cela implique que si vous voulez changer un shader ou la conformation des sommets, la
109109
totalité du pipeline doit être recréée. Vous aurez donc probablement de nombreux `VkPipeline` correspondant à toutes
110110
les combinaisons dont votre programme aura besoin. Seules quelques configurations basiques peuvent être changées de
111111
manière dynamique, comme la couleur de fond. Les états doivent aussi être anticipés : il n’y a par exemple pas de
@@ -124,17 +124,17 @@ opérations suivantes :
124124

125125
* Lancer la Render Pass
126126
* Lier le pipeline graphique
127-
* Afficher 3 vertices
127+
* Afficher 3 sommets
128128
* Terminer la passe
129129

130-
Du fait que l’image que nous avons extrait du framebuffer pour s’en servir comme cible dépend de l’image que la swap
130+
Du fait que l’image que nous avons extraite du framebuffer pour nous en servir comme cible dépend de l’image que la swap
131131
chain nous fournira, nous devons préparer un command buffer pour chaque image possible et choisir le bon au moment de
132-
l’affichage. Nous pourrions en créer un à chaque frame mais ce serait peu efficace.
132+
l’affichage. Nous pourrions en créer un à chaque frame mais ce ne serait pas aussi efficace.
133133

134134
### Étape 8 - Boucle principale
135135

136136
Maintenant que nous avons inscrit les commandes graphiques dans des Command Buffers, la boucle principale n’est qu’une
137-
histoire d’appels. Nous acquérerons d’abord une image de la Swap Chain en utilisant `vkAcquireNextImageKHR`. Nous
137+
histoire d’appels. Nous acquérons d’abord une image de la Swap Chain en utilisant `vkAcquireNextImageKHR`. Nous
138138
sélectionnons ensuite le command buffer approprié pour cette image et le postons à la queue avec vkQueueSubmit. Enfin,
139139
nous retournons l’image à la Swap Chain pour sa présentation à l’écran à l’aide de `vkQueuePresentKHR`.
140140

@@ -150,7 +150,7 @@ Ce tour devrait vous donner une compréhension basique du travail que nous auron
150150
triangle. Un véritable programme contient plus d’étapes comme allouer des vertex Buffers, créer des Uniform Buffers et
151151
envoyer des textures, mais nous verrons cela dans des chapitres suivants. Nous allons commencer par les bases car Vulkan
152152
a suffisamment d’étapes ainsi. Notez que nous allons ‘tricher’ en écrivant les coordonnées du triangle directement dans
153-
un shader, afin d’éviter l’utilisation d’un vertex buffer qui nécessitent une certaine familiarité avec les Command
153+
un shader, afin d’éviter l’utilisation d’un vertex buffer qui nécessite une certaine familiarité avec les Command
154154
Buffers.
155155

156156
En résumé nous devrons, pour afficher un triangle :
@@ -167,7 +167,7 @@ En résumé nous devrons, pour afficher un triangle :
167167
* Dessiner sur les Frames en acquérant une image, en soumettant la commande d’affichage correspondante et en retournant
168168
l’image à la Swap Chain
169169

170-
Cela fait beaucoup d’étapes, cependant le but de chacune d’entre elles sera explicité clairement et simplement dans les
170+
Cela fait beaucoup d’étapes, cependant le but de chacune d’entre elles sera explicitée clairement et simplement dans les
171171
chapitres suivants. Si vous êtes confus quant à l’intérêt d’une étape dans le programme entier, référez-vous à ce
172172
premier chapitre.
173173

0 commit comments

Comments
 (0)