WebGL

Un article de Wikipédia, l'encyclopédie libre.
Aller à : navigation, rechercher
WebGL
Image illustrative de l'article WebGL
Logo

Développeur WebGL Working Group
Environnements Web multi-plates-formes
Type API
Site web www.khronos.org/webgl/

WebGL est une spécification d'interface de programmation de 3D dynamique pour les pages et applications HTML5 créée par le Khronos Group. Elle permet d'utiliser le standard OpenGL ES au sein d'une page web, d'un livre numérique au format ePUB[1], d'un diaporama[2] ou bien d'une application basée sur le standard HTML5, en s'aidant du langage JavaScript, des données au format JSON et de l'accélération matérielle pour les calculs et le rendu 3D à l'aide des pilotes OpenGL ES du ou des processeurs graphique du terminal informatique (Ordinateur, smartphone, tablette numériqueetc.). OpenGL ES a été choisi pour son large support au sein des architecture embarquées et mobiles.

Fonctionnement[modifier | modifier le code]

Article détaillé : OpenGL ES.

Lorsqu’un élément graphique de type WebGL est inclus dans une page web, le navigateur exécute un programme en JavaScript utilisant l'interface WebGL. La bibliothèque WebGL appelle à son tour le pilote OpenGL ES du système d'exploitation qui se chargera de faire les calculs nécessaires à l'affichage sur l'écran, en exploitant si possible l'accélération matérielle du ou des processeurs graphiques du terminal.

Implémentations[modifier | modifier le code]

Si, en septembre 2009, aucun navigateur web ne permettait l'affichage 3D directement dans le navigateur sans greffon, ça n'est plus le cas aujourd'hui[3]:

  • Firefox le supporte depuis sa version 4 (6 juillet 2010)
  • Google Chrome à partir de la version 9 (3 février 2011)[4]
  • Safari propose le support de WebGL depuis sa version 5.1 (20 juillet 2011)
  • Opera, depuis la version 12 (14 juin 2012)
  • Internet Explorer est le dernier des grands navigateurs, avec la version 11 sortie le 17 octobre 2013.
  • Les version mobiles de Firefox, Opera et du navigateur de Blackberry supportent également WebGL[3].

Limitations[modifier | modifier le code]

WebGL est basé sur OpenGL ES 2.0 (OpenGL for Embedded Systems), une version d'OpenGL destinée aux systèmes embarqués. Elle n'a pas les fonctions d'appel fixe d'OpenGL 1.0 qui sont également dépréciées dans OpenGL 3.0 : par exemple, plutôt que de créer les objets, face par face, avec un appel de fonction à chaque face, une seule fonction soumet une liste de faces au moteur. Il est toujours possible de modifier les paramètres de la liste par la suite. Cela permet d'améliorer les performances en réduisant la bande passante entre le processeur principal (CPU) et le processeur graphique (GPU).

Comme WebGL est basé sur OpenGL ES, certaines fonctionnalités d'OpenGL y sont absentes, dont :

  • Le tampon de sélection (selection buffer, permettant de sélectionner un objet par un simple clic), des techniques alternatives, plus gourmandes en calcul, existent cependant[5].
  • Les textures 3D (technique de textures en volume) : bien qu'OpenGL ES 2.0 possède une extension Texture 3D[6], celle-ci n'existe pas en WebGL[7]. La bibliothèque webgl-texture3d tente de remédier à ce problème[8].
  • Le geometry shader : WebGL dispose du vertex shader et du fragment shader, mais pas du geometry shader.

Khronos Group prépare depuis 2012 le brouillon de la norme WebGL 2.0, basée sur OpenGL ES 3.0[9],[10],[11].

Problèmes de jeunesse[modifier | modifier le code]

Certains problèmes de compatibilité étant apparus à ses débuts, de nombreuses cartes graphiques avaient été bloquées dans WebGL, les différents constructeurs ont donc fait des efforts sur les pilotes afin de rendre leurs cartes compatibles[12].

Microsoft en retard sur la concurrence[modifier | modifier le code]

En juin 2011, Microsoft a renouvelé sa défiance vis-à-vis de cette technologie[13], d'après ses dires, principalement pour des raisons de sécurité. WebGL restait alors exclu d'Internet Explorer alors qu'il était supporté par la plupart des navigateurs. Mike Shaver, vice-président de la stratégie technique de la fondation Mozilla répond que les critiques de Microsoft valent pour toutes les technologies 3D web (Silverlight de Microsoft inclus), s'appuyant sur l'accélération 3D matérielle[14].

En juin 2013, Microsoft confirme que son prochain navigateur Internet Explorer 11 aura la prise en charge de la technologie WebGL[15].

Projets et réalisations[modifier | modifier le code]

Malgré la finalisation récente de WebGL et en raison de son fort potentiel, les projets utilisant cette technologie se multiplient.

Des compilateurs C/C++ vers javascript tels qu'Emscripten, Mandreel ou Duetto, permettent de faciliter le portage d'applications préexistantes[16],[17],[18].

Parmi les projets et réalisations en WebGL, on notera en particulier la contribution de Google concernant la création de multiples applications en WebGL (ex google Map en 3D), Chrome Experiments[19], démonstrations régulièrement mises à jour à partir du site The Chromium Projects.

Du côté des jeux vidéo, le portage de Quake 2[20], ainsi que quelques projets de jeux amateurs.

Et enfin les possibilité de la visualisation 3D en ligne pour imagerie médical ou scientifique [21][22] ou tout objet modélisé en 3D [23] ouvrent de nouveaux champs d'applications aux applications en ligne.

Bibliothèques orientées 3D[modifier | modifier le code]

Il existe également de plus en plus de bibliothèque pour faciliter le développement en WebGL[24]. three.js est une des bibliothèques les plus répandues.

Il existe également plusieurs bibliothèques WebGL, telles que GLGE[25], CopperLicht[26], C3DL[27], SceneJS[28] et SpiderGL[29] OSGJS[30] afin de permettre l'implémentation d'objets ou de scènes en trois dimensions dans le navigateur. Certaines sont même dédiées à la visualisation scientifique et médicale XTK [31].

Les moteur de jeux professionnel offrent maintenant la possibilité aux développeurs d'exporter directement dans les navigateurs en WebGL [32][33] ouvrant la porte aux développement de jeux AAA sur WebGL.

Bibliothèques orientées 2D[modifier | modifier le code]

Différents frameworks dynamiques 2D utilisent également WebGL, pour tirer parti de son accélération matérielle, c'est le cas par exemple des bibliothèques WebGL-2d, enchant.js ou encore pixi.js, qui permet également d'ajouter quelques éléments tridimensionnels dans des applications bidimensionnelles. Pixi.js est par exemple utilisée sur les sites promotionnels de la chaîne de restauration rapide américaine McDonald's[34].

Notes et références[modifier | modifier le code]

Articles connexes[modifier | modifier le code]

Liens externes[modifier | modifier le code]