Couverture de l'article De WebGL à WebGL 2
Retour aux articles

L'agence

WanadevStudio

De WebGL à WebGL 2

La 3D sur le Web évolue... On commence à parler de WebGL2 un peu de partout... Mais en fait, c'est quoi, WebGL2 ? Et ça apporte quoi ? Petit tour sur le sujet...

Le contexte

Beaucoup savent décrire globalement ce que représente WebGL : faire de la 3D sur le web. Beaucoup moins sauraient, cependant, expliquer exactement ce qui se cache derrière ce mot.

Rapellons les faits : WebGL est une spécification crée par le Khronos Group, qui décrit une API. Pour parler plus simplement, WebGL est un document décrivant l'ensemble des fonctionnalités pouvant être utilisées par un développeur. Ceci lui permettra d'utiliser les capacités de sa carte graphique, afin de réaliser des applications 3D.

Et c'est tout !

@ WebGL n'est qu'un document. Par la suite, nos fidèles navigateurs web choisissent d'implémenter ces fonctions, permettant ainsi aux développeurs de les utiliser.

Aux débuts de WebGL, plus spécifiquement le 3 mars 2011, date de sortie de la version 1.0 de la spécification WebGL, seuls Chrome et Firefox avaient déjà implémenté la spécification.

Ainsi, les applications utilisant WebGL ne tournaient que sur ces navigateurs. Les autres navigateurs majeurs comme Safari, Opera et Internet explorer, se sont rattrapés par la suite, un peu à la traîne...

WebGL est, en quelque sorte, un accord entre tous les navigateurs pour développer une interface commune pour les développeurs. Ce qui permet donc d'avoir le chouette postulat qu'une application WebGL est compatible cross-navigateur (sous réserve bien sûr que les navigateurs respectent cet accord et se mettent à jour ;) ).

Au passage, son alter-ego OpenGL est lui aussi un accord,... entre les fabricants de matériel ! Ce qui permet aux applications 3D modernes de fonctionner sur la majorité des machines.

Les extensions

WebGL est une spécification incrémentielle, elle permet d'ajouter de nouvelles fonctionnalités sous forme d'extensions. Petit à petit, différentes extensions sont apparues, spécifiées elles aussi par le Khronos Group.

Le fait des les désigner comme extensions permet aux navigateurs d'être beaucoup plus souples par rapport à leur implémentation. Par exemple, les développeurs de Chrome peuvent décider qu'une extension A est plus critique qu'une extension B, et ceux de Firefox peuvent décider de l'inverse, d'où une disparité dans le support par les navigateurs.

C'est donc aux applications utilisant WebGL de tester la présence de l'extension et de l'utiliser si possible, et de faire sans sinon !

@ Et donc, WebGL 2 ?

WebGL 2 est tout simplement WebGL1, avec un ensemble d'extensions en plus ! Ces extensions deviennent donc obligatoires pour qu'un navigateur puisse clamer "supporter WebGL 2". La spécification l'exprime d'ailleurs très bien dans son préambule :

This document should be read as an extension to the WebGL 1.0 specification. It will only describe the differences from 1.0..
— Spécification WebGL2

@ Ceci implique-t-il que toute application utilisant WebGL 1 fonctionnera sur la spécification WebGL 2 (fait également appelé "forward-compatibility") ?

Et bien oui ! Enfin à une seule exception près, dictée par la spécification :

The WebGL 2 API may behave differently in cases where the WebGL 1 API generates an error. Code written against the WebGL 1 API that generates errors is not guaranteed to be forward-compatible with WebGL 2.
— Spécification WebGL2

En gros, si votre application WebGL 1 génère déjà des erreurs, il est possible qu'elle plante dans un contexte WebGL 2. Cependant, pour une application clean, il devrait n'y avoir aucun problème !

Concrètement on peut faire quoi de plus avec WebGL 2 ?

Pour les barbus chevronnés qui développent des moteurs, WebGL 2 permet d'implémenter des techniques de rendu 3D plus poussées, car exploitant mieux les possibilités des cartes graphiques.

@ À noter cependant : ces techniques sont déjà utilisées depuis plusieurs années dans les moteurs 3D utilisant des API non-web comme OpenGL ou Direct3D.

En effet, la spécification WebGL est en retard de plusieurs années sur ces API. WebGL 2 est basé OpenGL ES (Embedded System) 3.0, qui est elle-même dérivée d'OpenGL 3.3 et 4.2. OpenGL ES 3.0 a été présentée le 6 août 2012 au salon Siggraph, donc elle-même date déjà un peu.

Ci-dessous, quelques-une des techniques les plus courantes qui sont rendues possibles par WebGL 2

Cette technique permet, entre autres, d'afficher un grand nombre de lumières-point.

Lumière Point

