Google wil OpenGL-drivers voor 3d-versnelling in browsers overbodig maken

Google wil met een nieuw project 3d-acceleratie in browsers mogelijk maken, zonder dat het systeem waarop de browser draait OpenGL-drivers moet hebben. De code van het Angle-project wordt onder een bsd-licentie vrijgegeven.

WebGL is een crossplatformstandaard die 3d-acceleratie naar browsers zoals Chrome en Safari brengt. Het gaat om een tussenlaag die het mogelijk maakt om de OpenGL ES 2.0-api, bedoeld voor gebruik op embedded systemen, via javascript aan te roepen. De huidige WebGL-implementaties vereisen dat OpenGL op de desktop wordt aangeroepen. Dit is geen probleem bij Linux en Mac OS X, waar OpenGL de standaard-3d-api is. Bij Windows zijn OpenGL-drivers echter niet altijd aanwezig, omdat hier veelal Microsofts Direct3D als 3d-api wordt gebruikt.

"Helaas betekent deze situatie dat veel Windows-machines geen WebGL-content kunnen renderen, ook al is er krachtige hardware aanwezig, omdat de benodigde OpenGL-drivers niet zijn geïnstalleerd", schrijft Henry Bridge, productmanager voor Chromium bij Google. Het Angle-project wil een groot deel van de OpenGL ES 2.0-api implementeren, waardoor het ook voor ontwikkelaars van applicaties voor mobiele en embedded systemen interessant kan zijn. Angle staat voor Almost Native Graphics Layer Engine en de code die het project oplevert, moet OpenGL ES 2.0 naar DirectX vertalen. Google brengt de code onder een opensource-bsd-licentie uit.

Door Olaf van Miltenburg

Nieuwscoördinator

22-03-2010 • 18:27

90

Reacties (90)

90
90
51
1
0
1
Wijzig sortering
Dit is geen probleem bij Linux en Mac OS X, waar OpenGL de standaard-3d-api is. Bij Windows zijn OpenGL-drivers echter niet altijd aanwezig, omdat hier veelal Microsofts Direct3D als 3d-api wordt gebruikt.
Dit is niet helemaal correct:

Microsoft levert standaard een OpenGL 1.4 implementatie mee met Windows. Microsoft update haar OpenGL implementatie al jaren niet meer. De OpenGL ondersteuning onder Windows is daardoor geheel afhankelijk van de drivers die door hardware fabrikanten geleverd worden. Als iemand dus geen recente drivers geinstalleerd heeft, of de fabrikant levert slechte OpenGL drivers (Intel bijvoorbeeld), dan heeft de gebruiker een probleem.

Dit staat geheel los van het wel of niet gebruiken van Direct3D: Direct3D en OpenGL kunnen zonder problemen naast elkaar bestaan.

edit
kleine toevoeging: volgens mij zitten in de standaard drivers die Microsoft voor videokaarten meelevert bij het OS geen OpenGL drivers. Kortom, iemand die nooit zijn drivers update zit met Microsoft zijn stokoude OpenGL 1.4 implementatie. OpenGL wordt hierdoor feitelijk uit de markt gedrukt door Microsoft.

[Reactie gewijzigd door The Flying Dutchman op 23 juli 2024 06:15]

Anoniem: 80466 22 maart 2010 21:44
In de grafische demo die MS gelanceerd heeft met IE9 is google chrome de traagste browser.
OpenGL of WebGL gaan dat niet oplossen.
Daarmee halen de IE9 niet in omdat die directx gebruikt.
En Google wil natuurlijk de snelste browser.
Google heeft iets nodig om te concurreren met DirectX

[Reactie gewijzigd door Anoniem: 80466 op 23 juli 2024 06:15]

DirectX is niet per definitie sneller dan OpenGL... WebGL is gewoon een 'wrapper' voor javascript om OpenGL aan te kunnen roepen.
Tja, op linux is IE (als je m aan de praat krijgt, geen native binaries) ook erg traag, dus dat zegt niet zoveel.
IE9 is geen embedded browser, en IE / DirectX is van oudsher op x86 / de desktop gericht dus geen logische keuze voor 'embedded'.

