Technologia Informacyjna Technologia Informacyjna Podstawy grafiki 3D Podstawy grafiki 3D Podstawy grafiki 3D Podstawy grafiki 3D Wprowadzenie do grafiki trójwymiarowej Wprowadzenie do grafiki trójwymiarowej Ustawianie geometrii (geometry setup) Ustawianie geometrii (geometry setup) Ustawianie trójkątów (triangle setup) Ustawianie trójkątów (triangle setup) Nakładanie tekstur (texture mapping) Nakładanie tekstur (texture mapping) Cieniowanie (shading) Cieniowanie (shading) Efekty atmosferyczne (atmospheric effects) Efekty atmosferyczne (atmospheric effects) Rasteryzacja Rasteryzacja 1 Wprowadzenie Wprowadzenie Praktycznie ka\da nowoczesna karta graficzna Praktycznie ka\da nowoczesna karta graficzna wyposa\ona jest w funkcje akceleracji grafiki wyposa\ona jest w funkcje akceleracji grafiki przestrzennej (3D). Funkcje te mają przestrzennej (3D). Funkcje te mają wspomagać, lub nawet wyręczać procesor wspomagać, lub nawet wyręczać procesor komputera w tworzeniu trójwymiarowych komputera w tworzeniu trójwymiarowych obrazów czy animacji obrazów czy animacji Głównym problemem, z jakim musi się zmierzyć Głównym problemem, z jakim musi się zmierzyć komputer przy tworzeniu trójwymiarowych scen, komputer przy tworzeniu trójwymiarowych scen, to przedstawienie ich na płaskim ekranie to przedstawienie ich na płaskim ekranie monitora. Wszystkie bryły muszą być tak monitora. Wszystkie bryły muszą być tak pokazane, by oszukując nasz wzrok - sprawiały pokazane, by oszukując nasz wzrok - sprawiały wra\enie trójwymiarowych. wra\enie trójwymiarowych. Wprowadzenie Wprowadzenie Historycznie karty grafiki słu\yły wyłącznie do Historycznie karty grafiki słu\yły wyłącznie do generowania sygnałów analogowych sterujących generowania sygnałów analogowych sterujących monitorami na podstawie wcześniej monitorami na podstawie wcześniej przygotowanych przez procesor danych przygotowanych przez procesor danych tworzących obraz (tzw. ramkę). W miarę tworzących obraz (tzw. ramkę). W miarę rozwoju technologii przejmowały coraz to więcej rozwoju technologii przejmowały coraz to więcej funkcji związanych z fazą tworzenia obrazu funkcji związanych z fazą tworzenia obrazu Obraz 3D powstaje w wyniku realizacji wielu Obraz 3D powstaje w wyniku realizacji wielu operacji przetwarzania składowych obrazu - im operacji przetwarzania składowych obrazu - im więcej tych operacji wykona akcelerator 3D, więcej tych operacji wykona akcelerator 3D, tym szybszy i lepszy technicznie będzie efekt tym szybszy i lepszy technicznie będzie efekt końcowy tworzonego obrazu końcowy tworzonego obrazu 2 Wprowadzenie Wprowadzenie Procesu tworzenia obrazu trójwymiarowego Procesu tworzenia obrazu trójwymiarowego mo\na podzielić na kilka faz z których mo\na podzielić na kilka faz z których najwa\niejsze to: najwa\niejsze to: Ustawianie geometrii Ustawianie geometrii Podział sceny na elementy trójkątne - Podział sceny na elementy trójkątne - triangularyzacja triangularyzacja Nakładanie tekstur Nakładanie tekstur Operowanie światłem - cieniowanie Operowanie światłem - cieniowanie Generowanie efektów atmosferycznych Generowanie efektów atmosferycznych Rasteryzacja Rasteryzacja Ustawianie geometrii (geometry setup) Ustawianie geometrii (geometry setup) To najwa\niejszy krok w tworzeniu To najwa\niejszy krok w tworzeniu trójwymiarowej sceny na ekranie komputera. trójwymiarowej sceny na ekranie komputera. Podczas tej fazy obiekty 3D (zbudowane z Podczas tej fazy obiekty 3D (zbudowane z wielokątów) są umieszczane w przestrzeni w wielokątów) są umieszczane w przestrzeni w wyznaczonym dla siebie miejscu. W tym celu wyznaczonym dla siebie miejscu. W tym celu poddaje się je trzem operacjom, znanym pod poddaje się je trzem operacjom, znanym pod wspólną nazwą transformacji: wspólną nazwą transformacji: Skalowania Skalowania Translacji Translacji Rotacji Rotacji 3 Ustawianie geometrii (geometry setup) Ustawianie geometrii (geometry setup) Skalowanie to zmiana rozmiaru obiektu tak, \e Skalowanie to zmiana rozmiaru obiektu tak, \e staje się on większy bądz mniejszy. staje się on większy bądz mniejszy. Translacja to przesunięcie tego obiektu w Translacja to przesunięcie tego obiektu w wyznaczone dla niego miejsce. wyznaczone dla niego miejsce. Rotacja to odpowiednie obrócenie obiektu, by Rotacja to odpowiednie obrócenie obiektu, by znalazł się on w wymaganej pozycji. znalazł się on w wymaganej pozycji. Translacja Rotacja Obiekt 3D Skalowanie Ustawianie geometrii (geometry setup) Ustawianie geometrii (geometry setup) Ustawianie geometrii do niedawna (końcówka Ustawianie geometrii do niedawna (końcówka ubiegłego stulecia :& - 6 czy 7 lat to w ubiegłego stulecia :& - 6 czy 7 lat to w informatyce w istocie epoka& ) dokonywane było informatyce w istocie epoka& ) dokonywane było wyłącznie przez procesor komputera (CPU - wyłącznie przez procesor komputera (CPU - Central Processing Unit). Przy okazji liczone było Central Processing Unit). Przy okazji liczone było te\ natę\enie światła padającego na bryły przy te\ natę\enie światła padającego na bryły przy zadanym poło\eniu zródeł tego światła zadanym poło\eniu zródeł tego światła Współczesne układy graficzne wyposa\one są w Współczesne układy graficzne wyposa\one są w tzw. jednostki T&L (Transform & Lighting tzw. jednostki T&L (Transform & Lighting Engine - jednostka transformacji i Engine - jednostka transformacji i oświetlenia) zwane te\ procesorami oświetlenia) zwane te\ procesorami geometrii. geometrii. 4 Ustawianie trójkątów (triangle setup) Ustawianie trójkątów (triangle setup) Program generujący obraz 3D, poprzez Program generujący obraz 3D, poprzez odpowiedni interfejs (np. Direct3D czy OpenGL), odpowiedni interfejs (np. Direct3D czy OpenGL), wysyła współrzędne wszystkich wierzchołków wysyła współrzędne wszystkich wierzchołków sceny z kroku pierwszego (ustawianie geometrii) sceny z kroku pierwszego (ustawianie geometrii) do tzw. układu ustawiania trójkątów (ang. do tzw. układu ustawiania trójkątów (ang. triangle setup engine). triangle setup engine). Zadaniem tego układu jest grupowanie Zadaniem tego układu jest grupowanie wszystkich trójek wierzchołków (punktów w wszystkich trójek wierzchołków (punktów w przestrzeni) w trójkąty. Proces grupowania przestrzeni) w trójkąty. Proces grupowania punktów w trójkąty zwany jest teselacją (lub punktów w trójkąty zwany jest teselacją (lub triangularyzacją). triangularyzacją). Ustawianie trójkątów (triangle setup) Ustawianie trójkątów (triangle setup) Ka\demu wierzchołkowi ka\dego trójkąta Ka\demu wierzchołkowi ka\dego trójkąta przypisuje się trzy współrzędne w przestrzeni: przypisuje się trzy współrzędne w przestrzeni: X,Y oraz Z (współrzędna "w głąb" ekranu) X,Y oraz Z (współrzędna "w głąb" ekranu) Ka\da trójka takich współrzędnych powinna być Ka\da trójka takich współrzędnych powinna być zapamiętana w oddzielnej macierzy. Jako \e zapamiętana w oddzielnej macierzy. Jako \e praktycznie ka\dy wierzchołek nale\y do kilku praktycznie ka\dy wierzchołek nale\y do kilku trójkątów, stosuje się pewne techniki, które trójkątów, stosuje się pewne techniki, które mają zmniejszyć ilość macierzy opisujących mają zmniejszyć ilość macierzy opisujących współrzędne wierzchołków. Techniki te to tzw.: współrzędne wierzchołków. Techniki te to tzw.: pasy (ang. strips) pasy (ang. strips) wachlarze (ang. fans). wachlarze (ang. fans). 5 Ustawianie trójkątów (triangle setup) Ustawianie trójkątów (triangle setup) Technika wykorzystywania wspólnych Technika wykorzystywania wspólnych wierzchołków w celu minimalizacji ilości wierzchołków w celu minimalizacji ilości przetwarzanych informacji: przetwarzanych informacji: Pasy Wachlarze Nakładanie tekstur (texture mapping) Nakładanie tekstur (texture mapping) Kolejnym, niezmiernie wa\nym krokiem w Kolejnym, niezmiernie wa\nym krokiem w tworzeniu trójwymiarowego obrazu jest tworzeniu trójwymiarowego obrazu jest nakładanie (mapowanie) tekstur na wszystkie nakładanie (mapowanie) tekstur na wszystkie trójwymiarowe obiekty. Tekstura jest zwykłym trójwymiarowe obiekty. Tekstura jest zwykłym płaskim obrazkiem (mapą bitową) płaskim obrazkiem (mapą bitową) Nakładanie tekstur polega na "oblepianiu" Nakładanie tekstur polega na "oblepianiu" teksturą przestrzennych przedmiotów. Tekstura teksturą przestrzennych przedmiotów. Tekstura przedstawiająca zdjęcie fragmentu ceglanej przedstawiająca zdjęcie fragmentu ceglanej ściany, nało\ona na obiekt 3D, daje wra\enie, i\ ściany, nało\ona na obiekt 3D, daje wra\enie, i\ obiekt ten jest zbudowany z cegieł. obiekt ten jest zbudowany z cegieł. 6 Nakładanie tekstur (texture mapping) Nakładanie tekstur (texture mapping) Teksturuje się poszczególne trójkąty Teksturuje się poszczególne trójkąty składające się na przestrzenne obiekty. składające się na przestrzenne obiekty. Tekstura podlega operacji wycinania (clipping) Tekstura podlega operacji wycinania (clipping) - wyodrębniany jest z niej trójkąt. - wyodrębniany jest z niej trójkąt. W tym celu określane są współrzędne trzech W tym celu określane są współrzędne trzech punktów na teksturze, a następnie wybrane punktów na teksturze, a następnie wybrane wierzchołki przyporządkowywane są wierzchołki przyporządkowywane są odpowiednim wierzchołkom odpowiednim wierzchołkom teksturowanego trójkąta. teksturowanego trójkąta. Nakładanie tekstur (texture mapping) Nakładanie tekstur (texture mapping) Ka\demu punktowi teksturowanego trójkąta Ka\demu punktowi teksturowanego trójkąta przyporządkowuje się kolor odpowiadającego przyporządkowuje się kolor odpowiadającego mu teksela (odpowiednik piksela) tekstury. mu teksela (odpowiednik piksela) tekstury. 7 Nakładanie tekstur (texture mapping) Nakładanie tekstur (texture mapping) Po nało\eniu "ceglanej" tekstury na obiekt, nadal Po nało\eniu "ceglanej" tekstury na obiekt, nadal będziemy mieli wra\enie, \e jest on idealnie będziemy mieli wra\enie, \e jest on idealnie gładki. Współczesne układy 3D, w celu gładki. Współczesne układy 3D, w celu dalszego zwiększenia realizmu, stosują dalszego zwiększenia realizmu, stosują technikę zwaną mapowaniem wybojów (ang. technikę zwaną mapowaniem wybojów (ang. bump mapping). bump mapping). Dla ka\dej tekstury tworzone są mapy Dla ka\dej tekstury tworzone są mapy wybojów. Są one płaskimi mapami bitowymi, wybojów. Są one płaskimi mapami bitowymi, jednak wartość poszczególnych pikseli tych map jednak wartość poszczególnych pikseli tych map określa wysokość odpowiednich tekseli nad określa wysokość odpowiednich tekseli nad płaszczyzną tekstury (a nie kolor). płaszczyzną tekstury (a nie kolor). Nakładanie tekstur (texture mapping) Nakładanie tekstur (texture mapping) Akcelerator 3D, odwzorowując efekt mapowania Akcelerator 3D, odwzorowując efekt mapowania wybojów, przy oświetlaniu tekstury bierze wybojów, przy oświetlaniu tekstury bierze pod uwagę wartość wysokości ka\dego pod uwagę wartość wysokości ka\dego teksela. Dzięki temu teksele znajdujące się teksela. Dzięki temu teksele znajdujące się wy\ej są jaśniejsze ni\ te znajdujące się głębiej. wy\ej są jaśniejsze ni\ te znajdujące się głębiej. Mapowanie wybojów pozwala odwzorować rowki Mapowanie wybojów pozwala odwzorować rowki i chropowatości w teksturach (chropowaty asfalt i chropowatości w teksturach (chropowaty asfalt na jezdni czy wypukłą dachówkę na dachu) na jezdni czy wypukłą dachówkę na dachu) Od lewej: Obiekt 3D obło\ony zwykłą teksturą, obło\ony mapą wybojów, obło\ony mapą wybojów i teksturą 8 Techniki mapowania wybojów Techniki mapowania wybojów Mapowanie prekalkulowane. Podczas pisania Mapowanie prekalkulowane. Podczas pisania kodu aplikacji 3D, liczona jest mapa oświetlenia i kodu aplikacji 3D, liczona jest mapa oświetlenia i cieni. Mapę tę nakłada się na teksturę. cieni. Mapę tę nakłada się na teksturę. Najłatwiejszym do uzyskania i dość praktycznym Najłatwiejszym do uzyskania i dość praktycznym mapowaniem wybojów jest tłoczone mapowaniem wybojów jest tłoczone mapowanie wybojów (ang. emboss bump mapowanie wybojów (ang. emboss bump mapping). Mapa wybojów to "szary mapping). Mapa wybojów to "szary odpowiednik" tekstury. Akcelerator przesuwa ją odpowiednik" tekstury. Akcelerator przesuwa ją nieco względem tekstury właściwej i przy nieco względem tekstury właściwej i przy pomocy addytywnego zlewania alfa odejmuje pomocy addytywnego zlewania alfa odejmuje ją od tej tekstury. Następnie przesuwa ją z ją od tej tekstury. Następnie przesuwa ją z powrotem i wtapia w ową teksturę. powrotem i wtapia w ową teksturę. Techniki mapowania wybojów Techniki mapowania wybojów Znacznie bardziej zaawansowaną metodą jest Znacznie bardziej zaawansowaną metodą jest środowiskowe mapowanie wybojów środowiskowe mapowanie wybojów (Environment-Mapped Bump Mapping, EMBM). (Environment-Mapped Bump Mapping, EMBM). Technika ta stosuje trzy tekstury: właściwą, Technika ta stosuje trzy tekstury: właściwą, środowiska i wybojów. Najpierw mapa środowiska i wybojów. Najpierw mapa wybojów aplikowana jest na mapie środowiska, wybojów aplikowana jest na mapie środowiska, dzięki czemu powstaje tzw. wichrowata mapa dzięki czemu powstaje tzw. wichrowata mapa środowiska (Perturbed Environment Map). środowiska (Perturbed Environment Map). Następnie nakłada się ją na właściwą teksturę. Następnie nakłada się ją na właściwą teksturę. Środowiskowe mapowanie wybojów pozwala Środowiskowe mapowanie wybojów pozwala uzyskać wiele efektów, jak np. falującą uzyskać wiele efektów, jak np. falującą powierzchnię wody, w której odbija się otoczenie powierzchnię wody, w której odbija się otoczenie 9 Nakładanie tekstur (texture mapping) Nakładanie tekstur (texture mapping) Na ka\dy obiekt mo\na nakładać wiele tekstur. Na ka\dy obiekt mo\na nakładać wiele tekstur. Podstawowa to materiał obiektu, zaś kolejne to: Podstawowa to materiał obiektu, zaś kolejne to: Omówiona mapa wybojów, Omówiona mapa wybojów, Mapa światła (lightning map) Mapa światła (lightning map) Mapa środowiska (environment map). Mapa środowiska (environment map). Nakładanie tekstur (texture mapping) Nakładanie tekstur (texture mapping) Ka\dy teksel tekstury najczęściej jest opisany Ka\dy teksel tekstury najczęściej jest opisany czterema parametrami: trzy parametry to czterema parametrami: trzy parametry to wartości kolorów składowych, zaś czwarty to wartości kolorów składowych, zaś czwarty to kanał przezroczystości "alfa" (alpha channel). kanał przezroczystości "alfa" (alpha channel). Dla przykładu, tekstura 8888 RGBA to tekstura Dla przykładu, tekstura 8888 RGBA to tekstura dedykująca 24 bity na opis koloru ka\dego dedykująca 24 bity na opis koloru ka\dego teksela plus 8 bitów dla kanału alfa. teksela plus 8 bitów dla kanału alfa. Kanał alfa określa stopień przezroczystości Kanał alfa określa stopień przezroczystości tekstury. Jeśli jego wartość jest maksymalna tekstury. Jeśli jego wartość jest maksymalna (255), oznacza to "zupełnie nieprzezroczysty". (255), oznacza to "zupełnie nieprzezroczysty". Jeśli jego wartość jest minimalna (0), oznacza Jeśli jego wartość jest minimalna (0), oznacza "zupełnie przezroczysty "zupełnie przezroczysty 10 Nakładanie tekstur (texture mapping) Nakładanie tekstur (texture mapping) Tekstura zawsze jest określonego rozmiaru. Tekstura zawsze jest określonego rozmiaru. Mo\e to być np. kwadratowy obrazek o Mo\e to być np. kwadratowy obrazek o rozmiarach 512x512 punktów. rozmiarach 512x512 punktów. W przypadku trójkątów mniejszych od tekstury, W przypadku trójkątów mniejszych od tekstury, gubi się z niej większość tekseli. Jeśli trójkąt jest gubi się z niej większość tekseli. Jeśli trójkąt jest większy od tekstury, odpowiednie teksele są po większy od tekstury, odpowiednie teksele są po prostu powielane. prostu powielane. Aby usprawnić proces dobierania rozmiaru Aby usprawnić proces dobierania rozmiaru tekstury do trójkąta, akceleratory 3D stosują tekstury do trójkąta, akceleratory 3D stosują technikę mapowania MIP (MIP mapping; technikę mapowania MIP (MIP mapping; "Multum in Parvam" - z łac. "wiele w niewielu"). "Multum in Parvam" - z łac. "wiele w niewielu"). Przed renderowaniem trójwymiarowej sceny, z Przed renderowaniem trójwymiarowej sceny, z ka\dej tekstury tworzone są mapy MIP. ka\dej tekstury tworzone są mapy MIP. Nakładanie tekstur (texture mapping) Nakładanie tekstur (texture mapping) Mapy MIP to zmniejszone tekstury Mapy MIP to zmniejszone tekstury utworzone na podstawie tekstury wzorcowej. utworzone na podstawie tekstury wzorcowej. Ka\da następna mapa MIP jest czterokrotnie Ka\da następna mapa MIP jest czterokrotnie mniejsza od poprzedniej mniejsza od poprzedniej Mimo stosowania techniki mapowania MIP, Mimo stosowania techniki mapowania MIP, praktycznie nigdy mapowany trójkąt nie praktycznie nigdy mapowany trójkąt nie będzie równy rozmiarami teksturze. Dlatego będzie równy rozmiarami teksturze. Dlatego przy teksturowaniu stosuje się ró\ne techniki przy teksturowaniu stosuje się ró\ne techniki mające na celu maskowanie takich problemów mające na celu maskowanie takich problemów Operacje związane z nakładaniem i łączeniem Operacje związane z nakładaniem i łączeniem tekstur nazywane są filtracją tekstur tekstur nazywane są filtracją tekstur 11 Filtracja tekstur Filtracja tekstur W najstarszych rozwiązaniach problem W najstarszych rozwiązaniach problem niedopasowania tekstur do trójkątów niedopasowania tekstur do trójkątów rozwiązywany był poprzez powielanie tekseli rozwiązywany był poprzez powielanie tekseli do wielu punktów, w wyniku czego w obrazie do wielu punktów, w wyniku czego w obrazie powstawały całe obszary o jednakowym kolorze. powstawały całe obszary o jednakowym kolorze. Technika ta nazywana jest próbkowaniem Technika ta nazywana jest próbkowaniem punktowym. punktowym. Układy 3D wprowadziły metody tzw. filtrowania Układy 3D wprowadziły metody tzw. filtrowania tekstur, a więc odpowiedniej interpolacji tekstur, a więc odpowiedniej interpolacji obszarów o jednakowych kolorach powstałych z obszarów o jednakowych kolorach powstałych z powielania pojedynczych tekseli. powielania pojedynczych tekseli. Filtracja tekstur Filtracja tekstur Najprostszą techniką filtrowania tekstur jest Najprostszą techniką filtrowania tekstur jest filtrowanie dwuliniowe (ang. bilinear filtrowanie dwuliniowe (ang. bilinear filtering). Polega ona na przyporządkowaniu filtering). Polega ona na przyporządkowaniu ka\demu punktowi teksturowanego trójkąta ka\demu punktowi teksturowanego trójkąta koloru nie jednego teksela tekstury, ale koloru koloru nie jednego teksela tekstury, ale koloru otrzymanego w wyniku interpolacji czterech otrzymanego w wyniku interpolacji czterech sąsiednich tekseli tekstury. sąsiednich tekseli tekstury. Efekt "kwadratowości" próbkowania zanika, Efekt "kwadratowości" próbkowania zanika, jednak\e obraz staje się trochę rozmyty. jednak\e obraz staje się trochę rozmyty. 12 Filtrowanie Filtrowanie dwuliniowe trójliniowe Filtracja tekstur Filtracja tekstur Filtrowanie trójliniowe (trilinear filtering) Filtrowanie trójliniowe (trilinear filtering) polega na stosowaniu dwóch kolejnych map polega na stosowaniu dwóch kolejnych map MIP przy teksturowaniu - jedna jest mniejsza MIP przy teksturowaniu - jedna jest mniejsza od teksturowanego trójkąta, zaś druga od teksturowanego trójkąta, zaś druga większa. Najpierw poddaje się interpolacji większa. Najpierw poddaje się interpolacji dwuliniowej mapę pierwszą, potem drugą, a dwuliniowej mapę pierwszą, potem drugą, a następnie uśredniony wynik tych operacji następnie uśredniony wynik tych operacji nakłada się na trójkąt. nakłada się na trójkąt. Filtrowanie trójliniowe powoduje usunięcie efektu Filtrowanie trójliniowe powoduje usunięcie efektu raptownie zmieniających się tekstur przy zmianie raptownie zmieniających się tekstur przy zmianie odległości, niestety wymaga operacji na ośmiu odległości, niestety wymaga operacji na ośmiu tekselach jednocześnie. tekselach jednocześnie. Filtracja tekstur Filtracja tekstur Najbardziej zaawansowaną metodą filtrowania Najbardziej zaawansowaną metodą filtrowania jest filtrowanie anizotropowe (anisotropic jest filtrowanie anizotropowe (anisotropic filtering). Polega na interpolacji tekseli filtering). Polega na interpolacji tekseli układających się w ró\ne kształty (nie tylko układających się w ró\ne kształty (nie tylko kwadraty, ale tak\e prostokąty czy elipsy), kwadraty, ale tak\e prostokąty czy elipsy), zale\nie od poło\enia obiektu względem ekranu. zale\nie od poło\enia obiektu względem ekranu. Jeśli obiekt nie le\y równolegle do płaszczyzny Jeśli obiekt nie le\y równolegle do płaszczyzny ekranu, to w wyniku filtrowania dwu- czy ekranu, to w wyniku filtrowania dwu- czy trójliniowego mogą powstawać zniekształcenia trójliniowego mogą powstawać zniekształcenia obrazu. Filtrowanie anizotropowe pozwala obrazu. Filtrowanie anizotropowe pozwala zachować oryginalny kształt tekstur tak\e zachować oryginalny kształt tekstur tak\e na obiektach ukośnych. na obiektach ukośnych. 13 Korekcja perspektywy Korekcja perspektywy Podczas teksturowania du\ych i regularnych Podczas teksturowania du\ych i regularnych powierzchni (w szczególności w grach FPP First powierzchni (w szczególności w grach FPP First Person Perspective), akceleratory często mają Person Perspective), akceleratory często mają problemy z zachowaniem odpowiedniej problemy z zachowaniem odpowiedniej perspektywy. perspektywy. Tekstury się rozje\d\ają, łamią i powodują Tekstury się rozje\d\ają, łamią i powodują niemiły wizualnie efekt. W celu jego niemiły wizualnie efekt. W celu jego zniwelowania stosuje się algorytm korekcji zniwelowania stosuje się algorytm korekcji perspektywy: tworzy się wirtualny punkt perspektywy: tworzy się wirtualny punkt "nieskończoność". Dopiero zgodnie z zasadą linii "nieskończoność". Dopiero zgodnie z zasadą linii o wspólnym punkcie nakładane są tekstury, ju\ o wspólnym punkcie nakładane są tekstury, ju\ bez niepo\ądanych deformacji. bez niepo\ądanych deformacji. Anty-aliasing Anty-aliasing Aliasing to efekt "schodkowatości" ukośnych Aliasing to efekt "schodkowatości" ukośnych linii. Ekran komputera ma ograniczoną linii. Ekran komputera ma ograniczoną rozdzielczość, zatem rysując ukośną linię (czy rozdzielczość, zatem rysując ukośną linię (czy granicę między dwoma kolorami), karta granicę między dwoma kolorami), karta graficzna zapala najbli\sze dostępne piksele. W graficzna zapala najbli\sze dostępne piksele. W efekcie tego powstaje schodkowata linia efekcie tego powstaje schodkowata linia By pozbyć się efektu schodkowatości, karty By pozbyć się efektu schodkowatości, karty grafiki 3D stosują algorytmy zwane anty- grafiki 3D stosują algorytmy zwane anty- aliasingiem aliasingiem 14 Anty-aliasing Anty-aliasing Anty-aliasing dzieli się na dwa rodzaje: anty- Anty-aliasing dzieli się na dwa rodzaje: anty- aliasing krawędziowy (Edge Anti-Aliasing) i aliasing krawędziowy (Edge Anti-Aliasing) i anty-aliasing całej sceny (Full-Scene Anti- anty-aliasing całej sceny (Full-Scene Anti- Aliasing, FSAA). Aliasing, FSAA). Pierwszy polega na rozmywaniu krawędzi Pierwszy polega na rozmywaniu krawędzi trójkątów. Wymaga odczytania wielokąta, trójkątów. Wymaga odczytania wielokąta, rozmycia go i zapisania z powrotem. rozmycia go i zapisania z powrotem. W Anty-aliasingu całej sceny scena W Anty-aliasingu całej sceny scena renderowana jest w wy\szej rozdzielczości ni\ renderowana jest w wy\szej rozdzielczości ni\ rzeczywiście na ekranie, a następnie rzeczywiście na ekranie, a następnie zmniejszana do rozmiarów rozdzielczości zmniejszana do rozmiarów rozdzielczości rzeczywistej z u\yciem specjalnych filtrów. rzeczywistej z u\yciem specjalnych filtrów. Cieniowanie (shading) Cieniowanie (shading) Najprostszą metodą cieniowania jest Najprostszą metodą cieniowania jest cieniowanie płaskie (flat shading). Polega ono cieniowanie płaskie (flat shading). Polega ono na przyporządkowaniu określonego poziomu na przyporządkowaniu określonego poziomu jasności do ka\dego całego trójkąta jasności do ka\dego całego trójkąta niezale\nie od trójkątów otaczających go niezale\nie od trójkątów otaczających go Lepszą metodą cieniowania jest cieniowanie Lepszą metodą cieniowania jest cieniowanie metodą Gourauda (Gouraud shading). metodą Gourauda (Gouraud shading). Technika ta przyporządkowuje kolor i Technika ta przyporządkowuje kolor i jasność ka\demu z trzech wierzchołków jasność ka\demu z trzech wierzchołków ka\dego trójkąta. Odcień wnętrza trójkąta ka\dego trójkąta. Odcień wnętrza trójkąta powstaje poprzez interpolację (uśrednienie) powstaje poprzez interpolację (uśrednienie) odcieni jego wierzchołków. odcieni jego wierzchołków. 15 Cieniowanie (shading) Cieniowanie (shading) Najbardziej zaawansowaną metodą cieniowania Najbardziej zaawansowaną metodą cieniowania jest cieniowanie Phonga (Phong shading), jest cieniowanie Phonga (Phong shading), zwane tak\e operowaniem światłem z zwane tak\e operowaniem światłem z dokładnością do pojedynczego piksela dokładnością do pojedynczego piksela Jasność i odcień przyporządkowywana jest Jasność i odcień przyporządkowywana jest ka\demu punktowi obrazu 3D oddzielnie. ka\demu punktowi obrazu 3D oddzielnie. Ten typ cieniowania (czy raczej operowania Ten typ cieniowania (czy raczej operowania światłem) zaimplementowany jest dopiero w światłem) zaimplementowany jest dopiero w układach graficznych poczynając od GeForce2 układach graficznych poczynając od GeForce2 GTS (dzięki jednostce NSR - NVIDIA Shading GTS (dzięki jednostce NSR - NVIDIA Shading Rasterizer) oraz Radeon 256. Rasterizer) oraz Radeon 256. Efekty atmosferyczne (atmospheric Efekty atmosferyczne (atmospheric effects) effects) Najprostszym efektem atmosferycznym Najprostszym efektem atmosferycznym zwiększającym realność generowanych obrazów zwiększającym realność generowanych obrazów jest mgła liniowa (linear fog), polegająca na jest mgła liniowa (linear fog), polegająca na stopniowym, liniowym zamgleniu obiektów wraz stopniowym, liniowym zamgleniu obiektów wraz ze wzrostem ich odległości od obserwatora. ze wzrostem ich odległości od obserwatora. Du\o lepsze efekty daje mgła tablicowa (table Du\o lepsze efekty daje mgła tablicowa (table fog). W jej przypadku stopień zamglenia w fog). W jej przypadku stopień zamglenia w zale\ności od odległości zapisany jest w zale\ności od odległości zapisany jest w odpowiedniej tablicy. Mgła tablicowa pozwala odpowiedniej tablicy. Mgła tablicowa pozwala na tworzenie takich efektów, jak mgła w na tworzenie takich efektów, jak mgła w określonym miejscu, np. nad powierzchnią określonym miejscu, np. nad powierzchnią stawu. stawu. 16 Efekty atmosferyczne Efekty atmosferyczne Bardzo wierne efekty daje tak\e mgła Bardzo wierne efekty daje tak\e mgła wykładnicza (expotential fog). Nie wymaga ona wykładnicza (expotential fog). Nie wymaga ona tworzenia tablicy wartości zamglenia, bowiem tworzenia tablicy wartości zamglenia, bowiem wartość ta jest wyliczana drogą wartość ta jest wyliczana drogą matematyczną. matematyczną. Na otwartych przestrzeniach du\o daje efekt Na otwartych przestrzeniach du\o daje efekt zacierania obiektu wraz ze wzrostem jego zacierania obiektu wraz ze wzrostem jego odległości od obserwatora (depth cueing). W odległości od obserwatora (depth cueing). W miarę, jak obiekt się przemieszcza względem miarę, jak obiekt się przemieszcza względem obserwatora, akcelerator zmienia jego kolor i obserwatora, akcelerator zmienia jego kolor i odcień. Krzywa zmiany koloru i odcienia jest odcień. Krzywa zmiany koloru i odcienia jest najczęściej krzywą wykładniczą. najczęściej krzywą wykładniczą. Efekty atmosferyczne Efekty atmosferyczne Ostatnie spośród istotnych efektów Ostatnie spośród istotnych efektów atmosferycznych to przezroczystość atmosferycznych to przezroczystość (transparency) i zlewanie (blending). (transparency) i zlewanie (blending). Polegają na porównaniu wartości kanałów Polegają na porównaniu wartości kanałów alfa dla dwóch nakładających się obiektów, a alfa dla dwóch nakładających się obiektów, a następnie zlaniu ich ze sobą. Wynikowy kolor następnie zlaniu ich ze sobą. Wynikowy kolor wylicza się albo po dodaniu czy odjęciu wylicza się albo po dodaniu czy odjęciu kolorów składowych (additive alpha blending), kolorów składowych (additive alpha blending), albo po ich pomno\eniu przez siebie albo po ich pomno\eniu przez siebie (multiplicative alpha blending). (multiplicative alpha blending). 17 Efekty atmosferyczne Efekty atmosferyczne Zastosowanie wszystkich omówionych technik Zastosowanie wszystkich omówionych technik efektów atmosferycznych pozwala na efektów atmosferycznych pozwala na uzyskiwanie obrazów o bardzo wysokim stopniu uzyskiwanie obrazów o bardzo wysokim stopniu realizmu realizmu Rasteryzacja Rasteryzacja Ostatnią fazą tworzenia obrazu 3D jest Ostatnią fazą tworzenia obrazu 3D jest rasteryzacja, a więc zamiana wszystkich rasteryzacja, a więc zamiana wszystkich parametrów obrazu 3D na zbiór kolorowych parametrów obrazu 3D na zbiór kolorowych punktów (tzw. ramkę lub jedną klatkę punktów (tzw. ramkę lub jedną klatkę obrazu). obrazu). Obraz o rozdzielczości 1024x768 składa się z Obraz o rozdzielczości 1024x768 składa się z prawie 800 tys. punktów (1024 x 768 = prawie 800 tys. punktów (1024 x 768 = 786432). Zapis samego obrazu bez u\ycia 786432). Zapis samego obrazu bez u\ycia współrzędnej głębokości Z wymaga ponad 3 MB współrzędnej głębokości Z wymaga ponad 3 MB pamięci (4 bajty na ka\dy punkt, czyli 768432 pamięci (4 bajty na ka\dy punkt, czyli 768432 x 4 = 3145728 bajtów). x 4 = 3145728 bajtów). 18 Rasteryzacja Rasteryzacja Do wcześniejszych obliczeń dochodzi jeszcze 16- Do wcześniejszych obliczeń dochodzi jeszcze 16- bitowa (najczęściej), czyli 2-bajtowa bitowa (najczęściej), czyli 2-bajtowa współrzędna Z, która wymaga dodatkowego współrzędna Z, która wymaga dodatkowego 1,5 MB danych (768432 x 2 = 1536864 bajtów) 1,5 MB danych (768432 x 2 = 1536864 bajtów) Obraz przechowywany jest przez akcelerator Obraz przechowywany jest przez akcelerator 3D w pamięci lokalnej zwanej buforem ramki 3D w pamięci lokalnej zwanej buforem ramki (frame buffer). Tutaj tak\e tworzona jest pamięć (frame buffer). Tutaj tak\e tworzona jest pamięć współrzędnej Z zwana buforem Z (Z-buffer) współrzędnej Z zwana buforem Z (Z-buffer) Bufor Z wykorzystywany jest przy rozstrzyganiu Bufor Z wykorzystywany jest przy rozstrzyganiu kwestii zasłaniania i przenikania obiektów kwestii zasłaniania i przenikania obiektów znajdujących się w określonym punkcie znajdujących się w określonym punkcie przestrzeni (wyznaczonym współrzędnymi X i Y) przestrzeni (wyznaczonym współrzędnymi X i Y) Rasteryzacja bufor Z Rasteryzacja bufor Z Podczas procesu rasteryzacji chip 3D rysuje na Podczas procesu rasteryzacji chip 3D rysuje na ekranie po kolei trójkąt po trójkącie. ekranie po kolei trójkąt po trójkącie. Ka\dy punkt ekranu ma przyporządkowaną mu Ka\dy punkt ekranu ma przyporządkowaną mu wartość głębi Z. Gdy akcelerator rysuje kolejne wartość głębi Z. Gdy akcelerator rysuje kolejne obiekty z punkcie (X,Y), przed zapaleniem obiekty z punkcie (X,Y), przed zapaleniem punktu w określonym kolorze porównuje jego punktu w określonym kolorze porównuje jego współrzędną Z ze współrzędną Z współrzędną Z ze współrzędną Z odpowiadającego mu punktu wcześniej odpowiadającego mu punktu wcześniej wyświetlonego obiektu. Jeśli nowy punkt ma wyświetlonego obiektu. Jeśli nowy punkt ma ni\szą wartość Z, jest rysowany. W przeciwnym ni\szą wartość Z, jest rysowany. W przeciwnym wypadku akcelerator nie zmienia wartości koloru wypadku akcelerator nie zmienia wartości koloru rozpatrywanego punktu (chyba \e kanał alfa rozpatrywanego punktu (chyba \e kanał alfa przezroczystości pozwala na taką operację) przezroczystości pozwala na taką operację) 19 Rasteryzacja bufor szablonowy Rasteryzacja bufor szablonowy Współczesne akceleratory 3D wyposa\one są Współczesne akceleratory 3D wyposa\one są dodatkowo w specjalny bufor, zwany buforem dodatkowo w specjalny bufor, zwany buforem szablonowym (stencil buffer). Jest to szablonowym (stencil buffer). Jest to najczęściej 1-bitowy bufor którego wartość najczęściej 1-bitowy bufor którego wartość logiczna 1 oznacza "tu nie wolno renderować", a logiczna 1 oznacza "tu nie wolno renderować", a zero - "tu wolno zero - "tu wolno Technika ta pozwala znacznie zmniejszyć Technika ta pozwala znacznie zmniejszyć zło\oność obliczeniową w systemach z animacją zło\oność obliczeniową w systemach z animacją Dithering Dithering Ze względów wydajnościowych bardzo często Ze względów wydajnościowych bardzo często systemy komputerowe pracują w trybach o głębi systemy komputerowe pracują w trybach o głębi kolorów obni\onej do 16-bitów. Poniewa\ nie kolorów obni\onej do 16-bitów. Poniewa\ nie jest to głębia wystarczająca do wiernego jest to głębia wystarczająca do wiernego odwzorowania świata 3D, więc akceleratory odwzorowania świata 3D, więc akceleratory stosują technikę tzw. ditheringu. stosują technikę tzw. ditheringu. Brakujące kolory tworzone są przy pomocy Brakujące kolory tworzone są przy pomocy mieszanki pikseli o kolorach z dostępnej mieszanki pikseli o kolorach z dostępnej palety. Powstaje efekt "ziarnistości", zwany palety. Powstaje efekt "ziarnistości", zwany ditheringiem ale uzyskuje się bardziej płynne ditheringiem ale uzyskuje się bardziej płynne przejścia pomiędzy ró\nymi kolorami przejścia pomiędzy ró\nymi kolorami 20 ... i od początku... ... i od początku... Całość wymienionych procesów prowadzi do Całość wymienionych procesów prowadzi do wygenerowania jednej trójwymiarowej sceny wygenerowania jednej trójwymiarowej sceny ("klatki animacji"). ("klatki animacji"). By scenę tę wprowadzić w ruch, trzeba wszystkie By scenę tę wprowadzić w ruch, trzeba wszystkie fazy rozpocząć od nowa - tworzenie "drucianych" fazy rozpocząć od nowa - tworzenie "drucianych" brył, okładanie ich teksturami, cieniowanie, brył, okładanie ich teksturami, cieniowanie, oświetlenie itd. oświetlenie itd. By obraz na ekranie zmieniał się w sposób By obraz na ekranie zmieniał się w sposób płynny, akcelerator musi stworzyć płynny, akcelerator musi stworzyć kompletną scenę 3D w czasie równym lub kompletną scenę 3D w czasie równym lub krótszym od jednej trzydziestej sekundy! krótszym od jednej trzydziestej sekundy! 21