Skip to content

Commit f48c22f

Browse files
francoisRoyengreggman
authored andcommitted
fix typos in 'Shaders and GLSL' french translation
1 parent f1fa034 commit f48c22f

File tree

1 file changed

+45
-47
lines changed

1 file changed

+45
-47
lines changed

webgl/lessons/fr/webgl-shaders-and-glsl.md

Lines changed: 45 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -2,41 +2,39 @@ Title: Shaders et GLSL
22
Description: Présentation des shaders et de GLSL
33
TOC: WebGL - Shaders et GLSL
44

5-
65
Cet article est la suite de [WebGL Les bases](webgl-fundamentals.html).
76
Si vous ne connaissez pas le fonctionnement de WebGL vous voulez peut-être [lire ça d'abord](webgl-how-it-works.html).
87

98
On a parlé des shaders et de GLSL mais sans vraiment donner de détails précis.
109
Je pense que les exemples parlent d'eux-mêmes, mais essayons de clarifier un peu plus.
1110

12-
Comme mentionné dans [Comment ça marche](webgl-how-it-works.html) WebGL exige 2 shaders pour chaque rendu.
13-
Un *shader de vertex* et un *shader de fragment*. Chaque shader est une *fonction*.
14-
Shader de vertex et shader de fragment sont liés ensemble par un programme de shader (ou juste programme).
11+
Comme mentionné dans [Comment ça marche](webgl-how-it-works.html) WebGL exige 2 shaders pour chaque rendu.
12+
Un _shader de vertex_ et un _shader de fragment_. Chaque shader est une _fonction_.
13+
Shader de vertex et shader de fragment sont liés ensemble par un programme de shader (ou juste programme).
1514
Une application WebGL classique a plusieurs programmes de shader.
1615

17-
##Le shader de vertex
16+
## Le shader de vertex
1817

19-
Le rôle d'un shader de vertex est de générer des coordonnées dans l'espace de projection (clipspace).
18+
Le rôle d'un shader de vertex est de générer des coordonnées dans l'espace de projection (clipspace).
2019
Il prend toujours la forme
2120

2221
void main() {
2322
gl_Position = quelquesOperationsPourTransformerLesCoordonnées
2423
}
2524

26-
Ce shader est appelé une fois par vertex. Chaque fois qu'il est exécuté la variable globale `gl_Position`
25+
Ce shader est appelé une fois par vertex. Chaque fois qu'il est exécuté la variable globale `gl_Position`
2726
doit être renseignée avec des coordonnées.
2827

29-
Les shaders de vertex ont besoin de données. Ils peuvent la recevoir à partir de trois espèces d'entrées :
30-
28+
Les shaders de vertex ont besoin de données. Ils peuvent la recevoir à partir de trois espèces d'entrées :
3129

3230
1. Les [attributs](#les-attributs) (données fournies par les tampons)
3331
2. Les [uniforms](#les-uniforms-dans-les-shaders-de-vertex) (valeurs qui restent identiques pour tous les vertices d'un appel de rendu)
3432
3. Les [textures](#les-textures-dans-les-shaders-de-vertex) (données de pixels/texels)
3533

3634
### Les attributs
3735

38-
La principale façon est celle des *attributs* associés aux tampons. Les tampons et attributs ont été évoqués dans
39-
[WebGL - Comment ça marche](webgl-how-it-works.html). On créé les tampons,
36+
La principale façon est celle des _attributs_ associés aux tampons. Les tampons et attributs ont été évoqués dans
37+
[WebGL - Comment ça marche](webgl-how-it-works.html). On crée les tampons,
4038

4139
var tampon = gl.createBuffer();
4240

@@ -45,13 +43,13 @@ on y met des données
4543
gl.bindBuffer(gl.ARRAY_BUFFER, tampon);
4644
gl.bufferData(gl.ARRAY_BUFFER, mesDonnees, gl.STATIC_DRAW);
4745

48-
Ensuite, étant donné un programme de shader créé plus tôt, on créé l'emplacement de ces attributs
46+
Ensuite, étant donné un programme de shader créé plus tôt, on crée l'emplacement de ces attributs
4947

5048
var emplacementPosition = gl.getAttribLocation(programme, "a_position");
5149

52-
et on dit à WebGL comment envoyer ces données des tampons vers ces attributs
50+
et on dit à WebGL comment envoyer ses données des tampons vers ses attributs
5351

54-
// activer l'extraction de données depuis un tampon pour cet attribut
52+
// activer l'extraction de données depuis un tampon pour cet attribut
5553
gl.enableVertexAttribArray(emplacementPosition);
5654

5755
var composantes = 3; // (x, y, z)
@@ -63,7 +61,7 @@ et on dit à WebGL comment envoyer ces données des tampons vers ces attributs
6361

6462
gl.vertexAttribPointer(emplacementPosition, composantes, type, normalisation, tailleDeLaFenetre, decalage);
6563

66-
Dans [WebGL -Les Bases](webgl-fundamentals.html) on a vu qu'on pouvait se passer d'opération dans
64+
Dans [WebGL -Les Bases](webgl-fundamentals.html) on a vu qu'on pouvait se passer d'opération dans
6765
le shader de vertex et juste lui envoyer des données.
6866

6967
attribute vec4 a_position;
@@ -78,7 +76,7 @@ Les attributs peuvent être de type `float`, `vec2`, `vec3`, `vec4`, `mat2`, `ma
7876

7977
### Les uniforms dans les shaders de vertex
8078

81-
Pour un vertex shader les uniforms sont des valeurs qui restent identiques pour tous les vertices d'un appel de rendu.
79+
Pour un vertex shader les uniforms sont des valeurs qui restent identiques pour tous les vertices d'un appel de rendu.
8280
Un exemple très simple est d'ajouter un décalage dans le shader de vertex précédent :
8381

8482
attribute vec4 a_position;
@@ -88,7 +86,7 @@ Un exemple très simple est d'ajouter un décalage dans le shader de vertex pré
8886
gl_Position = a_position + u_decalage;
8987
}
9088

91-
Et maintenant on pourrait décaler chaque vertex d'une certaine distance. D'abord
89+
Et maintenant on pourrait décaler chaque vertex d'une certaine distance. D'abord
9290
on définit un emplacement pour la uniform :
9391

9492
var emplacementDecalage = gl.getUniformLocation(programme, "u_decalage");
@@ -97,7 +95,7 @@ Ensuite, on renseigne la valeur avant l'appel de rendu.
9795

9896
gl.uniform4fv(emplacementDecalage, [1, 0, 0, 0]); // décale vers la droite de la moitié de l'écran
9997

100-
Les uniforms peuvent avoir de nombreux types. Pour chaque type il faut appeler une fonction spéciale pour la renseigner.
98+
Les uniforms peuvent avoir de nombreux types. Pour chaque type il faut appeler une fonction spéciale pour la renseigner.
10199

102100
gl.uniform1f (emplacementFloat, v); // pour les float
103101
gl.uniform1fv(emplacementFloat, [v]); // pour les float ou tableaux de float
@@ -129,7 +127,7 @@ Les uniforms peuvent avoir de nombreux types. Pour chaque type il faut appeler u
129127

130128
Il y a aussi les types `bool`, `bvec2`, `bvec3` et `bvec4`. Ils utilisent les fonctions `gl.uniform?f?` ou `gl.uniform?i?`.
131129

132-
Notons que pour un tableau vous pouvez indiquez toutes les uniforms d'un coup. Par exemple :
130+
Notons que pour un tableau vous pouvez indiquer toutes les uniforms d'un coup. Par exemple :
133131

134132
// dans le shader
135133
uniform vec2 u_monVec2[3];
@@ -171,7 +169,7 @@ Voire [Les textures dans les shaders de fragment](#les-textures-dans-les-shaders
171169

172170
## Les shaders de fragment
173171

174-
Le rôle d'un shader de fragment est de colorier le pixel en cours.
172+
Le rôle d'un shader de fragment est de colorier le pixel en cours.
175173
Il prend toujours la forme
176174

177175
precision mediump float;
@@ -194,7 +192,7 @@ Voire [Les uniforms dans les shaders de vertex](#les-uniforms-dans-les-shaders-d
194192

195193
### Les textures dans les shaders de fragment
196194

197-
Pour obtenir une valeur depuis une texture dans un shader, on créé une uniform de type `sampler2D`et
195+
Pour obtenir une valeur depuis une texture dans un shader, on créé une uniform de type `sampler2D`et
198196
on utilise la fonction `texture2D`.
199197

200198
precision mediump float;
@@ -234,11 +232,11 @@ Et de dire au shader à quelle unité on a lié notre texture
234232

235233
### Les varyings
236234

237-
Une varying est un moyen de passer une valeur d'un shader de vertex à un shader de fragment
235+
Une varying est un moyen de passer une valeur d'un shader de vertex à un shader de fragment
238236
comment nous l'avons vu [WebGL - Comment ça marche](webgl-how-it-works.html).
239237

240-
Pour utiliser une varying on doit effectuer la même déclaration dans les deux shaders.
241-
On la renseigne dans le shader de vertex. Quand WebGL colore les pixels les valeurs interpolées
238+
Pour utiliser une varying on doit effectuer la même déclaration dans les deux shaders.
239+
On la renseigne dans le shader de vertex. Quand WebGL colore les pixels les valeurs interpolées
242240
sont envoyées au shader de fragment.
243241

244242
Shader de vertex
@@ -266,16 +264,16 @@ Shader de fragment
266264
+ gl_FragColor = color;
267265
}
268266

269-
L'exemple ci-dessus n'a pas vraiment d'intérêt. Copier les valeurs en espace de projection d'un shader à l'autre
267+
L'exemple ci-dessus n'a pas vraiment d'intérêt. Copier les valeurs en espace de projection d'un shader à l'autre
270268
pour les utiliser comme couleurs n'a pas de sens. Mais ça fonctionne et les couleurs sont renseignées.
271269

272270
## GLSL
273271

274-
GLSL signifie Graphics Library Shader Language. C'est le langage dans lequel les shaders
275-
sont écrits. Il a des façons de faire qui n'ont rien à voir avec le javascript. Il est
276-
conçu pour les opérations propres aux calculs graphiques. Par exemple il a des types
277-
natifs comme `vec2`, `vec3`, et `vec4` qui représentent respectivement 2 valeurs, 3 valeurs et 4 valeurs.
278-
De même il a `mat2`, `mat3` et `mat4` qui représentent des matrices carrées 2x2, 3x3, et 4x4.
272+
GLSL signifie Graphics Library Shader Language. C'est le langage dans lequel les shaders
273+
sont écrits. Il a des façons de faire qui n'ont rien à voir avec le javascript. Il est
274+
conçu pour les opérations propres aux calculs graphiques. Par exemple il a des types
275+
natifs comme `vec2`, `vec3`, et `vec4` qui représentent respectivement 2 valeurs, 3 valeurs et 4 valeurs.
276+
De même il a `mat2`, `mat3` et `mat4` qui représentent des matrices carrées 2x2, 3x3, et 4x4.
279277
On peut faire nativement des opérations comme multiplier un `vec` par un scalaire.
280278

281279
vec4 a = vec4(1, 2, 3, 4);
@@ -295,12 +293,12 @@ Il a aussi plusieurs sélecteurs pour choisir facilement les valeurs d'un vec. P
295293

296294
vec4 v;
297295

298-
* `v.x` est identique à `v.s`, à `v.r` et à `v[0]`.
299-
* `v.y` est identique à `v.t`, à `v.g` et à `v[1]`.
300-
* `v.z` est identique à `v.p`, à `v.b` et à `v[2]`.
301-
* `v.w` est identique à `v.q`, à `v.a` et à `v[3]`.
296+
- `v.x` est identique à `v.s`, à `v.r` et à `v[0]`.
297+
- `v.y` est identique à `v.t`, à `v.g` et à `v[1]`.
298+
- `v.z` est identique à `v.p`, à `v.b` et à `v[2]`.
299+
- `v.w` est identique à `v.q`, à `v.a` et à `v[3]`.
302300

303-
Ce qui permet de *mixer* les composantes d'un vec, donc de les exclure ou de les répéter
301+
Ce qui permet de _mixer_ les composantes d'un vec, donc de les exclure ou de les répéter
304302

305303
v.yyyy
306304

@@ -333,15 +331,15 @@ La bonne façon de faire pour ça :
333331
float f = 1.0; // indiquer une décimale bien sûr
334332
float f = float(1) // ou transformer l'entier en décimale
335333

336-
L'exemple précédent de `vec4(v.rgb, 1)` reste valide car `vec4` convertit naturellement ses composantes en décimales,
334+
L'exemple précédent de `vec4(v.rgb, 1)` reste valide car `vec4` convertit naturellement ses composantes en décimales,
337335
comme `float(1)`.
338336

339-
GLSL a aussi un tas de fonctions natives. Nombre d'entre elles agissent sur plusieurs composantes
337+
GLSL a aussi un tas de fonctions natives. Nombre d'entre elles agissent sur plusieurs composantes
340338
d'un coup. Par exemple :
341339

342340
T sin(T angle)
343341

344-
T signifie que la valeur peut être un `float`, un `vec2`, un `vec3` ou un `vec4`. Si on lui donne un `vec4` on reçoit un `vec4` en retour,
342+
T signifie que la valeur peut être un `float`, un `vec2`, un `vec3` ou un `vec4`. Si on lui donne un `vec4` on reçoit un `vec4` en retour,
345343
avec le sinus de chacun de ses composants. En d'autres termes si `v` est un `vec4` alors
346344

347345
vec4 s = sin(v);
@@ -350,7 +348,7 @@ est identique à
350348

351349
vec4 s = vec4(sin(v.x), sin(v.y), sin(v.z), sin(v.w));
352350

353-
Parfois un argument est un float est le reste `T`. Ca signifie que le float sera appliqué à tous les composants.
351+
Parfois un argument est un float est le reste `T`. Ca signifie que le float sera appliqué à tous les composants.
354352
Par exemple si `v1` et `v2` sont des `vec4` et `f` est un float
355353

356354
vec4 m = mix(v1, v2, f);
@@ -363,19 +361,19 @@ est identique à
363361
mix(v1.z, v2.z, f),
364362
mix(v1.w, v2.w, f));
365363

366-
Il y a une liste de toutes les fonctions GLSL sur la dernière page de [la référence WebGL](https://www.khronos.org/files/webgl/webgl-reference-card-1_0.pdf). Si vous aimez les bon gros contenus bruts vous pouvez tenter [la spéc GLSL](https://www.khronos.org/files/opengles_shading_language.pdf).
364+
Il y a une liste de toutes les fonctions GLSL sur la dernière page de [la référence WebGL](https://www.khronos.org/files/webgl/webgl-reference-card-1_0.pdf). Si vous aimez les bon gros contenus bruts vous pouvez tenter [la spéc GLSL](https://www.khronos.org/files/opengles_shading_language.pdf).
367365

368366
## Conclusion
369367

370-
C'est le bout de cette série d'articles. WebGL c'est surtout écrire des shaders,
371-
fournir les données à ces shaders et enfin exécuter `gl.drawArrays` ou `gl.drawElements`
372-
pour que WebGL en déduise les vertices en appelant le shader de vertex pour chacun d'entre eux, et
368+
C'est le bout de cette série d'articles. WebGL c'est surtout écrire des shaders,
369+
fournir les données à ces shaders et enfin exécuter `gl.drawArrays` ou `gl.drawElements`
370+
pour que WebGL en déduise les vertices en appelant le shader de vertex pour chacun d'entre eux, et
373371
colorie les pixels avec le fragment shader.
374372

375-
En fait les shaders demandent plusieurs lignes de code. Ces lignes sont les mêmes dans la plupart des programmes
373+
En fait les shaders demandent plusieurs lignes de code. Ces lignes sont les mêmes dans la plupart des programmes
376374
et une fois écrites on peut les oublier [comme les méthodes décrites ici, pour compiler des shaders et les lier à un programme](webgl-boilerplate.html).
377375

378-
Arrivé ici vous avez deux choix : si vous êtes intéressé par le traitement
376+
Arrivé ici vous avez deux choix : si vous êtes intéressé par le traitement
379377
d'image je vais vous montrer [comment faire du traitement d'images 2D](webgl-image-processing.html).
380-
Si vous voulez apprendre les translations, rotations et changements d'échelle alors
381-
[c'est par ici](webgl-2d-translation.html).
378+
Si vous voulez apprendre les translations, rotations et changements d'échelle alors
379+
[c'est par ici](webgl-2d-translation.html).

0 commit comments

Comments
 (0)