WebGL - WebGL

WebGL
WebGL Logo.svg
Původní autoři Nadace Mozilla
Vývojáři Pracovní skupina Khronos WebGL
První vydání 03.03.2011 ( 03.03.2011 )
Stabilní uvolnění
2.0 / 17. ledna 2017 ( 2017-01-17 )
Plošina Cross-platform
K dispozici v Angličtina
Typ API
webová stránka www .khronos .org /webgl /

WebGL (Short for Web Graphics Library ) je JavaScript API pro vykreslování interaktivní 2D a 3D grafiky v jakémkoli kompatibilním webovém prohlížeči bez použití zásuvných modulů . WebGL je plně integrován s dalšími webovými standardy , což umožňuje použití fyziky a zpracování obrazu a efektů zrychlených pomocí GPU jako součásti plátna webové stránky. Prvky WebGL lze kombinovat s jinými prvky HTML a kombinovat s jinými částmi stránky nebo pozadí stránky.

Programy WebGL se skládají z řídicího kódu napsaného v JavaScriptu a shaderového kódu, který je napsán v OpenGL ES Shading Language (GLSL ES), jazyce podobném C nebo C ++ , a je prováděn na grafické jednotce (GPU) počítače . WebGL je navrženo a spravováno neziskovou společností Khronos Group .

Design

WebGL 1.0 je založen na OpenGL ES 2.0 a poskytuje API pro 3D grafiku. Používá prvek HTML5 canvas a je přístupný pomocí rozhraní Document Object Model (DOM).

WebGL 2.0 je založen na OpenGL ES 3.0 a zaručuje zaručenou dostupnost mnoha volitelných rozšíření WebGL 1.0 a odhaluje nová rozhraní API. Automatickou správu paměti zajišťuje implicitně JavaScript .

Stejně jako OpenGL ES 2.0, WebGL nemá API s pevnou funkcí zavedené v OpenGL 1.0 a zastaralé v OpenGL 3.0. Tuto funkci, pokud je to požadováno, musí implementovat koncový vývojář poskytnutím kódu shaderu a konfigurací datových vazeb v JavaScriptu.

Shadery ve WebGL jsou vyjádřeny přímo v GLSL a předány do WebGL API jako textové řetězce. Implementace WebGL kompiluje tyto instrukce shaderu do kódu GPU. Tento kód je spuštěn pro každý vrchol odeslaný prostřednictvím API a pro každý pixel rastrovaný na obrazovku.

Dějiny

WebGL se vyvinul z experimentů Canvas 3D, které v Mozille zahájil Vladimir Vukićević . Vukićević poprvé předvedl prototyp Canvas 3D v roce 2006. Do konce roku 2007 vytvořily Mozilla i Opera vlastní samostatné implementace.

Začátkem roku 2009 zahájilo neziskové technologické konsorcium Khronos Group pracovní skupinu WebGL s počáteční účastí společností Apple , Google , Mozilla, Opera a dalších. Verze 1.0 specifikace WebGL byla vydána v březnu 2011. V březnu 2012 je předsedou pracovní skupiny Ken Russell.

Mezi rané aplikace WebGL patří Zygote Body . V listopadu 2012 společnost Autodesk oznámila, že většinu svých aplikací přenesla do cloudu běžícího na místních klientech WebGL. Tyto aplikace zahrnovaly Fusion 360 a AutoCAD 360.

Vývoj specifikace WebGL 2 byl zahájen v roce 2013 s konečnou platností v lednu 2017. Tato specifikace vychází z OpenGL ES 3.0. První implementace jsou ve Firefoxu 51, Chrome 56 a Opera 43.

Implementace

Téměř nativní modul grafické vrstvy

Almost Native Graphics Layer Engine (ANGLE) je open source grafický engine, který implementuje standardy WebGL 1.0 (2.0, které úzce odpovídají ES 3.0) a OpenGL ES 2.0 a 3.0. Je to výchozí backend pro Google Chrome i Mozilla Firefox na platformách Windows a funguje tak, že překládá volání WebGL a OpenGL do dostupných API specifických pro platformu. ANGLE v současné době poskytuje přístup k OpenGL ES 2.0 a 3.0 k desktopovým OpenGL, OpenGL ES, Direct3D 9 a Direct3D 11 API. „[Google] Chrome používá ANGLE pro veškeré vykreslování grafiky ve Windows, včetně zrychlené implementace Canvas2D a prostředí sandboxu nativního klienta.“

