11## Introduction
22
3- Nous avons déjà évoqué les descripteurs dans la partie sur les buffers uniforms . Dans ce chapitre nous en verrons un
4- nouveau type : les * samplers d'image combinés* . Ceux-ci permettent aux shaders d'accéder au contenu d'images, à travers
5- un sampler.
3+ Nous avons déjà évoqué les descripteurs dans la partie sur les buffers d'uniformes . Dans ce chapitre nous en verrons un
4+ nouveau type : les * samplers d'image combinés* ( * combined image sampler * ) . Ceux-ci permettent aux shaders d'accéder au
5+ contenu d'images, à travers un sampler.
66
7- Nous allons d'abord modifier l'organisation des descripteurs, la pool de descripteurs et le set de descripteur pour
8- qu'ils incluent le sampler d'image combinés . Ensuite nous ajouterons des coordonnées de texture à la structure
7+ Nous allons d'abord modifier l'organisation des descripteurs, la pool de descripteurs et le set de descripteurs pour
8+ qu'ils incluent le sampler d'image combiné . Ensuite nous ajouterons des coordonnées de texture à la structure
99` Vertex ` et modifierons le vertex shader et le fragment shader pour qu'il utilisent les couleurs de la texture.
1010
1111## Modifier les descripteurs
1212
1313Trouvez la fonction ` createDescriptorSetLayout ` et créez une instance de ` VkDescriptorSetLayoutBinding ` . Cette
14- structure correspond aux descripteurs d'image combinés. Nous n'y mettons quasiment que l'indice du binding :
14+ structure correspond aux descripteurs d'image combinés. Nous n'avons quasiment que l'indice du binding à y mettre :
1515
1616``` c++
1717VkDescriptorSetLayoutBinding samplerLayoutBinding = {};
@@ -29,12 +29,12 @@ layoutInfo.pBindings = bindings.data();
2929```
3030
3131Assurez-vous également de bien indiquer le fragment shader dans le champ `stageFlags`. Ce sera à cette étape que la
32- couleur sera déterminée . Il est également possible d'utiliser le sampler pour échantilloner une texture dans le vertex
33- shader. Cela permet par exemple de déformer dynamiquement une grille de vertices pour réaliser une
34- [heightmap](https://en.wikipedia.org/wiki/Heightmap).
32+ couleur sera extraite de la texture . Il est également possible d'utiliser le sampler pour échantilloner une texture dans
33+ le vertex shader. Cela permet par exemple de déformer dynamiquement une grille de vertices pour réaliser une
34+ [heightmap](https://en.wikipedia.org/wiki/Heightmap) à partir d'une texture de vecteurs .
3535
3636Si vous lancez l'application, vous verrez que la pool de descripteurs ne peut pas allouer de set avec l'organisation que
37- nous avons préparée, car elle ne comprend aucun descripteur de sampler d'image combinés . Il nous faut donc modifier la
37+ nous avons préparée, car elle ne comprend aucun descripteur de sampler d'image combiné . Il nous faut donc modifier la
3838fonction `createDescriptorPool` pour qu'elle inclue une structure `VkDesciptorPoolSize` qui corresponde à ce type de
3939descripteur :
4040
@@ -71,7 +71,7 @@ for (size_t i = 0; i < swapChainImages.size(); i++) {
7171}
7272```
7373
74- Les ressources nécessaires à la structure paramétrant un descripteur d'image combinés doivent être fournies dans
74+ Les ressources nécessaires à la structure paramétrant un descripteur d'image combiné doivent être fournies dans
7575une structure de type ` VkDescriptorImageInfo ` . Cela est similaire à la création d'un descripteur pour buffer. Les objets
7676que nous avons créés dans les chapitres précédents s'assemblent enfin!
7777
@@ -98,12 +98,12 @@ vkUpdateDescriptorSets(device, static_cast<uint32_t>(descriptorWrites.size()), d
9898```
9999
100100Les descripteurs doivent être mis à jour avec des informations sur l'image, comme pour les buffers. Cette fois nous
101- allons utiliser le tableau `pImageInfo` plutôt que `pBufferInfo`. Les descripteurs sont maintenant prêts à l'emploi!
101+ allons utiliser le tableau `pImageInfo` plutôt que `pBufferInfo`. Les descripteurs sont maintenant prêts à l'emploi.
102102
103103## Coordonnées de texture
104104
105- Il manque encore un élément au mapping de textures. Ce sont les coordonnées spécifiques aux vertices . Ce sont elles qui
106- déterminent les pixels liés à la géométrie.
105+ Il manque encore un élément au mapping de textures. Ce sont les coordonnées spécifiques aux sommets . Ce sont elles qui
106+ déterminent les coordonées de la texture à lier à la géométrie.
107107
108108```c++
109109struct Vertex {
@@ -159,7 +159,8 @@ const std::vector<Vertex> vertices = {
159159
160160Dans ce tutoriel nous nous contenterons de mettre une texture sur le carré en utilisant des coordonnées normalisées.
161161Nous mettrons le ` 0, 0 ` en haut à gauche et le ` 1, 1 ` en bas à droite. Essayez de mettre des valeurs sous ` 0 ` ou au-delà
162- de ` 1 ` pour voir l'addressing mode en action!
162+ de ` 1 ` pour voir l'addressing mode en action. Vous pourrez également changer le mode dans la création du sampler pour
163+ voir comment ils se comportent.
163164
164165## Shaders
165166
@@ -182,7 +183,7 @@ void main() {
182183```
183184
184185Comme pour les couleurs spécifiques aux vertices, les valeurs ` fragTexCoord ` seront interpolées dans le carré par
185- le rasterizer pour créer un gradient lisse. Le résultat de l'interpolation peut être visualisée en utilisant les
186+ le rasterizer pour créer un gradient lisse. Le résultat de l'interpolation peut être visualisé en utilisant les
186187coordonnées comme couleurs :
187188
188189``` glsl
@@ -204,11 +205,11 @@ Vous devriez avoir un résultat similaire à l'image suivante. N'oubliez pas de
204205![ ] ( /images/texcoord_visualization.png )
205206
206207Le vert représente l'horizontale et le rouge la verticale. Les coins noirs et jaunes confirment la normalisation des
207- valeurs de ` 0, 0 ` à ` 1, 1 ` . Utiliser les couleurs pour visualiser les valeurs et débugger est similaire à utiliser
208- ` printf ` . C'est peu pratique mais il n'y a pas vraiment d'autre option!
208+ valeurs de ` 0, 0 ` à ` 1, 1 ` . Utiliser les couleurs pour visualiser les valeurs et déboguer est similaire à utiliser
209+ ` printf ` . C'est peu pratique mais il n'y a pas vraiment d'autre option.
209210
210- Un descripteur de sampler d'image combinés est représenté dans les shaders par un objet de type ` sampler ` transmis en
211- uniform . Créez donc une variable ` texSampler ` :
211+ Un descripteur de sampler d'image combiné est représenté dans les shaders par un objet de type ` sampler ` placé dans
212+ une variable uniforme . Créez donc une variable ` texSampler ` :
212213
213214``` glsl
214215layout(binding = 1) uniform sampler2D texSampler;
@@ -252,7 +253,7 @@ J'ai séparé l'alpha du reste pour ne pas altérer la transparence.
252253![ ] ( /images/texture_on_square_colorized.png )
253254
254255Nous pouvons désormais utiliser des textures dans notre programme! Cette technique est extrèmement puissante et permet
255- beaucoup plus que juste afficher des couleurs. Vous pouvez même utiliser les images de la swap chain comme texture et y
256+ beaucoup plus que juste afficher des couleurs. Vous pouvez même utiliser les images de la swap chain comme textures et y
256257appliquer des effets post-processing.
257258
258259[ Code C++] ( /code/25_texture_mapping.cpp ) /
0 commit comments