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

Skip to content

Commit 96ff6c5

Browse files
author
Alexis Ronez
committed
Rephrased and renamed Texture mapping -> Combined image sampler
1 parent 45ad58b commit 96ff6c5

1 file changed

Lines changed: 22 additions & 21 deletions

File tree

fr/06_Texture_mapping/02_samplers_d'image_combinés.md renamed to fr/06_Texture_mapping/02_Sampler_d'image_combiné.md

Lines changed: 22 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,17 @@
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

1313
Trouvez 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++
1717
VkDescriptorSetLayoutBinding samplerLayoutBinding = {};
@@ -29,12 +29,12 @@ layoutInfo.pBindings = bindings.data();
2929
```
3030
3131
Assurez-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
3636
Si 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
3838
fonction `createDescriptorPool` pour qu'elle inclue une structure `VkDesciptorPoolSize` qui corresponde à ce type de
3939
descripteur :
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
7575
une structure de type `VkDescriptorImageInfo`. Cela est similaire à la création d'un descripteur pour buffer. Les objets
7676
que 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
100100
Les 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++
109109
struct Vertex {
@@ -159,7 +159,8 @@ const std::vector<Vertex> vertices = {
159159

160160
Dans ce tutoriel nous nous contenterons de mettre une texture sur le carré en utilisant des coordonnées normalisées.
161161
Nous 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

184185
Comme 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
186187
coordonné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

206207
Le 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
214215
layout(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

254255
Nous 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
256257
appliquer des effets post-processing.
257258

258259
[Code C++](/code/25_texture_mapping.cpp) /

0 commit comments

Comments
 (0)