IE9 / DirectX zijn weinig interessant in de wereld van smartphones / tablets waar de meerderheid van de apparaten geen Windows draait, ook al zou IE9 de snelste browser zijn. Logisch dat ontwikkelaars voor mobiele platforms dus kiezen voor Open GL ES, ook al werkt Microsoft hier liever niet aan mee. Wat Google hier doet is mededogen tonen voor de ~20% van de voornoemde markt die nog wel Windows draaien, en zorgen dat ze toch nog een erop-gepleisterde versie van snelle WebGL gebruiken kunnen.

WebGL voor mobiele Windows zal zijn wat Flash/Silverlight voor de Linux-desktop is: Het werkt wel, maar is er niet voor ontworpen en voor een prettige ervaring kan je toch beter het platform met het grootste marktaandeel kiezen.
Wauw geweldig! Hopelijk kunnen ze hiermee Flash content overbodig maken
Flash overbodig maken met 3d in je browser?

Ik denk dat er tegenwoordig al genoeg technieken zijn om Flash overbodig te maken, zoals SVG, <canvas> en <video> (alle 3 niet ondersteund door IE, of in ieder geval niet in IE8). Met SVG kun je genoeg "platte" dingen maken, die je met javascript (DOM) kunt bewerken, dus zo kun je 2d spellen maken. Voor 3d zou je <canvas> kunnen gebruiken, wat ook weer gewoon met javascript werkt, en voor video's kun je <video> gebruiken. Flash kan momenteel dus al overbodig zijn, daarvoor is geen full fledged 3d API in je browser nodig.
OpenGL is ook bruikbaar voor 2d-dingen, en wordt in ieder geval hardwarematig versneld. En het zou zomaar kunnen dat kaarten die niet ondersteund worden door de hardwarematige versnelling van Flash, wel dit kunnen versnellen. Samen met de video-tags en alles zou dat Flash best overbodig kunnen maken.
Je kan inderdaad 2D dingen best met SVG doen, maar prestaties daarvan zijn niet echt om over naar huis te schrijven, zeker niet als je een game maakt. 3D kan inderdaad op canvas (net als 2D trouwens, best leuk om mee te spelen), maar ook daar zijn prestaties niet het beste.
Die prestaties liggen dus volledig aan de browser.
Als je Opera de Peacekeeper benchmark laat draaien krijg je bij complex graphics resultaten waar zelfs Chrome "U" tegen zegt (tikt op mijn 2,8GHz dual core net niet de 10.000 punten aan, terwijl de gemiddelde/het totaal maar 3200 is (complex graphics telt niet mee in het totaal, omdat IE het niet ondersteund)). In Opera 10.50 is het render backend ook van de grond af gebouwd, en is het eerst in gebruik geweest voor puur SVG en <canvas> (zal ergens in Opera 10 zijn geweest), daarna is het pas in gebruik genomen voor alle taken (incl. het browser window zelf).

Ook is van Opera al ruim een jaar bekend dat ze bezig zijn met hardware acceleration voor het render backend, FF is hier meen ik niet zo lang geleden ook mee begonnen, en van IE meen ik ook eens gelezen te hebben dat MS dat wilde gaan doen. Dus als dadelijk de bekende browsers allemaal hardware accelerated zijn, zal dat de performance van SVG en <canvas> ook dik ten goede komen.
Flash heeft ook 3D-accelleratie, voor spellen zou dit flash wel overbodig kunnen maken.
offtopic: SVG werkt in de IE9 preview... is één van hun "vernieuwingen"
Anoniem: 174991 @Niosus22 maart 2010 21:09
Yes, ongelofelijk dat de engineers van Microsoft dit eindelijk voor elkaar hebben gekregen. Biedt in ieder geval interessante mogelijkheden.
Anoniem: 329146 @RobertMe23 maart 2010 14:16
Alleen zijn deze technieken vandaag de dag nog niet samengevoegd en tot standaard verheven en worden ze ook niet zo gebruikt. In de praktijk is het canvas net zoals de <video> tag vrij nutteloos. Voorlopig in ieder geval; ik kijk uit naar HTML5 en CSS3.0
Ik zie niet helemaal in wat OpenGL nu te maken heeft met Flash??
kan dit niet al gewoon geimplementeerd worden in HTML5?
Te snel, te veel.