@ Elle a été rendue possible par le MRT (Multiple Render Targets), qui existait déjà avec l'extension WEBGL_draw_buffers dans WebGL 1. La grande différence est que WebGL 2 permet d'antialiaser proprement ces buffers hors-écran, ce qui augmente la qualité visuelle de la technique.

  • Le SSAO (ScreenSpace Ambient Occlusion)

Permet d'afficher des ombres découlant de la géométrie des objets. Ceci donne des objets avec une meilleure impression de détails, en emphasant les creux et les bosses.

Nos amis français de SketchFab ont déjà implémenté cette technique dans leur moteur. Je vous invite à aller voir la page explicative ici.

SSAO

Cette technique a été rendue possible encore par le MRT, à l'instar du deferred rendering.

Permet d'accélérer très fortement le rendu des objets répétitifs, comme la végétation (fougères, arbres..).

Instancing

  • Textures 3D

Permet de mieux représenter certains matériaux comme du marbre ou du cuir. On peut aussi mentionner un effet de fumée plus réaliste.

Textures 3D

  • Uniform Buffer Objects

Celui là, c'est mon petit préféré, il permet d'augmenter fortement le nombre d'objets rendus à la fois, car il réduit drastiquement la durée d'un draw call (cf mon article ici ).

Pour les plus expérimentés des lecteurs : changer un uniform prend du temps CPU. Le fait de stocker les uniform dans la mémoire vidéo dans un buffer permet de rapidement switcher entre ces buffers, sans avoir besoin de faire les coûteux appels tels que glUniform3f etc.. .

@ Ce procédé ouvre également la possibilité de faire partager des buffers d'uniforms entre différents program (shaders), permettant de changer efficacement un uniform qui est commun à plusieurs objets en un seul appel (comme une matrice monde de caméra par exemple).

Bref, pour résumer en quelques mots, on accélère globalement le rendu des scènes 3D.

UBO

Alors, on s'y met quand à WebGL2 ?

WebGL 2 est maintenant disponible en stable dans chrome et firefox. Les principaux moteurs comme Three.js ou BABYLON.js devraient exploiter ces nouvelles possibilités d'ici peu. Et même s'il y a encore du progrès à faire, notamment au niveau des contraintes liées au Web et au Javascript, ceci nous ouvre un peu plus la porte vers des jeux AAA en WebGL !.

