Bliskie spotkania trzeciego stopnia

Najnowszy procesor Nvidii GeForce 256 ma ponad 20 milionów tranzystorów i stopniem swojego skomplikowania znacznie przewyższa Pentium III. Jest tylko jedno zastosowanie, które może wymagać tak olbrzymiej mocy obliczeniowej - grafika trójwymiarowa.

Najnowszy procesor Nvidii GeForce 256 ma ponad 20 milionów tranzystorów i stopniem swojego skomplikowania znacznie przewyższa Pentium III. Jest tylko jedno zastosowanie, które może wymagać tak olbrzymiej mocy obliczeniowej - grafika trójwymiarowa.

Producenci kart graficznych zarzucają nas swoimi nowymi produktami. W gąszczu dostępnych układów coraz trudniej się rozeznać, zwłaszcza że fachowe nazwy funkcji obsługiwanych przez poszczególne karty niewiele powiedzą laikowi. Jedno jest pewne - szybkimi krokami zbliżamy się do chwili, gdy karty graficzne będą potrafiły w czasie rzeczywistym generować obraz równie realny, jak świat, który znamy z doświadczenia. Już teraz ich możliwości są imponujące.

W jaki sposób powstaje obraz 3D?

Geforce i spółka

Nvidia, wprowadzając procesor GeForce 256, pozostawiła swoją konkurencję daleko w tyle - wszystkie inne układy dostępne obecnie na rynku znacznie przegrywają pod względem zaawansowania technologicznego. Nikt jednak nie może być dziś pewien swojej pozycji na rynku.

Przynajmniej trzech producentów zapowiada, że w najbliższym czasie przedstawią swoje, równie wydajne konstrukcje.

Najbardziej prawdopodobna jest rychła premiera nowego układu firmowanego przez S3. Najnowszy z procesorów w rodzinie Savage oznaczony został liczbą 2000, co zapewne symbolizuje technologię na nowe Millennium. Podobnie jak GeForce 256, Savage 2000 odciąża w znacznym stopniu główny procesor komputera, przejmując od niego generowanie geometrii sceny i obliczanie oświetlenia. Fillrate, jeden z najważniejszych parametrów kart graficznych, powinien wynosić 700 Megatekseli, podczas gdy np. Voodoo 3500 osiąga jedynie 366 Megatekseli. Pamięć i procesor będą taktowane identyczną częstotliwością 200 Mhz. Pierwsze karty z układem Savage 2000 powinny pojawić się do końca listopada, ich producentem będzie Diamod Multimedia.

Opóźnia się niestety premiera najnowszego procesora 3dfx, znanego pod nazwą "Napalm", który zastąpiłby niezbyt udany układ Voodoo 3. Jak na razie przedstawiciele firmy unikają podawania jakichkolwiek szczegółowych informacji dotyczących ich ostatniego dziecka. Wiadomo, że Napalm będzie obsługiwał kilka nowych funkcji 3D, jak np. "motion blur", ale trudno przewidzieć, czy gry korzystające np. z DirectX 7.0 będą mogły z nich skorzystać. Być może po raz kolejny konieczne okaże się zastosowanie rozwiązań zoptymalizowanych dla procesorów Voodoo, podobnie jak w czasach, gdy dominującym standardem był Glide.

Największą niewiadomą jest jednak zapowiadany od pewnego czasu układ Glaze3D niezbyt znanej fińskiej firmy Bitboys Oy. Pierwsze zapowiedzi pojawiły się w 1998 roku i wówczas układ miał być cztery razy szybszy od Voodoo 2. Z różnych względów układ nie trafił do produkcji, tymczasem jednak Bitboys Oy przygotował specyfikację jeszcze szybszego procesora. W najsilniejszej wersji powinien być w stanie wyświetlić 1200 milionów pikseli pokrytych podwójną teksturą na sekundę. Pozwoliłoby to na wyświetlenie ponad 200 klatek w Quake 3 Arena przy wysokiej jakości obrazu. Tym razem wszystko wskazuje na to, że działające karty powinny pojawić się w drugim kwartale 2000 r. Jeżeli potwierdzą się zapowiadane możliwości, pozycja GeForce 256 i wszystkich pozostałych procesorów zostanie poważnie zagrożona.

Aby zrozumieć, dlaczego generowanie wysokiej jakości grafiki trójwymiarowej, a tym bardziej jej animowanie, wymaga olbrzymich mocy obliczeniowych, wystarczy przyjrzeć się kilku typowym technikom stosowanym w tym procesie. Warto przy tym pamiętać, że aby obraz był płynny i dobrej jakości, opisane techniki muszą być zastosowane wobec wszystkich obiektów, kilkadziesiąt razy na sekundę.

