DirectX 11 vs. DirectX 12: Jakie są różnice i którego powinieneś użyć?

DirectX 11 vs. DirectX 12: Jakie są różnice i którego powinieneś użyć?

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. Zdolny do zmniejszenia obciążenia procesora przy jednoczesnym zwiększeniu wydajności GPU, DirectX 12 szybko wyrobił sobie markę.

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

Co to jest DirectX firmy Microsoft?

Logo DirectX nałożone na zdjęcie człowieka kodującego

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

Interfejs programowania aplikacji (API) umożliwia komunikację między dwoma lub więcej programami komputerowymi, co omówiliśmy w naszym przeglądzie interfejsów API. Pomyśl o tym jak o telefonie. Jeśli Twoja mama wyśle ​​​​Ci SMS-a z listą zakupów, Twój telefon otrzyma te dane i wyświetli je dla Ciebie. To jest w zasadzie API.

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

Jakie są więc różnice między DirectX 11 a DirectX 12? Mówiąc prościej, DirectX 12 to najnowsza wersja DirectX. Jedną z najbardziej zauważalnych różnic między nimi jest sposób interakcji ze sprzętem. Większość gier stworzonych przy użyciu DirectX 11 wykorzystuje tylko od dwóch do czterech rdzeni procesora. Jeden z tych rdzeni jest zwykle przeznaczony do mówienia 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ąsteczki gry lub odległość rysowania. Z drugiej strony, DirectX 12 rozkłada obciążenie procesora na wiele rdzeni, a także pozwala każdemu rdzeniowi komunikować się z GPU w tym samym czasie.

DirectX 12 ma również kilka fantazyjnych dzwonków i gwizdków. Obejmuje to przetwarzanie asynchroniczne i obiekty stanu potoku (PSO). Przetwarzanie asynchroniczne zwiększa wykorzystanie GPU, umożliwiając równoległą pracę wielu obciążeń. To zasadniczo odblokowuje pełny potencjał twojego GPU.

Oprócz renderowania grafiki Twój procesor graficzny jest odpowiedzialny za obsługę wielu innych zadań, takich jak uruchamianie algorytmów uczenia maszynowego. W DirectX 11 GPU może wykonywać tylko jedno z tych zadań na raz iw określonej kolejności. W takim przypadku wydajność spada, ponieważ wszystkie zasoby GPU nie są używane.

Pomyśl o tym jak o kelnerze w restauracji. Kiedy kelner po raz pierwszy przyjmuje twoje zamówienie, pyta, co chciałbyś najpierw wypić. Po otrzymaniu napojów pytają cię, co chciałbyś na danie główne. Twoje zamówienie składa się z etapów. Kelner nie zapyta cię, co chcesz na deser, zanim zjesz danie główne. Chociaż jest to skuteczne, nie jest tak wydajne, jak mogłoby być.

W informatyce każde z zadań kelnera byłoby obsługiwane przez inny zasób GPU. Dopóki nie otrzymasz napoju, zasoby GPU potrzebne do przyjęcia zamówienia na danie główne będą bezczynne. Dzięki asynchronicznemu przetwarzaniu DirectX 12 kelner mógłby przyjąć Twoje zamówienie na raz, jak w sieci fast foodów. Maksymalizuje to wykorzystanie GPU i poprawia wydajność w grach.

DirectX 12 wprowadził również PSO. W przypadku DirectX 11, gdy geometria gry jest przesyłana do procesora graficznego w celu renderowania, za interpretację i renderowanie tych danych odpowiedzialne są różne ustawienia sprzętowe. Nazywa się to potokiem graficznym i jest przepływem danych wejściowych i wyjściowych, które występują, gdy GPU renderuje klatki. Jednak 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 szablonu głębi. W DirectX 11 istnieją zależności między tymi różnymi stanami. W rezultacie jeden stan nie może zostać ukończony, dopóki nie zostanie zdefiniowany poprzedni stan. Zmniejsza to wykorzystanie GPU i zwiększa obciążenie procesora kosztem wydajności.

Aby obejść ten problem, w DirectX 12 wprowadzono PSO, które są obiektami opisującymi stan całego potoku graficznego. PSO są jak butelka zawierająca różne stany i komponenty potrzebne do stworzenia obrazu. Pozwala to GPU na wstępne przetwarzanie każdego stanu zależnego zamiast konieczności ciągłego ponownego obliczania stanów na podstawie bieżącego potoku graficznego.

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

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

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

DirectX 11 to tak zwany interfejs API wysokiego poziomu. Mówiąc prościej, interfejsy API wysokiego poziomu są łatwiejsze w obsłudze dla programistów. Rezultatem są stabilne, dopracowane i grywalne gry. Z drugiej strony, DirectX 12 jest interfejsem API niskiego poziomu i jest inną bestią w porównaniu do DirectX 11. Chociaż pozwala programistom na precyzyjne dostrajanie optymalizacji na poziomie szczegółowym, wymaga również obszernej wiedzy.

To powiedziawszy, gra stworzona w DirectX 12 może skończyć się gorszą wydajnością w zależności od znajomości API przez programistę. Istnieją ulepszenia, które są dostarczane z DirectX 12, ale tak naprawdę sprowadza się to do tego, jak dobrze programista może je wdrożyć. Z tego powodu wielu programistów wybiera interfejsy API wysokiego poziomu, takie jak DirectX 11.

Czy wybrać DirectX 11 czy DirectX 12?

Odpowiedź zależy od kilku rzeczy, takich jak gra, 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 używają 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, firmy ArenaNet.

Obraz w grze z Guild Wars 2
Źródło obrazu: Martin Kerstein/ Guild Wars 2

Wierzcie lub nie, ale ArenaNet potrzebowała dziewięciu lat, aby przejść z DirectX 9 na DirectX 11. Istnieją jednak gry, które obsługują zarówno DirectX 11, jak i DirectX 12. Na przykład Fortnite (przeczytaj naszą ściągawkę do Fortnite). Za pomocą ustawień gry użytkownicy mogą przełączać się między obiema wersjami. Podsumowując, nie każda gra obsługuje zarówno DirectX 11, jak i DirectX 12. Dla tych, którzy to robią, przełączaj się między nimi i sam oceń, która działa lepiej na twoim komputerze.

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

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

Podsumowując, przejście z DirectX 11 na DirectX 12 nie jest tak czarno-białe, jak mogłoby się wydawać. Zależy to od wielu czynników, takich jak sprzęt, oprogramowanie, system operacyjny oraz 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.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *