Jakie są różnice i z których warto skorzystać?

DirectX 12 został wydany wraz z systemem Windows 10 w 2015 roku. Wraz z wydaniem DirectX 12 firmy Microsoft zapoczątkował nową erę dla graczy i twórców gier. Dzięki możliwości zmniejszenia obciążenia procesora przy jednoczesnym zwiększeniu wydajności procesora graficznego, DirectX 12 szybko zyskał sławę.

Czy jednak zwiększenie wydajności jest naprawdę tak proste, jak przejście z DirectX 11 na DirectX 12? Przekonajmy się, przyglądając się różnicom między DirectX 11 i 12.

Co to jest DirectX firmy Microsoft?

Jak wyjaśniliśmy w naszym przeglądzie Microsoft DirectX, DirectX to zbiór interfejsów programowania aplikacji (API) używanych do obsługi zadań związanych z multimediami. Obejmuje to programowanie gier na platformach opartych na technologii Microsoft, takich jak Windows i Xbox. Aby zapewnić kontekst, porozmawiajmy krótko o interfejsach API.

Interfejs API umożliwia komunikację między dwoma lub większą liczbą programów komputerowych, co omawiamy w naszym przeglądzie interfejsów API. Pomyśl o tym jak o telefonie. Jeśli mama wyśle ​​Ci SMS-a z listą zakupów, Twój telefon odbierze te dane i wyświetli je. To w zasadzie API.

Jakie są różnice między DirectX 11 i DirectX 12?

Jakie są zatem różnice między DirectX 11 i DirectX 12? Krótko mówiąc, DirectX 12 to najnowsza wersja DirectX. Jedną z najbardziej zauważalnych różnic jest sposób interakcji ze sprzętem. Większość gier opracowanych przy użyciu DirectX 11 wykorzystuje tylko od dwóch do czterech rdzeni procesora. Jeden z tych rdzeni zwykle mówi procesorowi graficznemu, co ma robić.

Następnie gra wykorzystuje pozostałe rdzenie do obsługi różnych ustawień intensywnie obciążających procesor, takich jak cząstki gry lub odległość rysowania. Z drugiej strony DirectX 12 rozkłada obciążenie procesora na wiele rdzeni i umożliwia każdemu rdzeniowi jednoczesną komunikację z procesorem graficznym.

DirectX 12 ma także kilka fantazyjnych wodotrysków. Obejmuje to przetwarzanie asynchroniczne i obiekty stanu potoku (PSO). Obliczenia asynchroniczne zwiększają wykorzystanie procesora graficznego, umożliwiając równoległą pracę wielu obciążeń. Zasadniczo odblokowuje to pełny potencjał twojego procesora graficznego.

Oprócz renderowania grafiki Twój procesor graficzny obsługuje szeroki zakres innych zadań, takich jak uruchamianie algorytmów uczenia maszynowego. W przypadku DirectX 11 procesor graficzny może wykonywać tylko jedno z tych zadań na raz i w określonej kolejności. W takiej sytuacji spada wydajność, ponieważ zasoby procesora graficznego nie są wykorzystywane efektywnie.

Pomyśl o tym jak o kelnerze w restauracji. Kiedy kelner przyjmuje Twoje zamówienie, najpierw pyta, co chcesz się napić. Po otrzymaniu napojów pytają, co chcesz na danie główne. Twoje zamówienie jest realizowane etapami. Kelner nie zapyta Cię, co chciałbyś na deser, zanim zjesz danie główne. Chociaż jest to skuteczne, nie jest tak skuteczne, jak mogłoby być.

W obliczeniach inny zasób procesora graficznego obsługiwałby każde zadanie kelnera. Dopóki nie otrzymasz napoju, zasoby GPU potrzebne do przyjęcia zamówienia na danie główne będą nieaktywne. Dzięki asynchronicznemu przetwarzaniu komputerowemu DirectX 12 kelner będzie mógł przyjąć całe zamówienie na raz, jak w sieci fast foodów. Maksymalizuje to wykorzystanie procesora graficznego i poprawia wydajność w grach.

W DirectX 12 wprowadzono także obiekty stanu potoku (PSO). W przypadku DirectX 11, gdy geometria gry jest przesyłana do procesora graficznego w celu renderowania, za interpretację i renderowanie tych danych odpowiadają różne ustawienia sprzętowe. Nazywa się to potokiem graficznym i przepływem danych wejściowych i wyjściowych zachodzącym podczas renderowania klatek przez procesor graficzny. Jednakże potok graficzny DirectX 11 nie jest doskonały.

Ten potok zawiera zbiór różnych stanów, w tym między innymi stan rasteryzacji, stan mieszania i stan wzornika głębi. W DirectX 11 istnieją zależności pomiędzy tymi różnymi stanami. W rezultacie jeden stan nie może zostać ukończony, dopóki poprzedni stan nie zostanie zdefiniowany. Zmniejsza to wykorzystanie procesora graficznego i zwiększa obciążenie procesora kosztem wydajności.

Aby obejść ten problem, w DirectX 12 wprowadzono PSO, obiekty opisujące stan całego potoku graficznego. Obiekty PSO są jak butelka zawierająca różne stany i komponenty potrzebne do stworzenia obrazu. Dzięki temu procesor graficzny może wstępnie przetworzyć każdy stan zależny zamiast ciągłego ponownego obliczania stanów w oparciu o bieżący potok graficzny.