Najważniejszą fazą jest utworzenie geometrii sceny. W przeciwieństwie do obrazu dwuwymiarowego, w którym położenie dowolnego obiektu określają tylko dwie współrzędne, X i Y. Tutaj dochodzi jeszcze trzecia współrzędna Z, od której zależy, czy poszczególne obiekty znajdują się przed, czy za innymi.

W fazie tej wykonywane są trzy podstawowe operacje. Pierwsza i najważniejsza polega, oczywiście, na umieszczeniu obiektów we właściwym dla nich miejscu. Drugą operacją jest skalowanie. Aby zachować prawa perspektywy, obiekty znajdujące się dalej powinny być odpowiednio pomniejszone. Wreszcie, rotacja obiektów sprawia, że przyjmują one położenie odpowiednie w stosunku do pozycji obserwatora.

Gdy geometria sceny zostanie już utworzona, czas przejść do drugiego etapu, czyli generowania danych do karty graficznej. Oznacza to, że całą scenę trzeba opisać za pomocą wielokątów, których liczba często sięga kilkudziesięciu tysięcy. W przeważającej mierze zadanie to spada na główny procesor komputera, bardzo obciążając go. Dlatego też wydajność wielu kart graficznych w istotnym stopniu zależy od zainstalowanego w komputerze procesora. Słabsze jednostki nie nadążają z generowaniem odpowiedniej ilości danych. Dotyczy to wszystkich najnowszych kart, opartych na procesorach Voodoo 3, TNT2 czy G400. Na szczęście, wśród producentów chipów graficznych pojawił się ostatnio trend, aby większość tych uciążliwych obliczeń przejęła karta graficzna.

Pierwszym przykładem takiego podejścia jest procesor GeForce 256, najmłodsze "dziecko" Nvidii. W optymalnych warunkach potrafi zmniejszyć obciążenie procesora nawet o 50 procent, przeciętnie zaś o około 20-30 procent. Standardową techniką przyśpieszającą wyświetlanie grafiki jest wykorzystanie bufora Z, dzięki któremu generowane są jedynie te obiekty, które obserwator może dostrzec.

Następnym etapem jest pokrycie wygenerowanych obiektów teksturami. To dzięki teksturom jednokolorowe bryły geometryczne zaczynają przypominać rzeczywiste obiekty. Teksturowanie jest procesem wyjątkowo czasochłonnym - obliczenia trzeba przeprowadzić dla każdego piksela obiektu i dla każdego piksela tekstury. Gdy dodamy jeszcze, że większość współczesnych gier pokrywa obiekty kilkoma teksturami na raz, złożoność całej operacji stanie się wyraźna.

Następnie tekstury poddawane są filtrowaniu. Jest to zabieg, dzięki któremu daje się uniknąć niepożądanego efektu "wielkich pikseli" w sytuacji, gdy oglądamy teksturę z bliska. W czasie filtrowania wartość poszczególnych tekseli jest wyznaczana jako średnia czterech wartości pikseli sąsiadujących (filtrowanie bilinearne). Powoduje to rozmycie obrazu, ale mimo wszystko znacznie poprawia jego jakość w stosunku do obrazu niefiltrowanego. Innym sposobem filtrowania jest technika określana jako mip-mapping, która polega na tym, że w zależności od odległości obserwatora od danego obiektu stosuje się tekstury różnej wielkości. Ich szczegółowość zwiększa się wraz ze zbliżeniem do przedmiotu obserwacji.

Dodatkowo, aby poprawić jakość wygenerowanego w ten sposób obrazu, stosuje się antyaliasing, usuwający z obrazu drobne zakłócenia, jakie wprowadzone zostały we wcześniejszych fazach. Dzięki tej technice obraz wydaje się gładszy. Korekcja perspektywy z kolei sprawia, że zniwelowane zostają różnego rodzaju zniekształcenia, jakie zdarzają się podczas mechanicznego nakładania tekstury na bryły.

W zależności od zaawansowania grafiki dochodzą kolejne elementy, np. cieniowanie Gourauda sprawiające, że poszczególne obiekty wydają się bardziej rzeczywiste. Zasada działania nie ma wiele wspólnego z np. ray tracingiem, ale na potrzeby gier jest wystarczająca. Komputer liczy różnicę kolorów pomiędzy dwoma przylegającymi wielokątami i na tej podstawie generuje odpowiednie przejście tonalne.


Zobacz również