Pobierz prezentację
Pobieranie prezentacji. Proszę czekać
1
Teksturowanie w grafice komputerowej
Michał Radziszewski
2
Plan prezentacji Cel użycia tekstur Mapowanie tekstur
Filtrowanie – rekonstrukcja, prefiltrowanie Próbkowanie losowe HDRI Pełne widmo Kompresja tekstur Teksturowanie proceduralne
3
Cel użycia tekstur Poprawa jakości grafiki
Szczegółowe obrazy bez konieczności wykorzystania ogromnej ilości wielokątów Głównie kolor, ale nie tylko Niezależny kolor matowy i kolor połysku Siła połysku Przezroczystość Mapowanie nierówności / przemieszczeń I wiele innych
4
Tekstury – kolor
5
Tekstury – przezroczystość
© Plus3D
6
Mapowanie przemieszczeń
© William Donnelly
7
Mapowanie tekstur Podstawowy algorytm mapowania na płaskie wielokąty, historycznie – brak korekcji perspektywy Mapowanie ogólne – dwuwymiarowa powierzchnia musi być parametryzowalna Tekstury trójwymiarowe
8
Tekstury trójwymiarowe
9
Filtrowanie Rekonstrukcja – współrzędne teksturo-wanego punktu na ogół niecałkowite Należy zrekonstruować wartość tekstury w dowolnym punkcie Obrazy często nie są zapisami poprawnie (zgod-nie z tw. Shannona) próbkowanego sygnału Teoretycznie idealny filtr oparty o funkcję sinc może powodować ‘dzwonienie’
10
Filtrowanie – rekonstrukcja
Należy zrekonstruować wartość tekstury w dowolnym punkcie – cd. W praktyce używane są filtry gaussowskie albo wielomianowe, kompromis pomiędzy dzwonie-niem, rozmyciem a kosztem obliczeniowym
11
Filtrowanie – rekonstrukcja 1D
© Matt Pharr
12
Prefiltrowanie Nawet idealna rekonstrukcja nie zawsze jest skuteczna
Na skutek złożenia mapowania na wielokąt z mapowaniem na ekran rozdzielczość tekstury może ulec zmniejszeniu Prefiltrowanie – usunięcie z tekstury częstotliwości powodujących aliasing w ww. przypadku
13
Prefiltrowanie – cd. MIP mapy, trilinear filtering, anisotropic filtering © 3D Mark 2006
14
Prefiltrowanie – cd. © 3D Mark 2006
15
Prefiltrowanie – cd. © 3D Mark 2006
16
Prefiltrowanie – cd. © Extremetech
17
Próbkowanie losowe Stosowane wtedy, gdy nie można zastosować filtrowania analitycznego (np. map nierówności czy przeźroczystości) Zamienia aliasing na szum, który jest redukowany poprzez dużą ilość próbek Zastępuje tylko prefiltrowanie, dobry algorytm rekonstrukcji nadal jest konieczny Zawsze działa bezbłędnie, ale kosztowne obliczeniowo
18
Próbkowanie losowe – cd.
© Matt Pharr
19
HDRI High Dynamic Range Imaging
Konwencjonalne obrazy – format stałoprzecinkowy, na ogół 256 wartości Pełna precyzja – tylko dla wartości >128 Brak detali w cieniu HDRI – format zmiennoprzecinkowy Pełna precyzja niezależnie od jasności Na ogół 16 bitów, tzw. ‘half’
20
HDRI – cd. Znacznie lepszy kontrast przy zachowaniu detali na najjaśniejszych i najciemniejszych elementach Na zwykłym projektorze niestety nie można pokazać nic poza tym: © OpenEXR
21
Pełne widmo a RGB Model RGB nie ma żadnego uzasadnienia fizycznego – został zaprojektowany do wyświetlania i przechowywania obrazów biorąc pod uwagę fizjologię ludzkiego oka oraz charakterystyki monitorów Niestety rendering w oparciu o RGB w ogólnym przypadku nie jest poprawny
22
Pełne widmo – motywacja
Zniekształcanie kolorów – RGB poprawne tylko dla oświetlenia białego Zjawiska zależne od długości fali światła
23
Pełne widmo – motywacja
24
Pełne widmo – cd. Ale niemal wszystkie tekstury są w formacie RGB – konieczność konwersji Pełne widmo zawiera dużo więcej informa-cji, niż może przechować tekstura RGB Istnieją różne warianty takiej konwersji – każdy z nich jest ‘zgadywany’, nie da się powiedzieć który z nich jest lepszy
25
Pełne widmo – cd. Przykładowa konwersja
widma r(l), g(l), b(l), gdzie l – długość fali r(l) + g(l) + b(l) = 1, 0 ≤ x(l) ≤ 1 Wynik konwersji: s(l) = R*r(l) + G*g(l) + B*b(l)
26
Pełne widmo – cd. Wynikiem renderingu w oparciu o pełne widmo jest obraz nie dający się wyświetlić Konieczna jest konwersja powrotna do RGB, na ogół poprzez przestrzeń XYZ Konieczność mapowania zakresu jasności oraz kolorów nie reprezentowalnych w RGB Najlepszy format do przechowywania takich wyników – wariant HDR
27
Kompresja tekstur Tekstury o wysokiej rozdzielczości zajmują dużo pamięci Kompresja tekstur powoduje mniejszą utratę jakości niż zmniejszenie rozdzielczości Kompromis pomiędzy jakością tekstur, wymaganą mocą obliczeniową a zajętością pamięci
28
Kompresja tekstur – cd. Wymagania Kompresja bezstratna, np. PNG
Szybkie dekodowanie (kodowanie mniej istotne) Swobodny dostęp w przypadku śledzenia promieni (niekonieczny przy rasteryzacji) Kompresja bezstratna, np. PNG Dobra do grafiki tworzonej ręcznie, zrzutów ekranu, itp., ale nie nadaje się do kompresji zdjęć, będących często podstawą tekstur Brak swobodnego dostępu
29
Kompresja tekstur – cd. Kompresja stratna – np. JPG
Dobry (ok x) współczynnik kompresji dla zdjęć przy zachowaniu akceptowalnej jakości Utrata jakości objawia się poprzez rozmycie szczegółów i rozpad obrazu na bloki 8x8 albo 16x16, jednak rozpad można skorygować Kosztem niewielkiego (ok. 15% przy kompresji 10x) narzutu pamięciowego można uzyskać dostęp swobodny Niezbyt wydajna dekompresja
30
Kompresja tekstur – cd. Format specjalizowany – np. DXT
Kompresja stratna Jakość lepsza niż przy ograniczeniu rozdzielczości ale gorsza niż dla obrazów JPG Optymalizowany pod kątem kart graficznych Bardzo szybka dekompresja
31
Teksturowanie proceduralne
Zastosowanie programu do utworzenia tekstur Program wykonywany jest w trakcie renderingu Niemal brak zużycia pamięci Wymagana duża moc obliczeniowa
32
Teksturowanie proceduralne
© David Ebert
33
Teksturowanie proceduralne
color main { return blend( blend(color([ ]), color([ ]), noise(addr=8.0*$uv+16.0)* ), color([ ]), marble(addr=12.0*$uv, layers=[0.375, 0.375], amplitude=1.0, roughness=0.25, bright_dark=0.5, c_octaves=6 )) * blend( blend(color([ ]), color([ ]), noise(addr=8.0*$uv+48.0)* ), blend(color([ ]), color([ ]), noise(addr=8.0*$uv+128)* ), marble(addr=12.0*$uv+4.0, layers=[0.375, 0.375], amplitude=0.75, roughness=0.375, bright_dark=0.375, }
34
Teksturowanie proceduralne
Możliwość efektywnej kontroli nad parametrami tekstury Duża ilość szczegółów Olbrzymia różnorodność scen Nie zawsze łatwo da się zastosować np. twarz człowieka ściana z obrazem
35
Podsumowanie Właściwe użycie tekstur decyduje o jakości grafiki
Bardzo ważne jest odpowiednie filtrowanie tekstur Warto rozważyć stosowanie bardziej zaawansowanych formatów niż 24bit RGB Konieczność wyważenia zużycia pamięci i mocy obliczeniowej
Podobne prezentacje
© 2024 SlidePlayer.pl Inc.
All rights reserved.