To znacznie zmniejsza obciążenie procesora występujące w DirectX 11 i poprawia wydajność. Jak zatem wygląda ta różnica? Cóż, według Microsoftu, DirectX 12 zmniejsza obciążenie procesora nawet o 50 procent i poprawia wydajność procesora graficznego aż o 20 procent. Chociaż są to istotne ulepszenia, nie oznacza to, że zobaczysz takie same wyniki.

Dlaczego przejście z DirectX 11 na DirectX 12 nie jest proste

DirectX 11 został po raz pierwszy wydany dla systemu Windows Vista 27 października 2009 r. Zatem po wydaniu DirectX 12 w 2015 r. istnieje sześcioletnia przerwa między DirectX 11 a DirectX 12. W tym czasie tysiące gier stworzono przy użyciu DirectX 11. Niestety przejście z DirectX 11 na DirectX 12 nie jest łatwe.

DirectX 11 to tak zwane API wysokiego poziomu. Krótko mówiąc, interfejsy API wysokiego poziomu są łatwiejsze w obsłudze dla programistów. Rezultatem są stabilne, dopracowane i grywalne gry. Z drugiej strony DirectX 12 to interfejs API niskiego poziomu i inna bestia niż DirectX 11. Chociaż pozwala programistom na precyzyjne dostrojenie optymalizacji na poziomie szczegółowym, korzystanie z niego wymaga również rozległej wiedzy.

Biorąc to pod uwagę, gra stworzona w DirectX 12 może zakończyć się gorszą wydajnością, w zależności od wiedzy dewelopera na temat API. Niektóre ulepszenia są dostępne w DirectX 12, ale tak naprawdę wszystko zależy od tego, jak dobrze programista może je zaimplementować. Z tego powodu wielu programistów decyduje się na korzystanie z interfejsów API wysokiego poziomu, takich jak DirectX 11.

DX 11 kontra DX 12: który wybrać?

Odpowiedź zależy od kilku rzeczy, np. od gry, którą próbujesz uruchomić. Na przykład Guild Wars 2 działa na DirectX 11. Nawet jeśli Twój system operacyjny i sprzęt obsługują DirectX 12, nie będziesz mieć możliwości wybrania DirectX 11 w Guild Wars 2, ponieważ gra go nie obsługuje. Jest to całkowicie decyzja dewelopera, ArenaNet.

Źródło obrazu: Martin Kerstein/Wojny Gildii 2

Wierzcie lub nie, ale ArenaNet zajęło dziewięć lat przejście z DirectX 9 na DirectX 11. Jednak niektóre gry obsługują zarówno DirectX 11, jak i DirectX 12, w tym Fortnite (przeczytaj naszą ściągawkę do Fortnite), Battlefield 5, Shadow of Tomb Raider i nie tylko. Użytkownicy mogą przełączać się między DirectX 11 i DirectX 12 w ustawieniach gry.

Fakt, że niektóre gry obsługują zarówno DirectX 11, jak i 12, prawdopodobnie sprawił, że zastanawiałeś się nad wydajnością w grach. Czy wybór DX 11 lub DX 12 zapewnia lepszą wydajność w grach? Poniższy film ilustruje różnice między DirectX 11 i DirectX 12 w różnych grach, pokazując najważniejsze parametry, takie jak średnia liczba klatek na sekundę, użycie procesora, użycie karty graficznej i inne, przy użyciu procesora AMD Ryzen 3600, Nvidia GeForce RTX 3060 Ti i 16 GB pamięci RAM DDR4.

Wyniki są zaskakujące pod wieloma względami, czasami z niewielką różnicą wizualną między DX 11 i DX 12, pomimo wielu lat różnicy między ich premierami. Być może zauważyłeś także różnice w obciążeniu procesora graficznego i procesora pomiędzy obiema wersjami DirectX, przy czym wersje każdej gry DX 12 zazwyczaj wymagają mniej zasobów niż starsza wersja DX 11.

Oprócz obsługi w grze wybór pomiędzy DirectX 11 a DirectX 12 będzie również zależał od posiadanego sprzętu. Prawie każdy nowoczesny procesor graficzny będzie obsługiwał DirectX 12, ale tego samego nie można powiedzieć o starszych procesorach graficznych, takich jak Radeon HD 4870. Wydany w 2008 roku, ten procesor graficzny obsługuje tylko DirectX 10. Oznacza to, że nie byłby w stanie uruchomić większości nowoczesnych gry, które działają przy użyciu DirectX 11 i DirectX 12.

Czy DirectX 12 to dla Ciebie właściwy wybór?

Podsumowując, przejście z DirectX 11 na DirectX 12 nie jest tak czarno-białe, jak się wydaje. Zależy to od wielu czynników, takich jak sprzęt, oprogramowanie, system operacyjny i to, czy gra w ogóle obsługuje oba te elementy. Wszystkie te kwestie należy wziąć pod uwagę przed podjęciem decyzji i prawdopodobnie będzie to dotyczyć również przyszłych generacji DirectX.