R5.A.06 · Programmation multimédia · BUT 3
WebGL pas à pas
Six séances de deux heures pour comprendre comment une carte graphique dessine une image, et pour programmer soi-même, en JavaScript et en GLSL, des scènes 2D animées puis une petite scène 3D.
Organisation
- Chaque séance : environ 30 minutes de cours (la page « Cours », avec des démos à manipuler) puis 1 h 30 de TP (la page « TP »).
- Les TP se suivent : chacun réutilise ce que vous avez écrit au précédent. Gardez votre code.
- Matériel : un navigateur récent (Chrome, Firefox, Edge ou Safari), VS Code avec l'extension Live Server. Aucune installation de Node ou de bibliothèque n'est nécessaire.
- 1
Le GPU et le pipeline graphique
À quoi sert une carte graphique, le trajet d'un sommet jusqu'au pixel, les deux shaders, l'espace de découpage. On dessine un premier triangle, puis une maison.
- 2
Envoyer des données au GPU
Attributs, uniforms, varyings et interpolation. Les primitives, les buffers entrelacés, les indices. On construit un disque coloré généré par programme.
- 3
Animation et boucle de jeu
requestAnimationFrame, temps écoulé entre deux images, séparation mise à jour / rendu, pas de temps fixe, clavier. On programme un petit jeu d'esquive. - 4
Transformations 2D et matrices
Translation, rotation, mise à l'échelle, coordonnées homogènes, ordre des transformations, repère en pixels, hiérarchie d'objets. On écrit sa bibliothèque
m3et on anime un système solaire. - 5
Textures et sprites
Coordonnées UV, chargement d'image, filtrage, répétition, transparence, planches de sprites animées.
- 6
Passage à la 3D
Matrices 4×4, cube, test de profondeur, élimination des faces arrière, projection perspective, caméra
lookAt.
Avant la première séance
- Installez VS Code et l'extension Live Server (Ritwick Dey).
- Au début de chaque TP, téléchargez son code de départ avec le bouton en haut de l'énoncé, et décompressez l'archive : vous obtenez un dossier
tpN/depart/. - Ouvrez le dossier d'un TP dans VS Code, clic droit sur
index.html→ Open with Live Server. - Ouvrez la console du navigateur (F12) : c'est là que s'affichent les erreurs de vos shaders.
Ouvrir index.html en double-cliquant (adresse file://…) ne fonctionne pas pour les TP : les navigateurs bloquent alors les modules JavaScript (import) et le chargement des images dans WebGL. Un petit serveur local règle le problème. Sans VS Code, la commande python3 -m http.server lancée dans le dossier fait la même chose.
Références utiles
- MDN · API WebGL : la documentation de chaque fonction
gl.*. - WebGL2 Fundamentals : tutoriels détaillés, pour aller plus loin.
- Carte de référence WebGL 2 (Khronos) : toutes les fonctions GLSL sur quelques pages.