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.