Rendering dla opornych (część 2)

MBI
2006/07/13 21:00
9
0

Szybkość kosztem jakości.

Szybkość kosztem jakości. Witamy w drugiej części artykułu. Jak do tej pory rozprawiliśmy się już z pojęciami próbkowania punktowego, mipmapingu oraz filtrowania dwuliniowego, trójliniowego i anizotropowego. Zanim weźmiemy na warsztat kolejne efekty, jeszcze parę słów o filtrowaniu. Jak już wiemy, kolejne jego techniki, mające na celu poprawę jakości uzyskanego obrazu, pobierały do przetworzenia coraz większą ilość próbek tekseli. Stawiało to coraz większe wymagania dla kart graficznych, coraz bardziej obciążanych kolejnymi efektami graficznymi, tworzącymi obraz w animacji 3D. Producenci układów woleli opracować sposób optymalizacji filtrowania, niż ulepszać sprzęt i zapychające się nadmiarem danych magistrale akceleratorów. Tak pojawiła się technika, której żartobliwa nazwa „brilinear”, oraz sposób funkcjonowania wzięły się z połączenia filtrowania dwu- i trójliniowego. Jak to działa w praktyce? Optymalizacja „brilinear” zmniejsza liczbę próbek pikseli ze standardowych ośmiu używanych przy filtrowaniu trójliniowym, czego efektem jest obraz zbliżony do filtrowania dwuliniowego. Natomiast w okolicach krawędzi mipmap ilość pobieranych do obliczeń tekseli nie jest zmniejszana, dzięki czemu przejścia pomiędzy mipmapami pozostają płynne. Podsumowując, obiekty w scenie 3D znajdujące się w oddali, gdzie mipmapy są bliżej siebie, będą w większości filtrowane trójliniowo. Tekstury blisko widza zostaną przefiltrowane dwuliniowo, ale przejścia pomiędzy nimi nie zmienią się w poszarpane krawędzie, jak to ma miejsce podczas używania tylko tego rodzaju filtrowania.

Wygładzanie po kawałku i w całości. Najprościej i najkrócej antyaliasing to efekt wygładzania krawędzi. Używa się go aby oszukać ludzie oko i „wmówić” mu, że linia, która nie jest prostą, jest prosta. Jeśli weźmiemy kartkę papieru, ołówek i linijkę a następnie narysujemy trójkąt który jest podstawową figurą do tworzenia obiektów w scenach 3D, jego linie będą gładkie. Na ekranie monitora, który jest w stanie wyświetlić tylko daną liczbę szczegółów (pikseli), te same linie nie biegnące pod kątem prostym do krawędzi obrazu będą niedoskonałe z powodu tak zwanego efektu schodkowego, który ludzkie oko jest w stanie zauważyć do rozdzielczości 4000x4000. Istnieją dwa sposoby na radzenie sobie z tym problemem. Pierwszy - antyaliasing krawędziowy (Edge Anti-Aliasing), polega na rozmywaniu krawędzi trójkątów z których składają się trójwymiarowe obiekty. Główne wady tego sposobu, to fakt, że każdy wielokąt musi zostać odczytany z pamięci karty graficznej, następnie rozmyty i ponownie zapisany co mocno spowalnia renderowanie. Ponadto, jeśli w scenie 3D tłem jest płaski obrazek, nie zostanie on poddany antyaliasingowi.

Aktualnie w grach wygładzanie krawędzi odbywa się trochę inaczej i nosi nazwę wygładzania pełnoekranowego (FSAA- full screen anty aliasing). Obraz generowany przez kartę graficzną jest odpowiednio większy od rozdzielczości w jakiej pracujemy, a następnie filtrowany dwuliniowo i pomniejszony do odpowiedniego rozmiaru. Włączając funkcję FSAA wybieramy współczynnik powiększenia obrazu (x2, x4) i właśnie od tego zależy jakość grafiki końcowej, przy czym należy pamiętać, iż jest to proces mocno obciążający akcelerator. Dzięki temu krawędzie zostają wygładzone na całym obrazie, bez konieczności ich oddzielnego rozmywania i łączenia w jedną całość, tak jak to ma miejsce przy standardowym antyalaiasingu pojedynczych obiektów.

