Grafika Komputerowa Wykład 8 Przygotowanie do egzaminu mgr inż. 1/32
Obraz Grafika Rastrowa Grafika Wektorowa Obraz przechowywany w pamięci w postaci próbki opisane za pomocą macierzy pikseli Każdy piksel zawiera informację o pojedynczej próbce. Obraz przechowywany w pamięci w postaci zbioru prymitywów (prostych, krzywych, okręgów, wielokątów i tekstu). Każdy prymityw właściwości (np. promień), które modyfikować. zawiera rozmiar, można 2/32
Obraz rastrowy Obraz to macierz pikseli, inaczej nazywaną mapą bitową (ang. bitmapa). Bitmapy najczęściej prostokątnej. Piksel jest najmniejszym fizycznym elementem obrazu, który możemy modyfikować, bądź indeksować. występują w postaci dwuwymiarowej i 3/32
Formaty zapisu i kompresji bezstratnych obrazów rastrowych BMP PNG (Portable Network Graphics) Obsługuje przezroczystość. Aplikowanie proste filtry graficzne. GIF (Graphics Interchange Format) Duza dowolność rozmieszczenia bitów. Można wykorzystać kompresje RLE. Dzieli obraz na bloki, w którym może występować do 256 kolorów. Pozwalają na tworzenie prostych animacji ze zdefiniowanym kolorem tła. TIFF (Tagged Image File Format) Duża dowolność formatów. Może być także kompresowany stratnie. 4/32
Obraz wektorowy Obraz to zbiór prymitywów o danych własnościach. Wyświetlenie obrazu wektorowego wymaga rasteryzacji, przetworzenia danych o prymitywach do obrazu rastrowego. Czas rasteryzacji jest zależny od liczby obiektów tworzących obraz. 5/32
Obraz wektorowy - rasteryzacja Przed wyświetleniem obrazu wektorowego należy poddać go procesowi rasteryzacji. Musi zostać utworzona bitmapa. Każdy z obiektów obrazu rastrowego musi zostać przetworzony uwzględniając skalę, rozmiar bitmapy (oraz innych parametrów np. obrót) w celu znalezienia pikseli należących od obiektu. Występuje problem aliasingu (ostrych krawędzi), które należy w jak najlepszym stopniu zminimalizować używając technik anti-aliasingu. 6/32
Downsampling obrazu rastrowego Podczas potrzeby wyświetlania bitmapy w rozmiarze mniejszym niż oryginalny musi zostać przeprowadzony proces Downsamplingu. Metoda najbliższego sąsiada Mało kosztowna obliczeniowo Utrata szczegółów obrazu (wysokich częstotliwości) Metoda filtracji dwuliniowej (bilinear filtering) Bardziej kosztowna obliczeniowo Redukcja utraty szczegółów obrazu 7/32
Wyświetlacz CRT Wyświetlacz kineskopowy, CRT (ang. cathode-ray tube). Do wyświetlania obrazu używa się wiązki elektronów wystrzeliwane z dział elektronowych (katod), osobnych dla każdego kanału (RGB). Luminofor jest to świecący pigment - fosfor, materiał mający własności świecenia pod wpływem padającego nań promieniowania. Cewki elektryczne zmieniając pole magnetyczne odchylają wiązkę elektronów, by trafiała w różne części ekranu. https://circuitglobe.com/cathode-ray-tube-crt.html 8/32
Wyświetlacz LCD Wyświetlacz ciekłokrystaliczny, LCD (od ang. liquid-crystal display). Technika wyświetlacza oparta jest na zmianie polaryzacji światła na skutek zmian orientacji cząsteczek ciekłego kryształu pod wpływem przyłożonego pola elektrycznego.. 9/32
Podwójne buforowanie Rysowanie obrazu nie jest natychmiastowe. W trakcie procesu generowania obrazu mogą pojawiać się na niej kolejne elementy. Aby zapobiec wyświetlaniu niedokończonego obrazu stosuje się podwójne buforowanie (double buffering). Bufor przedni (ang. front buffer) - zawiera obraz wyświetlany Bufor tylny (ang. back buffer) - zawiera obraz generowany W momencie zakończenia tworzenia obrazu, następuje zamiana buforów miejscami (ang. swap buffer). 10/32
GPU - Graphics processing unit Procesor graficzny odpowiada za stworzenie zawartości obrazu, przechowywanie go, oraz wysłanie jej do wyświetlacza w celu wyświetlenia. Jest to możliwe dzięki architekturze użytej w GPU. Pozwala ona wykonywać o wiele więcej równoległych obliczeń niż procesor. Obraz jest przechowywany w buforze ramki (framebuffer) w pamięci karty graficznej. 11/32
Synchronizacja pionową Szybkość działania procesora graficznego nie jest synchronizowany z częstotliwością wyświetlania wyświetlacza. Aby upewnić się, że obraz kolejnej klatki zostanie dostarczony do wyświetlacza, gdy ten będzie gotowy do jej wyświetlenia, stosuje się synchronizację pionową (ang. vertical synchronisation / VSync). W przeciwnym przypadku, gdy generujemy więcej klatek niż częstotliwość wyświetlacza, zdarzyć się może że obraz będzie się składał z kilku klatek (tzw. tearing). 12/32
Upsampling obrazu rastrowego Podczas potrzeby wyświetlania bitmapy w rozmiarze większy niż oryginalny musi zostać przeprowadzony proces Upsamplingu. Metoda najbliższego sąsiada Mało kosztowna obliczeniowo Widocznie powiększenie pojedynczych pikseli (ostre krawędzie) Metoda filtracji dwuliniowej (bilinear filtering) Bardziej kosztowna obliczeniowo. Efekt rozmycia. 13/32
Rendering Grafika rzeczywista Grafika czasu rzeczywistego Celem jest wyrenderowanie trójwymiarowej sceny w najlepszej jakości. Celem jest wyrenderowanie danego obrazu w jak najkrótszym czasie (np. 16ms 60 klatek na sekundę). Nieograniczony renderowanie! na Próba implementacji zjawisk optycznych występujących w rzeczywistości w taki sposób, aby były bardzo podobne, lub wręcz idealnie odwzorowane. W celu przyspieszenia obliczeń stosuje się uproszczenia w implementacji zjawisk zachodzących w prawdziwym świecie. Wykorzystywana w filmach, reklamach, komputerowo generowanych obrazach, w sztuce Upraszcza się jakość renderowanej sceny, obiektów 3D, modelu oświetlenia, nie symuluje się także części zjawisk. Wykorzystywana w grach komputerowych, symulacjach, wirtualnej rzeczywistości. czas 14/32
Przekształcenia geometryczne Do przekształceń związanych z modelem stosujemy : Macierz modelu, która składa się z : Translacji Rotacji Skalowania Do przekształceń związanych z kamerą stosujemy : Macierz widoku, która składa się z : Pozycji kamery Kierunku patrzenia kamery Wektora góry Macierz projekcji, która składa się z : Kąt widzenia Aspektu Odległość płaszczyzny bliskiego odcinania Odległość płaszczyzny dalekiego odcinania 15/32
Ray tracing Podejście śledzenia promieni (ang. ray tracing) stosuje się w grafice realistycznej. Śledzone są promienie przechodzące przez piksele obrazu wynikowego w celu poszukiwania przecięć z obiektami sceny. Algorytm bardzo kosztowny z uwagi na drogą obliczeniowo operację śledzenia promieni światła i ich odbić. 16/32
Potok renderowania geometrii Potok renderowania geometrii (ang, rendering pipeline) stosujemy w grafice czasu rzeczywistego. Podejście w pewnym stopniu odwrotne do ray tracingu, zaczynając od geometrii rzutujemy ją na obraz. 17/32
Test głębokości Algorytm malarza (ang. painter s algorithm) Nie jest głębokości. Obiekty przykrywają się zgodnie z kolejnością rysowania To co zostanie narysowane później, przykryje to co zostało narysowane wcześniej. dokonywany test 18/32
Test głębokości We fragmentach, oprócz wartości RGB zawierający jego kolor, tworzony jest bufor głębokości (bufor Z). W buforze Z przechowywana jest informacja o odległości od kamery. Gdy w procesie renderingu obiektu sceny okaże się, że w danym pikselu jest już zawarty kolor, wykonywany jest test głębokości: Jeśli odległość od kamery nowego fragmentu jest mniejsza niż wartość w buforze głębokości to nadpisujemy ten piksel nową wartością koloru i odległości od kamery. Nowy obiekt jest bliżej kamery niż zawarty w buforze koloru. Jeśli odległość od kamery nowego fragmentu jest większa niż wartość w buforze głębokości to ignorujemy tą wartość. Nowy obiekt jest dalej kamery i będzie przysłonięty. 19/32
Oświetlenie Techniki oświetlenia można podzielić na dwa rodzaje : Oświetlenie lokalne (ang. direct illumination) Oświetlenie globalne (ang. indirect illumination) Oświetlenie lokalne Oświetlenie globalne 20/32
Oświetlenie lokalne W oświetleniu lokalnym na kolor poszczególnych punktów wpływa wyłącznie bezpośrednie (ang. direct) oświetlenie ze źródeł światła. Najczęściej stosowana jest w grafice czasu rzeczywistego. Oświetlenie lokalne Scena 21/32
Oświetlenie globalne W oświetleniu globalnym na kolor poszczególnych punktów wpływa bezpośrednie oświetlenie ze źródeł światła oraz światło odbite przez inne obiekty (pośrednie - ang. indirect). Najczęściej stosowana jest w grafice realistycznej. 2 odbicia 3 odbicia 22/32
Cieniowanie Cieniowanie występuje najczęściej w trzech rodzajach : Cieniowanie płaskie Liczony jest kolor dla wierzchołków prymitywu. Kolor fragmentu jest średnią kolorów wierzchołków. Cieniowanie Gourauda Liczony jest kolor dla wierzchołków prymitywu. Kolor fragmentu jest interpolowany z kolorów wierzchołków. Cieniowanie Phonga Kolor liczony jest dla każdego fragmentu. Płaskie Gourauda Phonga 23/32
Model oświetlenia Blinna Phonga Najczęściej używanym modelem oświetlenia rzeczywistego jest model Blinna Phonga. w grafice czasu Nie mylić z cieniowaniem Phonga - to dwie różne rzeczy! W modelu Phonga rozbijamy światło na trzy komponenty : Ambient - symulacja światła globalnego Diffuse - oświetlenie bezpośrednie Specular - odbicie światła 24/32
Model oświetlenia Blinna Phonga Składowa ambient służy za BARDZO duże uproszczenie symulacji światła niebezpośredniego. Jest on określany niezależnie od położenia i orientacji światła i obiektu. Składową ambient liczy się za pomocą zwykłego iloczynu wartości RGB światła i wartości RGB materiału. 25/32
Model oświetlenia Blinna Phonga Składowa diffuse dodatkowo uwzględnia kąt padania światła na powierzchnię obiektu. Ten kąt oblicza się za pomocą iloczynu skalarnego wektora normalnego powierzchni oraz kierunku padania światła. 26/32
Model oświetlenia Blinna Phonga Składowa specular symulująca odbicie światła zależy od iloczynu skalarnego wektora normalnego i wektora połówkowego wektora obserwacji i padania światła. Dodatkowo dołączony jest parametr shininess wskazujący właściwość powierzchni do odbijania światła. 27/32
Teksturowanie Teksturowanie jest to technika w grafice komputerowej, której celem jest zwiększenie szczegółowości renderowanych powierzchni za pomocą tekstur. Tekstura jest to pewna funkcja (najczęściej w formie bitmapy) zawierająca informację o tym jak przekształcić dany fragment powierzchni. W procesie teksturowanie zachodzi proces mapowania tekstury. 28/32
Tekstura Parametrami tekstury są : Wymiarowość 1D, 2D (obraz rastrowy), 3D... Rozmiar Rozdzielczość obrazu Pojedynczym elementem tekstury nazywamy tekselem. Najczęściej wielkość wymiaru jest potęgą 2. Format Ilość kanałów (RGB, RGBA, Skala szarości) Typ danych (int, float itp.) 29/32
Filtrowanie tekstury Filtrowanie tekstury jest metodą, która służy do uzyskania wartości fragmentu w wyniku mapowania tekstury na podstawie wartości odpowiadających temu fragmentowi tekseli. Metody : Najbliższego sąsiada (najbliższy teksel) Interpolacja liniowa (średnia ważona czterech tekseli) 30/32
Mipmapping Mipmapy są to wcześniej wyliczone sekwencje pomniejszonych wersji oryginalnej tekstury. Każdy kolejny poziom tekstury to ma wymiary dwukrotnie mniejsze dla każdego wymiaru. W trakcie procesu teksturowania procesor graficzny wybiera który poziom wykorzystać. Stosuje się w celu przyspieszenia obliczeń kosztem większego zużycia pamięci gdzie przechowywana jest tekstura (⅓ więcej). 31/32
Grafika Komputerowa Wykład 8 Teksturowanie Dziękuję za uwagę :) Tekstura Tekstura proceduralna Mapowanie tekstury Filtrowanie tekstury Mipmapping Zastosowania tekstur mgr inż. 32/32