Interfejs Vulkan 1.0 wydany – czy zdoła odciągnąć twórców gier od Microsoftu?

Był czas, gdy Microsoft miał wszystko – pod kontrolą jegooprogramowania działały serwery, desktopy, konsole do gier, a nawetsmartfony. Z produktów Microsoftu korzystali masowo profesjonaliści,gracze i zwykli użytkownicy. Dzisiaj? Nawet z desktopami nie jest zaciekawie, w redakcji dobrychprogramów chyba już na większości biurek stojąMaki. Jest jednak do tej pory jeden segment, gdzie na firmę zRedmond nie ma mocnych. Członkowie pecetowej rasy panów korzystająz Windowsa i od „okienek” nawet Maszyny Parowe nie mogą ichodciągnąć. Czy może tu coś zmienić wybuch Vulkanu? Doczekaliśmysię wreszcie oficjalnej premiery wersji 1.0 specyfikacji nowegointerfejsu grafiki grupy Khronos, rozwijanej siłami całejspołeczności związanej z 3D. Cel jest jasny – zaoferowaćuniwersalne API dla twórców gier, które odciągnie ich odrozwiązań Microsoftu i ułatwi przenoszenie tytułów międzyplatformami. Jeśli chcecie wyrobić sobie własne zdanie, na ile cel ten jest realny,zapraszamy do lektury.

Interfejs Vulkan 1.0 wydany – czy zdoła odciągnąć twórców gier od Microsoftu?

17.02.2016 15:27

Premiera Vulkana 1.0odbyła się z wielkim hukiem. Zamiast wydawać samąspecyfikację, czekając potem długie miesiące na jej wsparcieprzez producentów układów graficznych, tym razem rzucono narazwszystko. Dostaliśmy pełną dokumentację, sterowniki, walidatory,kompilatory, testy zgodności, narzędzia deweloperskie, próbkikodu, a nawet gotową grę na platformie Steam. Czym więc Vulkanjest, że doczekał się tak bogatej premierowej oprawy?

Vulkan dla każdego chętnego

Najprościej powiedzieć, że jest to nowe, wyzwolone z zależnościod architektury GCN wcielenie umarłego już w praktyce interfejsuMantle, którym AMD chciało niegdyś zrewolucjonizować rynek gierna PC. Rewolucja się nie powiodła, ale koncepcja niskopoziomowychinterfejsów grafiki na pecetach okazała się na tyle pociągająca,że w tę stronę poszedł Microsoft ze swoim DirectX 12, Apple zeswoim Metalem – i w końcu Grupa Khronos (w skład której wchodziteż AMD), wydając Vulkana. Podobnie jak i tamte interfejsy ma onzminimalizować narzut sterowników, umożliwić elastyczneskalowanie komunikacji na wiele rdzeni CPU i zapewnić lepsząkontrolę nad tym, jak obciążenia robocze są wykonywane na GPU.

W przeciwieństwie jednak do rozwiązań Microsoftu i Apple'a,celem Vulkana jest jak najdalej posunięta wieloplatformowość,zarówno software'owa jak i sprzętowa. Nowe API projektowane było zmyślą tak o pecetowych układach graficznych jak i zintegrowanejgrafice urządzeń mobilnych – wspierają je NVIDIA, AMD, Intel,Qualcomm i Imagination Technologies, działać ma na praktyczniekażdym sprzecie, który obsługuje dziś OpenGL ES 3.1 i OpenGL 4.5.Ma działać na wielu systemach operacyjnych. Obecnie na liście sąWindows 7, Windows 8.1, Windows 10, Linux, Steam OS, Android i Tizen.Jeden zunifikowany interfejs ma być wspólny dla desktopów,urządzeń mobilnych, konsol i urządzeń wbudowanych.

Jakiś wewnętrzny podział jest jednak potrzebny. Zapewnią gościśle zdefiniowane „zbiory możliwości” – listy definicjitego, co dana platforma potrafi. Vulkan będzie dostarczałmechanizmów działania, ale nie będzie narzucał konkretnychpolityk ich wykorzystania. To pozostanie w gestii opiekunów danejplatformy. I tak Google już obiecało traktować Vulkana jako APIkluczowe dla Androida, zaś dla desktopowego Linuksa i Windowsa takiekonkretne polityki zostaną ustalone przez samą grupę Khronos, potym jak wypowiedzą się w tej kwestii deweloperzy.

Jak do tej pory najwięcej pracy w osiągnięcie zgodności zVulkanem 1.0 włożyła NVIDIA – sterowniki zielonych są jużdostępne na Linuksa, Androida i Windowsa. Intel wydał swojesterowniki na razie tylko dla Linuksa. Imagination Technologiespokazało androidowe sterowniki dla Google Nexus Playera, Qualcommzaoferował zaś androidowe sterowniki dla swoich układów Adreno(od wersji 530, w Snapdragonie 820). Przez chwilę wielkim nieobecnymbyło AMD, jednak już dziś Khronos oficjalnie linkuje dosterowników czerwonych, tyle że są wyłącznie sterowniki naWindowsa, i to w wersji beta. Na linuksowe sterowniki przyjdziejeszcze poczekać, biorąc pod uwagę ogólny stan sterownika OpenGLdla tego systemu. Najprawdopodobniej będą one zresztą działaływyłącznie z kartami graficznymi na bazie architektury GCN 1.2, jakoże nowy sterownik AMDGPU działa tylko z tą architekturą.

Co nowego?

