Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

Le WebGL a t-il un avenir ?
Faisons le point sur le standard Web permettant d'intégrer un rendu 3D dans une page Web

Le , par LittleWhite

0PARTAGES

3  1 
WebGL est la spécification d'une bibliothèque graphique 3D au même niveau que OpenGL ou Direct3D. Celle-ci repose sur OpenGL ES 2.0 (la spécification pour l'embarqué de OpenGL) et permet de créer des pages Internet intégrant du contenu 3D. Ainsi, à l'aide de HTML 5 et du Javascript vous pouvez afficher un rendu accéléré par la carte graphique et bénéficiant donc de la puissance du GPU.


Actuellement, les principaux navigateurs présents sur le marché disposent du support de WebGL :
  • Firefox (6 juillet 2010)
  • Google Chrome(3 février 2011)
  • Safari (20 juillet 2011)
  • Opera (14 juin 2012)
  • Internet Explorer (17 octobre 2013).
  • les versions mobiles de Firefox, Opera et du navigateur de Blackberry supportent également WebGL.


Pendant un long moment, Internet Explorer a été un frein au développement de cette technologie mais depuis fin 2013, la onzième version du navigateur la supporte. On notera aussi le possible second frein lorsque des failles de sécurité critiques ont été découvertes dans le standard même, entraînant notamment la vive réaction de la communauté et de Microsoft.

Il ne faut pas non plus oublier que l'accélération graphique dans WebGL est disponible uniquement que si la carte graphique implémente correctement la spécification. Cela a aussi provoqué une certaine lenteur dans l'évolution du support d'OpenGL, notamment sous Linux où il était peu présent. Maintenant, nous pouvons dire que ces soucis sont globalement résolus.

Malgré cela, la technologie n'est pas désuète. En effet, elle a une place de plus en plus importante et les différents acteurs se dirigent vers cette solution (Unity Technologies, Epic Games...). En effet, Flash est de plus en plus abandonné (et son intégration de la 3D fut laborieuse et n'était d'ailleurs pas portable), WebGL est un standard disposant de nombreux avantages. Le plus clair et le plus visible pour l'utilisateur est le fonctionnement immédiat des pages intégrant WebGL. En effet, contrairement à une solution comme celle proposée dans Unity et nécessitant un module à installer sur la machine, WebGL est disponible dans le navigateur de l'utilisateur sans rien avoir à faire en plus. Comme indiqué ci-dessus, le support est présent sur une majorité de machines et même de mobiles.

WebGL a toutefois quelques limitations :
  • absence de tampon de sélection ;
  • absence de textures 3D ;
  • absence de geometry shader.


Mais tout cela sera résolu dans la nouvelle spécification WebGL 2.0 dont l'étude a commencé en 2012.

De nombreuses bibliothèques 2D et 3D ont vu le jour pour les développeurs. Elles permettent de faciliter le développement des applications tout en bénéficiant des apports de WebGL. On peut maintenant dire que la technologie est répandue et facile à prendre en main. De plus, il est possible de convertir un programme C et C++ à l'aide de compilateurs tel que Emscripten. La 3D n'est pas perdue grâce à la bibliothèque WebGL.

Chez les concurrents, on ne peut pas vraiment citer d'alternatives répandues. Il existe Adobe Flash 11, mais celui-ci est de plus en plus abandonné et n'a jamais permis d'avoir une application 3D autre que sous Windows. Il existe aussi le Native Client de Google proposant lui aussi une accélération graphique (reposant aussi sur OpenGL ES 2.0), mais son fonctionnement est complètement différent de WebGL. En effet, le Native Client est une sandbox où le code natif est exécuté puis afficher dans le navigateur.

Finalement, il n'y a toujours pas d'application phare pour cette technologie. De plus, pour les jeux vidéo et les applications intensives le JavaScript et la surcouche apportée par le navigateur peut être aussi un facteur décisif et ainsi empêcher l'adoption de ce standard.

Votre opinion

Croyez-vous que le WebGL a un avenir ? Comment voyez-vous cet avenir ?
Qu'aimeriez-vous voir dans le futur du Web et des site intégrant du contenu 3D ?

Voir aussi

Retrouvez une série complète de tutoriels sur WebGL sur Developpez.com

Une erreur dans cette actualité ? Signalez-le nous !

Avatar de p3ga5e
Membre confirmé https://www.developpez.com
Le 05/09/2014 à 22:05
Pourquoi vouloir remettre en cause l’avenir d’une norme d’API graphique tel que le GL !

Tout le monde sait, de nos jours, que programmer en respectant cette norme augmente considérablement la facilité de portage de son code,
WebGL apporte une nouvel plateforme a la longue liste des plateformes compatible GL : smartphones, tablettes, consoles, ordinateur personnel (mac et PC ).