HTML5 is voor het grote deel al vastgelegd. Om nu nog grote veranderingen aan te brengen zoals de deze is niet heel verstandig.. Misschien voor HTML6? :)
Waarom zou dit in HTML5 (of welke HTML versie dan ook) vastgelegd moeten worden? Wat er vastgelegd moet worden, dat is de manier om vanuit een website/webapplicatie 3D-objecten te kunnen manipuleren, men heeft hierbij gekozen om OpenGL als uitgangspunt te gebruiken - waarschijnlijk omdat dit een redelijk open standaard is.

Hoe een browserfabrikant dit verder intern afhandelt, dat moet niet in de standaard vastgelegd worden. Als er een browser-maker is die het weer op een andere manier zou willen mappen -niet dat ik naast OpenGL en DirectX iets weer te verzinnen overigens- dan is dat iets wat die fabrikant zelf moet weten.
Dit moet niet in HTML vast gelegd worden, maar meer in een Javascript standaard of zo iets.
.oisyn Moderator Devschuur® @Nickname5523 maart 2010 00:56
Ook niet. Wat Google hier doet is een implementatie maken van WebGL die onder de motorkap gebruik maakt van D3D in plaats van OpenGL. Browsermakers kunnen dat gebruiken om toch hardware versnelde content af te kunnen spelen ookal zijn er geen OpenGL drivers voor het systeem beschikbaar.
Anoniem: 167912 @starfight22 maart 2010 19:43
één of ander bedrijf lanceert de intentie om een product te maken en gij wilt het al direct tot wereldwijde standaard bombarderen nog voor er één regel code beschikbaar is? vreemd...
Dit siert Google dan altijd wel weer, dat ze het onder de BSD licentie vrijgeven zodat zelfs concurrerende browsers er gewoon gebruik van kunnen gaan maken :)
Als ze dat niet doen krijgen ze niet echt een draagvlak ervoor.
Ik geloof niet dat je het goed gelezen hebt. Ze hebben geen draagvlak nodig.

Google lanceert dus niet WebGL, dat is een bestaande standaard van khronos.

Wat ze bouwen is een implementatie van WebGL die DirectX gebruikt i.p.v. OpenGL, wat op zich nog niet zo eenvoudig is omdat WebGL juist veel op OpenGL lijkt. Dat moet dus vertaald worden.

Wat ze dus hebben gebouwd is een implementatie van een bestaande standaard die op de achtergrond zijn werk doet. En door de BSD licentie kan iedereen, incluis Mozilla en Microsoft, gebruik maken van hun werk.

Wel heb je een punt als je bedoelt dat Google hiermee het web als applicatie platform verstevigt en bevordert en daarmee hun cloud-based bedrijfsmodel.
Anoniem: 47200 @mkools2422 maart 2010 18:44
Dit siert Google dan altijd wel weer, dat ze het onder de BSD licentie vrijgeven zodat zelfs concurrerende browsers er gewoon gebruik van kunnen gaan maken :)
Als je van iets een standaard wilt maken maar het wel closed source wilt maken dan denk ik niet dat er ook maar iemand in trapt.

Of je moet natuurlijk iets baanbrekends hebben waar niemand anders ook maar enigzins bij in de buurt kan komen qua snelheid danwel functionaliteit.

Het blijft echter netjes dat ze dit soort initiatieven ondernemen, dat zeker.
Of je hebt toevallig een grootmarktaandeel al ;)
Ik dacht dat de Intel, ATI en Nvidia drivers standaard gewoon allemaal al OpenGL ondersteuning hadden? OEM desktops worden toch over het algemeen standaard al gewoon geleverd met de officiële drivers? Stamt dit niet een beetje uit het W9X tijdperk?
Dat ze het ondersteunen wil niet zeggen dat het ook geactiveerd is, je kan het niet beide tegelijk gebruiken waarschijnlijk.
Het gaat om een tussenlaag die het mogelijk maakt om de OpenGL ES 2.0-api, bedoeld voor gebruik op embedded systemen, via javascript aan te roepen.
Het is dan ook niet bedoeld voor desktops als ik het zo lees, maar voor embedded systemen. ATI, Intel en nVidia hebben allen OpenGL support aanboord.

