WebGL, la 3D dans le navigateur

WebGL est un standard pour la programmation en 3D avec le navigateur comme plateforme. La spécification finale du standard a vu le jour en 2010 et est définie par le Khronos Group, un consortium qui est aussi en charge de Open GL et Open CL. Il permet de réaliser des animations, des interfaces ou des jeux en 3D fonctionnant à la fois en ligne et hors connection.

Capture de la démo d'Unreal Turnament

Démo d'Unreal Turnament dans le navigateur

OpenGL n'a pas toujours fait l'unanimité. Google a d'abord suivi une approche différente avec 03D, dont les auteurs avaient exprimé leurs vues sur WebGL, plutôt critique. Plus tard ils ont décidé de rendre son code complémentaire et d'en faire une librairie JavaScript plutôt qu'un autre plugin. O3D fonctionne donc maintenant en complément de WebGL.

WebGL est donc soutenue par Google, cela entre entièrement dans sa stratégie qui est de porter les applications sur le Web, et cela se rapproche des projets Native Client, Google Chrome OS.
Le projet a également le soutien de NVidia, fabricant de chipsets et cartes graphiques, AMD, fabricant de microprocesseurs, Ericsson, fabricant de mobiles, Mozilla, Opera Software.
Ces acteurs se joignent dans le groupe Khronos qui définit la spécification. Microsoft a rejoint le groupe Khronos en 2014.

Comment fonctionne WegGL?

WebGL est une interface entre JavaScript et Open GL ES 2.0, une librairie en code natif qui accède directement au hardware des cartes graphiques. Il existe une version de Open GL pour chaque modèle de carte graphique, qui est généralement installée par le système d'exploitation, quel qu'il soit.

Le rendu se fait dans Canvas, surface d'affichage graphique qui fait partie de HTML 5 et qui est implémenté par tous les navigateurs modernes. On peut utiliser WebGL sur d'autres plateformes, si elles utilisent WebKit notamment.
WebGL fonctionne donc sur tous navigateur supportant Canvas et avec un framework JavaScript (voir liste en ressources).

L'utilisation sera nettement simplifiée avec l'apport d'un framework JavaScript pour faire l'interface avec l'application. Il en existe de nombreux.

Une démonstration de Quake II tournant dans un navigateur supportant HTML 5 a été faite par Google. Elle utilise la version Java de Quake II, le Google Web Toolkit et WebGL. De nombreuses autres démos ont été mises en ligne.

Spécification de l'API standard.

WebGL sur quels navigateurs?

WebGL fonctionne avec OpenGL sur la plupart des ordinateurs.

Avec ANGLE (Almost Native Graphics Layer Engine), moteur presque natif de couche graphique, une interface produite par Google, il fonctionne également avec Direct3D qui fait partie de DirectX et permet d'tiliser WebGL au-dessus de DirectX. Cela pour les configurations Windows qui ne disposeraient pas d'un module OpenGL.
ANGLE devrait aussi permettre aux développeurs d'applications mobiles de réaliser la phase de développement sous Windows.

Microsoft ne voulait pas supporter WebGL sous le motif qu'un accès direct à une librairie système créerait une faille de sécurité. Ce que fait pourtant Silverlight 5 (A travers XNA qu'il incorpore partiellement), son système propriétaire concurrent, et ce que fait tout code JavaScript compilé.
Cependant, la version 11 d'Internet Explorer supporte totalement WebGL et il se montre très performant, autant que sur les navigateurs concurrents, en 2013 (qui utilisent une interface à DirectX sous Windows).

Pour les autres navigateurs, il existe une solution: JebGL fait tourner une application WebGL sur n'importe quel navigateur en utilisant une Applet Java si besoin. Fonctionne sur tout navigateur y compris Internet Explorer 6.