WebGL - WebGL

WebGL
WebGL Logo.svg
Originale forfattere Mozilla Foundation
Udvikler (er) Khronos WebGL -arbejdsgruppe
Første udgivelse 3. marts 2011 ( 2011-03-03 )
Stabil udgivelse
2.0 / 17. januar 2017 ( 2017-01-17 )
Platform På tværs af platforme
Tilgængelig i engelsk
Type API
Internet side www .khronos .org /webgl /

WebGL (forkortelse for Web Graphics Library ) er et JavaScript API til gengivelse af interaktiv 2D- og 3D-grafik i enhver kompatibel webbrowser uden brug af plug-ins . WebGL er fuldt integreret med andre webstandarder , hvilket tillader GPU-accelereret brug af fysik og billedbehandling og effekter som en del af websidens lærred. WebGL -elementer kan blandes med andre HTML -elementer og sammensættes med andre dele af siden eller sidebaggrunden.

WebGL -programmer består af kontrolkode skrevet i JavaScript og shader -kode, der er skrevet i OpenGL ES Shading Language (GLSL ES), et sprog, der ligner C eller C ++ , og udføres på en computers grafiske behandlingsenhed (GPU). WebGL er designet og vedligeholdt af den non-profit Khronos Group .

Design

WebGL 1.0 er baseret på OpenGL ES 2.0 og giver et API til 3D -grafik. Den bruger HTML5 -lærredselementet og får adgang ved hjælp af DOM -grænseflader ( Document Object Model ).

WebGL 2.0 er baseret på OpenGL ES 3.0 og garanteret tilgængelighed af mange valgfri udvidelser af WebGL 1.0 og afslører nye API'er. Automatisk hukommelsesstyring leveres implicit af JavaScript .

Ligesom OpenGL ES 2.0 har WebGL ikke de faste funktions- API'er, der er introduceret i OpenGL 1.0 og udfaset i OpenGL 3.0. Denne funktionalitet skal, hvis det er påkrævet, implementeres af slutudvikleren ved at angive shader-kode og konfigurere databindinger i JavaScript.

Shaders i WebGL udtrykkes direkte i GLSL og overføres til WebGL API som tekststrenge. WebGL -implementeringen kompilerer disse shader -instruktioner til GPU -kode. Denne kode udføres for hvert toppunkt, der sendes via API'en og for hver pixel, der er rasteriseret til skærmen.

Historie

WebGL udviklede sig ud fra lærred 3D -eksperimenterne startet af Vladimir Vukićević i Mozilla . Vukićević demonstrerede første gang en lærred 3D -prototype i 2006. I slutningen af ​​2007 havde både Mozilla og Opera foretaget deres egne separate implementeringer.

I begyndelsen af 2009, den non-profit teknologi konsortium Khronos Group startede WebGL arbejdsgruppe, med indledende deltagelse fra Apple , Google , Mozilla, Opera , og andre. Version 1.0 af WebGL -specifikationen blev frigivet marts 2011. Fra marts 2012 var formanden for arbejdsgruppen Ken Russell.

Tidlige applikationer af WebGL inkluderer Zygote Body . I november 2012 meddelte Autodesk , at de overførte de fleste af deres applikationer til skyen, der kører på lokale WebGL -klienter. Disse applikationer omfattede Fusion 360 og AutoCAD 360.

Udviklingen af ​​WebGL 2 -specifikationen startede i 2013 med endelig i januar 2017. Denne specifikation er baseret på OpenGL ES 3.0. De første implementeringer er i Firefox 51, Chrome 56 og Opera 43.

Implementeringer

Næsten indbygget grafisk lagmotor

Almost Native Graphics Layer Engine (ANGLE) er en open source grafikmotor, der implementerer WebGL 1.0 (2.0, der tæt overholder ES 3.0) og OpenGL ES 2.0 og 3.0 standarder. Det er en standard backend for både Google Chrome og Mozilla Firefox på Windows-platforme og fungerer ved at oversætte WebGL- og OpenGL-opkald til tilgængelige platformspecifikke API'er. ANGLE giver i øjeblikket adgang til OpenGL ES 2.0 og 3.0 til desktop OpenGL, OpenGL ES, Direct3D 9 og Direct3D 11 API'er. ″ [Google] Chrome bruger ANGLE til al grafikgengivelse på Windows, herunder den hurtige implementering af Canvas2D og Native Client -sandkassemiljøet. ″

