Pod Lupą: czym jest DirectX?

2018-12-09
Pod Lupą: czym jest DirectX?Wraz z premierą najnowszego systemu Windowsa oznaczonego numerem 10 pojawił się też nowy DirectX 12.

To co odróżnia DirectX 11 i 12 od poprzednich wersji to głównie nacisk postawiony nie na poprawę jakości i realizmu wyświetlania obrazu, ale na szybkość przetwarzania danych i to nie tylko w grach. Oznacza to, że nie ma się co spodziewać rewolucji we wprowadzaniu nowych efektów graficznych na miarę cieniowania w DirectX 8 i 9. Pojawia się za to dużo technologii ulepszających współpracę pomiędzy CPU a GPU i przyspieszających rendering – teselacja, przetwarzanie wielowątkowe oraz Compute Shader.

Teselacja

Teselacja nie jest niczym nowym w przypadku ATI/AMD. Po raz pierwszy została zaprezentowana w 2002 roku pod nazwą TruForm. Jednak ze względu na słabe wsparcie ze strony programistów gier technologia ta została odłożona na półkę. Wróciła w roku 2005 wraz z premierą Xboxa 360, który potrafi przeprowadzić sprzętową teselację. Począwszy od serii kart graficznych ATI Radeon HD 2000 jest znów integrowana w nowych układach graficznych i rozwijana. Jest to dosyć ważny fakt, bo gdy Nvidia rozwija tą technologię od początku, AMD posiada w tym temacie 7-letnie doświadczenie.

Dość historii. Czym w takim razie jest teselacja i co ona daje?

Każda scena 3D składa się z pewnej ilości wielokątów. Teselacja pozwala na dzielenie tych wielokątów na dużo więcej mniejszych fragmentów. W ten sposób obiekt zyskuje na szczegółowości. Dodatkowo dzieleniem obiektu na trójkąty zajmuje się karta graficzna i sterownik. Programista jedynie wskazuje bryłę (lub jej fragment), który ma zostać poddany teselacji. Technika ta od dłuższego czasu jest już stosowana w filmach i animacjach komputerowych, a dopiero niedawno trafiła w ręce programistów gier. Dodatkowo twórca gry może stworzyć olbrzymią ilość trójkątów bez martwienia się o olbrzymi spadek wydajności, ponieważ obliczenia wykonywane są „wewnątrz” karty graficznej i nie muszą być przesyłane do procesora CPU ani zewnętrznej pamięci RAM.

Stosowanie teselacji powoduje wygładzenie bryły. Widać to dobrze na poniższym przykładzie. Chyba każdy z nas pamięta kanciaste głowy z Doom’a 3. W momencie dzielenia fragmentów bryły na mniejsze trójkąty wierzchołki tych trójkątów mniej „odstają” od jej powierzchni – w efekcie bryła wygląda na bardziej zaokrągloną.


Teselacja zdecydowanie poprawia jakość i szybkość renderowania poniższych efektów:

• dynamiczna powierzchnia wody – wygląda znacznie bardziej realistycznie. Dodatkowo powierzchnia może być tworzona wyłącznie na podstawie bazowej siatki składającej się ze stosunkowo niewielkiej liczby wielokątów.
• dynamiczne ubrania na postaciach – bardziej dokładna interakcja ze środowiskiem, np. falowanie na skutek wiatru lub ruchu postaci.
• bardziej szczegółowy tłum postaci – dzięki teselacji wysoki poziom szczegółowości nie jest już ograniczony przez postacie w pierwszych rzędach.

Sprzętowa teselacja w Aliens vs. Predator™


Po lewej teselacja wyłączona, po prawej włączona

Powierzchnia wody

Wielowątkowość

Chociaż wielowątkowość nie jest niczym nowym w kartach graficznych, jest ona bardzo ważną częścią DirectX 11, a w Direct 12 została tylko lekko porawiona, chociażby z tego powodu, że dzięki nowym sterownikom mogą ją obsługiwać karty graficzne z poprzednich serii. Wystarczy, że gra obsługuje DirectX 11 i w systemie zainstalowane są odpowiednie biblioteki.

W komputerach PC już dawno rozgościły się procesory dwurdzeniowe, a czterordzeniowe też nie są rzadkością. Z tego względu aż dziwi fakt, że do tej pory DirectX nie był wielowątkowy. ATI omijało ten problem poprzez wprowadzenie sterowników korzystających z równoległego przetwarzania. Jednak z racji tego, że API DirectX jest zaprojektowane dla przetwarzania w pojedynczym wątku, sukces nie był całkowity, gdyż programiści mieli znacznie utrudnioną pracę.

Dzięki DirectX 11 i 12 wszystkie rdzenie procesora CPU mają się zajmować równoczesnym przygotowywaniem kolejek poleceń i mają to robić równolegle. Procesem ma zarządzać jeden z rdzeni, więc im więcej rdzeni, tym większy zysk z wielowątkowego przetwarzania. Żeby nie było niedomówień – procesor CPU nie zajmuje się przetwarzaniem grafiki. Zadanie procesora to obliczanie, gdzie co powinno znajdować się na ekranie, ruch postaci, szkielet sceny, czyli podstawowe przygotowanie ramki. Z racji tego wielowątkowość nie będzie miała bezpośredniego wpływu na nakładanie tekstur, FSAA czy AF – zadania najbardziej obciążające kartę graficzną.

Wygląda na to, że w najnowszych grach, w których twórcy zdecydują się wykorzystać wielowątkowość, właściciele 4-rdzeniowch Phenomów odczują wzrost wydajności. Największy zysk będzie widoczny na najmocniejszych konfiguracjach, gdzie CPU często ogranicza potencjał karty graficznej.