Pour ceux qui se posent la question de l’intérêt de GL dans un navigateur, il faut tout d’abord arrêter de penser que GL se limite à la 3D projeté !
Ou dans la norme GL il est indiqué qu’un sommet doit obligatoirement contenir une position 3D dans un espace cartésien orthonormé ? et pourquoi la projection devrait-elle être systématiquement de type perspective ?
Pourtant rien n’empêche d’écrire un shader pour le pipeline géométrique effectuant une projection cartographique de type Mercator sur des coordonnées sphérique (position GPS).
Sachant que les donnée vectorielle sont nettement moins lourdes que les données raster et qu’en prime elle offre un meilleur rendu ( pas de pixellisation). La rastérisation de carte vectorielle en temps réel dans un navigateur est-elle vraiment inutile ? Même pour Google ?

En "bypassant" le pipeline géométrique, on peut utiliser le pixel shader pour paralléliser le traitement de signal en générale !
Pour ma part je vais utiliser WebGL pour traiter et afficher des signaux RADAR maritime par-dessus une cartographie vectorielle rendu grâce à WebGL !
Sur ShaderToy , les génies traitent, au minimum, de deux autres types de signaux :
  • Les images de synthèse par des raytraceur /raymarcheur temps réel comme celui-ci
  • Des sons/musiques avec des effets (cf ce sound shader de bargot)


Disposer d’univers et de musique de synthèse de manière procédurale sans aucune ressource a téléchargé (a part le code des shaders) est-elle inutile ?
Même si le débit et la bande passante, pour internet, augmentent continuellement …

La direction, de la boite pour laquelle je bosse, m’a finalement autorisé à utiliser WebGL pour remplacer notre vielle techno Flash. Ayant misé sur cette techno je vous invite tous à l’utiliser, sans modération, pour qu’elle ne disparaisse pas ! il n’y a pas que le jeu video comme domaine d’application, par exemples calculer moi la fin du monde grâce aux vertex shader, mais surtout sortez-vous les doigts du cul,gardé l'esprit ouvert et utiliser cette magnifique techno !
11  0 
Avatar de Astraya
Membre expérimenté https://www.developpez.com
Le 10/09/2014 à 15:07
J'ai testé les portages emscripten et désolé mais ils font perdre énormément en perfs... non seulement parce qu'on se retrouve avec un langage 20 fois plus lent que le c++ mais en plus parce que leur compilation c++ -> assembleur -> javascript complique énormément les calculs et il faut se taper la réecriture en js des parties à optimiser.

Le portage webgl de unreal engine chez moi tout ce qu'il arrive à faire c'est me planter la machine.

Le portage webgl de unity je l'ai à 3 fps environ. même la version flash était dix fois plus rapide.

quand tu vois la quantité de calcul rien que pour gérer une matrice camera tu comprends vite que javascript n'est pas en mesure de faire tourner des trucs comme physx ou du batching dynamique, et encore moins avec le portage super crade de emscripten.
Non mais tu es sérieux là? Tu penses vraiment que des boites comme Epic et Unity qui sont en très fortes concurrence sortiraient des démos à 3fps? Epic citadel tourne en moyenne entre 25 et 30 fps sur une machine bas de gamme. Si tu as des ralentissement alors le problème vient de TA machine, de TES drivers, de TES applications installées, de TES plugins... bref cela vient de TA machine cliente.
La même démo tourne en natif desktop à 48fps sur les mêmes machines, les perfs sur donc tout à fait acceptable pour un jeu dans un canvas HTML5.
Ton oeil voit à peine la différence au dessus de 30fps, après c'est juste une question de fatigue et de confort du regard, peu de moteur desktop peuvent se venter de faire du 60FPS continue sur PC et console. 30FPS ici c'est un très bon boulot.

Ces démos sont des vitrines commerciales! Comment tu peux penser qu'ils ont fait un boulot de m*rde qui tourne à 3 FPS?

De plus tu devrais plus te renseigner sur Emscripten... Tu dis (c++ -> assembleur -> javascript) moi je te dis (c++ -> LLVM -> javascript). Encore une fois, tu crois vraiment que si les technos était pourrit comme tu dis , Epic, Unity et d'autre perdrait leur argent dans le développement de leur moteur sur ces technos?

J'aimerais bien voir tes tests et le code créer pour.
7  0 
Avatar de scandinave
Membre averti https://www.developpez.com
Le 05/09/2014 à 22:24
t'es sûr que ça va pas donner un truc super lent comme sur tes démos qui rament abominablement ?parce que si on continue à pourrir le web de démos kill-cpu, les gens font finir par désactiver le javascript