Software

WebGL understøttes bredt af moderne browsere. Men dens tilgængelighed er afhængig af andre faktorer som GPU'en, der understøtter den. Det officielle WebGL -websted tilbyder en simpel testside. Mere detaljerede oplysninger (f.eks. Hvilken renderer browseren bruger, og hvilke udvidelser der er tilgængelige) findes på tredjepartswebsteder.

Desktop -browsere

  • Google Chrome - WebGL 2.0 er blevet aktiveret på alle platforme, der har et kompatibelt grafikkort med opdaterede drivere siden version 9, udgivet i februar 2011. Som standard på Windows bruger Chrome ANGLE (Almost Native Graphics Layer Engine) renderer til at oversætte OpenGL ES til Direct X 9.0c eller 11.0, som har bedre driverunderstøttelse. På Linux og Mac OS X er standard rendereren imidlertid OpenGL. Det er også muligt at tvinge OpenGL som renderer på Windows. Siden september 2013 har Chrome også en nyere Direct3D 11 -renderer, som dog kræver et nyere grafikkort. Chrome 56+ understøtter WebGL 2.0.
  • Firefox - WebGL 1.0 er blevet aktiveret på alle platforme, der har et egnet grafikkort med opdaterede drivere siden version 4.0. Siden 2013 bruger Firefox også DirectX på Windows -platformen via ANGLE . Firefox 51+ understøtter WebGL 2.0.
  • Safari - Safari 6.0 og nyere versioner installeret på OS X Mountain Lion , Mac OS X Lion og Safari 5.1 på Mac OS X Snow Leopard implementerede understøttelse af WebGL 1.0, som blev deaktiveret som standard før Safari 8.0. Safari version 12 (tilgængelig i MacOS Mojave) har tilgængelig support til WebGL 2.0, i øjeblikket som en "eksperimentel" funktion.
  • Opera - WebGL 1.0 er blevet implementeret i Opera 11 og 12, selvom det som standard blev deaktiveret i 2014. Opera 43+ understøtter WebGL 2.0.
  • Internet Explorer - WebGL 1.0 understøttes delvist i Internet Explorer 11 . Det mislykkedes oprindeligt de fleste officielle WebGL -overensstemmelsestest, men Microsoft udgav senere flere opdateringer. Den seneste 0,94 WebGL -motor består i øjeblikket ~ 97% af Khronos -testene. WebGL-understøttelse kan også tilføjes manuelt til tidligere versioner af Internet Explorer ved hjælp af tredjeparts plugins, f.eks. IEWebGL.
  • Microsoft Edge -Den første stabile version understøtter WebGL-version 0.95 (kontekstnavn: "eksperimentel-webgl") med en open source GLSL til HLSL- transpiler . Version 10240+ understøtter WebGL 1.0 som præfiks. WebGL 2.0 er planlagt med mellemprioritet i fremtidige udgivelser.

Mobile browsere

  • BlackBerry 10 - WebGL 1.0 er tilgængelig for BlackBerry -enheder siden OS version 10.00
  • BlackBerry PlayBook - WebGL 1.0 er tilgængelig via WebWorks og browser i PlayBook OS 2.00
  • Android -browser - Grundlæggende ikke understøttet, men Sony Ericsson Xperia -serien af ​​Android -smartphones har haft WebGL -muligheder efter en firmwareopgradering. Samsung smartphones har også WebGL aktiveret (verificeret på Galaxy SII (4.1.2) og Galaxy Note 8.0 (4.2)). Understøttes i Google Chrome, der erstattede Android -browseren i mange telefoner (men er ikke en ny standard Android -browser).
  • Internet Explorer - Prefix WebGL 1.0 er tilgængelig på Windows Phone 8.x (11+)
  • Firefox til mobil - WebGL 1.0 er tilgængelig til Android og MeeGo -enheder siden Firefox 4.
  • Firefox OS
  • Google Chrome - WebGL 1.0 er tilgængelig for Android -enheder siden Google Chrome 25 og aktiveret som standard siden version 30.
  • Maemo - I Nokia N900 er WebGL 1.0 tilgængelig i lager -microB -browseren fra og med firmwareopdateringen PR1.2.
  • MeeGo - WebGL 1.0 understøttes ikke i lagerbrowseren "Web". Den er dog tilgængelig via Firefox .
  • Microsoft Edge - Prefixed WebGL 1.0 er tilgængelig på Windows 10 Mobile.
  • Opera Mobile - Opera Mobile 12 understøtter WebGL 1.0 (kun på Android).
  • Sailfish OS - WebGL 1.0 understøttes i standard Sailfish -browseren.
  • Tizen - WebGL 1.0 understøttes
  • iOS - WebGL 1.0 er tilgængelig til mobil Safari i iOS 8 .

