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.
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.
- 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. Une démo et tutoriel: Une ville en cent lignes de code.
- PhiloGL.Un framework JavaScript pour faciliter la réalisation d'une application WebGL.
- 03D. Framework de Google.
- Babylon.js. Moteur de jeux 3D en JavaScript. Plusieurs démos sur le site. Comprend un outil d'importation de modèle de Blender (FBX). Supporté par Microsoft.
- Mandreel. Convertit les jeux OpenGL en WebGL.
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.
- Quake II dans le navigateur avec HTML 5.
Le jeu classique. QuakeGL est une étude du code de Quake 2. - Vidéo montrant l'utilisation de WebGL par la librairie Webkit.
Affichée dans Canvas. - Aquarium.
Comporte de 1 à 1000 poissons, sans perte de fluidité! - Eau réaliste
Cliquez pour faire des vagues, ou déplacez la sphère... - Body Browser.
Le corps humain en 3D. Cette étrange créature à des attributs féminins et masculin! - 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.
Spécification de l'API standard.
Vous voulez apprendre WebGL? Un livre gratuit en anglais: WebGL Insights.
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é.