Après WebGL, Une Nouvelle Ère
WebGL a permis au web de faire de la 3D. C'était révolutionnaire en 2011. Mais WebGL est construit sur OpenGL ES, une API conçue dans les années 90. Treize ans plus tard, les GPU ont radicalement évolué, et WebGL montre ses limites.
WebGPU arrive pour combler cet écart. Inspiré de Vulkan, Metal et DirectX 12, c'est une API moderne qui expose les capacités réelles des GPU contemporains. Et après l'avoir utilisé sur un projet réel, le verdict est clair : ça change tout.
Ce Que WebGPU Apporte Concrètement
1. Compute Shaders dans le Navigateur
C'est peut-être le changement le plus significatif. WebGL ne permettait que du rendu graphique. WebGPU permet le calcul général sur GPU (GPGPU).
Concrètement ? Vous pouvez maintenant exécuter du machine learning, des simulations physiques, du traitement d'image, directement sur le GPU du client. Sans plugin, sans WASM compilé en catastrophe.
Les implications sont massives pour les applications web qui nécessitent de la puissance de calcul : retouche photo, montage vidéo, visualisation de données complexes, IA locale.
2. Un Modèle de Mémoire Explicite
WebGL gérait la mémoire GPU de manière opaque. Vous envoyiez des données, OpenGL décidait quoi en faire. C'était simple mais inefficace.
WebGPU expose un modèle de mémoire explicite. Vous créez des buffers, vous gérez leur cycle de vie, vous contrôlez les transferts CPU-GPU. Plus de travail, mais des performances prévisibles et optimisables.
Pour les développeurs venant de Vulkan ou Metal, c'est familier. Pour les développeurs WebGL, c'est une courbe d'apprentissage.
3. Pipeline State Objects
En WebGL, changer un paramètre de rendu (blend mode, depth test, shader) était une opération individuelle. Le driver devait recompiler des états à chaque changement.
WebGPU introduit les Pipeline State Objects : vous définissez une configuration complète à l'avance, le GPU la compile une fois, puis vous l'utilisez directement. Le résultat : moins de stuttering, des performances plus consistantes.
4. Meilleure Gestion Multi-thread
WebGL était fondamentalement single-threaded. WebGPU permet de préparer des commandes dans des Web Workers, puis de les soumettre au GPU depuis le thread principal.
Pour les applications complexes, ça débloque des architectures impossibles en WebGL : préparation de scènes en arrière-plan, streaming de ressources sans bloquer le rendu.
Les Benchmarks Parlent
Sur des scènes de test comparables, WebGPU affiche des gains de 2x à 10x selon les cas d'usage. Les gains les plus spectaculaires concernent les scènes avec beaucoup de draw calls : là où WebGL s'effondre à quelques milliers d'objets, WebGPU maintient des framerates stables à des dizaines de milliers.
Le compute shader montre des performances proches du code natif pour des tâches parallélisables. Sur une convolution d'image, un test montre WebGPU à 85% des performances de Metal natif. C'est remarquable pour du code qui tourne dans un navigateur.
L'Adoption Réelle
Tous les navigateurs majeurs supportent maintenant WebGPU : Chrome depuis 2023, Firefox en preview, Safari en développement actif. Le support n'est pas encore universel (certains GPU anciens sont exclus), mais la couverture croît rapidement.
Les frameworks 3D web migrent. Three.js a un renderer WebGPU expérimental. Babylon.js supporte WebGPU en production. PlayCanvas, Cocos, Unity WebGL regardent WebGPU sérieusement.
Le problème : la fragmentation pendant la transition. Pendant quelques années, les développeurs devront maintenir des fallbacks WebGL pour les environnements non supportés.
Ce Que Ça Change Pour Les Développeurs
Pour le jeu vidéo web : WebGPU débloque des niveaux de qualité graphique impossibles en WebGL. Des techniques comme le ray tracing, l'occlusion ambiante en screen-space, les effets de particules massifs deviennent viables.
Pour les applications créatives : Figma, Photopea, les outils de montage vidéo en ligne peuvent maintenant offrir des performances proches du natif. Le "c'est limité parce que c'est du web" devient de moins en moins vrai.
Pour l'IA locale : Les modèles de ML peuvent tourner sur le GPU du client. Inférence de modèles de vision, traitement de langage, tout ça sans envoyer les données à un serveur. Implications énormes pour la privacy.
Pour la visualisation de données : Des datasets de millions de points deviennent manipulables en temps réel dans le navigateur.
Les Défis Restants
L'API est plus complexe que WebGL. Le "hello triangle" en WebGPU nécessite significativement plus de code que son équivalent WebGL. La courbe d'apprentissage est réelle.
Le debugging reste primitif. Les outils comme RenderDoc supportent WebGPU, mais l'expérience n'est pas aussi polie que pour les APIs natives.
La portabilité parfaite est un mythe. Les différences entre backends (Vulkan vs Metal vs D3D12) fuient parfois dans les comportements observés. Les bugs peuvent être spécifiques à certaines combinaisons GPU/OS/navigateur.
Et le support mobile reste en retard. iOS Safari avance lentement, Android varie selon les fabricants.
Perspective : Le Web Devient Une Vraie Plateforme
WebGPU s'inscrit dans une tendance plus large : le web devient capable de tout ce que les applications natives faisaient mieux.
WASM pour le calcul CPU. WebGPU pour le GPU. WebCodecs pour l'audio/vidéo. File System Access pour les fichiers locaux. Chaque année, un nouveau gap se comble.
La question "native ou web" devient moins tranchée. Pour beaucoup d'applications, le web offre maintenant des performances comparables avec une distribution infiniment plus simple.
Conclusion
WebGPU n'est pas juste une mise à jour de WebGL. C'est une refonte fondamentale de ce que le navigateur peut faire avec le GPU. Pour les développeurs qui travaillent sur des applications graphiquement intensives, c'est le moment d'investir dans cette technologie.
La transition prendra des années. Le support universel n'est pas encore là. Mais la direction est claire : le web rattrape son retard graphique sur le natif, et WebGPU est le véhicule de ce rattrapage.
Si vous faites du graphisme web, apprenez WebGPU maintenant. Dans cinq ans, ce sera la baseline, et WebGL sera le legacy qu'on maintient à contrecœur.
