Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 6ea49c9

Browse files
Fix merge conflict
1 parent 091314e commit 6ea49c9

2 files changed

Lines changed: 19 additions & 19 deletions

File tree

fr/03_Dessiner_un_triangle/02_Pipeline_graphique_basique/03_Render_pass.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,14 @@
22

33
Avant de finaliser la création de la pipeline nous devons informer Vulkan des attachements des framebuffers utilisés
44
lors du rendu. Nous devons indiquer combien chaque framebuffer aura de buffers de couleur et de profondeur, combien de
5-
samples il faudra utiliser avec chaque framebuffer et comment les utiliser tout au long des opérations de rendu. Toutes
6-
ces informations sont contenues dans un objet appelé *render pass*. Pour le configurer, créons la fonction
5+
samples il faudra utiliser avec chaque frambuffer et comment les utiliser tout au long des opérations de rendu. Toutes
6+
ces informations sont contenues dans un objet appelé *render pass*. Pour le configurer, créons la fonction
77
`createRenderPass`. Appelez cette fonction depuis `initVulkan` après `createGraphicsPipeline`.
88

99
```c++
1010
void initVulkan() {
1111
createInstance();
12-
setupDebugMessenger();
12+
setupDebugCallback();
1313
createSurface();
1414
pickPhysicalDevice();
1515
createLogicalDevice();
@@ -32,7 +32,7 @@ Dans notre cas nous aurons un seul attachement de couleur, et c'est une image de
3232

3333
```c++
3434
void createRenderPass() {
35-
VkAttachmentDescription colorAttachment{};
35+
VkAttachmentDescription colorAttachment = {};
3636
colorAttachment.format = swapChainImageFormat;
3737
colorAttachment.samples = VK_SAMPLE_COUNT_1_BIT;
3838
}

fr/09_Générer_des_mipmaps.md

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -72,21 +72,21 @@ Il nous faut aussi mettre à jour les appels.
7272
```c++
7373
createImage(swapChainExtent.width, swapChainExtent.height, 1, depthFormat, VK_IMAGE_TILING_OPTIMAL, VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT, VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT, depthImage, depthImageMemory);
7474
...
75-
createImage(texWidth, texHeight, mipLevels, VK_FORMAT_R8G8B8A8_SRGB, VK_IMAGE_TILING_OPTIMAL, VK_IMAGE_USAGE_TRANSFER_DST_BIT | VK_IMAGE_USAGE_SAMPLED_BIT, VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT, textureImage, textureImageMemory);
75+
createImage(texWidth, texHeight, mipLevels, VK_FORMAT_R8G8B8A8_UNORM, VK_IMAGE_TILING_OPTIMAL, VK_IMAGE_USAGE_TRANSFER_DST_BIT | VK_IMAGE_USAGE_SAMPLED_BIT, VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT, textureImage, textureImageMemory);
7676
```
7777

7878
```c++
7979
swapChainImageViews[i] = createImageView(swapChainImages[i], swapChainImageFormat, VK_IMAGE_ASPECT_COLOR_BIT, 1);
8080
...
8181
depthImageView = createImageView(depthImage, depthFormat, VK_IMAGE_ASPECT_DEPTH_BIT, 1);
8282
...
83-
textureImageView = createImageView(textureImage, VK_FORMAT_R8G8B8A8_SRGB, VK_IMAGE_ASPECT_COLOR_BIT, mipLevels);
83+
textureImageView = createImageView(textureImage, VK_FORMAT_R8G8B8A8_UNORM, VK_IMAGE_ASPECT_COLOR_BIT, mipLevels);
8484
```
8585

8686
```c++
8787
transitionImageLayout(depthImage, depthFormat, VK_IMAGE_LAYOUT_UNDEFINED, VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL, 1);
8888
...
89-
transitionImageLayout(textureImage, VK_FORMAT_R8G8B8A8_SRGB, VK_IMAGE_LAYOUT_UNDEFINED, VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, mipLevels);
89+
transitionImageLayout(textureImage, VK_FORMAT_R8G8B8A8_UNORM, VK_IMAGE_LAYOUT_UNDEFINED, VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, mipLevels);
9090
```
9191
9292
## Génération des mipmaps
@@ -102,12 +102,12 @@ création de l'image.
102102
103103
```c++
104104
...
105-
createImage(texWidth, texHeight, mipLevels, VK_FORMAT_R8G8B8A8_SRGB, VK_IMAGE_TILING_OPTIMAL, VK_IMAGE_USAGE_TRANSFER_SRC_BIT | VK_IMAGE_USAGE_TRANSFER_DST_BIT | VK_IMAGE_USAGE_SAMPLED_BIT, VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT, textureImage, textureImageMemory);
105+
createImage(texWidth, texHeight, mipLevels, VK_FORMAT_R8G8B8A8_UNORM, VK_IMAGE_TILING_OPTIMAL, VK_IMAGE_USAGE_TRANSFER_SRC_BIT | VK_IMAGE_USAGE_TRANSFER_DST_BIT | VK_IMAGE_USAGE_SAMPLED_BIT, VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT, textureImage, textureImageMemory);
106106
...
107107
```
108108

