Każdy kto choć raz tworzył oprogramowanie na jakiekolwiek urządzenie VR lub AR na pewno spotkał się z problemem przenoszenia go między różnymi urządzeniami czy środowiskami. Każdy producent zapewnia swój ekosystem co powoduje, że to na barkach programistów leży jego “przepisywanie” na pozostałe platformy. Jest to proces żmudny i kosztowny. Jednak już od wielu miesięcy najwięksi gracze na rynku IT starają się temu zapobiec. Stąd wyrosła inicjatywa OpenXR, która od dzisiaj jest dostępna w wersji 1.0.
Khronos Group to organizacja, która została założona niemalże 20 lat temu, w styczniu 2000 roku. Już wtedy wiadome było, że zamykanie się we własnym, hermetycznym środowisku nie jest dobre ani dla samego producenta ani dla rynku. Stąd najwięksi gracze podjęli decyzję o założeniu grupy, która będzie wspierać oraz opracowywać otwarte standardy. Organizacja założona została przez ATI Technologies, Autodesk Media and Entertainment, Intel, Nvidia, Silicon Graphics i Sun Microsystems. Od tamtego czasu wiele się zmieniło, tak w dziedzinie techniki jak i w strukturach założycieli. ATI w 2006 roku zostało wykupione przez giganta AMD, a Sun Microsystems w 2010 wchłonięte przez Oracle. Jednak idea pozostała, a jej skutki widzimy dzisiaj pod nazwą OpenXR.
OpenXR z założenia miał być standardem pozwalającym na stworzenie połączenia między sprzętem VR i AR, silnikami graficznymi i oprogramowaniem. Chodzi o ułatwienie kreowania kontentu oraz uproszczenie procesu przenoszenia oprogramowania pomiędzy technologiami oraz platformami. Tworzenie oprogramowania XR do tej pory polegało na wybraniu silnika graficznego oraz urządzenia na jakie było ono tworzone. Te dwa czynniki wyznaczały nam konkretną ścieżkę developmentu. W chwili kiedy wymagane było obsłużenie innego urządzenia cały proces był niejako dublowany, od konkretnego silnika do dedykowanego urządzenia (tzw. portowanie). Powtarzanie tych samych kroków podwajało czas oraz koszty pracy. Było to niewygodne oraz mało elastyczne jeśli patrzymy pod kątem rozwoju aplikacji. OpenXR to milowy krok w dziedzinie unifikacji całego procesu.
Dwa pomosty
Prace rozpoczęto w kwietniu 2017 roku. Od tamtego czasu cała inicjatywa wspierana jest przez największe firmy produkujące sprzęt XR oraz oprogramowanie. Mówimy tutaj nie tylko o producentach gogli VR, ale także branży AR tj. Magic leap czy Microsoft. Co do tej drugiej firmy to już zapowiedziano pełne wsparcie dla najnowszych okularów Hololens 2.
OpenXR składa się z dwóch części. Pierwsza z nich to interfejs dla aplikacji. To jest “pomost”, który działa pomiędzy aplikacją XR, a daną platformą. Druga to interfejs urządzenia działający pomiędzy platformą, a fizycznym urządzeniem. Co z tego wynika? Mówiąc krótko, aplikacja tworzona z wykorzystaniem OpenXR na dane urządzenie, bez żadnych zmian wewnętrznych (mówimy tutaj o zmianie w kodzie programu) będzie działać na innych urządzeniach. Idąc dalej, tworzenie chociażby gier nie będzie wymagać już powielania ich na dziesiątki różnych platform czy urządzeń. Olbrzymia oszczędność czasu. A czas to pieniądz.
Łyżka dziegciu
Jest jednak pewien haczyk, o którym należy wspomnieć. Wszystko o czym piszemy jest jedynie technicznym aspektem całego problemu, a mianowicie ułatwienie życia dla programistów. Jednak jest druga strona medalu, czyli… korporacje. I tutaj pojawia się pewien paradoks. Problem leży po stronie wewnętrznej kontroli oprogramowania jakie trafia na sklepy poszczególnych firm tj. Oculus czy Steam. To oni mają ostateczne zdanie czy aplikacja spełnia ich normy. Korzystając ze standardu OpenXR jedna platforma przyjmie nas z otwartymi ramionami, a druga pogrozi palcem. Gdzie paradoks? Mianowicie to one same opracowały ten właśnie standard, który ma ułatwić przeskakiwanie pomiędzy środowiskami. Innymi słowy otwieramy się na multiplatformowość jednak pamiętaj drogi programisto, że (cytując klasyka) “sąd sądem, a sprawiedliwość musi być po naszej stronie”.
Jeśli chcecie już spróbować sił z nową wersją OpenXR jest ona dostępna na serwisie GitHub. Dokumentację możecie pobrać w formie pliku pdf znajdującego się tutaj.