Technologie i wydarzenia
Artykuł
Marcin Bieńkowski, Środa, 20 czerwca 2007, 09:30
O Microsoftowych bibliotekach graficznych DirectX 10 głośno już było w listopadzie zeszłego roku, kiedy to światło dzienne ujrzały biznesowe wersje Windows Vista. Chwilę później pojawił się GeForce 8800 NVIDII, który był, jako pierwszy układ 3D, kompatybilny z tym graficznym API (ang. Application Programming Interface). Na karty zgodne z DX10 z konkurencyjnej stajni AMD/ATI - Radeon HD 2900 XT - przyszło nam poczekać do 14 maja. Teraz, kiedy obie firmy oferują już sprzęt kompatybilny z DX10, postanowiliśmy przyjrzeć się uważniej tej najnowszej wersji bibliotek graficznych.

Na początku zacznijmy od wyjaśnienia, czym są w ogóle biblioteki graficzne i do czego się je stosuje. Większość z Was zapewne słyszała nie tylko o DirectX, ale również o OpenGL. Obydwa programy to tak naprawdę moduły interfejsu programistycznego API. W API zawarte są wszystkie procedury, funkcje i interfejsy umożliwiające komunikację z systemem operacyjnym, bibliotekami lub sterownikami zewnętrznymi w stosunku do korzystającej z API aplikacji. Innymi słowy, zarówno DirectX, jak i OpenGL pośredniczą w komunikacji między np. grą a sterownikami karty graficznej zainstalowanej w komputerze i jednocześnie unifikują polecenia i procedury związane ze wszystkimi aspektami tworzenia grafiki 3D. Istnienie takich bibliotek jest bardzo ważne z punktu widzenia programistów, gdyż korzystają oni wyłącznie z poleceń zawartych w API i nie muszą pisać kilku niekompatybilnych wersji tej samej gry, powiedzmy na karty NVIDII, ATI czy układy firmy Intel lub S3.


Elementy składowe i moduły wykonawcze z potoku graficznego w DirectX 10; źródło: NVIDIA

Tak wiec z jednej strony bibliotek graficznych mamy aplikację, z drugiej zaś sterownik karty. Do zadań drivera należy między innymi tłumaczenie ciągu instrukcji i danych płynących z interfejsu API na wewnętrzny język poleceń zrozumiały dla układu graficznego 3D. Wynika z tego, że sterownik karty graficznej powinien być dostarczony bezpośrednio przez producenta układu graficznego, gdyż tylko on najlepiej zna poszczególne funkcje układu i dokładnie wie, jak realizowane jest przetwarzanie potoku graficznego (ciągu następujących po sobie zdarzeń prowadzących do wygenerowania sceny 3D) wewnątrz GPU.


Schemat działania modułu Direct3D 10 z bibliotek DirectX 10 w systemie Vista; źródło: Microsoft

Dobrze zaprojektowany tandem: układ 3D–sterownik powinien działać tak szybko, jak to tylko możliwe. Co to oznacza w praktyce? Otóż driver powinien mieć jak najmniej do roboty, aby niepotrzebnie nie obciążać jednostki centralnej komputera. Źle napisany sterownik potrafi spowolnić pracę karty nawet o 30–40%! Z drugiej strony, aby driver działał sprawnie, powinien również jak najmniej ingerować w kod i dane przesyłane z interfejsu API. Aby spełnić ten warunek, inżynierowie projektujący układy 3D dążą do tego, aby ich procesory graficzne były jak najbardziej zgodne z graficznymi bibliotekami. Dzięki temu sterownik karty 3D nie będzie miał dużo do roboty (czyli nie będzie mocno obciążał CPU) przy przekształcaniu ciągu instrukcji na kod zrozumiały dla procesora 3D i przy formatowaniu danych dla niego.

Co ciekawe, zespoły projektantów z różnych konkurujących ze sobą firm bardzo ściśle współpracują nie tylko z programistami piszącymi graficzne API, ale również wymieniają się ze sobą szczegółowymi informacjami technicznymi. To od nich w dużej mierze zależy, jakie efekty graficzne wprowadzone zostaną w kolejnej odsłonie bibliotek graficznych i jak w pewnym przybliżeniu powinny być one realizowane na drodze sprzętowej. To przybliżenie drogi realizacji efektu 3D wynika stąd, że dokładna metoda jak dojść do tego, aby na ekranie uzyskać odpowiedni efekt graficzny zależy już wyłącznie od architektury układu i wewnętrznych funkcji zaimplementowanych w strukturze chipa – a takimi informacjami firmy niezbyt chętnie się już dzielą, tym bardziej, że z punktu widzenia projektowania graficznego API to, jak jest wewnętrznie realizowany efekt 3D, nie ma najmniejszego znaczenia.