-edit-
Niet goed gelezen, nevermind! :P

[Reactie gewijzigd door Dubbeldrank op 23 juli 2024 06:15]

En waarom niet gewoon de open gl driver installeren bij de installatie van de browser? (is zeker te makkelijk)
Mogelijk is er het probleem dat dit weer afhankelijk is van de aanwezige hardware en je dus voor iedere verschillende VGA-chip je weer een andere driver mee moet leveren... Zo gemakkelijk is het dan dus niet.

Door de boel te remappen op de (proprietaire) MS-DirectX laag heb je echter helemaal geen OpenGL drivers meer nodig en laat op zo'n beetje alle MS-Windows installaties er een DirectX driver aanwezig zijn...
Je begrijpt toch dat de browser zelf OpenGL in je OS zou kunnen aanspreken en de code gewoon 1-op-1 doorgeven met wat beperkingen op specificaties van afmetingen, locatie.

Er is geen enkel driver probleem aangezien je die toch nu al hebt (standaard in elke Windows versie zit er een opengl library die alles software matig implementeert. Als je je vga drivers installeert wordt er een geoptimaliseerde voor jouw hardware gebruikt).

Het simpelste zou zijn om een standaard te maken die het gebruik van OpenGL een aantal methodes beperkt voor gebruik in browsers en dat browsers deze (methodes) implementeren en de drivers van je OS gebruiken.
Bij Windows zijn OpenGL-drivers echter niet altijd aanwezig, omdat hier veelal Microsofts Direct3D als 3d-api wordt gebruikt.
Er is blijkbaar toch een probleem want ik neem aan dat Henry Bridge dit niet voor de grap zegt en dus niet voor de grap met het Angle-project komt.
Als je nooit 3rd party drivers van de grfx fabrikant zelf hebt geinstalled op Windows kan het dus zijn dat je OpenGL niet (goed) werkt.

Google wil gewoon de boel gewoon zo simpel mogelijk maken voor mensen en zorgen dat hun product gewoon werkt, ook bij het volk dat niet eens weet wat een driver is.

Zolang er ook gewoon een optie is om direct OpenGL gebruik aan te zetten, voor de gevordere gebruikers die weten dat hun driver OK is, is iedereen blij.
Mogelijk is er het probleem dat dit weer afhankelijk is van de aanwezige hardware en je dus voor iedere verschillende VGA-chip je weer een andere driver mee moet leveren...
moet Microsoft dit niet al 10 jaar kunnen met Windows updates?
Omdat de OpenGL drivers van Intel (50% v/d markt) voor Windows crap zijn.
Op zich niks mis mee, maar hoe vaak komt de combinatie 'krachtige hardware' en 'drivers zonder OpenGL ondersteuning' daadwerkelijk voor? Nu is OpenGL ondersteuning bij ATI en nu AMD niet fantastisch te noemen, maar dat betekent niet dat deze er niet is. Graphics van Intel zijn niet bepaald krachtig te noemen. Misschien dat ze meer op ondersteuning voor de nieuwste versies (nu 3.3) doelen?

[Reactie gewijzigd door Mitsuko op 23 juli 2024 06:15]

Anoniem: 63628 @Mitsuko22 maart 2010 19:51
OpenGL bij ATi is goed zat, dat OpenGL bij ATi niet zo geweldig was, is al weer een flinke tijd achterhaald en sowieso moet 't zeker voor dit soort ongein voldoende zijn. Ik kan inderdaad ook totaal geen situaties bedenken waarbij de OpenGL driver mist onder Windows. Iedere fabrikant heeft hier wel een implementatie van. Ik mis hier dan ook een beetje wat Google probeert te bereiken.
Google streeft een browser PC concept na. In ieder geval met hun Chrome OS. En als de browser het OS wordt, ontkom je er eigenlijk niet aan om 3D acceleratie in je browser te implementeren.