Sources et articles complémentaires:

  • Couverture de l'article #2 - Module Federation et Vue à l'ère de l'IA : retour de la MadVue 2026
    #2 - Module Federation et Vue à l'ère de l'IA : retour de la MadVue 2026

    Il y a 3 mois

    Voici la seconde partie de mon retour sur la MadVue 2026, la conférence Vue.js qui s'est tenue à Madrid le 22 mai 2026. Si vous avez manqué le début, la première partie est juste ici :

    Après les fondations de l'application Vue moderne, on change d'échelle et d'époque. Dans cet article, on va voir comment partager des composants entre plusieurs applications Vue avec Module Federation, puis trois talks consacrés à Vue et l'intelligence artificielle : faire générer une interface en direct par un LLM, préparer son projet Vue pour les agents, et enfin apprendre le frontend à l'ère de l'IA.

    C'est parti !

    Photo de Louis GOURAIN auteur de l'article

    Louis GOURAIN

    Lire la suite
  • Couverture de l'article #1 - Temps réel, URLs typées, formulaires et toolchain : retour de la MadVue 2026
    #1 - Temps réel, URLs typées, formulaires et toolchain : retour de la MadVue 2026

    Il y a 3 mois

    Le 22 mai 2026, je me suis rendu à Madrid pour la MadVue 2026, la conférence espagnole dédiée à l'écosystème Vue.js. Une journée dense, neuf talks, et une tendance de fond très claire : entre une grosse moitié orientée IA et expérience développeur et une autre consacrée aux fondations qui rendent nos applications soutenables.

    Dans cette série de deux articles, je reviens sur l'ensemble des talks. En les lisant, vous aurez l'impression d'y avoir assisté.

    Cet article est le premier des deux, vous pourrez retrouver chaque partie de cette série ici :

    Dans ce premier article, on pose les fondations d'une application Vue moderne : on verra comment faire du temps réel proprement, comment en finir avec le parsing manuel des paramètres d'URL, un tout nouveau modèle pour construire ses composants de formulaire, l'avènement d'une toolchain JavaScript unifiée (Oxc, Rolldown), et ce qui nous attend avec Nuxt 5.

    Beaucoup de sujets à traiter, alors c'est parti !

    Photo de Louis GOURAIN auteur de l'article

    Louis GOURAIN

    Lire la suite
  • Couverture de l'article #4 - Construire un DOM Virtuel, les différentes méthodes de rendu et bien écrire ses tests : retour de la Vue.js Amsterdam 2023
    #4 - Construire un DOM Virtuel, les différentes méthodes de rendu et bien écrire ses tests : retour de la Vue.js Amsterdam 2023

    Il y a 3 ans

    Pour la première fois, Wanadev s’est rendu à la plus grosse conférence annuelle autour de Vue.js : la Vue.js Amsterdam 2023. J’ai eu l’honneur d’assister à la 5ème édition, couronnée par le retour d’Evan You, le créateur de Vue.js et Vite, en personne.

    Dans cette série de quatre articles, je vais vous faire revivre ces deux jours de conférences. En les lisant, vous aurez l’impression d’y avoir assisté !

    Cet article est le troisième des quatre, vous pourrez retrouver chaque partie de cette série ici :

    Dans cet article nous allons voir comment construire un Virtual DOM, on parlera des différentes façons de faire du rendu dans le web, de comment écrire des bons tests et plein d’autres choses.

    Beaucoup de sujets à traiter, alors, c’est parti !

    Photo de Louis GOURAIN auteur de l'article

    Louis GOURAIN

    Lire la suite
  • Couverture de l'article #3 - Vue.js en 2023, l'avenir de Vue Router, les patterns avec Pinia  : retour de la Vue.js Amsterdam 2023
    #3 - Vue.js en 2023, l'avenir de Vue Router, les patterns avec Pinia : retour de la Vue.js Amsterdam 2023

    Il y a 3 ans

    Pour la première fois, Wanadev s’est rendu à la plus grosse conférence annuelle autour de Vue.js : la Vue.js Amsterdam 2023. J’ai eu l’honneur d’assister à la 5ème édition, couronnée par le retour d’Evan You, le créateur de Vue.js et Vite, en personne.

    Dans cette série de quatre articles, je vais vous faire revivre ces deux jours de conférences. En les lisant, vous aurez l’impression d’y avoir assisté !

    Cet article est le troisième des quatre, vous pourrez retrouver chaque partie de cette série ici :

    Dans cet article on va parler de Vue en 2023, de patterns Pinia, du futur de vue-router, de l’écosystème Vue et de TypeScript avec Vue.

    Beaucoup de sujets à traiter, alors, c’est parti !

    Photo de Louis GOURAIN auteur de l'article

    Louis GOURAIN

    Lire la suite
  • Couverture de l'article #2 - Nuxt.js, l'art de la composition, accessibilité : retour de la Vue.js Amsterdam 2023
    #2 - Nuxt.js, l'art de la composition, accessibilité : retour de la Vue.js Amsterdam 2023

    Il y a 4 ans

    Pour la première fois, Wanadev s’est rendu à la plus grosse conférence annuelle autour de Vue.js : la Vue.js Amsterdam 2023. J’ai eu l’honneur d’assister à la 5ème édition, couronnée par le retour d’Evan You, le créateur de Vue.js et Vite, en personne.

    Dans cette série de quatre articles, je vais vous faire revivre ces deux jours de conférences. En les lisant, vous aurez l’impression d’y avoir assisté !

    Cet article est le second des quatre, vous pourrez retrouver chaque partie de cette série ici :

    Dans cet article on va parler de Nuxt en 2023, d’un client Mastodon fait avec Nuxt, d’expérience développeur sur Nuxt, de Nitropack, de CSS-in-TS, de comment concevoir ses composants Vue.js, d’accessibilité et de maintenance d’écosystème open-source en entreprise.

    Beaucoup de sujets à traiter, alors c’est parti !

    Photo de Louis GOURAIN auteur de l'article

    Louis GOURAIN

    Lire la suite
  • Couverture de l'article #1 - NPM Package, PlayWright, Google LightHouse : retour de la Vue.js Amsterdam 2023
    #1 - NPM Package, PlayWright, Google LightHouse : retour de la Vue.js Amsterdam 2023

    Il y a 4 ans

    Pour la première fois, Wanadev s’est rendu à la plus grosse conférence annuelle autour de Vue.js : la Vue.js Amsterdam 2023. J’ai eu l’honneur d’assister à la 5ème édition, couronnée par le retour d’Evan You, le créateur de Vue.js et Vite, en personne.

    Dans cette série de quatre articles, je vais vous faire revivre ces deux jours de conférences. En les lisant, vous aurez l’impression d’y avoir assisté !

    Cet article est le premier des quatre, vous pourrez retrouver chaque partie de cette série ici :

    Dans cet article, nous allons parler de Rock’n Roll, voir comment créer son package NPM, découvrir PlayWright pour tester ses applications de bout en bout, parler de commerce international, déconstruire les idées reçues sur Google Lighthouse et aborder le sujet de la performance sous Vue.js.

    Beaucoup de sujets à traiter, alors c’est parti !

    Photo de Louis GOURAIN auteur de l'article

    Louis GOURAIN

    Lire la suite