Contents

DirectX 11 vs. DirectX 12: Jakie są różnice i czego należy używać?

DirectX 12 został wydany wraz z Windows 10 w Wraz z jego wydaniem, DirectX 12 firmy Microsoft zapoczątkował nową erę dla graczy i twórców gier. Zdolny do zmniejszenia obciążenia CPU przy jednoczesnym zwiększeniu wydajności GPU, DirectX 12 szybko zyskał sławę.

Rzeczywiście, można się zastanawiać, czy zwiększenie wydajności może być tak proste, jak migracja z DirectX 11 do jego następcy, DirectX 12. Aby lepiej zrozumieć to przejście, rozsądnie byłoby zbadać rozbieżności istniejące między tymi dwiema iteracjami DirectX.

Czym jest DirectX firmy Microsoft?

/pl/images/untitled-design-1.jpg

Podsumowując, Microsoft DirectX stanowi zestaw narzędzi programistycznych, które ułatwiają wykonywanie różnych operacji multimedialnych w aplikacjach, w szczególności programów do gier wdrażanych w systemach Windows i Xbox. Dla ilustracji, pomocne może być chwilowe zagłębienie się w koncepcję interfejsów programowania aplikacji lub interfejsów API, które są zasadniczo serią protokołów, które umożliwiają płynną komunikację między różnymi komponentami systemu operacyjnego, usprawniając w ten sposób interakcje programistyczne.

Interfejs programowania aplikacji (API) ułatwia komunikację między wieloma aplikacjami poprzez wymianę danych w ustrukturyzowanym formacie. Zasadniczo API działa jak mediator, pozwalając różnym systemom na płynną interakcję. Koncepcja ta jest dalej analizowana w naszym kompleksowym badaniu interfejsów API, w którym zagłębiamy się w ich różne funkcje i wykorzystanie w różnych branżach. Mówiąc prościej, wyobraź sobie, że używasz telefonu do wysyłania i odbierania wiadomości; podobnie API umożliwia przesyłanie informacji z jednego programu do drugiego, umożliwiając użytkownikom dostęp do danych i ich wydajne przetwarzanie.

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

DirectX 11 i DirectX 12 reprezentują różne iteracje w ewolucji graficznego API Microsoftu do tworzenia gier. Podstawowa różnica polega na ich interakcji z architekturą sprzętową komputera. Podczas gdy w grach tworzonych przy użyciu DirectX 11 typowe było wykorzystywanie tylko dwóch do czterech rdzeni CPU, z jednym rdzeniem służącym jako punkt komunikacji między CPU i GPU, DirectX 12 wprowadza ulepszone możliwości wielowątkowości, które umożliwiają bardziej efektywną alokację zasobów między wieloma rdzeniami. Skutkuje to zwiększoną wydajnością i płynniejszym renderowaniem w aplikacjach wykorzystujących ten zaktualizowany interfejs graficzny.

Aby zoptymalizować wydajność w aplikacjach do gier, ważne jest, aby oprogramowanie efektywnie przydzielało zasoby. Oznacza to pełne wykorzystanie wszystkich dostępnych jednostek obliczeniowych przy jednoczesnym utrzymaniu wydajnej komunikacji między nimi. W związku z tym, niektóre systemy operacyjne zaimplementowały mechanizmy pozwalające na rozdzielanie zadań obliczeniowych pomiędzy różne komponenty sprzętowe, takie jak procesory i karty graficzne. Wykorzystując możliwości wielu rdzeni, strategie te zwiększają ogólną wydajność systemu i ułatwiają płynną interakcję między jednostką centralną (CPU) a jednostką przetwarzania grafiki (GPU).

Rzeczywiście, jedną z godnych uwagi cech DirectX 12 jest włączenie zaawansowanych funkcji, takich jak obliczenia asynchroniczne i obiekty stanu potoku (PSO), które znacznie zwiększają wydajność jednostek przetwarzania grafiki (GPU), umożliwiając jednoczesne wykonywanie wielu zadań. W konsekwencji, technologia ta pozwala na optymalne wykorzystanie możliwości procesora graficznego, realizując tym samym jego maksymalny potencjał wydajnościowy.