109109
Comme pour les autres opérations sur les images, la commande `vkCmdBlitImage` dépend de l'organisation de l'image sur
110-
laquelle elle opère. Nous pourrions transitionner l'image vers `VK_IMAGE_LAYOUT_GENERAL`, mais les opérations
110+
laquelle elle opère. Nous pourrions transitionner l'image vers `VK_IMAGE_LAYOUT_GENERAL`, mais les opérations
111111
prendraient beaucoup de temps. En fait il est possible de transitionner les niveaux de mipmaps indépendemment les uns
112112
des autres. Nous pouvons donc mettre l'image initiale à `VK_IMAGE_LAYOUT_TRANSFER_SCR_OPTIMAL` et la chaîne de mipmaps
113113
à `VK_IMAGE_LAYOUT_DST_OPTIMAL`. Nous pourrons réaliser les transitions à la fin de chaque opération.
@@ -118,7 +118,7 @@ donc devoir écrire quelque commandes liées aux barrières de pipeline. Supprim
118118

119119
```c++
120120
...
121-
transitionImageLayout(textureImage, VK_FORMAT_R8G8B8A8_SRGB, VK_IMAGE_LAYOUT_UNDEFINED, VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, mipLevels);
121+
transitionImageLayout(textureImage, VK_FORMAT_R8G8B8A8_UNORM, VK_IMAGE_LAYOUT_UNDEFINED, VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, mipLevels);
122122
copyBufferToImage(stagingBuffer, textureImage, static_cast<uint32_t>(texWidth), static_cast<uint32_t>(texHeight));
123123
//transitionné vers VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL lors de la generation des mipmaps
124124
...
@@ -266,7 +266,7 @@ n'a jamais servie de source à une copie.
266266
Appelez finalement cette fonction depuis `createTextureImage` :
267267
268268
```c++
269-
transitionImageLayout(textureImage, VK_FORMAT_R8G8B8A8_SRGB, VK_IMAGE_LAYOUT_UNDEFINED, VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, mipLevels);
269+
transitionImageLayout(textureImage, VK_FORMAT_R8G8B8A8_UNORM, VK_IMAGE_LAYOUT_UNDEFINED, VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, mipLevels);
270270
copyBufferToImage(stagingBuffer, textureImage, static_cast<uint32_t>(texWidth), static_cast<uint32_t>(texHeight));
271271
//transions vers VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL pendant la génération des mipmaps
272272
...
@@ -287,7 +287,7 @@ Ajoutez d'abord un paramètre qui indique le format de l'image :
287287
void createTextureImage() {
288288
...
289289

290-
generateMipmaps(textureImage, VK_FORMAT_R8G8B8A8_SRGB, texWidth, texHeight, mipLevels);
290+
generateMipmaps(textureImage, VK_FORMAT_R8G8B8A8_UNORM, texWidth, texHeight, mipLevels);
291291
}
292292

293293
void generateMipmaps(VkImage image, VkFormat imageFormat, int32_t texWidth, int32_t texHeight, uint32_t mipLevels) {
@@ -331,7 +331,7 @@ dans le fichier avec l'image de base. Le chargement de mipmaps prégénérées e
331331

332332
Un objet `VkImage` contient les données de l'image et un objet `VkSampler` contrôle la lecture des données pendant le
333333
rendu. Vulkan nous permet de spécifier les valeurs `minLod`, `maxLod`, `mipLodBias` et `mipmapMode`, où "Lod" signifie
334-
*level of detail* (*niveau de détail*). Pendant léchantillonnage d'une texture, le sampler sélectionne le niveau de
334+
*level of detail* (*niveau de détail*). Pendant l'échantillonnage d'une texture, le sampler sélectionne le niveau de
335335
mipmap à utiliser suivant ce pseudo-code :
336336

337337
```c++
@@ -372,15 +372,15 @@ Pour voir les résultats de ce chapitre, nous devons choisir les valeurs pour `t
372372
void createTextureSampler() {
373373
...
374374
samplerInfo.mipmapMode = VK_SAMPLER_MIPMAP_MODE_LINEAR;
375-
samplerInfo.minLod = 0;
375+
samplerInfo.minLod = 0.0f;
376376
samplerInfo.maxLod = static_cast<float>(mipLevels);
377-
samplerInfo.mipLodBias = 0; // Optionnel
377+
samplerInfo.mipLodBias = 0.0f; // Optionnel
378378
...
379379
}
380380
```
381381

382-
Pour utiliser la totalité des niveaux de mipmaps, nous mettons `minLod` à `0` et `maxLod` au nombre de niveaux de
383-
mipmaps. Nous n'avons aucune raison d'altérer `lod` avec `mipLodBias`, alors nous pouvons le mettre à `0`.
382+
Pour utiliser la totalité des niveaux de mipmaps, nous mettons `minLod` à `0.0f` et `maxLod` au nombre de niveaux de
383+
mipmaps. Nous n'avons aucune raison d'altérer `lod` avec `mipLodBias`, alors nous pouvons le mettre à `0.0f`.
384384

385385
Lancez votre programme et vous devriez voir ceci :
386386

@@ -391,7 +391,7 @@ différences.
391391

392392
![](/images/mipmaps_comparison.png)
393393

394-
La différence la plus évidente est le texte sur le paneau, plus lisse avec les mipmaps.
394+
La différence la plus évidente est l'écriture sur le paneau, plus lisse avec les mipmaps.
395395

396396
Vous pouvez modifier les paramètres du sampler pour voir l'impact sur le rendu. Par exemple vous pouvez empêcher le
397397
sampler d'utiliser le plus haut nivau de mipmap en ne lui indiquant pas le niveau le plus bas :
@@ -406,4 +406,4 @@ Ce paramètre produira ce rendu :
406406

407407
[Code C++](/code/28_mipmapping.cpp) /
408408
[Vertex shader](/code/26_shader_depth.vert) /
409-
[Fragment shader](/code/26_shader_depth.frag)
409+
[Fragment shader](/code/26_shader_depth.frag)

0 commit comments

Comments
 (0)