To właśnie różnice w sposobie realizacji efektów 3D, mimo unifikacji wprowadzonej przez biblioteki graficzne, sprawiają, że obraz wygenerowany za pomocą różnych modeli kości 3D (nawet jeśli są one wyprodukowane przez tę samą firmę) może wyglądać nieco inaczej. O tym możecie przeczytać m.in. w artykule Z lupą w ręku, czyli rendering ATI i NVIDII pod kontrolą. Na szczęście odstępstwa te nie są zbyt duże i trudno je w praktyce dostrzec, tym bardziej, że projektanci wiedząc jak ma wyglądać dany efekt, dążą do tego, aby to co zobaczymy na ekranie, jak najbardziej zbliżone było do założonego wzorca. Co ciekawe, do tego aby karta 3D zgodna była z jakąś wersją bibliotek graficznych, wcale nie musi wykonywać wszystkich przewidzianych w specyfikacji instrukcji, ani obsługiwać wszystkich formatów danych. Okazuje się bowiem, że do osiągnięcia zgodności wystarczy obsługa podstawowych, wyszczególnionych w specyfikacji API funkcji oraz formatów danych. Bardziej zaawansowane instrukcje mogą być realizowane albo za pośrednictwem symulacji przeprowadzanych w sterownikach (tak realizuje się w niektórych układach zintegrowanych operacje werteksowe, np. w module Intel Graphics Media Accelerator 900 znajdującym się m.in. w chipsetach z serii i915 czy starszym Intel Extreme Graphics 2 z układów i865G) albo zastępowane są innymi operacjami, z którymi radzi już sobie dany model kości 3D. Niestety, w takich wypadkach końcowy obraz nie zawsze wygląda już tak dobrze, jak powinien.




Na powyższych zrzutach ekranowych z gry Halo widać wyraźnie różnice między obrazem generowanym przez układ z emulacją softwarową efektów 3D (u góry Intel GMA900) i kartą generującą obraz w całości sprzętowo (na dole ATI Radeon 9600).
Dzięki uprzejmości www.fcenter.ru

Ocena artykułu:
Ocen: 2
Zaloguj się, by móc oceniać
Szelo (2007.06.20, 09:38)
Ocena: 0

0%
O, czyżby debiut na Labie? smilies/Up_to_something.gif
pila (2007.06.20, 09:39)
CYTAT(sz3lo @ 20 czerwca 2007, 09:38) <{POST_SNAPBACK}>
O, czyżby debiut na Labie? smilies/Up_to_something.gif

Tak smilies/smile.gif A nazwisko autora jest Ci znane?
Szelo (2007.06.20, 09:58)
Ocena: 0

0%
CYTAT(pila @ 20 czerwca 2007, 09:39) <{POST_SNAPBACK}>
Tak smilies/smile.gif A nazwisko autora jest Ci znane?

Coś kojarzę, z Chip-a chyba. smilies/tongue.gif
Tommo (2007.06.20, 09:58)
Ocena: 0

0%
Mnie jest znane... smilies/wink.gif Nowa krew w Redakcji na stałe czy tylko dorywczo?
all15 (2007.06.20, 10:06)
Ocena: 0

0%
Szczerze to dla mnie zdjęcia z gry Techlandu w DX9 są lepsze - bardziej kolorowe i żywe. Ogólnie ten DX10 to porażka i marketingowy bełkot - i zaznacze, że pisze tak pomimo, iż mam 8800gts (zazwyczaj ludzie napadają ze nie stać Cię i dlatego tak piszesz). Szkoda tylko, że przekonałem się o tym już po zakupie smilies/sad.gif
enzo2 (2007.06.20, 10:07)
Ocena: 0

0%
Fajny art, ale nic o czym nie mówionoby wcześniej. Gatuluję debiutu i liczę na dalszą współpracą, jak i poszerzanie ekipy PCLab smilies/smile.gif
flaK (2007.06.20, 10:09)
Ocena: 0

0%
Ano, arcik bardzo fajny. Tylko dwa obrazki na dole strony 4 artykułu wypluwają error 404.
pila (2007.06.20, 10:09)
CYTAT(sz3lo @ 20 czerwca 2007, 09:58) <{POST_SNAPBACK}>
Coś kojarzę, z Chip-a chyba. smilies/tongue.gif

smilies/thumbup.gif

CYTAT(Tommo @ 20 czerwca 2007, 09:58) <{POST_SNAPBACK}>
Mnie jest znane... smilies/wink.gif Nowa krew w Redakcji na stałe czy tylko dorywczo?

Mam nadzieję, że na stałe smilies/smile.gif
enzo2 (2007.06.20, 10:10)
Ocena: 0

0%
CYTAT(all15 @ 20 czerwca 2007, 10:06) <{POST_SNAPBACK}>
Szczerze to dla mnie zdjęcia z gry Techlandu w DX9 są lepsze - bardziej kolorowe i żywe. Ogólnie ten DX10 to porażka i marketingowy bełkot - i zaznacze, że pisze tak pomimo, iż mam 8800gts (zazwyczaj ludzie napadają ze nie stać Cię i dlatego tak piszesz). Szkoda tylko, że przekonałem się o tym już po zakupie smilies/sad.gif


Chyba nie liczyłeś że na 8800GTS odpalisz gierki z DX10? Też mam tą kartę i kupiłem ją tylko ze względu na wydajność w DX9, mam świadomość że jak wyjdą gierki w pełni pod 10 to znowu czeka mnie wymiana. A co do screenów z techlandu to te z 10 moim zdaniem wyglądają naturalniej. W sumie za podsumowanie najlepiej pasuje zdanie o dostępności tych samych efektów w 9 i 10, różnica tkwi w trudności implementacji.
staffer (2007.06.20, 10:15)
Ocena: 0

0%
artykulik przyjemny i ogólnie ładnie podsumowuje zagadnienie DX 9/10.
Miło widzieć że ekipa się rozszerza (osobiście nie obraziłbym się na więcej niż ustalona ilość artów na dzień smilies/szczerbaty.gif )
Zaloguj się, by móc komentować
Artykuły spokrewnione
Facebook
Ostatnio komentowane