@@ -18,17 +18,17 @@ voudrions plutôt qu'il y contribue partiellement.
1818![ ] ( /images/aliasing.png )
1919
2020Le MSAA consiste à utiliser plusieurs points dans un pixel pour déterminer la couleur d'un pixel. Comme on peut s'y
21- attendre, plus de points offrent un meilleur résultat, mais nécessitent plus de ressources.
21+ attendre, plus de points offrent un meilleur résultat, mais consomment plus de ressources.
2222
2323![ ] ( /images/antialiasing.png )
2424
25- Nous allons utiliser le maximum de points possible. Si votre application nécessite plus de performances, cette approche
26- ne sera pas la meilleure .
25+ Nous allons utiliser le maximum de points possible. Si votre application nécessite plus de performances, il vous suffira
26+ de réduire ce nombre .
2727
2828## Récupération du nombre maximal de samples
2929
3030Commençons par déterminer le nombre maximal de samples que la carte graphique supporte. Les GPUs modernes supportent au
31- moins 8 points, mais il peut tout de même différer entre modèle . Nous allons stocker ce nombre dans un membre donnée :
31+ moins 8 points, mais il peut tout de même différer entre modèles . Nous allons stocker ce nombre dans un membre donnée :
3232
3333``` c++
3434...
@@ -79,9 +79,9 @@ void pickPhysicalDevice() {
7979
8080Le MSAA consiste à écrire chaque pixel dans un buffer indépendant de l'affichage, dont le contenu est ensuite rendu en
8181le résolvant à un framebuffer standard. Cette étape est nécessaire car le premier buffer est une image particulière :
82- elle doit supporter plus d'un sample par pixel. Il ne peut pas être utilisé comme framebuffer dans la swap chain. Nous
83- allons donc devoir changer notre rendu. Nous n'aurons besoin que d'une cible de rendu, car seule une opération de rendu
84- ne peut intervenir à un instant donné. Créez les membres données suivants :
82+ elle doit supporter plus d'un échatillon par pixel. Il ne peut pas être utilisé comme framebuffer dans la swap chain.
83+ Nous allons donc devoir changer notre rendu. Nous n'aurons besoin que d'une cible de rendu, car seule une opération
84+ de rendu n'est autorisée à s'exécuter à un instant donné. Créez les membres données suivants :
8585
8686``` c++
8787...
@@ -124,7 +124,7 @@ void createColorResources() {
124124}
125125```
126126
127- Pour être cohérent appelez cette fonction juste avant ` createDepthResource ` .
127+ Pour une question de cohérence mettons cette fonction juste avant ` createDepthResource ` .
128128
129129``` c++
130130void initVulkan () {
@@ -148,7 +148,7 @@ void transitionImageLayout(VkImage image, VkFormat format, VkImageLayout oldLayo
148148 destinationStage = VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT;
149149 }
150150 else {
151- throw std::invalid_argument("transitiond 'organisation non supportee !");
151+ throw std::invalid_argument("transition d 'organisation non supportée !");
152152 }
153153 ...
154154}
@@ -294,23 +294,23 @@ La différence est encore plus visible en zoomant sur un bord :
294294
295295Notre implémentation du MSAA est limitée, et ces limitations impactent la qualité. Il existe un autre problème
296296d'aliasing dû aux shaders qui n'est pas résolu par le MSAA. En effet cette technique ne permet que de lisser les bords
297- de la géométrie, mais pas les bords contenus dans les textures. Ces bords internes sont particulièrement visibles dans
297+ de la géométrie, mais pas les lignes contenus dans les textures. Ces bords internes sont particulièrement visibles dans
298298le cas de couleurs qui contrastent beaucoup. Pour résoudre ce problème nous pouvons activer le
299299[ sample shading] ( https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#primsrast-sampleshading ) , qui
300- améliore encore la qualité de l'image au prix de performances encore résuites .
300+ améliore encore la qualité de l'image au prix de performances encore réduites .
301301
302302``` c++
303303
304304void createLogicalDevice () {
305305 ...
306- deviceFeatures.sampleRateShading = VK_TRUE; // activation du sample shading pour le device
306+ deviceFeatures.sampleRateShading = VK_TRUE; // Activation du sample shading pour le device
307307 ...
308308}
309309
310310void createGraphicsPipeline () {
311311 ...
312- multisampling.sampleShadingEnable = VK_TRUE; // activation du sample shading dans la pipeline
313- multisampling.minSampleShading = .2f; // fraction minimale pour le sample shading; plus proche de 1 lisse d'autant plus
312+ multisampling.sampleShadingEnable = VK_TRUE; // Activation du sample shading dans la pipeline
313+ multisampling.minSampleShading = .2f; // Fraction minimale pour le sample shading; plus proche de 1 lisse d'autant plus
314314 ...
315315}
316316```
@@ -322,16 +322,16 @@ amélioration de la qualité du rendu :
322322
323323## Conclusion
324324
325- Il nous a fallu beaucoup de travail pour en arriver là, mais vous avez maintenant une bonne base sur Vulkan. Vos
326- connaissances sont maintenant suffisantes pour explorer d'autres fonctionnalités, dont :
325+ Il nous a fallu beaucoup de travail pour en arriver là, mais vous avez maintenant une bonne connaissances des bases de
326+ Vulkan. Ces connaissances vous permettent maintenant d' explorer d'autres fonctionnalités, comme :
327327
328328* Push constants
329- * Rendu instancié
329+ * Instanced rendering
330330* Uniforms dynamiques
331331* Descripteurs d'images et de samplers séparés
332- * Pipeline cache
332+ * Pipeline caching
333333* Génération des command buffers depuis plusieurs threads
334- * Multiple subpasses
334+ * Multiples subpasses
335335* Compute shaders
336336
337337Le programme actuel peut être grandement étendu, par exemple en ajoutant l'éclairage Blinn-Phong, des effets en
0 commit comments