WebGL
La nouvelle révision du language HTML, le HTML5 est en plein essor. Le HTML5 vise à simplifier l’écriture du code HTML au niveau de la sémantique en ajoutant des nouvelles balises telles que <canvas> <video> <article> <audio>.
L’adoption des changements au HTML5 est avance à grande vitesse. Tous les grands navigateurs (Opéra, Chrome, Firefox et Internet Explorer) offrent un support préliminaire à avancé de la majorité des nouvelles fonctionnalités impliquées dans l’ajout de ces nouvelles balises.
Dans le cas qui m’intéresse est l’ajout de la balise <canvas>. Cette balise agit comme une zone dans laquelle on peu faire rendre des animations dans le navigateur sans l’aide d’extensions additionnelles.
C’est ici qu’entre en scène le WebGL. Le WebGL est la technologie par laquelle les animations en 3D sont possible à l’intérieur d’un navigateur web grâce à la balise <canvas> et le javascript. Le WebGL ne requiert aucune extension additionnelles pour fonctionner.
Histoire
Vers la fin des 1990, la technologie VRML (Virtual Reality Modelling Language) avait été mis de l’avant sur le web. Cette technologie permettait de faire un rendu 3D d’image et de autoriser l’interaction entre l’animation et l’utilisateur.
Le concept était simple. Programmer des animations dans un fichier texte, télécharger ce fichier par un navigateur web grâce à un à l’extension VRML et faire afficher le rendu 3D. Le principal défaut du VRML était sa demande exigeante en bande passante à une époque où les connexions les plus rapides étaient des connexion 56Kbps.
Le WebGL a été fondé vers la fin 2009 par la fondation Mozilla et le groupe Khronos. Le but de l’alliance, représentant les plus gros joueurs de l’industrie de l’informatique, est de définir des API et des standards de programmation pour faire des animations et des jeux en 3D par un navigateur web.
C’est le groupe Khronos qui est en charge de l’évolution de l’API OpenGL et tous ces dérivés (OpenCL, OpenGL ES, etc.).
À présent
Le standard WebGL n’est pas encore à la version finale 1.0. Ceci veut dire qu’il y a toujours place à des révisions par le groupe Khronos. Tant et aussi longtemps que la spécification WebGL ne sera pas finale, il est peu possible que les navigateurs web l’implémentent pleinement. De plus, aucune date de remise n’a été suggérée pour cette spécification.
Le support pour OpenGL est encore très immature avec les navigateurs web. Pour le moment, la seule façon de voir de vos propres yeux des animations WebGL est de télécharger les versions dites de développement de ceux-ci (Firefox 4 Beta et les versions développement de Chromium).
L’un des joueurs importants qui cherche à se positionner dans le WebGL est Google. Dans la dernière année, Google a mis en place une librairie permettant de faire des animations 3D nommée O3D. Cette librairie augmente est utilisée conjointement avec WebGL et augmente ses fonctionnalités.
Le futur
Il y a actuellement quelques démonstrations du WebGL qui représentent assez bien le potentiel de cette technologie.
Beach : http://www.youtube.com/watch?v=uofWfXOzX-g. Cette vidéo a pour but de démontrer le potentiel de faire rendre des animations 3D avec des effets de qualité dans un navigateur avec fluidité.
Quake 2 (Note : Violence incluse mais démo hautement impressionnante) : http://www.youtube.com/watch?v=fyfu4OwjUEI. A pour but de démontrer qu’il est possible de faire exécuter un jeu avec de l’interaction en temps réel dans un navigateur web.
Conclusion
L’objectif du WebGL est donc d’avoir un API inspiré du OpenGL avec des bases assez solide pour afficher des animations 3D tout en étant assez léger pour qu’un appareil peu puissant tel un téléphone style iPhone ou Android soit en mesure d’afficher les animations.
Le WebGL est donc supporté par un sérieux groupe désirant à rendre possible la programmation d’animations et de jeux en trois dimentions avec Javascript en temps réel. Les enjeux sont énormes car étant donné que le WebGL vise le marché des navigateurs web, il doit être aussi possible d’afficher les même animations en 3D sur les téléphones mobiles.