Oprócz renderowania treści graficznych, procesory graficzne (GPU) są zdolne do obsługi różnorodnych zadań, w tym wykonywania algorytmów uczenia maszynowego. Jednak w DirectX 11, procesor graficzny jest ograniczony do wykonywania tylko jednego z tych zadań w danym momencie i w z góry określonej kolejności. Ograniczenie to skutkuje nieoptymalnym wykorzystaniem zasobów GPU, co negatywnie wpływa na ogólną wydajność.

Rozważmy metaforę kelnera w restauracji. Oczekując na zamówienie, kelner zaczyna od zapytania o preferowaną libację klienta. Po otrzymaniu napojów kelner przechodzi do zapytania o główne danie. Ten krok po kroku proces, pomimo swojej skuteczności, nie jest optymalny ze względu na jego sekwencyjny charakter.

W dziedzinie informatyki możliwe jest, aby różne zasoby procesorów graficznych (GPU) zarządzały indywidualnymi zamówieniami składanymi przez klientów restauracji. Podczas oczekiwania na posiłek, zasoby GPU dedykowane procesowi zamawiania pozostają niezajęte do momentu, w którym są one wymagane do przetworzenia żądania klienta dotyczącego jego dania. Wykorzystując możliwości asynchronicznej architektury obliczeniowej DirectX 12, obsługa kelnerska może efektywnie zbierać wszystkie zamówienia jednocześnie, podobnie jak ma to miejsce w przypadku popularnych fast-foodów. Takie podejście optymalizuje wykorzystanie zasobów GPU i zwiększa ogólną wydajność w grach.

DirectX 12 wprowadza Pipeline State Objects (PSO), które pozwalają deweloperom na większą kontrolę nad możliwościami przetwarzania grafiki. W poprzednich wersjach, takich jak DirectX 11, sprzęt był wyłącznie odpowiedzialny za interpretację i renderowanie danych graficznych za pośrednictwem potoku graficznego, składającego się z szeregu wejść i wyjść skutkujących renderowaniem klatek. Chociaż potok graficzny stanowił podstawę wydajnego renderowania, nie był pozbawiony niedoskonałości.

Obecna konfiguracja obejmuje szereg różnych stanów, takich jak stan rasteryzacji, stan mieszania i stan szablonu głębi, a także kilka innych. W DirectX 11 istnieją współzależności między tymi różnymi stanami, powodując, że są one sekwencyjnie zależne od siebie nawzajem. W rezultacie układ GPU pozostaje niewykorzystany, podczas gdy procesor CPU doświadcza zwiększonego obciążenia, co negatywnie wpływa na ogólną wydajność.

DirectX 12 rozwiązał ten problem wprowadzając Primary Surface Objects (PSO), które reprezentują ogólny stan potoku graficznego. Konceptualizowane jako kontener, PSO obejmują wszystkie niezbędne komponenty wymagane do renderowania obrazu. Wykorzystując obiekty PSO, procesor graficzny może z wyprzedzeniem przetwarzać współzależne stany, zamiast wielokrotnie obliczać je w oparciu o aktywny potok graficzny.

Rzeczywiście, DirectX 12 wykazuje znaczny spadek obciążenia procesora w porównaniu do swojego poprzednika, DirectX 11, co skutkuje zwiększeniem ogólnej wydajności systemu. W rzeczywistości Microsoft poinformował, że nowe API może zmniejszyć wykorzystanie procesora nawet o połowę i zwiększyć wydajność GPU o około jedną piątą. Należy jednak pamiętać, że optymalizacje te mogą się różnić w zależności od różnych czynników, takich jak konfiguracja sprzętowa i specyfika aplikacji.

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

Wprowadzenie DirectX 11 dla Windows Vista miało miejsce 27 października. Następnie w 2015 roku wydano DirectX 12, co dało sześcioletnią przerwę między DirectX 11 i DirectX 12. W ciągu tych lat powstało wiele gier wideo wykorzystujących DirectX 11 jako podstawę. Jednak przejście z DirectX 11 na DirectX 12 wiąże się z poważnymi wyzwaniami.

DirectX 11 to zaawansowany interfejs programowania, który upraszcza programowanie, zapewniając funkcjonalność wyższego poziomu. Skutkuje to bardziej wydajnymi i atrakcyjnymi wizualnie grami wideo. Z kolei DirectX 12 działa na niższym poziomie abstrakcji, wymagając specjalistycznej wiedzy do efektywnego wykorzystania. Podejście to umożliwia jednak większą kontrolę nad optymalizacjami wydajności na poziomie szczegółowym.

