Charyzmatyczne transformacje

Pierwszą – poza S3 – firmą, która w pół roku po głośnych pokazach Nvidii zdołała opracować dedykowany na masowy rynek układ umożliwiający sprzętowe przetwarzanie geometrii i oświetlenia, jest ATI.

Oficjalna informacja głosi, że inżynierowie z ATI spędzili dużo czasu na konsultacjach z programistami, projektantami i grafikami 3D, aby ustalić, jakie technologie oraz narzędzia będą najbardziej przydatne podczas tworzenia zaawansowanych aplikacji 3D. Owocem “rozmów” jest nowy układ graficzny o kryptonimie Rage 6 (oficjalna nazwa: Radeon 256) , wyposażony w dwie nowe technologie o dumnie brzmiących nazwach Charisma Engine oraz Pixel Tapestry. Nowy chip ma pozwolić na generowanie grafiki 3D na poziomie odpowiadającym wysokobudżetowym produkcjom Hollywood. Jak powiedział Philip Eisler, główny dyrektor ds. marketingu komponentów, “postacie 3D ożyją na ekranie”, zdolne “do wyrażania emocji w bogatym, pełnym detali środowisku”. Wygląd obiektów ma być naturalny i ukazany ze szczegółami, mają one płynnie się poruszać i wyginać.

Charisma Engine, czyli sprzętowy T&L

Brak kantów, złożoność formy, widoczność wielu detali zarówno podczas spoglądania na nie z większej, jak i mniejszej odległości, pod takim czy innym kątem, odbicia światła i otoczenia w błyszczących powierzchniach, dynamiczne cienie tworzone w efekcie oświetlania wieloma źródłami – to cechy charakterystyczne dzisiejszych gier 3D. Aplikacje muszą realistycznie przedstawiać środowisko, w którym występują takie elementy, jak woda, chmury, mgły i inne – wszystkie podlegające deformacjom w czasie rzeczywistym. By sprostać tym wymaganiom, konieczna jest wysoka wydajność. Zwykłe akceleratory, takie jak znane wszystkim układy Matroksa (MGA 400), dopalacze firmy 3DFx (Voodoo 1,2,3 oraz – niestety – VSA-100) czy Riva TNT1/2 Nvidii, wykonują jedynie końcową fazę procesu generowania trójwymiarowych obrazów: przetwarzanie listy trójkątów oraz rendering (w sensie nakładania i filtrowania tekstur). W wymienionych przypadkach czynnościami przygotowawczymi musi zająć się CPU, od którego prędkości zależy wydajność całego komputera. Rage 6, podobnie jak GeForce, przejmuje od centralnego procesora większość etapów prowadzących do wygenerowania sceny 3D, dzięki czemu procesor centralny po pierwsze nie musi być tak bardzo wydajny, a po drugie – w czasie gdy karta dokonuje obliczeń 3D – może zająć się innymi zadaniami.

Radeon pod względem możliwości ma dorównać nowym produktom Nvidii (GeForce 2). Jako oręż w walce o pierwszeństwo ATI wystawia: sprzętowy moduł do obliczeń transformacji 3D i oświetlenia (Charisma Engine) oraz dwa trójdrożne potoki jednostki teksturującej (Pixel Tapestry).

Charisma Engine to właśnie jednostka odpowiedzialna za sprzętowe przetwarzanie trójwymiarowej geometrii i oświetlenia (T&L – Transform and Lighting). Zasadą działania niewiele różni się od swojego, zastosowanego w chipie Nvidii, odpowiednika. Podobnie jak GeForce Radeon generuje oświetlenie, wykonuje transformacje współrzędnych, dopasowuje (łączy) wierzchołki, obcina niewidoczne trójkąty, dokonuje korekcji perspektywy i jeszcze kilku innych czynności. Implikacją stosowania sprzętowego T&L jest możliwość budowania obiektów składających się z większej niż dotychczas liczby wielokątów, bez zauważalnego spadku wydajności. Do niedawna trójkąty, z których budowano trójwymiarowe postaci, liczono na setki, z chwilą pojawienia się GeForce’a możliwe stało się zwiększenie tej liczby o rząd wielkości. W momencie wejścia na rynek większej liczby kart zdolnych do sprzętowego T&L automatycznie powinna wzrosnąć liczba aplikacji korzystających z tej technologii.