Maar inderdaad verder heeft bijna elke Windows, Apple en Linux PC volgens mij ook al OpenGL support. Misschien zit het probleem in de verschillende implementaties van OpenGL of is de dekking van OpenGL toch niet zo breed als ik nu aan neem.
Anoniem: 100386 22 maart 2010 18:37
Ik zie een nadeel in het gebruik van java als medium. Java staat op zichzelf niet bekend als vlot. Een implementatie in HTML zie idd meer als een goed optie.
Ik zie een nadeel in het gebruik van java als medium. Java staat op zichzelf niet bekend als vlot.
We leven echt niet meer in pre-Java-JIT tijd.
Een implementatie in HTML zie idd meer als een goed optie.
HTML is een markup taal, je kan geen 3D rendering engine maken in een markup taal.
http://jsviewfinder.googlecode.com/

Een probeersel van mezelf; pseudo-3D, maar toch :)
Vooral met de snellere browsers van vandaag zijn er best leuke effecten te behalen!
En voor die 3D te realiseren gebruik je Javascript.
Als je markup language zich beperkt tot twee dimensies. Markup kan je ook bekijken in een 3d omgeving.
VRML is ook een markup taal en wordt gebruikt voor 3D omgevingen te specificeren.

Wat ik zei is dat je geen 3D rendering engine kan definieren in een markup taal. Net zoals je geen word processer kan maken in een tekst document.
Misschien dat je de volgende keer eerst leest voordat je reageert, het gaat hierbij om JavaScript en niet om Java. Verder is Java (JVM) helemaal niet zo traag, het is vaak een brakke implementatie van Java (Applets) die je het idee geven dat 't traag is (en eventueel de trage opstart van de JVM, maar als die eenmaal gestart is heb je daar ook geen last meer van).

Nu zou je misschien kunnen roepen: "Ja maar, JavaScript is toch ook traag, omdat dit geintepreteerd moet worden!". Dat is inderdaad ten dele waar, maar inmiddels zijn alle grote browser-fabrikanten bezig met het implementeren van zeer snelle JavaScript-engiens (Google, Opera, Apple, Mozilla) of zijn ze er mee bezig (Microsoft).

Wat je met implementatie in HTML bedoelt, behalve het gebruik van JavaScript, is mij verder een raadsel overigens....
Dit is een beetje een Klok-Klepel reactie. Ten eerst gaat het hier niet over Java, maar over Javascript, wat 2 totaal verschillende talen zijn.

Ten tweede is het feit dat java zogenaamd niet bekend staat als vlot ook nogal een loos argument. Er zijn inderdaad best zaken waar Java achterblijft bij andere talen/platformen, echter is er op zich niks mis met de performance van Java.

Ten derde is het doel van dit soort dingen ook niet om een volledige high-budget game te maken. Daarvoor wil je toch veel meer controle over de hardware hebben, terwijl je in de browser juist erg veel limitaties op wil leggen, om zo te zorgen dat er geen kwaadwillende code uitgevoerd kan worden.
het gaat hier om javascript die de onderliggende laag aanroept. Niet Java, dat is een totaal ander product.
Waar lees jij iets over java dan?
Een soort omgekeerde WINE dus. IPV DirectX => OpenGL, nu OpenGL => DirectX.
Nope, WINE is niet DirectX => OpenGL, dat is een van de dingen die WINE doet om haar doel te bereiken, namelijk de Windows-API implementeren voor Linux.
Wat jij zegt zou hetzelfde zeggen als een apparaat dat afvalstoffen omzet naar benzine het omgekeerde van een auto is. Maar een auto is geen apparaat dat benzine omzet naar afvalstoffen, een auto is een apparaat dat personen van A naar B kan brengen, en daarvoor moet het nog wel eens benzine omzetten naar afvalstoffen.

Op dit item kan niet meer gereageerd worden.