Rzeczywiście, skuteczność gry stworzonej przy użyciu DirectX 12 może zależeć od biegłości jej twórcy w zakresie API. Podczas gdy DirectX 12 zapewnia pewne ulepszenia, ostateczny wynik będzie zależał od zdolności programisty do jego efektywnego wykorzystania. W związku z tym wielu programistów wybiera API wyższego poziomu, takie jak DirectX 11, ze względu na ich łatwość użycia i dostępność.

DX 11 vs. DX 12: co wybrać?

Możliwość wykorzystania DirectX 12 w Guild Wars 2 zależy od kilku czynników, w tym od konkretnej gry. W tym przypadku Guild Wars 2 zostało zaprojektowane do działania wyłącznie z DirectX 11, pomimo potencjalnej kompatybilności z DirectX 12 w oparciu o system operacyjny i możliwości sprzętowe użytkownika. Wybór ograniczenia gry do DirectX 11 leży jednak wyłącznie w gestii deweloperów z ArenaNet.

/pl/images/untitled-design-3.jpg Image Credit: Martin Kerstein / Guild Wars 2

Rzeczywiście, warto zauważyć, że ArenaNet potrzebował znacznego okresu dziewięciu lat, aby przejść z DirectX 9 na DirectX Jednak niektóre gry wideo są wyposażone w możliwość jednoczesnego działania zarówno z DirectX 11, jak i DirectX 12, takie jak Fortnite, którego użytkownicy mogą zapoznać się z naszym obszernym przewodnikiem po Fortnite w celu uzyskania dalszych informacji. Ponadto popularne tytuły, takie jak Battlefield 5, Shadow of the Tomb Raider i inne, również oferują tę kompatybilność, umożliwiając graczom łatwe przełączanie między DirectX 11 i DirectX 12 w ustawieniach gry.

Prawdopodobnie fakt, że niektóre gry są kompatybilne zarówno z DirectX 11, jak i 12, doprowadził do zapytania o ich wpływ na wydajność w grze. W szczególności możesz być ciekawy, czy wybór DX 11 lub DX 12 skutkuje lepszą wydajnością w tych grach. Aby odpowiedzieć na to pytanie, przygotowaliśmy film, który porównuje efekty każdej wersji DirectX w różnych tytułach, prezentując dane, takie jak średnia liczba klatek na sekundę, wykorzystanie procesora i wykorzystanie GPU, przy użyciu AMD Ryzen 3600, Nvidia GeForce RTX 3060 Ti i 16 GB pamięci RAM DDR4.

Wyniki te budzą zdumienie, ponieważ często występują minimalne różnice wizualne między DX 11 i DX 12, mimo że zostały one wydane w odstępie kilku lat. Co więcej, warto zauważyć, że wykorzystanie GPU i CPU jest zwykle niższe w przypadku iteracji DX 12 każdego tytułu w porównaniu do ich odpowiedników DX 11.

Rzeczywiście, wybór procesora graficznego (GPU) kompatybilnego z DirectX 11 lub DirectX 12 ma kluczowe znaczenie przy podejmowaniu takiej decyzji. Podczas gdy wiele współczesnych procesorów graficznych jest w stanie obsłużyć DirectX 12, niektóre starsze układy GPU, takie jak Radeon HD wydany w 2008 roku, mogą nie posiadać niezbędnych możliwości do obsługi nowszych tytułów, które w dużym stopniu opierają się na tych interfejsach API. W związku z tym korzystanie z przestarzałego procesora graficznego może ograniczyć możliwość korzystania z najnowszych gier, biorąc pod uwagę jego ograniczoną kompatybilność z DirectX 11 i DirectX 12.

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

Decyzja o przejściu z DirectX 11 na DirectX 12 nie jest sprawą prostą, ponieważ zależy od kilku zmiennych, w tym konfiguracji sprzętu, kompatybilności oprogramowania, systemu operacyjnego i tego, czy dana gra obsługuje obie wersje. W związku z tym należy dokładnie rozważyć przed wyciągnięciem jakichkolwiek wniosków, które powinny mieć zastosowanie do kolejnych iteracji DirectX.