r   e   k   l   a   m   a
r   e   k   l   a   m   a

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

Strona główna AktualnościOPROGRAMOWANIE

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

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

Vulkan dla każdego chętnego

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

r   e   k   l   a   m   a

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 z myślą tak o pecetowych układach graficznych jak i zintegrowanej grafice urządzeń mobilnych – wspierają je NVIDIA, AMD, Intel, Qualcomm i Imagination Technologies, działać ma na praktycznie każ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 definicji tego, co dana platforma potrafi. Vulkan będzie dostarczał mechanizmów działania, ale nie będzie narzucał konkretnych polityk ich wykorzystania. To pozostanie w gestii opiekunów danej platformy. I tak Google już obiecało traktować Vulkana jako API kluczowe dla Androida, zaś dla desktopowego Linuksa i Windowsa takie konkretne polityki zostaną ustalone przez samą grupę Khronos, po tym jak wypowiedzą się w tej kwestii deweloperzy.

Jak do tej pory najwięcej pracy w osiągnięcie zgodności z Vulkanem 1.0 włożyła NVIDIA – sterowniki zielonych są już dostępne na Linuksa, Androida i Windowsa. Intel wydał swoje sterowniki na razie tylko dla Linuksa. Imagination Technologies pokazało androidowe sterowniki dla Google Nexus Playera, Qualcomm zaoferował zaś androidowe sterowniki dla swoich układów Adreno (od wersji 530, w Snapdragonie 820). Przez chwilę wielkim nieobecnym było AMD, jednak już dziś Khronos oficjalnie linkuje do sterowników czerwonych, tyle że są wyłącznie sterowniki na Windowsa, i to w wersji beta. Na linuksowe sterowniki przyjdzie jeszcze poczekać, biorąc pod uwagę ogólny stan sterownika OpenGL dla tego systemu. Najprawdopodobniej będą one zresztą działały wyłą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 z obecną funkcjonalnością OpenGL. Zmiany zaszły przede wszystkim w architekturze. 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 uprzednio przygotować wszystkie polecenia, a następnie przekazać je w jednym pakiecie do interfejsu. Jako że zaś Vulkan pozwala na wywoływanie API z dowolnego wątku procesora głównego, to im więcej rdzeni ma CPU, tym szybciej GPU zacznie rysować kolejne klatki.

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

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óre części obrazu będą modyfikowane, kiedy to nastąpi i w jakiej kolejności. Pozwala to sterownikowi uporządkować proces renderowania i wykorzystania buforów, pozwalając uzyskać możliwe dużą wydajność z określonej architektury.

Finalnie należy wspomnieć o obsłudze prekompilowanych shaderów w języku SPIR-V (a w przyszłości także w zwykłym C++), dzięki któ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, że wspierać go mogą wszystkie GPU (modyfikacje wprowadzane są na pozimie sterowników). Oczywiście nikt nie będzie musiał ręcznie pisać shaderów SPIR-V, wśród narzędzi dostarczonych przez Grupę Khronos jest translator, pozwalający przekształcić shadery OpenGL w SPIR-V.

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

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ątem zastosowań, w których niskopoziomowy dostęp do grafiki niczego nie daje. W wielu wypadkach, dla programów CAD czy 3D, wszędzie tam gdzie obciążenia robocze nie paralelizują się zbyt dobrze, wysokopoziomowy interfejs grafiki jest lepszym rozwiązaniem.

Przedstawione już teraz rozszerzenia dla OpenGL pozwolą mu jednak współistnieć z Vulkanem – np. osadzać renderowane przez Vulkana treści w kontekście interfejsów użytkownika rysowanych przez OpenGL.

Apple (już) nie jest problemem

Firmy z Cupertino nie ma wśród tych, którzy postawili na Vulkana. Apple w zeszłym roku dało do zrozumienia, że interfejs niskopoziomowego programowania grafiki będzie robiło po swojemu, a biorąc pod uwagę pozycję iOS-a na rynku gier mobilnych, oznaczałoby to, że nawet gdyby Vulkan wygrał na rynku, deweloperzy i 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. Firma Molten przygotowała implementację Vulkana na Metal, MetalVK, która pozwolić ma na budowanie gier na Vulkan API i uruchamianie kodu wynikowego bezpośrednio na iOS-ie i OS-ie X. Podobno nie będzie to wiązało się z utratą wydajności, ani utratą możliwości debugowania 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ście o ile zainstalowaliśmy wcześniej vulkanowe sterowniki). Niebawem mają pojawić się kolejne gry. Valve zapowiedziało wprowadzenie wsparcia dla Dota 2, pewnie z czasem pojawią się też kolejne tytuły.

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

Na pewno pomoże jednak dostępność otwartych narzędzi od LunarG, firmy współpracującej z Valve nad ulepszeniem linuksowego stosu grafiki – SDK, debugger, walidator są już dostępne na Linuksa i Windowsa, niebawem zaś Google przedstawić ma zestaw narzędzi na Androida. To jednak dla programistó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 tablecie SHIELD).

© dobreprogramy
r   e   k   l   a   m   a
r   e   k   l   a   m   a

Komentarze

r   e   k   l   a   m   a
r   e   k   l   a   m   a
Czy wiesz, że używamy cookies (ciasteczek)? Dowiedz się więcej o celu ich używania i zmianach ustawień.
Korzystając ze strony i asystenta pobierania wyrażasz zgodę na używanie cookies, zgodnie z aktualnymi ustawieniami przeglądarki.