WebGL, czyli niskopoziomowe 3D w każdej przeglądarce

WebGL logoWebGL jest biblioteką graficzną bardzo niskiego poziomu – daje bezpośredni dostęp do wierzchołków i wykorzystuje programy cieniujące (tzw. shadery) do manipulacji geometrii (vertex shader) oraz fragmentów (fragment shader), które pisać można w języku GLSL (link). Wszystkie koncepcje z których czerpie WebGL, są już uznanymi standardami, które rozwijały się wraz z ewolucją technologii OpenGL. Oznacza to przede wszystkim, że są to rozwiązania sprawdzone i wielokrotnie wykorzystywane zarówno w wizualnie zaawansowanych grach, jak i programach graficznych. Całe stworzone oprogramowanie, może być niewielkim nakładem środków (tzn. bez potrzeby pisania całego kodu od początku) przeniesione w środowisko przeglądarki, za przykład czego może służyć chociażby konwersja gry Quake 2 (link).

Istnieje wielu specjalistów znających język OpenGL, także wiele zasobów i szkoleń, wyjaśniających jego tajniki – jak wiadomo, jest to standard zupełnie otwarty, a za korzystanie z niego nie są pobierane żadne opłaty. Wszystko to stanowi bazę niezbędną do rozwoju technologii i stanowić może o jego sukcesie lub porażce. Gdyż, o ile jest to rozwiązanie niezwykle elastyczne i dający ogromne możliwości, to cechuje je wysoki stopień skomplikowania – nie sposób efektywnie wykorzystać możliwości danych przez OpenGL, jeśli nie posiada się odpowiednich umiejętności programistycznych lub nie zna się podstaw przekształceń matematycznych wykorzystywanych do generowania trójwymiarowej grafiki (link). Nawet wtedy, stworzenie nawet najprostszego obrazu, wymaga napisania sporej ilości linii kodu i może nie być bardzo intuicyjne, szczególnie, że jest to język stanowy (link) i nie korzysta z abstrakcji wyższego rzędu, jak na przykład metafora grafu sceny, często spotykana w innych rozwiązaniach.

Zbudowanie najprostszego sześcianu, wymaga zdefiniowania 24 trójwymiarowych współrzędnych, osobno dla każdego wierzchołka Do tego dodać należy kod niezbędny do wywołania biblioteki WebGL, otrzymania kontekstu płótna w przeglądarce, zainicjowanie programów cieniujących, zdefiniowanie kolorów wierzchołków, zaaplikowania odpowiednich transformacji w przestrzeni, ustawienia kamery, a ostatecznie wygenerowania obrazu (link). Wraz ze zwiększeniem ilości zarządzanych elementów, z których składa się model – stopień skomplikowania rośnie bardzo szybko. Na szczęście, WebGL kontrolowany jest z poziomu języka JavaScript i istnieje wiele bibliotek, które zapewnia kontrole nad projektowaniem grafika, podczas gdy interfejs programistyczny zapewni wydajna i sprzętowo wspomagana jej generacje.

Jedna z niewątpliwych zalet WebGL, jest jego pełną integracja z HTMLem – zarówno programy cieniujące, jak i pozostałe elementy standardu programowane są przy pomocy skryptów JavaScript. Generowanie obrazów w kontekście elementu składowego HTML5, jakim jest canvas3D, zapewnia zgodność z modelem dostępu do obiektów w obrębie dokumentu HTML – DOM (document object model). Zagwarantowana została dzięki temu możliwość pełnej, dwukierunkowej komunikacji miedzy elementami na stronie, a tymi odpowiedzialnymi za obsługę grafiki wewnątrz kontekstu płótna. Użycie JavaScript, otworzyło także WebGL na wykorzystanie bogatego zestawu oprogramowania JS napisanego nie tylko z myślą o grafice trójwymiarowej. Jedna z bibliotek niezwykle pomocnych przy tworzeniu obrazów 3D jest Sylvester – ułatwia ona wykonywanie działań na wektorach i macierzach (link).

Scena silników korzystających z WebGL nie jest jeszcze tak rozwinięta, jak tych, które współpracują z Flashem. Jest to wszak technologia dużo młodszą – pierwsza oficjalna wersja standardu została ogłoszona w marcu 2011 roku (link). Jednak jeszcze zanim to nastąpiło, zaczęły pojawiać się biblioteki wspomagające tworzenie przy użyciu WebGL. Pomoc ta oznacza rożne rzeczy – od zmniejszenia ilości kodu, po ułatwienie zapanowania nad logika sceny, na przykład poprzez zorganizowanie jej w graf. Jak dotąd, ciężko wskazać jeden engine który byłby najlepszy do wszelkich zastosowań – wszystkie one są wciąż w fazie rozwoju i optymalizacji. Istnieje jednak pewna grupa bibliotek, które wyróżniają się spośród reszty – bądź to stopniem zaawansowania lub obszerna dokumentacja. Niektóre z nich przedstawiono w kategorii WebGL.

Nie wszyscy producenci oprogramowania wspierają rozwój otwartych standardów. Chociaż Microsoft nie stwierdził definitywnie, że nie zamierza wspierać WebGL w kolejnych wydaniach Internet Explorera, to jednak ani IE9 (link) (wydany w podobnym czasie co pierwsza kompletna specyfikacja WebGL 1.0), ani zapowiadany dopiero IE10 (link), standardu tego nie obsługują. W zamian, proponuje sprzętowe wspomaganie dla elementu Canvas2D (link). Ocena strategii Microsoft odnośnie kierunku rozwoju przeglądarki Internet Explorer, a także podejścia firmy do „otwartych” standardów, nie nalezą do obszarów tej publikacji – o reakcji internautów może się jednak przekonać, na przykład czytając komentarze pod oficjalna notka zapowiadająca najnowsza wersje IE (link). Nie sposób wszak zignorować faktu, że niechęć twórców jednej z wiodących przeglądarek, względem WebGL, znacząco hamuje rozwój i ogranicza ogólnodostępny tej technologii.

Upowszechnianie tej technologii wydaje się być nieuniknione i jest tylko kwestia czasu. Twórcy standardu zaproponowali bezprecedensowe podejście w kwestii dostępu do sprzętowych zasobów domowych komputerów, które dotąd wykorzystywane były głownie przez gry i programy do modelowania. Umożliwia to nie tylko tworzenia bogatych interfejsów oraz efektownych wizualizacji na stronach www, ale otwiera drogę do aplikacji webowych niespotykanej jak dotąd jakości wizualnej. Jedna z niewątpliwych zalet formatu, jest to, że oparty jest na technologii OpenGL ES, która obsługiwana jest nie tylko w komputerach stacjonarnych i laptopach, ale także we wszelkiego rodzaju urządzaniach mobilnych, smartphone’ach i tabletach (link) (w przeciwieństwie do rozwiązań proponowanych przez Adobe, czy Microsoft).

Komentowanie nieaktywne.