Bez ograniczeń prędkości

Grafika na poziomie, wciąż uchodzącego za wzór doskonałości, "Parku jurajskiego" w niedalekiej przyszłości zagości w naszych pecetach - tego próbują dowieść demonstracje dostarczane razem z najnowszymi kartami graficznymi. Już dziś postęp w dziedzinie kart graficznych przyprawia o zawrót głowy.

Grafika na poziomie, wciąż uchodzącego za wzór doskonałości, "Parku jurajskiego" w niedalekiej przyszłości zagości w naszych pecetach - tego próbują dowieść demonstracje dostarczane razem z najnowszymi kartami graficznymi. Już dziś postęp w dziedzinie kart graficznych przyprawia o zawrót głowy.

Nowoczesne osiągnęły taki stopień zaawansowania, że w prostej grafice dwuwymiarowej nawet nie ma sensu mierzyć różnic wydajności między poszczególnymi modelami. Każdy, nawet bardzo tani model spełnia bowiem zazwyczaj wszystkie wymagania związane z pracą w Windows z aplikacjami biurowymi.

Prawdziwym wyzwaniem pozostaje tworzenie grafiki trójwymiarowej. Na tym polu popis inwencji twórczej dają inżynierowie opracowujący nowe układy graficzne. A trzeba przyznać, że mają niebagatelne zadanie.

Obraz 3D czy 2D?

Gdy zaczniemy się zastanawiać nad sposobami powstawania obrazu 3D, pojawi się naturalne pytanie o sens określenia "grafika 3D". Przecież dwuwymiarowa natura wyświetlaczy, których używamy, fizycznie nie pozwala na przedstawianie obrazu w trzech wymiarach.

Oczywiste jest zatem, że określenie "obraz 3D" to skrót myślowy oznaczający próbę symulowania w dwóch wymiarach obrazu przestrzennego. Aby ta próba była w miarę udana, konieczne jest przeprowadzenie paru operacji w ściśle określonej kolejności.

Plan jest podstawą

Aby tworzenie trójwymiarowej sceny w ogóle mogło się rozpocząć, niezbędny jest opis znajdujących się w niej obiektów. Opis ten można porównać do planów architektonicznych. Tworzy się go, podając trzy współrzędne (X,Y,Z) wierzchołków obiektów znajdujących się w danej scenie.

Opisany w ten sposób obraz byłby jednak całkowicie statyczny, a przecież chodzi o jak najbardziej rzeczywistą, animowaną grafikę 3D. Zmieniać się może zarówno położenie obiektów w scenie, jak i punkt widzenia obserwatora.

Transformacja = animacja

Rys.1

Rys.1

Rys.2

Rys.2

Rys.3

Rys.3

Rys.4

Rys.4

Rys.5 Rysunki 1-4 przedstawiają skalowanie, obracanie i translację czyli kolejne etapy transformacji, której poddawana jest każda klatka obrazu trójwymiarowego. Rys.5 pokazuje cieniowanie metodą Gourauda pozalające uzyskać efekt płynnych przejść tonalnych.

Rys.5 Rysunki 1-4 przedstawiają skalowanie, obracanie i translację czyli kolejne etapy transformacji, której poddawana jest każda klatka obrazu trójwymiarowego. Rys.5 pokazuje cieniowanie metodą Gourauda pozalające uzyskać efekt płynnych przejść tonalnych.

Gdy współrzędne wierzchołków obiektów są już znane, rozpoczyna się pierwsza ważna faza tworzenia animowanej grafiki trójwymiarowej - transformacja. Jest to zbiorcza nazwa, obejmująca trzy operacje, których celem jest ustawienie geometrii sceny. Efektem transformacji będzie również zbiór współrzędnych opisujących wierzchołki obiektów, ale po uwzględnieniu ich ruchu i miejsca obserwatora.

Pierwsza z tych operacji to <font color="red">skalowanie. Jak sugeruje nazwa, rozmiary obiektów są zmienianie w taki sposób, aby odpowiadały ich umiejscowieniu w scenie. Po skalowaniu następują <font color="red">translacje, czyli przesunięcia obiektów do odpowiednich pozycji. Ostatnim elementem transformacji są <font color="red">rotacje, czyli obracanie obiektów zgodnie z wymogami sceny 3D w danej chwili.

Na tym etapie odbywa się też kadrowanie sceny, czyli usuwanie z niej tych elementów, które są poza polem widzenia obserwatora. Dzięki temu zmniejsza się liczba obiektów, które będą przetwarzane w kolejnych fazach, co przyśpiesza cały proces renderingu. Należy podkreślić, że na tym etapie brane jest pod uwagę tylko pole widzenia obserwatora, a nie wzajemne położenie obiektów. Nawet jeśli któryś z nich jest całkowicie zasłonięty przez inne, ale nie wykracza poza kadr, wówczas zostanie uwzględniony w dalszych obliczeniach.

Gdy geometria sceny jest już gotowa, przychodzi czas na jej oświetlenie. Polega to na przypisaniu każdemu wierzchołkowi odpowiedniego wektora oznaczającego natężenie światła w danym miejscu. Wartości światła wewnątrz trójkątów są interpolowane na podstawie oświetlenia zdefiniowanego dla poszczególnych wierzchołków. Pozwala to na płynne przejścia świetlne między poszczególnymi trójkątami. Te metoda oświetlania i cieniowania nazywa się <font color="red">cieniowaniem Gourauda.

Sprawa jest najprostsza w przypadku jednego źródła światła monochromatycznego. Oświetlone w ten sposób obiekty jeszcze przed nałożeniem na nie tekstur składałby się z płaszczyzn w różnych odcieniach szarości. Oczywiście im więcej źródeł światła, tym obliczenie oświetlenia w danym punkcie staje się trudniejsze.

Najnowsze akceleratory (GeForce 2 GTS i Radeon) pozwalają wykorzystać jeszcze jeden typ oświetlenia, umożliwiający definiowanie wektorów oświetlenia dla poszczególnych pikseli składających się na obiekt 3D (ang. per pixel lighting), a nie tylko dla wierzchołków. Dzięki takiemu podejściu możliwe jest znacznie lepsze uwzględnienie pozycji obserwatora względem widzianych przez niego obiektów.

W przypadku starszych akceleratorów grafiki 3D, takich jak karty oparte na układach TNT 2, a także w przypadku nowszych kart niektórych producentów (na przykład wszystkie karty 3dfx) za transformacje i oświetlenie obiektów odpowiedzialny jest procesor komputera. Łatwo sobie wyobrazić, że w przypadku dużej liczby poruszających się obiektów zadanie to niezwykle obciąża jednostkę centralną, niewiele czasu pozostawiając na innego rodzaju operacje.

Dlatego w nowszych kartach, opartych na układach z serii GeForce bądź Radeon, zadanie to zostało przejęte przez akcelerator grafiki 3D. Wyposażono je w mechanizmy oznaczane skrótem T&L (Transform & Lighting), odpowiedzialne za obliczenia związane z transformacjami obiektów i ich oświetleniem. Praktycznie wszystkie nowoczesne układy graficzne, które pojawią się na rynku w najbliższych miesiącach, będą już wyposażone w silniki T&L.