Złap kod rabatowy -15% na kamery Encore View i miej wszystko pod kontrolą! Sprawdź!
Zapisz na liście zakupowej
Stwórz nową listę zakupową

Pod Lupą: czym jest DirectX?

2018-12-09

DirectX to zbiór interfejsów programowania aplikacji (API) opracowany przez Microsoft. Umożliwia tworzenie zaawansowanych efektów multimedialnych, w tym grafiki 3D i dźwięku na platformie Windows. Od premiery DirectX odgrywa kluczową rolę w rozwoju gier komputerowych i oprogramowania multimedialnego. Umożliwia programistom bezpośredni dostęp do sprzętu komputerowego w celu optymalizacji wydajności. DirectX 12 zadebiutował wraz z systemem Windows 10, kładąc nacisk na poprawę wydajności przetwarzania danych, co jest korzystne dla gier i aplikacji wymagających dużej mocy obliczeniowej.

Z artykułu dowiesz się:

  • czym jest DirectX i jakie ma znaczenie w świecie multimediów,
  • jakie są różnice między DirectX 11 a DirectX 12,
  • dlaczego DirectX 12 kładzie nacisk na wydajność procesora i grafiki,
  • w jaki sposób teselacja wpływa na jakość i realizm obrazu w grach,
  • jakie technologie wspomagają współpracę między CPU a GPU,
  • dlaczego programiści gier coraz częściej sięgają po nowe funkcje DirectX,
  • jak historia teselacji wpłynęła na rozwój grafiki komputerowej.

To co wyróżnia DirectX 11 i DirectX 12 od poprzednich wersji to głównie nacisk na szybkość przetwarzania danych. Nie ma się co spodziewać rewolucji w efektach graficznych na miarę cieniowania z DirectX 8 i 9. Pojawia się za to wiele technologii, które ulepszają współpracę pomiędzy CPU a GPU i przyspieszają rendering – teselacja, przetwarzanie wielowątkowe oraz Compute Shader.

Teselacja nie jest nowością w przypadku ATI/AMD. Po raz pierwszy zaprezentowana w 2002 roku jako TruForm, wróciła w 2005 roku z premierą Xboxa 360, który obsługuje teselację sprzętową. Od serii kart graficznych ATI Radeon HD 2000 teselacja jest integrowana i rozwijana. Jest ważne, bo gdy Nvidia rozwija technologię od początku, AMD ma 7-letnie doświadczenie. Teselacja pozwala na dzielenie wielokątów na mniejsze fragmenty, co zwiększa szczegółowość. Za dzielenie obiektu na trójkąty odpowiada karta graficzna i sterownik, a programista wskazuje bryłę do teselacji. Technika ta była stosowana w filmach i animacjach, a teraz trafiła do programistów gier. Teselacja wygładza bryłę, co widać na przykładzie gładkich głów zamiast kanciastych z Doom’a 3.



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

FAQ

DirectX to zestaw interfejsów programowania aplikacji (API) stworzony przez Microsoft, który umożliwia tworzenie zaawansowanych efektów multimedialnych, w tym grafiki 3D i dźwięku, na platformie Windows.

DirectX 12 wprowadza znaczące usprawnienia w zarządzaniu zasobami i efektywności przetwarzania, kładąc nacisk na poprawę wydajności poprzez lepszą współpracę między CPU a GPU, co przekłada się na wyższą płynność i jakość grafiki w grach.

Teselacja to technika dzielenia wielokątów na mniejsze fragmenty, co pozwala na zwiększenie szczegółowości obiektów 3D. Dzięki temu modele w grach stają się bardziej realistyczne i płynne.

Przetwarzanie wielowątkowe w DirectX 12 umożliwia równoczesne wykonywanie wielu zadań przez procesor, co prowadzi do lepszego wykorzystania zasobów systemowych i zwiększenia wydajności aplikacji.

Compute Shader to program uruchamiany na GPU, który pozwala na wykonywanie obliczeń niezwiązanych bezpośrednio z renderowaniem grafiki, takich jak symulacje fizyczne czy przetwarzanie danych, co odciąża CPU i przyspiesza działanie aplikacji.

DirectX 12 wymaga systemu Windows 10 lub nowszego oraz kompatybilnej karty graficznej obsługującej tę wersję API. Warto sprawdzić specyfikację swojego sprzętu, aby upewnić się o zgodności.

Tak, DirectX 12 jest kompatybilny wstecz, co oznacza, że gry stworzone dla wcześniejszych wersji DirectX powinny działać poprawnie na systemach z zainstalowanym DirectX 12.

Pokaż więcej wpisów z Grudzień 2018
pixel