Naciąganie skóry i animacja

Spośród wielu możliwości Charisma Engine dwie zasługują na szczególną uwagę: łączenie punktów i sprzętowy morfing, czyli interpolacja ramek. Pierwsza znana jest z angielskiej nazwy vertex blending (stapianie/spawanie wierzchołków), a przez specjalistów z ATI zwana jest vertex skinning (dosłownie: naciąganie skóry na wierzchołki). Pozwala ona uzyskać naturalny i pozbawiony zniekształceń obraz obiektów (szczególnie tych poruszających się) powstałych ze złączenia wielu elementów. Przykrym efektem nie usuniętych niedokładności obliczeń są “dziury” widoczne na złączeniach powierzchni tudzież białe szpary szpecące obraz. Zarówno GeForce, jak i Rage 6 korzystają ze wspomnianej techniki zapobiegającej powstawaniu opisanych wcześniej artefaktów, wykorzystując operacje na macierzach. Jednakże w przeciwieństwie do GeForce’a Charisma Engine może wykonywać obliczenia, używając do czterech macierzy (zamiast dwóch). W większości przypadków zupełnie wystarczające jest zastosowanie operacji dwumacierzowych, ale w niektórych sytuacjach lepsze rezultaty dają operacje na trzech albo nawet czterech macierzach (patrz ramka: “Vertex skinning…”).

Sprzętowy morfing

Unikatową cechą architektury Rage 6 jest umiejętność sprzętowego morfowania obiektów, czyli tzw. interpolacja ramek (keyframe interpolation). Właściwość ta przyda się podczas tworzenia dynamicznego środowiska, które – w przeciwieństwie do statycznych scen, znanych ze starszych gier 3D (np. Quake) – tętni życiem tysięcy ruchomych, zmieniających kształt i barwę elementów. Dzięki niej w prosty sposób możliwe będzie np. symulowanie mimiki twarzy bohaterów gry, odzwierciedlającej ich stan emocjonalny.

Prototypową wersję ATI Rage 6 można było zobaczyć na targach GDC (Game Developers Conference). Urządzenie zaopatrzono w dwa wyjścia: cyfrowe i analogowe. Premiera urządzenia miała miejsce na konferencji WinHec 2000

Morfing w użyciu jest bardzo prosty: programista definiuje jedynie początkowy i końcowy wygląd (siatkę) wybranego elementu oraz określa liczbę koniecznych do interpolacji ramek. Wszystkie pośrednie przejścia zostaną wygenerowane automatycznie.

Gobeliny, czyli Pixel Tapestry

Równie ważnym, podobnie jak sprzętowe transformacje i kalkulacje oświetlenia,składnikiem procesu tworzenia trójwymiarowej grafiki jest teksturowanie. Tekstury używane są do nakładania map światła, cieni, odbić lustrzanych, połysku, map wypukłości itd. W Rage 6 zaimplementowano cały zestaw narzędzi umożliwiających szybkie i sprawne przeprowadzenie tych operacji, ukryty pod nazwą Pixel Tapestry. Dla przypomnienia: takie chipy, jak NV11, NV15 czy Savage 2000 zaopatrzono w dwa potoki z podwójnymi jednostkami teksturującymi, pozwalające nakładać jednocześnie po dwie tekstury na dwa różne piksele. Układ ATI został wyposażony w dwa niezależne potoki, z których każdy może przetwarzać do trzech tekstur w jednym takcie zegara.

