GeForce

Teselacja DirectX 11

 
 

Teselacja DirectX 11 – co to jest i dlaczego ma znaczenie

Biorąc pod uwagę ostatni szum wokół DirectX 11, miałeś już zapewne okazję wiele słyszeć na temat jednego z najważniejszych, wprowadzanych przezeń rozwiązań: teselacji. Podstawowa koncepcja kryjąca się za tym pojęciem jest stosunkowo prosta – bierzesz wielokąt i dzielisz go na mniejsze kawałki. Dlaczego zatem jest to tak wielka sprawa? I jakie z tego korzyści płyną dla gier? W artykule tym przyjrzymy się teselacji i spróbujemy odpowiedzieć na pytanie dlaczego ta technika dokona gruntownych zmian w grafice 3D na komputerach PC a także jak układy GPU NVIDIA® GeForce® GTX 400 zapewniają przełomową wydajność teselacji.

Teselacja, ujmując rzecz w najbardziej podstawowy sposób, stanowi metodę podziału wielokątów na mniejsze elementy. Przykładowo, jeśli weźmiesz kwadrat i przetniesz go po przekątnej, będzie to oznaczać iż dokonałeś "teselacji”, bo podzieliłeś ów kwadrat na dwa trójkąty. Teselacja sama w sobie w bardzo niewielkim stopniu poprawia realizm. W grze na przykład nie ma tak naprawdę znaczenia czy kwadrat renderowany jest jako obszar złożony z dwóch trójkątów, czy też dwóch tysięcy – teselacja zwiększa realizm wyłącznie wtedy, gdy trójkąty te znajdą zastosowanie w odwzorowaniu nowej informacji.

Triangle Mapping Displacement Mapping
Kiedy mapa przemieszczeń (z lewej) zostanie zastosowana do płaskiej powierzchni, wynikowa powierzchnia (z prawej) przekaże informacje o wysokości zakodowane w mapie przemieszczeń.

Najprostszą i zarazem najpopularniejszą metodą wykorzystania tych nowych trójkątów jest technika o nazwie displacement mapping (mapowanie przemieszczeń). Mapę przemieszczeń stanowi tekstura przechowująca informacje o wysokości. Zastosowanie jej dla konkretnej powierzchni pozwala na "przemieszczenie” (przesunięcie) wchodzących w jej skład wierzchołków w górę lub w dół bazując na informacjach o ich wysokości. Grafik może przykładowo wziąć wirtualną płytę marmuru i "przemieścić” wierzchołki tak, by uformowały rzeźbienia lub grawerunek. Inną popularną techniką jest nakładanie map przemieszczeń na teren, co pozwala na jego łatwe kształtowanie: rzeźbienie kraterów, kanionów i szczytów.

Podobnie jak teselacja, technika mapowania przemieszczeń znana jest już od długiego czasu, ale dopiero niedawno zyskała na popularności. Powodem jest fakt, że technika ta, aby być efektywną, może być stosowana wyłącznie dla powierzchni złożonych z dużej liczby wierzchołków. Wracając do wcześniejszego przykładu z marmurową płytą – jeśli w skład opisującej ją bryły wchodzić będzie tylko osiem wierzchołków, żadne ich przemieszczenie nie pozwoli uzyskać efektu płaskorzeźby z figurą smoka. Bogata w szczegóły płaskorzeźba może zostać uformowana wyłącznie wtedy, gdy bazowa siatka wielokątów zawierać będzie odpowiednio dużą liczbę wierzchołków aby przedstawić nowy kształt. W skrócie – technika mapowania przemieszczeń potrzebuje teselacji i na odwrót.

W DirectX 11 teselacja i technika mapowania przemieszczeń stworzyły w końcu zgrany duet, z którego już teraz korzystają programiści. W popularnych grach typu Alien vs Predator i Metro 2033 teselacja używana jest do uzyskania gładkiego wyglądu modeli, a programiści z firm Valve i id Software wykonali obiecującą pracę w zakresie stosowania obu technik do postaci w istniejących już grach.

Coarse Model
Gdy surowy, uproszczony model (z lewej) zostanie poddany teselacji, powstanie jego wygładzona wersja (w środku). Natomiast kiedy zostanie zastosowane mapowanie przemieszczeń (z prawej), postać zaczyna wyglądać realistycznie. © Kenneth Scott, id Software 2008

W związku z tym iż potok teselacji w DirectX 11 jest programowalny, może on znaleźć zastosowanie przy rozwiązywaniu licznych problemów graficznych. Przyjrzyjmy się czterem przykładom.

Perfekcyjne mapowanie wypukłości (Bump Mapping)

Model Comparision

Technika mapowania przemieszczeń może być stosowana jako gotowy do użycia zamiennik dla istniejących obecnie metod mapowania wypukłości. Obecne metody, takie jak normalne mapowanie (dot3) tworzą wrażenie nierówności powierzchni dzięki lepszemu cieniowaniu pikseli. Wszystkie te techniki sprawdzają się wyłącznie w konkretnych przypadkach, a uzyskane za ich pomocą rezultaty są tylko do pewnego stopnia przekonywujące. Zajmijmy się przypadkiem bardzo zaawansowanej techniki mapowania – parallax occlussion mapping. Mimo iż generuje ona iluzję przesłaniających się struktur geometrycznych, działa wyłącznie na powierzchniach płaskich i tylko we wnętrzu przedmiotu (zobacz obrazek powyżej). Prawdziwe mapowanie przemieszczeń wolne jest od wymienionych wad i daje odpowiednie rezultaty dla każdego kąta widzenia.

Bardziej naturalne postaci

Smoothing Character
Algorytm PN-Triangles umożliwia automatyczne wygładzanie postaci bez potrzeby ingerencji twórcy. Poprawiona jest zarówno geometria jak i realizm oświetlenia.

