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.
WebGL est 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 de Google.
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.
Comment cela marche?
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 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).
Démonstrations et applications
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.
- Quake II dans le navigateur avec HTML 5.
Le jeu classique. - Vidéo montrant l'utilisation de WebGL par la librairie Webkit.
Affichée dans Canvas. - La musique en images.
Deux vidéos montrant comment avec JavaScript et WebGL on peut avoir un media player affichant des fractales aussi vite qu'un logiciel local.
Les sources JavaScript sont fournis. - Aquarium.
Comporte de 1 à 1000 poissons, sans perte de fluidité! - Body Browser.
Le corps humain en 3D. Cette étrange créature à des attributs féminins et masculin! - Meduses.
Fonctionne sous Chrome. - Billard.
Jeu en 3D avec audio (sur Chrome 14). - Team Fortress 2.
Un plan du jeu est proposé avec le code source. Seuls les décors sont présents, le rendu est saccadé à cause de l'enregistrement mais ce qu'il montre est d'un autre niveau que Angry Birds qui ressemble plutôt aux premiers jeux sur Apple II.
La librairie O3D
Google qui suivait une approche différente avec 03D, a décidé de le rendre complémentaire et d'en faire une librairie JavaScript plutôt qu'un autre plugin. O3D fonctionne donc en complément de WebGL.
Les choses ont donc évolué depuis que les auteurs de 03D ont exprimé leurs vues sur WebGL.
Compatibilité
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.
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 veut 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é.
Frameworks JavaScript
- Three.js. Moteur 3D qui se veut léger et facile à utiliser et fonctionne avec WebGL, Canvas, SVG. La galerie de démonstration inclut un exemple de peau humaine très réaliste.
- C3DL. Librairie JavaScript library par Mozilla pour utiliser WebGL.
- GLGE. Une bibliothèque JavaScript pour faciliter l'utilisation de WebGL. Voir la démo en vidéo.
- PhiloGL.Un framework JavaScript pour faciliter la réalisation d'une application WebGL.
- 03D. Framework de Google.
Outils
- ANGLE. Utiliser WebGL au-dessus de DirectX.
- Mandreel. Convertit les jeux OpenGL en WebGL.
- 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.
Documents et sites
- Khronos Group. Présentation de WebGL.
- Spécification de l'API standard.
- QuakeGL. Etude du code de Quake 2.
Capture de la démo d'Unreal Turnament dans le navigateur