Spawanie krawędzi: w momencie zetknięcia ze sobą dwóch różnych elementów powstają zniekształcenia (rysunek na górze). Mechanizm łączenia powierzchni (rysunek środkowy) pozwala wyeliminować niepożądane artefakty. W akceleratorach z reguły stosuje się do tego celu przekształcenia dwumacierzowe (lewa dolna ilustracja), Rage 6 może operować nawet na 4 macierzach (prawa dolna ilustracja), co w niektórych przypadkach daje o wiele lepsze efekty wizualne.

Wśród znanych technik używanych podczas nakładania tekstur warto wspomnieć o zaimplementowaniu trzech metod generowania wypukłości: poza powszechnie stosowanym efektem tłoczenia (emboss) dostępne jest środowiskowe mapowanie wypukłości (EMBM) oraz tzw. Dot Product 3. Rage 6 obsługuje również różne techniki mapowania środowiska (powierzchnie lustrzane): oprócz sferycznej, w przypadku której na obiekt nakładana jest tylko jedna tekstura, i kubicznej, gdzie wykorzystywanych jest sześć map, ATI wprowadził jeszcze metodę podwójnego paraboloidu – tutaj na obiekt nakładane są dwie tekstury. Metoda paraboloidalna stanowi kompromis pomiędzy wydajnością mapowania sferycznego i precyzją odwzorowania kubicznego.

Jedną z najciekawszych właściwości jednostki teksturującej Rage 6 jest bufor priorytetów. Ten zaimplementowany na razie tylko w chipie ATI mechanizm przechowuje informacje o odległości obiektu od źródła światła. Każdemu elementowi sceny przypisywane są odpowiednie wagi, zależne od jego położenia. Informacje te w połączeniu z tzw. teksturami projekcyjnymi (projective textures) mogą zostać użyte do generowania cieni. Wybiera się odpowiednie źródło światła i dokonuje renderingu przy zachowaniu kolejności wynikającej z bufora priorytetów: najpierw renderowane są obiekty położone najbliżej źródła. W efekcie powstaje obraz, na którym zarysowane są ciemne sylwetki obiektów. Następnie gotowa tekstura jest rzutowana i otrzymujemy cienie. Opisana metoda może służyć do generowania cieni pochodzących z wielu źródeł, jest ponadto bardziej efektywna od techniki wykorzystującej bufor szablonów (stencil buffer).

Morfing uwalnia od żmudnego tworzenia wielu faz animacji obiektów. Programista definiuje jedynie początkowy i końcowy wygląd (siatkę) wybranego elementu oraz określa liczbę koniecznych do interpolacji ramek. Wszystkie pośrednie przejścia zostaną wygenerowane automatycznie.

Drugą ważną cechą Radeona jest współpraca z teksturami 3D. Mechanizm ten zaimplementowano w bibliotece OpenGL 1.2. Tekstura 3D jest trójwymiarową matrycą pikseli, a nie powszechnie obecnie stosowaną dwuwymiarową. Mówiąc obrazowo: obiekt nie jest opisany jedynie na zewnątrz, ma również wnętrze. Tekstury 3D upraszczają posługiwanie się deformowalną geometrią. Fragmenty obiektów mogą zostać odłamane lub obcięte bez konieczności uaktualniania tekstur. Mechanizm ten doskonale nadaje się nie tylko do gier (łatwy sposób odsłaniania wnętrza skał, ścian, mebli i innych obiektów), ale również do tworzenia realistycznych przekroi, np. ciała ludzkiego, kuli ziemskiej, elementów budowlanych itp.

Oficjalna premiera Rage 6 odbyła się 24 kwietnia – na dzień przed ogłoszeniem nowych układów przez Nvidię (patrz: CHIP 3/2000, s. 48). Biorąc pod uwagę specyfikacje obu rozwiązań, zapowiada się ostra konkurencja. Rage 6 w niczym nie ustępuje chipom Nvidii, pod niektórymi względami wręcz je przewyższa. Układy o tej samej częstotliwości zegara powinny mieć porównywalną wydajność. Jak będzie w rzeczywistości – sprawdzimy w testach…

Więcej:bezcatnews