WebGL

**WebGL** ehk **Web Graphics Library** on JavaScripti rakendusliides, mis aitab renderdada interaktiivset 2D- ja 3D-graafikat läbi veebibrauseri ilma pistikprogrammideta. 

WebGL-i elemente saab segada kokku HTML-elementidega ning kompositeerida teiste osadega lehest või lehe taustast. WebGL programmid koosnevad kontrollkoodist, mis on kirjutatud JavaScriptis, ning varjutaja koodist, mis on kirjutatud C ja C++ keeltega sarnases ESSL-is (*OpenGL ES Shading Language*), ning WebGLi käitatakse arvuti graafikakaardi abil. WebGL-i haldab mittetulundusühendus Khronos Group.

WebGL põhineb OpenGL ES-i programmil ning kasutab HTML5 lõuendi elementi, ning sellele pääseb ligi läbi dokumendi objektimudeli (DOM) liideste. Kuna tegemist on JavaScripti rakendusliidesega, pärinevad WebGL-i mälukoristusvahendid JavaScriptist.

## Ajalugu
WebGL kasvas välja eksperimentaalsest tarkvarast Canvas 3D, mille arendamisega tegeles Mozillas Vladimir Vukićević. Vukićević demonstreeris Canvas 3D prototüüpi esimest korda 2006. aastal. 2007. aasta lõpuks olid oma implementatsioonid Canvas 3D-st loonud nii Mozilla kui ka Opera.

Canvas 3D põhjal alustas mittetulundusühing Khronos Group 2009. aasta algul töörühma WebGL Working Group, milles osalesid ka Apple, Google, Mozilla, Opera ja teised.
 WebGL spetsifikatsiooni versioon 1.0 ilmus 2011. aasta märtsis.

Versiooni 2.0 loomine algas 2013. aastal ning spetsifikatsioon ilmus 2017. aasta jaanuaris. Esimesed implementatsioonid WebGL versioonist 2.0 olid Firefoxi versioonis 51, Chrome'i versioonis 56 ja Opera versioonis 43.

## Tarkvara
WebGL on tänapäevastes veebibrauserites laialdaselt toetatud. Siiski võib selle kättesaadavus oleneda ka riistvaralistest teguritest, eelkõige seoses graafikakaardiga. WebGL ametlikul veebisaidil leidub lihtne test, mis aitab kindlaks teha, kas WebGL on toetatud. Detailsemat infot WebGL implementatsiooni ja muu kohta leiab kolmandate osapoolte loodud veebilehtedelt.

### Töölauabrauserid
*Google Chrome – WebGL 1.0 on toetatud alates versioonist 9, mis ilmus 2011. aasta veebruaris. WebGL 2.0 on toetatud alates versioonist 56.
*Mozilla Firefox – WebGL 1.0 on toetatud alates versioonist 4.0. WebGL 2.0 on toetatud alates versioonist 51.
*Safari – Safari 6.0 ning uuemad versioonid OS X Mountain Lioni ning Mac OS X Lioni peal pakuvad WebGL 1.0 toetust, samuti Safari 5.1 ning uuemad versioonid Mac OS X Snow Leopardil, kuid enne Safari versiooni 8.0 oli WebGL vaikimisi välja lülitatud. Safari versioon 12 macOS Mojave peal pakub WebGL 2.0 toetust, kuid toetus on märgitud kui "eksperimentaalne" funktsioon.
*Opera – WebGL 1.0 implementeeriti versioonides 11 ja 12, kuid oli vaikimisi välja lülitatud. WebGL 2.0 on toetatud alates versioonist 43.
*Internet Explorer – WebGL 1.0 on osaliselt toetatud versioonis 11. Varasemad Internet Exploreri versioonid toetavad WebGL-i kolmandate osapoolte loodud pistikprogrammide, nagu IEWebGL abil.
*Microsoft Edge – WebGL 1.0 on toetatud alates versioonist 10240. WebGL 2.0 on toetatud alates Chromiumi baasil töötavast versioonist 76.

### Mobiilsed brauserid
*Androidi brauser – pole pakkunud kunagi ametlikult WebGL-i toetust. Mõningad Sony Xperia ning Samsungi telefonid toetavad WebGL-i osaliselt. Suuremas osas Androidi telefonides asendati brauser Google Chrome'iga, mis WebGL-i toetab, kuid ei ole Androidi brauseri enda versioon.
*Firefox for Android – WebGL 1.0 on toetatud alates versioonist 4.WebGL 2.0 on toetatud alates versioonist 68.
*Google Chrome – WebGL 1.0 on toetatud alates versioonist 25 ja vaikimisi sisse lülitatud alates versioonist 30. WebGL 2.0 on toetatud alates versioonist 78.
*Microsoft Edge – WebGL 1.0 on toetatud alates Windows 10 Mobile versioonist. 
*Opera Mobile – WebGL on implementeeritud alates versioonist 12, kuid ainult Androidil. Alates versioonist 46 on toetatud ka WebGL 2.0.
*iOS Safari – WebGL on toetatud alates iOS versioonist 8. WebGL 2.0 toetust ei ole.

## Kasutus ja pistikprogrammid
### Tõhususe parandamine
WebGL on iseenesest madaltasemeline, mistõttu on temaga kiire 3D-graafika loomine üpriski keeruline, seetõttu on loodud mitmeid teeke, mis aitavad 3D-graafika loomisele kaasa. Mõned teegid, mis lisavad kõrgetasemelisi funktsioone, on näiteks A-Frame, Babylon.js, PlayCanvas, three.js, OSG.JS ja CopperLicht.

### Mängumootorid
WebGL-i jaoks on loodud ka mängumootoreid nii 2D- kui 3D-graafikaga veebimängude loomiseks. Nii Unreal Engine 4 kui ka Unity mängumootor töötavad WebGL-iga, samuti on loodud WebGL-ile spetsiaalseid mängumootoreid, nagu PlayCanvas.

2D-graafikale orienteeritud teekide, näiteks Cocos2d või Pixi.js, eelis on ka see, et neil on võimalik kasutada WebGL-i puudumise korral tagavarana ka HTML5 lõuendi elementi.

## Vaata ka
*OpenGL
*WebVR
*Java OpenGL

## Viited

## Välislingid
* Ametlik veebileht