GramTV przedstawia:

Złudzenie wypukłości na kilka sposbów. Bump mapping (Multi-Pass Alpha Blended Bump Mapping), czyli mapowanie wybojów to funkcja służąca do uzyskania efektu wypukłości na powierzchni nakładanych tekstur, dająca złudzenie iż widoczny obraz nie składa się z płaskich powierzchni. Bump mapping działa na zasadzie dodania dodatkowej tekstury, której zadaniem jest określenie wysokości każdego teksela w stosunku do płaszczyzny bazowej. Tworzy to wrażenie różnej głębokości powierzchni, gdzie punkty położone wyżej są lepiej oświetlone i rzucają cienienie na te położone niżej. Przykładem działania bump mappingu jest mur z wgłębieniami pomiędzy cegłami czy dach budynku wyłożony wypukłą dachówką. Warto zauważyć, że efekt bump mappingu dotyczy tylko wnętrza renderowanego obiektu – jego krawędzie pozostają nadal gładkie. Istnieją różne rodzaje tego efektu graficznego: Emboss Bump Mapping - jest pierwszym i najprostszym ze sposobów bump mappingu w czasie rzeczywistym. Funkcjonuje poprzez stworzenie monochromatycznej wersji tekstury, która następnie z nieznacznym przesunięciem nakładana jest na obiekt i mieszana z oryginalną teksturą, tworząc efekt podobny do płaskorzeźby. Podczas wykorzystania tej techniki niemożliwie jest używanie kilku źródeł światła lub wypukłości o zmiennej wysokości, a w przypadku oświetlenia padającego pod kątem większym niż +45 stopni lub mniejszym niż -45 stopni uzyskane obiekty stają się bardzo nienaturalne. Pre-Calculated Bump Mapping - ten rodzaj Bump Mappingu, polega na rzeczywistym generowaniu mapy oświetlenia i cieni, która nie uwzględnia innych obiektów w scenie. Tak stworzona mapa zostaje następnie nałożona na statyczną teksturę. Teksele znajdujące się na wyżej położonych obiektach są jaśniejsze, zaś te znajdujące się niżej - ciemniejsze. Environment Mapped Bump Mapping – najbardziej zaawansowany sposób bump mappingu polegający na użyciu trzech osobnych map: właściwej, wybojów oraz środowiska. Mapa wybojów (bump map) posiadająca zapisane informacje o wysokości każdego teksela nakładana jest na mapę środowiskową (enviroment map), która może myć mapą świateł lub inną mapą tekstury. Tak stworzona mapa nosi nazwę tzw. wichrowatej mapy środowiska (perturbed environment map) łączonej następnie z mapą właściwą (texture map) bazującą na oryginalnych kolorach tekstury. Środowiskowe mapowanie wybojów pozwala uzyskać wiele ciekawych efektów, takich jak falująca powierzchnia wody lub karoseria samochodu odbijająca otoczenie. Jest to aktualnie najpopularniejsza metoda bump mappingu.

Za tydzień omówimy kolejne efekty graficzne tworzące wirtualny świat i czyniące go bardziej realnym, oraz zamieścimy grafiki, które pozwolą na lepsze zaznajomienie się z omawianym tematem. Serdecznie zapraszamy.

Komentarze
9
Usunięty
Usunięty
14/07/2006 16:15

Ja tam rozumiem /.... chyba :D

Usunięty
Usunięty
14/07/2006 10:49

:) nie zebym sie powtarzal co text ale: przyklady przyklady przyklady.....

Usunięty
Usunięty
14/07/2006 09:16
Dnia 13.07.2006 o 22:25, oOreVenOo napisał:

Świetny ale brak skrinow , osoby malo doswiadczone i nie majace pojecia ani stycznosci z tym nic nie zrozumieja.....

"Za tydzień omówimy kolejne efekty graficzne tworzące wirtualny świat i czyniące go bardziej realnym, orazzamieścimy grafiki, które pozwolą na lepsze zaznajomienie się z omawianym tematem. Serdecznie zapraszamy."




Trwa Wczytywanie