OpenGL dla nowoczesnych maszyn: Vulkan wchodzi do gry, by powalczyć z DirectX 12

Grupa Khronos zaprezentowała dzisiaj finalną wersję najnowszegowcielenia interfejsu OpenGL, rozwijanego dotąd pod nazwą NextGeneration OpenGL czy też GLnext. To nowe API, które otrzymało mocnąnazwę Vulkan, jest czymś znacznie więcej, niż tylko wyjściemnaprzeciw realiom współczesnych wielordzeniowych procesorów i w pełniprogramowalnych potoków renderowania w kartach graficznym. Vulkanjest pierwszym prawdziwie uniwersalnym niskopoziomowym API grafiki,mogącym rywalizować z takimi projektami jak Mantle (działające tylkona Radeonach), DirectX 12 (działające tylko na Windows) i Metal(działające tylko na iOS-ie).

OpenGL dla nowoczesnych maszyn: Vulkan wchodzi do gry, by powalczyć z DirectX 12

Podobnie jak wspomniane wyżej API od AMD, Microsoftu i Apple,także i Vulkan jest nastawiony na wielowątkową grafikę, jednoczesnedostarczanie pakietów poleceń do GPU i oddanie większej kontroliprogramistom nad takimi zadaniami jak zarządzanie pamięcią czywątkami, obniżając w ten sposób narzut generowany przez sterownikisprzętu. Zrealizowanie tego wszystkiego w zgodzie z wytycznymistawianymi przez Grupę Khronos było jednak zadaniem znacznie bardziejambitnym – OpenGL działa na praktycznie wszystkich dostępnycharchitekturach sprzętowych, we wszystkich popularnych systemachoperacyjnych, a jego podzbiory wykorzystywane są na urządzeniachmobilnych (OpenGL ES) i przeglądarkach (WebGL).

Vulkan takich podzbiorów mieć nie będzie. To samo API będzieudostępnione zarówno na desktopach, jak i na urządzeniach mobilnych.Porzucenie tych wszystkich historycznych zaszłości OpenGL, które poprostu były zbyt ciężkie jak na sprzęt mobilny, pozwala zrezygnować zkonieczności opracowywania specjalnego dla nich wariantu.

Znacząca zmiana względem starego OpenGL zaszła także na poziomieobsługi shaderów, która teraz znacznie przybliżyła się do metodystosowanej w Direct3D. Przypomnijmy, że programy shaderów na OpenGLpisane są w podobnym do C języku GLSL i kompilowane przez kompilatorzawarty w sterowniku, podczas gdy programy shaderów na Direct3Dkompilowane są przez programistę do kodu bajtowego, przetwarzanegonastępnie przez sterownik. Vulkan wprowadza więc własny językpośredniczący dla shaderów, tzw. SPIR-V.

Nie jest to całkiem nieznane wcześniej rozwiązanie. Osobykorzystające z bibliotek OpenCL, pozwalających wykorzystać moc GPU doprzyspieszenia obliczeń, mogą kojarzyć język pośredniczący SPIR,którego wersję2.0 pokazano niedawno przy premierze OpenGL 4.5 i OpenCL 2.0..Dzięki wykorzystaniu kodu pośredniczącego nie trzeba się męczyć zhermetyczną nieco odmianą C, można programować w Javie, C++, Pythonieczy nawet JavaScripcie, a kompilator wygeneruje z niego kodpośredniczący SPIR.

SPIR-V najwyraźniej zastąpi też poprzednika, łącząc w jednoprogramowanie zadań graficznych i obliczeń. Kod pośredniczący będzieakceptowany zarówno przez Vulkana, jak i OpenCL 2.1. Oczywiściewcześniej pisane w GLSL shadery będzie można przekompilować doSPIR-V, dzięki czemu docelowo sterowniki będą musiały sobie radzićtylko z jednym językiem programowania grafiki.

Debiut Vulkana (który udostępniony został programistom jakowstępna wersja) spotkał się z ogromnym zainteresowaniem, głównie zewzględu na Valve, które już zapowiedziało, że przygotowuje silnikigier 3D bazujące na tym API nowej generacji. Swoje poparcie ogłaszająkolejni producenci GPU – przed chwilą zrobiło to np. Vivante.Wielu się jednak zastanawia, co to oznacza dla istniejących już dziśna rynku graficznych API. Odpowiedź wcale nie jest prosta.

W teorii OpenGL (obecnie w wersji 4.5) nie zniknie. NiskopoziomoweAPI, jakim jest Vulkan, w niektórych zastosowaniach może być gorszeniż tradycyjny interfejs, w którym sterownik odpowiedzialny jest zadużą część obciążenia roboczego. Długo jeszcze Grupa Khronos będziewspierała też podzbiory OpenGL – OpenGL ES i WebGL.

DirectX 12 ma znaczącą przewagę nad Vulkanem – wystartowałwcześniej, pozyskując spore zaangażowanie ze strony kluczowychproducentów sprzętu czy deweloperów silników gier. Jest przecieżnajważniejszą (a złośliwi powiedzą, że jedyną) innowacją w Windows10, systemu którego debiut ma ożywić branżę PC i otworzyć nową erędla twórców oprogramowania. DirectX 12 ma jednak pewną małą, ale zszerszej perspektywy ogromną wadę. Jest dostępny tylko na Windows 10,który nieprędko stanie się dominującym systemem desktopowym.Urządzenia mobilne z Windows 10 na rynku praktycznie nie istnieją,szczególnie wśród graczy.

Pozycja Metalu jest oczywiście nie do podważenia. iOS był, jest idługo jeszcze będzie najbardziej lukratywną platformą mobilną dlatwórców oprogramowania, a korzystanie z jego standardowego APIgrafiki jest konieczne dla każdego, kto chce zabłysnąć ze swoimigrami na sprzęcie Apple'a. Można się jednak obawiać, że przenoszeniekodu gier między iOS-em i Androidem stanie się w przyszłościtrudniejsze, gdy obie platformy skupią się na swoichniekompatybilnych ze sobą niskopoziomowych interfejsach grafiki.

Zostaje jeszcze pierwsze niskopoziomowe API, od którego w zasadziewszystko się zaczęło, czyli Mantle od AMD. Jego przyszłość obecniejest niejasna. Jeszcze w tym roku pojawią się nowe gry wspierająceMantle, w praktyce przecież to jedyne oprócz Metalu API pozwalającena taki poziom wydajności grafiki, ale chyba na tym się to wszystkoskończy. Samo AMD dało dozrozumienia społeczności deweloperów, że jeśli chcąfunkcjonalności dostępnych w Mantle 1.0, to lepiej by skupili się naDirectX 12 lub Vulkanie. „Czerwoni” obiecują oczywiściewsparcie dla partnerów, którzy zaangażowali się w projektykorzystające z tego interfejsu, ale zapowiadają zarazem, że ich APImusi zyskać nowe możliwości, stanie się platformą testową dlaRadeonów, dostępną dla wybranych partnerów o konkretnych potrzebach.

Programy

Zobacz więcej
Wybrane dla Ciebie
Komentarze (57)