DirectX 10

DirectX 10

Autor: Dawid Długosz

Opublikowano: 4/10/2007, 12:00 AM

Liczba odsłon: 22435

Słowem wstępu...

Wraz z najnowszym systemem operacyjnym Microsoft Windows Vista zadebiutowała kolejna odsłona DirectX 10. Jest to swego rodzaju interfejs API, pośredniczący między sprzętem, a aplikacją i stanowi środowisko dla uruchamianych programów. DirectX jest zbiorem bibliotek odpowiadających za obsługę grafiki 2D i 3D, ale także dźwięku oraz za połączenia sieciowe. W tym artykule jednakże postaramy się przybliżyć Direct3D, czyli moduł obsługujący grafikę w grach komputerowych, a zmiany są doprawdy rewolucyjne!

DirectX 10 jest składnikiem Windows Vista i Microsoft nie planuje wprowadzić go na starsze platformy operacyjne. Cóż to oznacza dla użytkowników? Mianowicie to, iż jeśli komputer jest przez nas wykorzystywany do celów rozrywkowych (np. gry), to przesiadka do Windows Vista, prędzej czy później, nas nie ominie, jeśli będziemy chcieli skorzystać z dobrodziejstw dziesiątej wersji DirectX. W Windows Vista znajduje się także biblioteki w wersji dziewiątej z dodatkowym oznaczeniem L (od nazwy kodowej systemu, czyli Longhorn). Rozwiązanie takie zastosowano, gdyż nowe API nie jest kompatybilne wstecz. DirectX 10 został praktycznie napisany od nowa, w celu zniesienia ograniczeń związanych z poprzednimi generacjami, stąd też wynika brak zgodności.

Najważniejsze zmiany w DirectX 10

  • Przyspieszone przetwarzanie grafiki 3D
  • Nowy model cieniowania (Shader Model 4.0)
  • Obsługa zunifikowanych jednostek cieniowania
  • Ulepszona technologia HDR
  • Zwiększona liczba obiektów w scenie trójwymiarowej
  • Brak zgodności z poprzednimi wersjami bibliotek
  • Wprowadzenie nowych typów danych, dzięki którym dokładniej można odwzorować rzeczywiste obiekty
  • Lepsze wykorzystanie mocy procesora graficznego (GPU), przy jednocześnie mniejszym zużyciu CPU

Shader Model 4.0

Nowy model cieniowania, który został wprowadzony wraz z DirectX 10, otrzymał oznaczenie 4. Shader Model jest zbiorem instrukcji i poleceń, które odpowiadają za przetwarzanie cieni, obiektów oraz tekstur poprzez jednostki pixel i vertex, które znajdują się w GPU karty graficznej. Do tej pory DirectX 8 oraz 9 zakładały istnienie obu tych jednostek i był widoczny rozdział pomiędzy nimi. Kupując nowy akcelerator 3D, mogliśmy się dowiedzieć, iż dysponuje on określoną ilością jednych i drugich. Dochodziło jednakże wtedy do pewnego niewykorzystywania w pełni mocy karty, gdyż jedne gry bardziej obciążały pixel shader, a inne znowu vertex shader, przez co po prostu część procesora graficznego się marnowała. Wraz z wprowadzeniem Shader Model 4.0 ma się to diametralnie zmienić poprzez wprowadzenie jednostek zunifikowanych, czyli po prostu shaderów, które odpowiednio, zależnie od potrzeby, mogą być zarówno jednostkami pikseli, jak i wierzchołków. Jeśli gra wymaga więcej mocy do stworzenia struktury za pomocą vertex shader, to zostają one automatycznie przydzielone do tego zadania. Dzięki takiemu rozwiązaniu znacznie wzrośnie szybkość przetwarzanych scen 3D. Poszerzeniu także uległa maksymalna ilość instrukcji, jakie mogą zostać wykonane, obecnie wynosi ona 64000. Kontrola przepływu operacji vertex i pixel shader odbywa się teraz wyłącznie dynamicznie. Także wielkość tekstury wzrosła szesnastokrotnie. Te rozwiązania pozwolą na dokładniejsze odwzorowywanie rzeczywistych obiektów. Zmniejszono zużycie CPU, przerzucając większość operacji związanych z kreowaniem sceny na rdzeń graficzny, przez co jednostka centralna komputera może w tym czasie zająć się innymi obliczeniami. Dzięki takiemu rozwiązaniu gry powinny działać szybciej. Dodanie nowych klas obiektów umożliwia bardziej dokładne i szczegółowe tworzenie wirtualnego świata. Poniższa tabela przedstawia porównanie Shader Model w wersji 4.0 w stosunku do 3.0.

