Co to jest Vulkan i czym różni się od OpenGL?

150

Khronos Group (organ odpowiedzialny za OpenGL) ogłosił właśnie Vulkan :

Vulkan to otwarty interfejs API nowej generacji, zapewniający wysokowydajny dostęp do grafiki i obliczeń na nowoczesnych GPU. Ten od podstaw projekt, zwany wcześniej Inicjatywą OpenGL nowej generacji, zapewnia aplikacjom bezpośrednią kontrolę nad przyspieszeniem GPU, zapewniając maksymalną wydajność i przewidywalność.

Ich strona jest dość targowa / żargonowo- ciężka, podobnie jak informacja prasowa … Mówiąc prościej , co Vulkan oznacza dla twórców gier? (Gabe Newell jest cytowany jako zdecydowanie za, bez dalszych wyjaśnień).

Jaki dokładnie jest związek Vulkan z OpenGL? Jego poprzednia nazwa „glNext” (skrót od „Next Generation OpenGL Initiative”) sprawia, że ​​brzmi jak zamiennik.


Aktualizacja: Specyfikacja Vulkan 1.0 została wydana 16-02-2016.

Anko
źródło
3
Qo'noS i Vulcan ...
IllidanS4
14
Tłumaczenie dla osób, które nie łapią dryfu Star Trek : Khronos i Vulkan brzmią jak Qo'noS i Vulcan ; planet świata macierzystego ras Klingon i Vulcan. Leonard Nimoy , aktor Spocka (bardzo popularnej postaci) niedawno zmarł 27.02.2015, więc spekulacje obfitują, że nazwa była hołdem. Jednak to było przypadkowe: Vulkan prośba znak towarowy został zgłoszony w dniu 2015-02-19; przed śmiercią Nimoya.
Anko
7
Również płaszcz -> Lawa -> Wulkan -> Vulkan.
jmegaffin
1
@Boreal Vulkan == Wulkan w wielu językach (niemiecki, rosyjski (dostosowany do cyr.) Itp.). Więc to płaszcz -> Lawa -> Vulkan (Wulkan) naprawdę :)
user362515

Odpowiedzi:

118

Vulkan to nowy interfejs API do grafiki przyspieszanej sprzętowo (i obliczeń ogólnych) za pośrednictwem tradycyjnych procesorów graficznych. OpenGL będzie nadal rozwijany, ponieważ jest interfejsem API wyższego poziomu, niż powinien być Vulkan. Początkowo określany jako „glNext”, można wywnioskować, że Vulkan prawdopodobnie skończyłby jako „OpenGL 5”, ale organ normalizacyjny ostatecznie zdecydował, że nowa nazwa lepiej zbiegnie się ze stosunkowo czystą przerwą, jaką API zamierza zrobić z istniejącej Paradygmaty OpenGL.

Praktyczne zalety Vulkan dla twórców gier polegają przede wszystkim na kontroli (jak w, pozwalając na więcej, potencjalnie pozwalając na lepsze optymalizacje kosztem znacznie większej wstępnej pracy ze strony dewelopera). Konkretnie:

  • Interfejs API jest zorientowany na asynchroniczne generowanie buforów poleceń w wielu wątkach i sekwencyjne przetwarzanie tych buforów do potoku poleceń. Odzwierciedla to realia współczesnego sprzętu. Większość głośnych i / lub wysokowydajnych programów opartych na OpenGL dzisiaj sama realizuje takie zachowania; samo wsparcie API oznacza, że ​​programiści nie muszą sami implementować i utrzymywać tego frameworka, lub że mogą to zrobić przy mniejszym wysiłku.
  • Zadania zarządzania wątkami i pamięcią są pozostawione aplikacji, a nie sterownikowi, umożliwiając twórcom gier większą kontrolę nad tymi zachowaniami, a tym samym potencjalnie dokładniejsze dopasowanie tych zachowań do indywidualnych potrzeb gry.
  • Warstwy sprawdzania poprawności i diagnostyki można włączać niezależnie, co teoretycznie pozwala na lepszą integrację narzędzi z interfejsem API (coś, na czym ucierpiał sam OpenGL) i wyłącza nadmierne sprawdzanie poprawności, teoretycznie pozwalając, aby „ grafika na poziomie trzecim ” była o wiele bardziej wydajna.
  • Między wersjami mobilnymi i stacjonarnymi nie ma wyraźnych różnic w interfejsie API, co teoretycznie ułatwi przenoszenie gier międzyplatformowych, a jeśli nic innego nie zmniejszy problemów z sprawdzaniem wersji, których wszyscy nienawidzą.

