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

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

Strona główna AktualnościOPROGRAMOWANIE

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

Podobnie jak wspomniane wyżej API od AMD, Microsoftu i Apple, także i Vulkan jest nastawiony na wielowątkową grafikę, jednoczesne dostarczanie pakietów poleceń do GPU i oddanie większej kontroli programistom nad takimi zadaniami jak zarządzanie pamięcią czy wątkami, obniżając w ten sposób narzut generowany przez sterowniki sprzętu. Zrealizowanie tego wszystkiego w zgodzie z wytycznymi stawianymi przez Grupę Khronos było jednak zadaniem znacznie bardziej ambitnym – OpenGL działa na praktycznie wszystkich dostępnych architekturach sprzętowych, we wszystkich popularnych systemach operacyjnych, a jego podzbiory wykorzystywane są na urządzeniach mobilnych (OpenGL ES) i przeglądarkach (WebGL).

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

r   e   k   l   a   m   a

Znacząca zmiana względem starego OpenGL zaszła także na poziomie obsługi shaderów, która teraz znacznie przybliżyła się do metody stosowanej w Direct3D. Przypomnijmy, że programy shaderów na OpenGL pisane są w podobnym do C języku GLSL i kompilowane przez kompilator zawarty w sterowniku, podczas gdy programy shaderów na Direct3D kompilowane są przez programistę do kodu bajtowego, przetwarzanego następnie przez sterownik. Vulkan wprowadza więc własny język pośredniczący dla shaderów, tzw. SPIR-V.

Nie jest to całkiem nieznane wcześniej rozwiązanie. Osoby korzystające z bibliotek OpenCL, pozwalających wykorzystać moc GPU do przyspieszenia 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ć z hermetyczną nieco odmianą C, można programować w Javie, C++, Pythonie czy nawet JavaScripcie, a kompilator wygeneruje z niego kod pośredniczący SPIR.

SPIR-V najwyraźniej zastąpi też poprzednika, łącząc w jedno programowanie zadań graficznych i obliczeń. Kod pośredniczący będzie akceptowany zarówno przez Vulkana, jak i OpenCL 2.1. Oczywiście wcześniej pisane w GLSL shadery będzie można przekompilować do SPIR-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 jako wstępna wersja) spotkał się z ogromnym zainteresowaniem, głównie ze względu na Valve, które już zapowiedziało, że przygotowuje silniki gier 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. Niskopoziomowe API, jakim jest Vulkan, w niektórych zastosowaniach może być gorsze niż tradycyjny interfejs, w którym sterownik odpowiedzialny jest za dużą część obciążenia roboczego. Długo jeszcze Grupa Khronos będzie wspierał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 kluczowych producentów sprzętu czy deweloperów silników gier. Jest przecież najważniejszą (a złośliwi powiedzą, że jedyną) innowacją w Windows 10, 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 z szerszej 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 i długo jeszcze będzie najbardziej lukratywną platformą mobilną dla twórców oprogramowania, a korzystanie z jego standardowego API grafiki jest konieczne dla każdego, kto chce zabłysnąć ze swoimi grami na sprzęcie Apple'a. Można się jednak obawiać, że przenoszenie kodu gier między iOS-em i Androidem stanie się w przyszłości trudniejsze, gdy obie platformy skupią się na swoich niekompatybilnych ze sobą niskopoziomowych interfejsach grafiki.

Zostaje jeszcze pierwsze niskopoziomowe API, od którego w zasadzie wszystko się zaczęło, czyli Mantle od AMD. Jego przyszłość obecnie jest niejasna. Jeszcze w tym roku pojawią się nowe gry wspierające Mantle, w praktyce przecież to jedyne oprócz Metalu API pozwalające na taki poziom wydajności grafiki, ale chyba na tym się to wszystko skończy. Samo AMD dało do zrozumienia społeczności deweloperów, że jeśli chcą funkcjonalności dostępnych w Mantle 1.0, to lepiej by skupili się na DirectX 12 lub Vulkanie. „Czerwoni” obiecują oczywiście wsparcie dla partnerów, którzy zaangażowali się w projekty korzystające z tego interfejsu, ale zapowiadają zarazem, że ich API musi zyskać nowe możliwości, stanie się platformą testową dla Radeonów, dostępną dla wybranych partnerów o konkretnych potrzebach.

© 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.