Software

WebGL je široce podporován moderními prohlížeči. Jeho dostupnost však závisí na dalších faktorech, jako je grafický procesor, který jej podporuje. Oficiální webová stránka WebGL nabízí jednoduchou testovací stránku. Podrobnější informace (například jaký vykreslovací modul prohlížeč používá a jaká rozšíření jsou k dispozici) jsou k dispozici na webových stránkách třetích stran.

Prohlížeče pro stolní počítače

  • Google Chrome - WebGL 2.0 byl povolen na všech platformách, které mají schopnou grafickou kartu s aktualizovanými ovladači od verze 9, vydané v únoru 2011. Ve výchozím nastavení v systému Windows používá Chrome k překladu OpenGL ES vykreslovač ANGLE (Almost Native Graphics Layer Engine). na Direct X 9.0c nebo 11.0, které mají lepší podporu ovladačů. V Linuxu a Mac OS X je však výchozí renderer OpenGL. Je také možné vynutit OpenGL jako renderer v systému Windows. Od září 2013 má Chrome také novější renderer Direct3D 11, který však vyžaduje novější grafickou kartu. Chrome 56+ podporuje WebGL 2.0.
  • Firefox - WebGL 1.0 byl povolen na všech platformách, které mají schopnou grafickou kartu s aktualizovanými ovladači od verze 4.0. Od roku 2013 Firefox také používá DirectX na platformě Windows prostřednictvím ANGLE . Firefox 51+ podporuje WebGL 2.0.
  • Safari - Safari 6.0 a novější verze nainstalované v OS X Mountain Lion , Mac OS X Lion a Safari 5.1 v systému Mac OS X Snow Leopard implementovaly podporu pro WebGL 1.0, která byla ve výchozím nastavení zakázána před Safari 8.0. Safari verze 12 (k dispozici v systému MacOS Mojave) má dostupnou podporu pro WebGL 2.0, v současné době jako funkci „Experimentální“.
  • Opera - WebGL 1.0 byl implementován do Opery 11 a 12, i když byl ve výchozím nastavení zakázán v roce 2014. Opera 43+ podporuje WebGL 2.0.
  • Internet Explorer - WebGL 1.0 je v Internet Exploreru 11 částečně podporován . Zpočátku selhal ve většině oficiálních testů shody WebGL, ale Microsoft později vydal několik aktualizací. Nejnovější 0,94 WebGL engine aktuálně projde ~ 97% testů Khronos. Podporu WebGL lze také přidat ručně do dřívějších verzí aplikace Internet Explorer pomocí doplňků třetích stran, jako je IEWebGL.
  • Microsoft Edge -Počáteční stabilní verze podporuje WebGL verze 0.95 (kontextové jméno: "experimental-webgl") s otevřeným překladačem GLSL do HLSL . Verze 10240+ podporuje WebGL 1.0 s předponou. WebGL 2.0 je plánován se střední prioritou v budoucích verzích.

Mobilní prohlížeče

  • BlackBerry 10 - WebGL 1.0 je k dispozici pro zařízení BlackBerry od verze OS 10.00
  • BlackBerry PlayBook - WebGL 1.0 je k dispozici prostřednictvím WebWorks a prohlížeče v PlayBook OS 2.00
  • Prohlížeč Android - v zásadě není podporován, ale řada smartphonů Sony Ericsson Xperia s Androidem má po aktualizaci firmwaru funkce WebGL. Chytré telefony Samsung mají také povolen WebGL (ověřeno na Galaxy SII (4.1.2) a Galaxy Note 8.0 (4.2)). Podporováno v prohlížeči Google Chrome, který v mnoha telefonech nahradil prohlížeč Android (ale nejedná se o nový standardní prohlížeč Android).
  • Internet Explorer - WebGL 1.0 s předponou je k dispozici pro Windows Phone 8.x (11+)
  • Firefox pro mobily - WebGL 1.0 je k dispozici pro zařízení Android a MeeGo od Firefoxu 4.
  • Firefox OS
  • Google Chrome - WebGL 1.0 je k dispozici pro zařízení Android od Google Chrome 25 a ve výchozím nastavení je povolen od verze 30.
  • Maemo - V telefonu Nokia N900 je WebGL 1.0 k dispozici ve standardním prohlížeči microB od aktualizace firmwaru PR1.2 a dále.
  • MeeGo - WebGL 1.0 není v prohlížeči akcií „Web“ podporován. Je však k dispozici prostřednictvím prohlížeče Firefox .
  • Microsoft Edge - Prefixed WebGL 1.0 je k dispozici pro Windows 10 Mobile.
  • Opera Mobile - Opera Mobile 12 podporuje WebGL 1.0 (pouze pro Android).
  • Sailfish OS - WebGL 1.0 je podporován ve výchozím prohlížeči Sailfish.
  • Tizen - WebGL 1.0 je podporován
  • iOS - WebGL 1.0 je k dispozici pro mobilní Safari v systému iOS 8 .