Shader Model 3.0 (DirectX 9.0c) Shader Model 4.0 (DirectX 10)
Instrukcje pikseli 512 64000
Instrukcje wierzchołków 512 64000
Stałe pikseli 224 16x4096
Stałe vertexów 256 16x4096
Rozmiar tekstury (piksele) 2048x2048 8192x8192
Elementy renderingu 4 8
Tekstury pikseli 16 128
Tekstury wierzchołków 4
Tymczasowe dane pikseli 32 4096
Tymczasowe dane wierzchołków 16
Wejściowe dane pikseli 10 32
Wejściowe dane wierzchołków 16 16

Geometry Shader

Wraz z Shader Model 4.0 zostały prowadzone nowe jednostki shaderów, a mianowicie geometry shader. Odpowiadają one za bardziej realistyczne przedstawienie obiektów poprzez mapowanie przemieszczeń. Ich praca polega na wykonywaniu operacji na zgrupowanych wierzchołkach. Rozwiązanie to już było wprowadzone w generacji dziewiątej DirectX, lecz tam odbywało się to poprzez regulację naświetlenia obiektu, a tutaj wprowadzane są zmiany w geometrii struktury. Dzięki temu wypukłości oraz nierówności obiektów zostaną o wiele lepiej odwzorowane, przez co staną się bardziej realistyczne dla oka. Wcześniej duża część tych obliczeń spoczywała na jednostce centralnej komputera, teraz te zadania zostały powierzone akceleratorowi graficznemu.

HDR

HDR czyli High Dynamic Range pojawiło się już w DirectX 9.0c. Funkcja odpowiada za rendering realistycznego oświetlenia w grafice 3D. Dzięki niej obiekty bardzo ciemne oraz bardzo jasne są doskonale odwzorowywane podczas tworzenia sceny trójwymiarowej nadając jej nową jakość. Także ten element uległ modyfikacji, a dokładniej ewolucji. Zwiększono ilość kolorów dla kanału do 32 bitów (poprzednio 8), przez co uzyskano większe możliwości operowania barwą, co pozwoli na dokładniejsze przedstawienie oświetlonych elementów.

Instancing

To kolejna funkcja, która już istniała w DirectX 9. Polega na tym, iż możemy powielać takie same obiekty, dowolną ilość razy, w danej scenie 3D. Lecz i tutaj zrobiono postęp, gdyż w DirectX 9 wszystkie obiekty wyglądały i/lub zachowywały się tak samo. W najnowszej odsłonie zniesiono tą granicę. Programiści mogą na podstawie tego samego modelu generować wiele klonów, z których każdy będzie zachowywał się inaczej i posiadał własne, unikalne cechy. Zaprezentowane w ten sposób sceny składające się z wielu obiektów ulegną zróżnicowaniu, przez co ogólny efekt będzie bardziej realistyczny.

Podsumowanie

Zmiany w DirectX 10 są naprawdę rewolucyjne. Pozwalają na stworzenie nowej jakości grafiki trójwymiarowej przez programistów, dzięki czemu nowe tytuły gier komputerowych zyskają olśniewającą grafikę, która w końcu może zacznie przypominać sceny znane z realnego świata. Na ten rok zapowiedzianych zostało już kilka tytułów zgodnych z nową odsłoną bibliotek DirectX. Także do niektórych gier starszej generacji zostaną udostępnione odpowiednie patche dodające tą obsługę. Martwi jednakże trochę brak wsparcia dla starszych okienek. Microsoft ostatnio zapowiedział wprowadzenie DirectX 10.1, lecz w tym wypadku będziemy mieć do czynienia zapewne z poprawkami i kosmetyką istniejącej wersji. Aby cieszyć się nową jakością grafiki 3D musimy posiadać Windows Vista oraz odpowiedni sprzęt (w momencie pisania artykułu tylko nVidia zaprezentowała na rynku karty graficzne zgodne z nowymi bibliotekami). Graczy więc czeka niemały wydatek.

Jak wykorzystać Copilot w codziennej pracy? Kurs w przedsprzedaży
Jak wykorzystać Copilot w codziennej pracy? Kurs w przedsprzedaży

Wydarzenia