Vulkan jest bardzo podobny do C / podobny do OpenGL w strukturze powierzchownej (wygląd i działanie wywołań API itp. Jest jednak lepiej wpisany (pod tym względem, że nie wszystko jest nagie int; istnieją odpowiednie typy i tak dalej).

Jest znacznie niższy poziom niż OpenGL. Można się spodziewać skoków w konfiguracji operacyjnej i złożoności między OpenGL i Vulkan, co zaobserwowano w przejściu z D3D9 na D3D10, co ujawniło klientowi API znacznie więcej ukrytych szczegółów działania urządzenia GPU. Przejście jest bardziej zbliżone do D3D11 do 12, ponieważ sam D3D12 jest bardzo podobny API do Vulkan, pod względem możliwości.

Josh
źródło
18
Warto zauważyć, że Vulkan jest w zasadzie wysoce iteracyjną wersją Mantle: community.amd.com/community/amd-blogs/amd-gaming/blog/2015/03/... Konwencje API wydają się nieco podobne do DSA OpenGL, z wyjątkiem wszechobecnego glprzedrostka zastąpionego przez vk: blog.imgtec.com/powervr/…
jmegaffin
Zakładałem, że tak będzie, ale nie widziałem żadnych dowodów aż do tego połączenia, dzięki.
Josh
3
Do twojej wiadomości, będziesz mógł zastąpić spekulacje i zgadywanie (pewnym) trudnym faktem po prezentacji Valve w czwartek, a moratorium na członków Khronos ujawniające więcej szczegółów jest (głównie) zniesione.
Sean Middleditch
4
Uważam, że kod bajtowy modułu cieniującego jest nieco zabawny, biorąc pod uwagę, że kiedyś istniał prosty język przypominający asembler dla modułów cieniujących, a następnie został zastąpiony przez język złożony (GLSL), a teraz wracamy do prostego języka kodu bajtowego.
immibis
2
Myślałem, że Vulkan, podobnie jak Mantle, stanie obok OpenGL, by uzyskać więcej dostępu na niskim poziomie, a nie całkowicie go zastąpi. Przynajmniej tak czytałem do tej pory. Czy Vulkan obejmie zarówno operacje na niskim, jak i na wysokim poziomie?
Roy T.
18

Aby rozwinąć przyszłość OpenGL:

OpenGL może osiągnąć wydajność porównywalną do Vulkan, w przypadku połączeń losowanych na sekundę, ale także w odniesieniu do ogólnego obciążenia sterownika:

  • Najnowsze rozszerzenia OpenGL faktycznie usuwają wiele narzutów ze sterowników, czyniąc wszystko niewiążącym (np. ARB_direct_state_access(4.5 rdzenia) ,, ARB_bindless_texture...).
  • Dzięki trwałemu mapowaniu ( ARB_buffer_storagerdzeń w 4.4) pamięć bufora może być dostępna bezpośrednio przez CPU, dlatego synchronizacja z GPU jest również wyraźna, podobnie jak Vulkan.
  • Przyszłe rozszerzenia, takie jak NV_command_list(patrz prezentacja Siggraph Asia 2014 Tristana Loracha ) prawdopodobnie zapewnią OpenGL ten sam „paradygmat zasilania GPU” jak Vulkan.
Alex
źródło
11
To właściwie nie jest odpowiedź na pytanie.
MichaelHouse
1

Khronos ogłosił niedawno wydanie zupełnie nowego interfejsu API Vulkan, który uzupełni (a w niektórych przypadkach zastąpi) OpenGL i OpenGL ES. Vulkan to niskoprocentowy interfejs API zaprojektowany w celu przybliżenia kodu do metalu, zwiększając wydajność i wydajność. Opiera się na interfejsie API Mantle AMD, a ostatecznej specyfikacji spodziewamy się jeszcze w tym roku.

W tym poście - Krótki przegląd Vulkan API - redaktor naczelny Toptal Nermin Hajdarbegovic wyjaśnia, dlaczego Vulkan może być wielkim problemem na dłuższą metę. Może to chwilę potrwać, ale ten wieloplatformowy interfejs API może drastycznie poprawić wydajność 3D na niektórych urządzeniach, zwłaszcza wielordzeniowych procesorach aplikacji, które są używane w miliardach smartfonów i tabletów.

Dmitrij Pawłow
źródło
2
„Khronos ogłosił niedawno wydanie zupełnie nowego interfejsu API Vulkan” Um, nie od 18 sierpnia tego nie zrobił. Nie została „wydana” przez żadną definicję tego terminu. Jest już 8 grudnia i wciąż nie został wydany.
Nicol Bolas,
2
@NicolBolas - Teraz ma. Został uruchomiony dzisiaj: khronos.org/vulkan
beatgammit