Værktøjer og økosystem

Hjælpeprogrammer

Det lave niveau karakter af WebGL-API'en, som giver lidt på egen hånd til at producere ønskelige 3D-grafik hurtigt, bidraget til skabelsen af biblioteker, der typisk bruges til at bygge tingene op i 3D-grafik (f.eks se transformationer til shaders , se stub osv ). Grundlæggende opgaver som at indlæse scenediagrammer og 3D -objekter i de populære industriformater abstraheres også af bibliotekerne (hvoraf nogle blev portet til JavaScript fra andre sprog) for at give yderligere funktionalitet. En ikke-udtømmende liste over biblioteker, der indeholder mange funktioner på højt niveau, inkluderer A-Frame (VR) , BabylonJS , PlayCanvas , three.js , OSG.JS og CopperLicht . X3D lavede også et projekt kaldet X3DOM for at få X3D- og VRML -indhold til at køre på WebGL. 3D -modellen vil i XML -tag <X3D>i HTML5 og interaktivt script bruge JavaScript og DOM. BS Content Studio og InstantReality X3D eksportør kan eksportere X3D i HTML og køre med WebGL.

Gavd

Der har også været en hurtig fremkomst af spilmotorer til WebGL, både 2D og 3D, herunder Unreal Engine 4 og Unity . Det Stage3D /Flash-baserede Away3D -bibliotek på højt niveau har også en port til WebGL via TypeScript . Et mere let værktøjsbibliotek, der kun leverer vektor- og matrixmatematikværktøjer til shaders, er sylvester.js. Det bruges undertiden sammen med en WebGL -specifik udvidelse kaldet glUtils.js.

Der er også nogle 2D -biblioteker bygget oven på WebGL som Cocos2d -x eller Pixi.js , som blev implementeret på denne måde af præstationsmæssige årsager, i et træk, der er parallelt med, hvad der skete med Starling Framework over Stage3D i Flash -verdenen. De WebGL-baserede 2D-biblioteker falder tilbage til HTML5-lærred, når WebGL ikke er tilgængelig.

Fjernelse af renderingsflaskehalsen ved at give næsten direkte adgang til GPU'en afslørede også ydelsesbegrænsninger i JavaScript -implementeringerne. Nogle blev adresseret af asm.js og WebAssemble (på samme måde blev introduktionen af ​​Stage3D -eksponerede ydelsesproblemer inden for ActionScript , som blev behandlet af projekter som CrossBridge ).

Oprettelse af indhold

Som med enhver anden grafisk API kræver oprettelse af indhold til WebGL -scener at bruge et almindeligt 3D -indholdsoprettelsesværktøj og eksportere scenen til et format, der kan læses af seeren eller hjælperbiblioteket. Desktop 3D -redigeringssoftware som Blender , Autodesk Maya eller SimLab Composer kan bruges til dette formål. Især tillader Blend4Web, at en WebGL -scene udelukkende kan redigeres i Blender og eksporteres til en browser med et enkelt klik, selv som en selvstændig webside. Der er også nogle WebGL-specifikke software som CopperCube og den online WebGL-baserede editor Clara.io . Online platforme som Sketchfab og Clara.io giver brugerne mulighed for direkte at uploade deres 3D -modeller og vise dem ved hjælp af en hostet WebGL -fremviser.

Miljøbaserede værktøjer

Derudover har Mozilla Foundation i sin Firefox-browser implementeret indbyggede WebGL-værktøjer, der starter med version 27, der tillader redigering af vertex og fragment shaders. En række andre fejlfindings- og profileringsværktøjer er også dukket op.

Se også

Referencer

eksterne links