Póki co funkcjonalność Vulkana 1.0 ma być równoważna zobecną funkcjonalnością OpenGL. Zmiany zaszły przede wszystkim warchitekturze. Póki co najbardziej interesujące są bufory poleceńi wielowątkowość. Aplikacje 3D nie będą musiały już wywoływaćdo narysowania każdej klatki tysięcy wywołań API, ale uprzednioprzygotować wszystkie polecenia, a następnie przekazać je w jednympakiecie do interfejsu. Jako że zaś Vulkan pozwala na wywoływanieAPI z dowolnego wątku procesora głównego, to im więcej rdzeni maCPU, tym szybciej GPU zacznie rysować kolejne klatki.

Obraz

Dostajemy też możliwość przetwarzania zadań graficznych iobliczeniowych w jednej kolejce, jak też i tworzenie wieluoddzielnych kolejek, zajmujących się czymś innym. Dzięki temu tosamo GPU może równolegle wyliczać fizykę gry i renderowaćgrafikę, rozkładając w miarę potrzeb te obciążenia na swojerdzenie.

Obraz

Innym interesującym rozwiązaniem są przejścia renderera(renderpasses). To mechanizm komunikacji aplikacji ze sterownikiem,który mówi, jak proces renderowania ma przebiegać – tj. któreczęści obrazu będą modyfikowane, kiedy to nastąpi i w jakiejkolejności. Pozwala to sterownikowi uporządkować procesrenderowania i wykorzystania buforów, pozwalając uzyskać możliwedużą wydajność z określonej architektury.

Obraz

Finalnie należy wspomnieć o obsłudze prekompilowanych shaderóww języku SPIR-V (a w przyszłości także w zwykłym C++), dziękiktóremu znikną problemy z shaderami GLSL, które kompilowały sięna jednej architekturze sprzętowej, ale na innej odmawiały jużpracy. Tutaj shadery są dostarczane w postaci kodu pośredniczącego,jak w Direct3D, a ich zbiór instrukcji jest na tyle ogólny, żewspierać go mogą wszystkie GPU (modyfikacje wprowadzane są napozimie sterowników). Oczywiście nikt nie będzie musiał ręczniepisać shaderów SPIR-V, wśród narzędzi dostarczonych przez GrupęKhronos jest translator, pozwalający przekształcić shadery OpenGLw SPIR-V.

Kolejne innowacje przyjdą oczywiście w następnych wersjachspecyfikacji.

To nie jest zamiennik OpenGL

Wejście Vulkana na rynek nie oznacza końca interfejsu OpenGL.Grupa Kronos będzie rozwijać OpenGL-a dalej, szczególnie pod kątemzastosowań, w których niskopoziomowy dostęp do grafiki niczego niedaje. W wielu wypadkach, dla programów CAD czy 3D, wszędzie tamgdzie obciążenia robocze nie paralelizują się zbyt dobrze,wysokopoziomowy interfejs grafiki jest lepszym rozwiązaniem.

Przedstawione już teraz rozszerzenia dla OpenGL pozwolą mujednak współistnieć z Vulkanem – np. osadzać renderowane przezVulkana treści w kontekście interfejsów użytkownika rysowanychprzez OpenGL.

Apple (już) nie jest problemem

Firmy z Cupertino nie ma wśród tych, którzy postawili naVulkana. Apple w zeszłym roku dało do zrozumienia, że interfejsniskopoziomowego programowania grafiki będzie robiło po swojemu, abiorąc pod uwagę pozycję iOS-a na rynku gier mobilnych,oznaczałoby to, że nawet gdyby Vulkan wygrał na rynku, deweloperzyi tak musieliby się męczyć z dwoma interfejsami (albo trzema,gdyby kogoś interesowało pisanie gier na mobilne Windowsy).

Problem rozwiązał się jednak sam, bez pomocy Apple'a. FirmaMolten przygotowała implementację Vulkana na Metal, MetalVK,która pozwolić ma na budowanie gier na Vulkan API i uruchamianiekodu wynikowego bezpośrednio na iOS-ie i OS-ie X. Podobno nie będzieto wiązało się z utratą wydajności, ani utratą możliwościdebugowania kodu oferowanych przez Metal.

Wpływ na świat gier

Wraz z debiutem Vulkana 1.0, studio Croteam przedstawiło wersjęznanej gry Talos Principle – po zainstalowaniu ze sklepu Steam,można przełączyć ją już na nowy interfejs grafiki (oczywiścieo ile zainstalowaliśmy wcześniej vulkanowe sterowniki). Niebawemmają pojawić się kolejne gry. Valve zapowiedziało wprowadzeniewsparcia dla Dota 2, pewnie z czasem pojawią się też kolejnetytuły.

Talos Principle: wsparcie dla Vulkana
Talos Principle: wsparcie dla Vulkana

Na cuda jednak nie liczcie. Nie oczekujcie, że nowe gry nagleprzyspieszą z 30 FPS na 60 FPS. Obecnie wykorzystywane silniki gierpod Vulkana po prostu nie są zoptymalizowane. Poznanie możliwościnowego interfejsu zajmie deweloperom trochę czasu, a opracowanieefektywnych strategii dla tych optymalizacji też nie odbędzie sięz dnia na dzień.

Demo technologiczne Chopper Nvidii
Demo technologiczne Chopper Nvidii

Na pewno pomoże jednak dostępność otwartychnarzędzi od LunarG, firmy współpracującej z Valve nadulepszeniem linuksowego stosu grafiki – SDK, debugger, walidator sąjuż dostępne na Linuksa i Windowsa, niebawem zaś Googleprzedstawić ma zestaw narzędzi na Androida. To jednak dlaprogramistów. Użytkownicy póki co mogą sobie pooglądać dema –najciekawiej prezentują się te Nvidii(choć udało się nam uruchomić je póki co tylko na tablecieSHIELD).

Programy

Zobacz więcej
Wybrane dla Ciebie
Komentarze (118)