Na poniższych obrazkach widać różnicę w sposobie renderowania w DirectX 10 i DirectX 11/12.
Po lewej DirectX 10, po prawej DirectX 1/12

Compute Shaders

Kolejnym elementem DirectX 11 i 12  są Compute Shaders (shadery obliczeniowe). Są to elementy pozwalające karcie graficznej na wykonywanie obliczeń niezwiązanych z generowaniem obrazu. W zamyśle twórców DirectX będą one głównie wykorzystywane do obliczeń fizyki oraz postprocessingu sceny. Ilość procesorów na karcie graficznej (1600 w przypadku HD 5870) pozwala na znaczne przyspieszenie obliczeń zadanych przez programistę – mogą to być działania związane np. ze sztuczną inteligencją przeciwników w grze, transkodowanie filmów wideo, upscaling filmów.

Zastosowanie shaderów obliczeniowych pozwala także na uzyskanie nowych efektów graficznych.

Niektóre z nich to:
• Postprocesing sceny – zaawansowane techniki oświetlenia sceny.
• Filtrowanie cieni – miękkie brzegi cieni rzucanych przez przedmioty w grze, które zwiększają realizm sceny.
• Głębokość ostrości – dzięki GPU można przeprowadzić obliczenia symulujące patrzenie przez obiektyw aparatu lub soczewkę karabinu.
• Efekty cząsteczkowe – zachowanie się dymu.
• High definition ambient occlusion – bardzo realistyczne połączenia światła i cienia, np. w eksplozjach.
• Usprawnienia dla programistów – model programowania obiektowego.
• Poprawienie dokładności renderingu dzięki obliczeniom podwójnej precyzji.
• Dla użytkownika końcowego ciekawa będzie możliwość sterowania strumieniowymi operacjami wejścia-wyjścia. W nowym Windows® 7 ta technologia jest wykorzystywana do zarządzania multimediami.

Multimedialny mechanizm drag & drop pozwala, by po podłączeniu do komputera urządzenia takiego jak odtwarzacz MP4 czy konsola Sony PSP i wybraniu w eksploratorze Windows znajdującego się na dysku komputera materiału wideo i przeciągnięciu go do urządzenia rozpoczęło się transkodowanie filmu na odpowiedni format. Transkodowanie to zamiast procesora CPU wykorzystuje procesor graficzny i strumieniowe operacje wejścia-wyjścia z SM 5.0. Nie dość, że nie spowalnia to komputera, to jeszcze proces transkodowania jest znacznie szybszy.

Compute shaders nie są tak naprawdę nowością, gdyż firma ATI/AMD zdążyła już przedstawić własną technologię pozwalającą karcie graficznej wyręczać procesor CPU w obliczeniach – ATI Stream. Dzięki DirectX 11 i DirectCompute deweloperzy gier dostali jednak do ręki uniwersalne API pozwalające na korzystanie z dobrodziejstw GPGPU niezależnie od firmy produkującej daną kartę graficzną.

Głębokość ostrości


Po lewej bez głębokości ostrości, po prawej z głębokością ostrości

Przezroczystość


Po lewej Alpha Blending (DirectX 7+), po prawej Order-Independent Transparency (DirectX 11/12)

Nowością są też dwa nowe standardy kompresji tekstur – BC6 i BC7. Mają one na celu poprawę jakości wyświetlanego obrazu HDR bez spadku szybkości renderowania sceny.

High Dynamic Range - technologia generowania sceny w grafice trójwymiarowej, której efektem jest renderowanie świata z realistycznym oświetleniem, przy użyciu szerszego niż normalnie zakresu jasności oświetlenia.

BC6 pozwala na kompresowanie tekstur w stosunku 6:1 praktycznie bez spadku ich jakości. Z kolei BC7 kompresuje tekstury 8-bit LDR (Low Dynamic Range) w stosunku 3:1.

Przykład sceny z włączonym i wyłączonym HDR.

Po lewej z włączonym HDR, po prawej z wyłączonym HDR

Gry obsługujące DirectX 11 oraz różnice między 11 a 12

W tym momencie pozostaje nam czekać na jak najwięcej nowych tytułów wykorzystujących technologie zawarte w DirectX 12. Różnica obecnie pomiędzy wersji 11, a 12 nie jest duża, a wręcz przeciwnie gry zarówno na tym i na tym wyglądają bardzo podobnie. DirectX 12 nie jest takim przełomem jak 11, a wręcz przeciwnie poprawia tylko niektóre elementy, które i tak były mało znaczące. Gry wykorzystujące Direct X 12 wyglądają minimalnie lepiej i czasami są stabilniejsze pod względem wyświetlanych klatek na sekundę. Jednakże muszą to być gry korzystające z 12. Tak czy siak wiecie już czym jest DirectX, co wprowadziły jego najnowsze wersje i czemu jest tak ważny w grach.

Nasze zestawy dla graczy znajdziecie tutaj.

Bibliografia:
http://game.amd.com/us-en/promotion_dx11.aspx
http://www.tomshardware.com/reviews/radeon-hd-5870,2422-7.html
http://www.chip.pl/artykuly/technika/2009/07/tajemnice-jedenastki/article_view?b_start%3Aint=0&-C
http://pclab.pl/art33680.html
Pokaż więcej wpisów z Grudzień 2018
Strona korzysta z plików cookie w celu realizacji usług zgodnie z Polityką dotyczącą cookies. Możesz określić warunki przechowywania lub dostępu do cookie w Twojej przeglądarce.
Zamknij
pixel