si tu veux faire du shader gpu performant tu ferais bien mieux de rester sur flash, et si t'es allergique à leur compileur de shader en assembleur, essaye unity...
On a compris que tu n'aime pas webgl mais l'a tu réellement utilisé avant de cracher dessus? va sur threejs.org et dis moi que tu ram. Si c'est le cas c'est qu'il est grand temps de changer de pc. je l'ai testé au bureau sur des machines avec des pentium double coeur et une hd4000 en carte graphique. Ça tournais nickel.

Bref sinon dernièrement webgl m'a bien sauver la mise. Je devais faire une application de retouche photo. canvas étais bien trop lent pour appliquer des filtres. Grâce a webgl, l'application de plusieurs filtres en simultanés ne pause aucun problème. Alors oui je pense que webgl à un gros avenir. Libre a toi de t'en passer mais tu loupera certainement un wagon si tu compte faire de la 3d
6  0 
Avatar de SylvainPV
Rédacteur/Modérateur https://www.developpez.com
Le 11/09/2014 à 12:25
Citation Envoyé par jean_kevin_musclor Voir le message
Pour information chez google ils ont laissé tomber le javascript
7  1 
Avatar de Astraya
Membre expérimenté https://www.developpez.com
Le 11/09/2014 à 12:47
Donc tu es bien évidemment la personne la mieux placée pour parler de la programmation web.

J'aime bien ton raisonnement... moi j'ai programmé des moteurs de jeux donc moi j'ai la plus grosse donc moi je me permets de me prévaloir de tous les autres métiers.
lol
Est-ce que j'ai l'air de me vanter? Si un comptable vient t'expliquer comment déclarer tes impôts il se la pête?

Arrête de te faire passer pour un rageux qui peste contre tout et tout le monde. Ici c'est un forum d'échange, on est là pour échanger. Si tu viens pour hurler ta rage tu n'a rien à faire ici.
Je te donne mon avis et mon expérience pour que tu comprennes pourquoi je dis ça. Maintenant libre à toi de rester dans ton délire. Je m'arrête la pour t'aider à comprendre.
5  0 
Avatar de the Hound
Membre éprouvé https://www.developpez.com
Le 11/09/2014 à 15:01
Citation Envoyé par jean_kevin_musclor Voir le message
Peut-être bien parce que les charlatans qui veulent nous faire avaler que webgl est une techno vachement rapide, c'est sûrement pas avec des arguments honnêtes qu'ils vont pouvoir justifier ce grossier bobard.
Ah oui, donc toi t'y vas à coup d'arguments malhonnêtes, c'est plus efficace ...
5  0 
Avatar de the Hound
Membre éprouvé https://www.developpez.com
Le 11/09/2014 à 15:14
Non, c'est juste que ce que tu dis n'a pas de sens.
Je me permets seulement de le souligner
5  0 
Avatar de LittleWhite
Responsable 2D/3D/Jeux https://www.developpez.com
Le 11/09/2014 à 17:43
Jouez franc jeu, quel est la configuration de votre ordinateur, ou celle que vous considérez "ordinateur de tout le monde".
Pour le test du shader ligne par ligne, j'ai plus simple. Vous prenez le ShaderToy et vous testez. Dans le ShaderToy, vous n'avez qu'un shader, qui va directement sur le GPU (le coût CPU est pauvre, vu qu'il n'y a pas de géométrie ou autre et que le shader n'est uploadé qu'une fois (faut pas abuser)). Et c'est ce shader qui fait le rendu.
6  1 
Avatar de
https://www.developpez.com
Le 05/09/2014 à 20:47
Personnellement, je n'ai jamais (de ce que je m'en souviens) ou presque croisé d'application utilisant cette technologie et comme dit plus haut, je ne vois pas trop l'intérêt d'intégrer des applications 3D dans le navigateur ...
Pour moi, un navigateur est un outil qui permet de naviguer sur internet via des forums, des sites webs, mais n'est nullement une plateforme de jeu, et encore moins pour des jeux en 3D dont je trouve le rendu bien moins bon que dans un programme fonctionnant directement sur le PC de l'utilisateur.

D'un autre côté, je suis contre les plugins qui peuvent créer des problèmes de sécurité d'autant que flash, par exemple, n'est plus mis à jours ...
5  1 
Avatar de Neckara
Expert éminent sénior https://www.developpez.com
Le 06/09/2014 à 11:09
Citation Envoyé par super_navide Voir le message
javascript est le meilleur langage pour apprendre à programmer.
Ne nous lançons pas dans le troll .

Pour les devs C++, le meilleur langage pour apprendre à programmer, c'est le C++, pour les devs C, c'est le C, pour les devs Java, le Java, etc.
Bref, c'est un grand sujet à troll débat, et il y aurait beaucoup de choses à dire, à contre-dire. Mais je crains que ce ne soit pas le sujet ici .
5  1