Nástroje a ekosystém

Utility

Nízkoúrovňová povaha rozhraní WebGL API, které samo o sobě poskytuje jen málo pro rychlou produkci požadované 3D grafiky, přispěla k vytvoření knihoven, které se obvykle používají k vytváření věcí v 3D grafice (např. Transformace pohledu pro shadery , frustrace pohledu atd.) ). Základní úlohy, jako je načítání grafů scén a 3D objektů v populárních průmyslových formátech, jsou také abstrahovány knihovnami (z nichž některé byly přeneseny do JavaScriptu z jiných jazyků), aby poskytly další funkce. Neúplný seznam knihoven, které poskytují mnoho funkcí na vysoké úrovni, zahrnuje A-Frame (VR) , BabylonJS , PlayCanvas , three.js , OSG.JS a CopperLicht . X3D také vytvořil projekt s názvem X3DOM, aby obsah X3D a VRML běžel na WebGL. 3D model bude ve značce XML <X3D>v HTML5 a interaktivní skript bude používat JavaScript a DOM. Exportér BS Content Studio a InstantReality X3D může exportovat X3D ve formátu HTML a spustit pomocí WebGL.

Gavd

Rychle se také objevily herní enginy pro WebGL, 2D i 3D, včetně Unreal Engine 4 a Unity . Stage3D / Flash-based Away3D knihovny na vysoké úrovni má také port rozhraní WebGL přes strojopisem . Lehčí knihovna nástrojů, která poskytuje pouze vektorové a maticové matematické nástroje pro shadery, je sylvester.js. Někdy se používá ve spojení s konkrétním rozšířením WebGL s názvem glUtils.js.

Existuje také několik 2D knihoven postavených na WebGL, jako jsou Cocos2d -x nebo Pixi.js , které byly implementovány tímto způsobem z důvodů výkonu, což je krok, který odpovídá tomu, co se stalo s Starling Framework nad Stage3D ve světě Flash. Pokud není WebGL k dispozici, 2D knihovny založené na WebGL přejdou zpět na plátno HTML5.

Odstranění překážek vykreslování poskytnutím téměř přímého přístupu k GPU také odhalilo omezení výkonu v implementacích JavaScriptu. Některé byly řešeny pomocí asm.js a WebAssembly (podobně zavedení Stage3D odhalilo problémy s výkonem v jazyce ActionScript , které byly řešeny projekty jako CrossBridge ).

Tvorba obsahu

Stejně jako pro jakékoli jiné grafické API vyžaduje vytváření obsahu pro scény WebGL použití běžného nástroje pro vytváření 3D obsahu a export scény do formátu, který je čitelný v knihovně prohlížečů nebo pomocníků. K tomuto účelu lze použít desktopový 3D redakční software jako Blender , Autodesk Maya nebo SimLab Composer . Blend4Web zejména umožňuje , aby byla scéna WebGL vytvořena zcela v Blenderu a exportována do prohlížeče jediným kliknutím, a to i jako samostatná webová stránka. Existuje také určitý software specifický pro WebGL, jako je CopperCube a online editor Clara.io založený na WebGL . Online platformy jako Sketchfab a Clara.io umožňují uživatelům přímo nahrávat své 3D modely a zobrazovat je pomocí hostovaného prohlížeče WebGL.

Nástroje založené na prostředí

Navíc, Mozilla Foundation ve svém prohlížeči Firefox, zavedla vestavěnou technologii WebGL nástrojů počínaje verzí 27, které umožňují editaci vertex a fragment shaderů. Objevila se také řada dalších nástrojů pro ladění a profilování .

Viz také

Reference

externí odkazy