Innym naturalnym partnerem dla teselacji są algorytmy służące udoskonalaniu obrazu. Algorytm tego typu wykorzystuje teselację do przekształcenia zgrubnego, uproszczonego modelu w jego lepiej wyglądającą, „gładszą” wersję. Popularnym przykładem jest technika oparta na zakrzywionych trójkątach zwanych PN-Triangles (znanych także pod nazwą N-patches). Algorytm oparty o PN-Triangles konwertuje modele o niskiej rozdzielczości do postaci złożonej z zakrzywionych powierzchni, które są następnie kreślone jako gęsta siatka uzyskanych drogą teselacji trójkątów. Większość artefaktów wizualnych, które przyjmujemy za rzecz oczywistą we współczesnych grach – kanciaste stawy postaci, „kwadratowe” koła pojazdów, grube rysy twarzy – może zostać za pomocą tego typu algorytmów wyeliminowana. Technika PN-Triangles została na przykład wykorzystana w grze Stalker: Zew Prypeci, gdzie pozwoliła na uzyskanie gładszego, bardziej naturalnego wyglądu postaci.

Ciągły poziom szczegółowości

Zauważyłeś najprawdopodobniej, że w grach, w których akcja toczy się na dużych, otwartych przestrzeniach, odległe obiekty często pojawiają się i znikają raptownie i w nienaturalny sposób. Ma to związek z tym, że silnik gry przełącza się pomiędzy różnymi poziomami szczegółowości (LOD – level of detail), aby utrzymać obciążenie związane z przetwarzaniem geometrii na odpowiednim poziomie. Aż do teraz nie istniał prosty sposób zmiany poziomu szczegółowości w ciągły sposób, bo wymagałoby to przechowywania w pamięci wielu wersji tego samego modelu i środowiska. Dynamiczna teselacja rozwiązuje ten problem poprzez zmianę poziomu szczegółowości na bieżąco. Dla przykładu, jeśli w polu widzenia po raz pierwszy pojawia się odległy budynek, może on zostać wyrenderowany z użyciem tylko dziesięciu trójkątów. W miarę jak się przybliżasz, pojawiają się jego widoczne, charakterystyczne cechy, a dodatkowe trójkąty wykorzystywane są do podkreślenia takich detali jak okno czy dach. Gdy docierasz w końcu do drzwi, tkwiąca w nich antyczna, mosiężna klamka złożona jest już z tysiąca trójkątów, a każde jej żłobienie jest pieczołowicie generowane za pomocą mapowania przemieszczeń. Dzięki dynamicznej teselacji, nienaturalne pojawianie się obiektów zostało wyeliminowane, a złożoność geometryczna środowisk gry może być skalowana do niemal nieograniczonego poziomu.

Skalowalna grafika

Dla twórców oprogramowania teselacja w ogromnym stopniu poprawia wydajność procesu tworzenia zasobów graficznych. Podając argumenty, które zachęcają ich do stosowania teselacji, Jason Mitchell z firmy Valve stwierdza: "Jesteśmy zainteresowani możliwością tworzenia materiałów, które pozwalają nam na skalowanie [jakości] w górę i w dół. Chcemy tworzyć model tylko raz i móc skalować go w górę, aż do poziomu jakości filmowej... i na odwrót, chcemy mieć możliwość naturalnego skalowania jakości danego zasobu w dół, stosownie do możliwości danego, konkretnego systemu, na którym wykonywany jest na bieżąco rendering.” Ta zdolność do jednorazowego konstruowania modelu i wielokrotnego stosowania go na różnych platformach oznacza krótszy czas produkcji, a dla gracza PC – najwyższą jakość obrazu generowanego przy użyciu ich układu GPU.

Jak układy graficzne GeForce GTX 400 obsługują teselację

Tradycyjne projekty układów graficznych wykorzystują do teselacji jeden silniki geometrii. Takie podejście jest analogiczne z wczesnymi projektami układów graficznych, które stosowały pojedynczy potok renderujący do cieniowania pikseli. Widząc jak potoki renderujące przeszły od jednego do wielu potoków równoległych i jak to rozwiązanie zdominowało realizm 3D, stworzyliśmy naszą architekturę teselacji równoległą od samego początku.

Układy GPU GeForce GTX 400 posiadają do szesnastu jednostek teselacji, każdą z dedykowanym mechanizmem pobierania vertexów, teselacji i przekształcania współrzędnych. Współpracują one z czterema równoległymi silnikami rastrowymi (raster engine), które przekształcają świeżo poddane teselacji trójkąty w gotowy strumień pikseli gotowy do dalszej obróbki przez jednostki cieniujące. Rezultatem jest przełom w wydajności teselacji – nieustannie ponad 1.6 miliarda trójkątów na sekundę. W porównaniu do najszybszego produktu konkurencji, GeForce GTX 480 jest do 7.8 razy szybszy wedle pomiarów niezależnej strony internetowej Bjorn3D.

Wniosek

Po wielu latach prób i błędów teselacja na komputerach PC została w końcu skutecznie zrealizowana. Oszałamiające gry jak Metro 2033 już ukazują potencjał teselacji. Z czasem, teselacja stanie się tak istotna i niezastąpiona jak cieniowanie pikseli. Zdając sobie sprawę z jej znaczenia, NVIDIA ożywiła ten proces poprzez stworzenie od podstaw architektury równoległej teselacji. Rezultatem jest rodzina układów GPU GeForce GTX 400 – prawdziwie przełomowa w realizmie geometrycznym i wydajności teselacji.



 
 
 
 
FacebookTwitterGoogle+Nasza KlasaLinkedIn