69
Bartosz Bazyluk Teksturowanie Mapy bitowe, pojęcie tekstury, potok, zastosowania. Grafika Komputerowa i Wizualizacja, Informatyka S1, II Rok http://bazyluk.net/dydaktyka

Bartosz Bazyluk Teksturowaniebazyluk.net/dydaktyka/GKiW_2015/05_Tekstury.pdf · 30 listopada 2015 Bartosz Bazyluk 2 SPOSOBY REPREZENTACJI OBRAZU Grafika rastrowa Obraz jako macierz

Embed Size (px)

Citation preview

Page 1: Bartosz Bazyluk Teksturowaniebazyluk.net/dydaktyka/GKiW_2015/05_Tekstury.pdf · 30 listopada 2015 Bartosz Bazyluk 2 SPOSOBY REPREZENTACJI OBRAZU Grafika rastrowa Obraz jako macierz

Bartosz Bazyluk

TeksturowanieMapy bitowe, pojęcie tekstury, potok, zastosowania.

Grafika Komputerowa i Wizualizacja, Informatyka S1, II Rok

http://bazyluk.net/dydaktyka

Page 2: Bartosz Bazyluk Teksturowaniebazyluk.net/dydaktyka/GKiW_2015/05_Tekstury.pdf · 30 listopada 2015 Bartosz Bazyluk 2 SPOSOBY REPREZENTACJI OBRAZU Grafika rastrowa Obraz jako macierz

30 listopada 2015 Bartosz Bazyluk 2

SPOSOBY REPREZENTACJI

OBRAZU

● Grafika rastrowa● Obraz jako macierz

wartości pikseli

● Grafika wektorowa● Obraz jako zbiór figur

geometrycznych

Źródło obrazu:http://www.wikipedia.org

Page 3: Bartosz Bazyluk Teksturowaniebazyluk.net/dydaktyka/GKiW_2015/05_Tekstury.pdf · 30 listopada 2015 Bartosz Bazyluk 2 SPOSOBY REPREZENTACJI OBRAZU Grafika rastrowa Obraz jako macierz

30 listopada 2015 Bartosz Bazyluk 3

GRAFIKA RASTROWA

● Obraz to macierz pikseli – tzw. mapa bitowa, popularnie bitmapa (od ang. bitmap)

● Bitmapy są najczęściej prostokątne● Piksel jest najmniejszym fizycznym elementem

obrazu, który możemy kontrolować i adresować

Źródło obrazu:http://www.vector-conversions.com

Page 4: Bartosz Bazyluk Teksturowaniebazyluk.net/dydaktyka/GKiW_2015/05_Tekstury.pdf · 30 listopada 2015 Bartosz Bazyluk 2 SPOSOBY REPREZENTACJI OBRAZU Grafika rastrowa Obraz jako macierz

30 listopada 2015 Bartosz Bazyluk 4

GRAFIKA RASTROWA

● Bitmapę charakteryzują:● szerokość, wysokość [px]

– np. 1680×1050px

● liczba kanałów

– np. RGB (Red/Green/Blue), czyli 3 kanały

– np. RGBA (RGB+Alpha, czyli przezroczystość)

● rozmiar piksela [bpp]

– np. 24bpp w przypadku RGB = 8 bitów na kanał● oznacza to, że każdy z kanałów może przyjąć 2^8 różnych wartości

Źródło obrazu:http://www.foothill.edu

Page 5: Bartosz Bazyluk Teksturowaniebazyluk.net/dydaktyka/GKiW_2015/05_Tekstury.pdf · 30 listopada 2015 Bartosz Bazyluk 2 SPOSOBY REPREZENTACJI OBRAZU Grafika rastrowa Obraz jako macierz

30 listopada 2015 Bartosz Bazyluk 5

GRAFIKA RASTROWA

● Bitmapa może posiadać kolory indeksowane● czyli np. zamiast konkretnych wartości RGB pikseli, zapisane

są identyfikatory kolorów (oszczędność pamięci)

● powiązanie identyfikatorów z konkretnymi kolorami (paleta) może być dołączone do bitmapy jako słownik

● identyfikatory mogą też dotyczyć np. domyślnej palety systemowej

Źródło obrazu:http://www.hdfgroup.org

Page 6: Bartosz Bazyluk Teksturowaniebazyluk.net/dydaktyka/GKiW_2015/05_Tekstury.pdf · 30 listopada 2015 Bartosz Bazyluk 2 SPOSOBY REPREZENTACJI OBRAZU Grafika rastrowa Obraz jako macierz

30 listopada 2015 Bartosz Bazyluk 6

GRAFIKA RASTROWA

● Ilość pamięci potrzebna do zapisania mapy bitowej:● szerokość × wysokość × rozmiar piksela

● Przykład:

512px

512p

x

24bpp

(512 × 512 × 24) / 8 = 786.432B = 768kB

ponieważ 1B = 8b

Page 7: Bartosz Bazyluk Teksturowaniebazyluk.net/dydaktyka/GKiW_2015/05_Tekstury.pdf · 30 listopada 2015 Bartosz Bazyluk 2 SPOSOBY REPREZENTACJI OBRAZU Grafika rastrowa Obraz jako macierz

30 listopada 2015 Bartosz Bazyluk 7

GRAFIKA RASTROWA

● Zapisując bitmapy w pamięci masowej w celu przechowania, często stosuje się kompresję

● Algorytmy kompresji można podzielić na dwie podstawowe grupy:

● Kompresja bezstratna

– Możliwe jest całkowite odtworzenie pierwowzoru

● Kompresja stratna

– W wyniku kompresji dochodzi do utraty jakości,np. szczegółów lub koloru

– Powstają zniekształcenia, tzw. artefakty

Źródło obrazu:http://cscie12.dce.harvard.edu

Page 8: Bartosz Bazyluk Teksturowaniebazyluk.net/dydaktyka/GKiW_2015/05_Tekstury.pdf · 30 listopada 2015 Bartosz Bazyluk 2 SPOSOBY REPREZENTACJI OBRAZU Grafika rastrowa Obraz jako macierz

30 listopada 2015 Bartosz Bazyluk 8

GRAFIKA RASTROWA

● Popularne formaty zapisu bitmap i kodeki:● BMP

– duża dowolność formatu danych

– może wykorzystywać kompresję bezstratną RLE

● JPEG

– kompresja stratna

– brak obsługi przezroczystości

– 24bpp

● PNG

– kompresja bezstratna

● GIF

– kompresja bezstratna

– zazwyczaj max. 8bpp

– możliwość zapisu sekwencji obrazów jako animacja

● TIFF

– duża dowolność formatu danych i sposobów kompresji

Page 9: Bartosz Bazyluk Teksturowaniebazyluk.net/dydaktyka/GKiW_2015/05_Tekstury.pdf · 30 listopada 2015 Bartosz Bazyluk 2 SPOSOBY REPREZENTACJI OBRAZU Grafika rastrowa Obraz jako macierz

30 listopada 2015 Bartosz Bazyluk 9

GRAFIKA RASTROWA

● Kompresja JPEG● Standard JPEG opisuje działanie kodeka, a nie format pliku

– Kodek jest algorytmem zamiany obrazu w strumień bajtów oraz zamiany strumienia bajtów w obraz

● Najpopularniejsze formaty:

– JPEG/Exif

– JPEG/JFIF

Page 10: Bartosz Bazyluk Teksturowaniebazyluk.net/dydaktyka/GKiW_2015/05_Tekstury.pdf · 30 listopada 2015 Bartosz Bazyluk 2 SPOSOBY REPREZENTACJI OBRAZU Grafika rastrowa Obraz jako macierz

30 listopada 2015 Bartosz Bazyluk 10

GRAFIKA RASTROWA

● Kompresja JPEG – krok 1/4● Przejście z przestrzeni RGB do Y'C

BC

R

– Y' – luma● Poziom jasności (nieliniowy!)

– CB, C

R – chroma

● CB – różnica koloru niebieskiego i Y'

● CR

– różnica koloru czerwonego i Y'

● Dzięki temu możliwe jest odrębne traktowanie lumy, a co za tym idzie kontrastu, od informacji o kolorze

– Ludzki aparat widzenia jest bardziej czuły na zmiany w kontraście, niż w kolorze

Źródło obrazu:http://wikipedia.org

Page 11: Bartosz Bazyluk Teksturowaniebazyluk.net/dydaktyka/GKiW_2015/05_Tekstury.pdf · 30 listopada 2015 Bartosz Bazyluk 2 SPOSOBY REPREZENTACJI OBRAZU Grafika rastrowa Obraz jako macierz

30 listopada 2015 Bartosz Bazyluk 11

GRAFIKA RASTROWA

● Kompresja JPEG – krok 2/4● Redukcja rozdzielczości informacji o kolorze

(ang. chroma subsampling)

– Skoro człowiek trudniej zauważa różnicę w zmianach koloru niż kontrastu, to po co marnować pamięć na przechowywanie informacji o kolorze w pełnej rozdzielczości?

– 4:4:4 – bez redukcji

– 4:2:2 – 2-krotna redukcja w poziomie

– 4:2:0 – 2-krotna redukcja w pionie i poziomie

– Wyjaśnienie zapisu:http://en.wikipedia.org/wiki/Chroma_subsampling#Sampling_systems_and_ratios

● Krok opcjonalny

Źródło obrazu:http://wikipedia.org

Page 12: Bartosz Bazyluk Teksturowaniebazyluk.net/dydaktyka/GKiW_2015/05_Tekstury.pdf · 30 listopada 2015 Bartosz Bazyluk 2 SPOSOBY REPREZENTACJI OBRAZU Grafika rastrowa Obraz jako macierz

30 listopada 2015 Bartosz Bazyluk 12

GRAFIKA RASTROWA

● Kompresja JPEG – krok 3/4● Obraz dzielony jest na bloki 8x8 pikseli

– Stąd bierze się często widoczny "blokowy" artefakt w obrazach JPEG

● Każdy z kanałów Y'CBC

R w każdym z bloków jest osobno

poddawany działaniu dyskretnej transformacji kosinusowej (ang. discrete cosine transform, DCT)

– Przejście do dziedziny częstotliwości

– Przed zastosowaniem DCT wartości [0;255] przesuwane są do zakresu [-128;127]

– Tymczasowo każdy komponent zajmuje więcej niż 8 bitów

● Wartości po DCT poddawane są kwantyzacji

– Jedyny (poza subsamplingiem) stratny element kodeka, tego etapu dotyczy ustawienie stopnia kompresji

– Pozwala pominąć zmiany wysokiej częstotliwości

● Kompresja JPEG – krok 4/4● Dodatkowa, bezstratna kompresja Huffmana

● Może być poprzedzona bezstratnym kodowaniem entropii

Charakterystyczne, blokowe artefakty są wynikiem osobnego

przetwarzania bloków 8x8 pikseli.

Page 13: Bartosz Bazyluk Teksturowaniebazyluk.net/dydaktyka/GKiW_2015/05_Tekstury.pdf · 30 listopada 2015 Bartosz Bazyluk 2 SPOSOBY REPREZENTACJI OBRAZU Grafika rastrowa Obraz jako macierz

30 listopada 2015 Bartosz Bazyluk 13

GRAFIKA RASTROWA

● Różne metody kompresji nadają się do różnego rodzaju obrazów

● Należy zawsze wziąć pod uwagę charakter kompresowanego obrazu by uzyskać optymalny stosunek jakości do rozmiaru pliku

● Większość metod kompresji pozwala dobrać jej parametry

● Przykłady:

Brak kompresji: 1386kBPNG: 96kB, jakość idealna

JPG: 99kB, jakość b.złaJPG: 285kB, jakość db.

Brak kompresji: 1875kBPNG: 1268kB, jakość idealna

JPG: 480kB, jakość b.db.JPG: 246kB, jakość akceptowalna

Page 14: Bartosz Bazyluk Teksturowaniebazyluk.net/dydaktyka/GKiW_2015/05_Tekstury.pdf · 30 listopada 2015 Bartosz Bazyluk 2 SPOSOBY REPREZENTACJI OBRAZU Grafika rastrowa Obraz jako macierz

30 listopada 2015 Bartosz Bazyluk 14

RENDEROWANIE DETALI

Źródło obrazu:http://www.texturex.com

Problem:

W jaki sposób korzystając z dotychczas omówionych metod

opisu cech materiału wyrenderować powierzchnię

lub element o bardzo dużej szczegółowości?

Page 15: Bartosz Bazyluk Teksturowaniebazyluk.net/dydaktyka/GKiW_2015/05_Tekstury.pdf · 30 listopada 2015 Bartosz Bazyluk 2 SPOSOBY REPREZENTACJI OBRAZU Grafika rastrowa Obraz jako macierz

30 listopada 2015 Bartosz Bazyluk 15

TEKSTUROWANIE ● Technika teksturowania pozwala na modyfikację cech powierzchni bryły pomiędzy jej wierzchołkami

● Teksturowanie jest z założenia operacją wykonywaną na fragmentach

– Możliwe jest wykorzystanie tekstur także na innych etapach potoku renderowania, np. podczas przetwarzania wierzchołków

● Najczęściej teksturowanie kojarzy się z modulacją koloru na podstawie koloru tekstury, jednak jest to tylkojedno z wielu zastosowań tej techniki

Przetwarzanie wierzchołków

Łączenie w prymitywy

Rasteryzacja prymitywów

Operacje na fragmentach

Operacje na pikselach

Wierzchołki

Bufor klatki

Źródło obrazu:http://helpcenter.graphisoft.com/

Oświetlona bryła Modulacja koloru z użyciem tekstury

Page 16: Bartosz Bazyluk Teksturowaniebazyluk.net/dydaktyka/GKiW_2015/05_Tekstury.pdf · 30 listopada 2015 Bartosz Bazyluk 2 SPOSOBY REPREZENTACJI OBRAZU Grafika rastrowa Obraz jako macierz

30 listopada 2015 Bartosz Bazyluk 16

TEKSTUROWANIE ● Na teksturę składa się jeden lub więcej obrazów● Jest więc ona swojego rodzaju kontenerem na obrazy,

posiadającym pewne szczególne cechy

● Nie należy utożsamiać tekstury z obrazem

● Teksturę określają parametry:● Typ tekstury

– Określa ułożenie obrazów w obrębie tekstury

● Rozmiar tekstury

– Rozdzielczość obrazów

● Format obrazu

– Ułożenie danych w obrębie każdego obrazu

Źródło obrazu:http://filterforge.com/

Page 17: Bartosz Bazyluk Teksturowaniebazyluk.net/dydaktyka/GKiW_2015/05_Tekstury.pdf · 30 listopada 2015 Bartosz Bazyluk 2 SPOSOBY REPREZENTACJI OBRAZU Grafika rastrowa Obraz jako macierz

30 listopada 2015 Bartosz Bazyluk 17

TEKSTUROWANIE ● Typy tekstur● Wymiarowość:

– 1D – obrazy posiadają tylko szerokość

– 2D – obrazy posiadają szerokość i wysokość

– 3D – obrazy posiadają szerokość, wysokość i głębokość

● Zorganizowanie obrazów:

– Np. tablica (ang. array), mapa sześcienna (ang. cube map)

● Dostępne w OpenGL typy:

– GL_TEXTURE_1D, GL_TEXTURE_2D, GL_TEXTURE_3D

– GL_TEXTURE_RECTANGLE

– GL_TEXTURE_BUFFER

– GL_TEXTURE_CUBE_MAP

– GL_TEXTURE_1D_ARRAY, GL_TEXTURE_2D_ARRAY

– GL_TEXTURE_CUBE_MAP_ARRAY

– GL_TEXTURE_2D_MULTISAMPLE, GL_TEXTURE_2D_MULTISAMPLE_ARRAY

Źródło obrazu:http://filterforge.com/

Najczęściej wykorzystywany i zarazem najbardziej uniwersalny

typ tekstury w OpenGL to GL_TEXTURE_2D.

Page 18: Bartosz Bazyluk Teksturowaniebazyluk.net/dydaktyka/GKiW_2015/05_Tekstury.pdf · 30 listopada 2015 Bartosz Bazyluk 2 SPOSOBY REPREZENTACJI OBRAZU Grafika rastrowa Obraz jako macierz

30 listopada 2015 Bartosz Bazyluk 18

TEKSTUROWANIE ● W uogólnieniu tekstura jest macierzą wartości (niekoniecznie koloru!)

● Wykorzystuje się tekstury jedno- (1D), dwu- (2D) i trójwymiarowe (3D)

● Najpowszechniejsze są tekstury 2D

● Niezależnie od liczby wierszy i kolumn macierzy, dwuwymiarową teksturę opisuje się za pomocą znormalizowanych współrzędnych UV:

Źródło obrazu:http://filterforge.com/

u

v

Pojedynczy element macierzy używanej jako tekstury

nazywa się tekselem.

Dla tekstur 1D jest zwyczajowo jedna współrzędna U, dla tekstur

3D są współrzędne UVW.

W DirectX współrzędna pionowa jest odwrócona: początek

przestrzeni tekstury znajduje się w jej lewym górnym narożniku.

(0,0) (1,0)

(0,1) (1,1)

Teksel

Page 19: Bartosz Bazyluk Teksturowaniebazyluk.net/dydaktyka/GKiW_2015/05_Tekstury.pdf · 30 listopada 2015 Bartosz Bazyluk 2 SPOSOBY REPREZENTACJI OBRAZU Grafika rastrowa Obraz jako macierz

30 listopada 2015 Bartosz Bazyluk 19

TEKSTUROWANIE ● Adresowanie tekstury odbywa się z użyciem współrzędnych w jej przestrzeni,tj. dwuwymiarowych jeśli obraz jest dwuwymiarowy

● Współrzędne w przestrzeni tekstury nazywa się zwyczajowo U, UV, UVW zależnie od wymiarowości

● Współrzędne powierzchni bryły na którą nakłada się teksturę zwyczajowo nazywa się S, ST, STR zależnie od wymiarowości

● W OpenGL przyjęto tę drugą konwencję jako dominującą aby odróżnić współrzędne UV tekstury od współrzędnych ewaluatora, które też nazywane są UV

Źródło obrazu:Cindy Reed. Texture Mapping in VRML.

Zdecydowanie częściej słyszy się o współrzędnych UV,

niż o współrzędnych ST.

W środowisku ludzi zajmujących się grafiką komputerową zdania

odnośnie słuszności jednej bądź drugiej konwencji i ich znaczeń

są bardzo podzielone.

Page 20: Bartosz Bazyluk Teksturowaniebazyluk.net/dydaktyka/GKiW_2015/05_Tekstury.pdf · 30 listopada 2015 Bartosz Bazyluk 2 SPOSOBY REPREZENTACJI OBRAZU Grafika rastrowa Obraz jako macierz

30 listopada 2015 Bartosz Bazyluk 20

TEKSTUROWANIE ● Tekstura trójwymiarowa (3D)● Jest złożona ze zbioru plastrów (warstw, ang. slices),

z których każdy stanowi macierz 2D o tych samych wymiarach

● Dzięki interpolacji pomiędzy warstwami możliwe jest opisanie ciągłego, wolumetrycznego zbioru danych

● Wykorzystuje się np. do opisu danych medycznych pozyskanych metodami takimi jak tomografia

Źródło obrazu:http://github.com/neurolabusc/vx

u

v

w

Page 21: Bartosz Bazyluk Teksturowaniebazyluk.net/dydaktyka/GKiW_2015/05_Tekstury.pdf · 30 listopada 2015 Bartosz Bazyluk 2 SPOSOBY REPREZENTACJI OBRAZU Grafika rastrowa Obraz jako macierz

30 listopada 2015 Bartosz Bazyluk 21

TEKSTUROWANIE ● Tekstura będąca tablicą (ang. array texture)● Podobnie jak w przypadku tekstury 3D, tekstura składa się

z plastrów (ang. slices), ale tutaj każdy z nich jest niezależnym obrazem – nie ma interpolacji pomiędzy nimi

– Obrazy muszą być identycznych wymiarów

● Przełączanie się pomiędzy teksturami jest kosztowne

– Tablica pozwala na jednoczesne załadowanie kilku obrazów jako jednej tekstury – jest to duża oszczędność czasu

● Lepsza alternatywa dla atlasów tekstur

– Nie występuje problem bleedingu (mieszania wartości przy krawędziach) podczas filtracji

– Możliwy łatwy wrapping

– Rozwiązanie problemów z mipmappingiem

● Nieużyteczna w nieprogramowalnym potoku renderowania

Źródła obrazów:NVIDIA

http://www.paulsprojects.net/

Podobnie jak w przypadku tekstury 3D, adresowanie

odbywa się za pomocą trzech współrzędnych.

Trzecia współrzędna jest identyfikatorem warstwy i jest

w tym przypadku liczbą całkowitą.

Page 22: Bartosz Bazyluk Teksturowaniebazyluk.net/dydaktyka/GKiW_2015/05_Tekstury.pdf · 30 listopada 2015 Bartosz Bazyluk 2 SPOSOBY REPREZENTACJI OBRAZU Grafika rastrowa Obraz jako macierz

30 listopada 2015 Bartosz Bazyluk 22

TEKSTUROWANIE ● Mapa sześcienna (ang. cube map)● Struktura sześciu obrazów stanowiących ściany sześcianu

● Możliwość adresowania za pomocą trójwymiarowego kierunku obserwacji

● Przydatna np. do zbudowania skyboxa lub do techniki mapowania środowiska

Źródła obrazów:NVIDIA

http://www.paulsprojects.net/

Podanie trójwymiarowego wektora kierunku prowadzi do znalezienia

odpowiadającego mu teksela w sześciennej mapie.

Page 23: Bartosz Bazyluk Teksturowaniebazyluk.net/dydaktyka/GKiW_2015/05_Tekstury.pdf · 30 listopada 2015 Bartosz Bazyluk 2 SPOSOBY REPREZENTACJI OBRAZU Grafika rastrowa Obraz jako macierz

30 listopada 2015 Bartosz Bazyluk 23

TEKSTUROWANIE ● Liczba wierszy i kolumn obrazu w teksturze to jej rozdzielczość

● Dwuwymiarowe tekstury są często kwadratowe, choć nie jest to konieczne (OpenGL 1.1+)

● Najczęściej tekstury mają wymiary będące potęgami liczby 2, choć nie jest to konieczne (OpenGL 1.4+)

– Np. 128×128, 512×512, 1024×512, 2048×256...

– Pozwala to na korzystanie z uproszczonych obliczeń podczas np. mnożenia, dzielenia współrzędnych

– Dzięki temu przetwarzanie tekstur o takich wymiarach może być szybsze

● Można oczekiwać, że współczesne karty graficzne są w stanie obsłużyć tekstury nawet o rozdzielczości 16384×16384, choć w praktyce rzadko kiedy używa się większych niż 4096×4096

– Najczęściej spotykane rozmiary są w zakresieod 128×128 do 2048×2048

– Możliwości zależą od ilości dostępnej pamięci karty graficznej jak i sprzętowych rozwiązań dotyczących jej adresowania

Źródło obrazu:StackExchange, Gamedev, psal

Wymiar tekstury będący każdą kolejną potęgą liczby 2

oznacza cztery razy więcej tekseli.

Szybszy odczyt danych z tekstury o wymiarach będących

potęgami liczby 2 sprawia,że czasem warto poświęcić pamięć

i zwiększyć jej rozmiar.

Page 24: Bartosz Bazyluk Teksturowaniebazyluk.net/dydaktyka/GKiW_2015/05_Tekstury.pdf · 30 listopada 2015 Bartosz Bazyluk 2 SPOSOBY REPREZENTACJI OBRAZU Grafika rastrowa Obraz jako macierz

30 listopada 2015 Bartosz Bazyluk 24

Źródło obrazu:http://gamersnexus.net

Page 25: Bartosz Bazyluk Teksturowaniebazyluk.net/dydaktyka/GKiW_2015/05_Tekstury.pdf · 30 listopada 2015 Bartosz Bazyluk 2 SPOSOBY REPREZENTACJI OBRAZU Grafika rastrowa Obraz jako macierz

30 listopada 2015 Bartosz Bazyluk 25

TEKSTUROWANIE ● Format tekstury określa sposób zorganizowania danych w obrębie obrazu

● Komponenty (R, G, B, A, depth, stencil, ...)

● Precyzja (liczba bitów na kanał)

● Typ danych (signed/unsigned, integer, float, ...)

● Przykładowe formaty oferowane przez OpenGL:

– GL_RGB8

– GL_R3_G3_B2

– GL_RGB10_A2

– GL_SRGB8_ALPHA8

– GL_DEPTH_COMPONENT24

– itd...

● Możliwa jest wspierana sprzętowo kompresja danych przechowywanych w teksturze

● Metody charakterystyczne dla producentów kart graficznych

● Uniwersalna metoda S3 (S3TC), nazywana czasem DXT

Page 26: Bartosz Bazyluk Teksturowaniebazyluk.net/dydaktyka/GKiW_2015/05_Tekstury.pdf · 30 listopada 2015 Bartosz Bazyluk 2 SPOSOBY REPREZENTACJI OBRAZU Grafika rastrowa Obraz jako macierz

30 listopada 2015 Bartosz Bazyluk 26

TEKSTUROWANIE ● Metoda kompresji tekstur S3 (S3TC),nazywana czasem metodą DXT

● Kompresja stratna

● Stopień kompresji (ang. compression ratio) jest stały

● Operuje na blokach 4×4

● Pozwala na wybiórczą dekompresję tekstury

● Odmiana DXT1:

– Tylko RGB, bez przezroczystości

– Stopień kompresji 6:1

– Blok 4×4 tekseli – zawsze 64 bity zamiast 384 bitów:

– Cztery możliwe wartości kodowania udziału decydują o tym, jak wyliczany jest kolor konkretnego teksela na podstawie obu określonych kolorów

kolor 016 bitów5R6G5B

kolor 116 bitów5R6G5B

kodowanie udziału obu kolorów w tekselach32 bity

2 bity na każdy teksel

Użycie kompresji S3TC w OpenGL nie jest objęte standardem,

wymaga posłużenia się uniwersalnym rozszerzeniem

EXT_texture_compression_s3tc.

Możliwe jest przekazanie do OpenGL tekstury w postaci nieskompresowanej i zlecenie

sterownikowi kompresji, jak i przekazanie postaci

już skompresowanej. W drugim przypadku operacja

jest znacznie szybsza.

Page 27: Bartosz Bazyluk Teksturowaniebazyluk.net/dydaktyka/GKiW_2015/05_Tekstury.pdf · 30 listopada 2015 Bartosz Bazyluk 2 SPOSOBY REPREZENTACJI OBRAZU Grafika rastrowa Obraz jako macierz

30 listopada 2015 Bartosz Bazyluk 27

TEKSTUROWANIE ● Metoda kompresji tekstur S3 (S3TC),nazywana czasem metodą DXT

● Kompresja stratna

● Stopień kompresji (ang. compression ratio) jest stały

● Operuje na blokach 4×4

● Pozwala na wybiórczą dekompresję tekstury

● Pozostałe odmiany DXT:

Źródło obrazu:Wikipedia

Użycie kompresji S3TC w OpenGL nie jest objęte standardem,

wymaga posłużenia się uniwersalnym rozszerzeniem

EXT_texture_compression_s3tc.

Możliwe jest przekazanie do OpenGL tekstury w postaci nieskompresowanej i zlecenie

sterownikowi kompresji, jak i przekazanie postaci

już skompresowanej. W drugim przypadku operacja

jest znacznie szybsza.

Page 28: Bartosz Bazyluk Teksturowaniebazyluk.net/dydaktyka/GKiW_2015/05_Tekstury.pdf · 30 listopada 2015 Bartosz Bazyluk 2 SPOSOBY REPREZENTACJI OBRAZU Grafika rastrowa Obraz jako macierz

30 listopada 2015 Bartosz Bazyluk 28

TEKSTUROWANIE ● Mapowanie tekstury jest to odwzorowanie powierzchni obiektu w przestrzeń tekstury

● Jeśli posłużymy się analogią do owijania pudełka kolorowym papierem, to mapowanie określa która część arkusza papieru trafi na którą stronę pudełka

Źródło obrazu:Wikipedia

Page 29: Bartosz Bazyluk Teksturowaniebazyluk.net/dydaktyka/GKiW_2015/05_Tekstury.pdf · 30 listopada 2015 Bartosz Bazyluk 2 SPOSOBY REPREZENTACJI OBRAZU Grafika rastrowa Obraz jako macierz

30 listopada 2015 Bartosz Bazyluk 29

TEKSTUROWANIE ● Techniki mapowania tekstur:● Mapowanie sferyczne

Źródło obrazu:http://www.rafaelservantez.com/

Podstawowe, automatyczne techniki mapowania tekstury

(kolejno od lewej):

Płaskie (ang. flat)Sześcienne (ang. cube)

Cylindryczne (ang. cylindrical)Sferyczne (ang. spherical)

Użyta tekstura:

Page 30: Bartosz Bazyluk Teksturowaniebazyluk.net/dydaktyka/GKiW_2015/05_Tekstury.pdf · 30 listopada 2015 Bartosz Bazyluk 2 SPOSOBY REPREZENTACJI OBRAZU Grafika rastrowa Obraz jako macierz

30 listopada 2015 Bartosz Bazyluk 30

TEKSTUROWANIE ● Mapowanie UV jest techniką która zakłada, że definicji geometrii bryły towarzyszy informacja o mapowaniu jej powierzchni w przestrzeń tekstury

● Najczęściej współrzędne tekstury definiowane są w wierzchołkach bryły

● Każdemu wierzchołkowi przypisane jest położenie UV w przestrzeni tekstury

Źródło obrazu:http://real3dtutorials.com

Page 31: Bartosz Bazyluk Teksturowaniebazyluk.net/dydaktyka/GKiW_2015/05_Tekstury.pdf · 30 listopada 2015 Bartosz Bazyluk 2 SPOSOBY REPREZENTACJI OBRAZU Grafika rastrowa Obraz jako macierz

30 listopada 2015 Bartosz Bazyluk 31

TEKSTUROWANIE ● Definiowanie współrzędnych tekstury polega na przyporządkowaniu współrzędnych UV wierzchołkom naszej teksturowanej bryły

u(0,0) (1,0)

(0,1) (1,1)v

Tekstura:

Teksturowana bryła:

Page 32: Bartosz Bazyluk Teksturowaniebazyluk.net/dydaktyka/GKiW_2015/05_Tekstury.pdf · 30 listopada 2015 Bartosz Bazyluk 2 SPOSOBY REPREZENTACJI OBRAZU Grafika rastrowa Obraz jako macierz

30 listopada 2015 Bartosz Bazyluk 32

TEKSTUROWANIE ● Definiowanie współrzędnych tekstury polega na przyporządkowaniu współrzędnych UV wierzchołkom naszej teksturowanej bryły

u(0,0) (1,0)

(0,1) (1,1)v

Tekstura:

Teksturowana bryła:

(0.0,0.0) (1.0,0.0)

(0.0,1.0) (1.0,1.0)

W wyniku takiego mapowania zwyczajnie nakładamy

całą teksturę na powierzchnię przedniej ściany bryły.

Page 33: Bartosz Bazyluk Teksturowaniebazyluk.net/dydaktyka/GKiW_2015/05_Tekstury.pdf · 30 listopada 2015 Bartosz Bazyluk 2 SPOSOBY REPREZENTACJI OBRAZU Grafika rastrowa Obraz jako macierz

30 listopada 2015 Bartosz Bazyluk 33

TEKSTUROWANIE ● Definiowanie współrzędnych tekstury polega na przyporządkowaniu współrzędnych UV wierzchołkom naszej teksturowanej bryły

u(0,0) (1,0)

(0,1) (1,1)v

Tekstura:

Teksturowana bryła:

(0.0,0.0) (0.5,0.0)

(0.0,0.5) (0.5,0.5)

Można mapować jedynie wycinek tekstury na daną ścianę bryły.

Page 34: Bartosz Bazyluk Teksturowaniebazyluk.net/dydaktyka/GKiW_2015/05_Tekstury.pdf · 30 listopada 2015 Bartosz Bazyluk 2 SPOSOBY REPREZENTACJI OBRAZU Grafika rastrowa Obraz jako macierz

30 listopada 2015 Bartosz Bazyluk 34

TEKSTUROWANIE ● Definiowanie współrzędnych tekstury polega na przyporządkowaniu współrzędnych UV wierzchołkom naszej teksturowanej bryły

u(0,0) (1,0)

(0,1) (1,1)v

Tekstura:

Teksturowana bryła:

(0.0,0.0) (1.0,0.0)

(0.0,0.5) (1.0,0.5)

Proporcje wycinka tekstury wcale nie muszą odpowiadać

proporcjom długości boków teksturowanej ściany.

Page 35: Bartosz Bazyluk Teksturowaniebazyluk.net/dydaktyka/GKiW_2015/05_Tekstury.pdf · 30 listopada 2015 Bartosz Bazyluk 2 SPOSOBY REPREZENTACJI OBRAZU Grafika rastrowa Obraz jako macierz

30 listopada 2015 Bartosz Bazyluk 35

TEKSTUROWANIE ● Definiowanie współrzędnych tekstury polega na przyporządkowaniu współrzędnych UV wierzchołkom naszej teksturowanej bryły

u(0,0) (1,0)

(0,1) (1,1)v

Tekstura:

Teksturowana bryła:

(0.0,0.0) (1.0,0.0)

(0.0,1.0) (0.5,1.0)

Kształt również nie musi odpowiadać kształtowi ściany.

Page 36: Bartosz Bazyluk Teksturowaniebazyluk.net/dydaktyka/GKiW_2015/05_Tekstury.pdf · 30 listopada 2015 Bartosz Bazyluk 2 SPOSOBY REPREZENTACJI OBRAZU Grafika rastrowa Obraz jako macierz

30 listopada 2015 Bartosz Bazyluk 36

TEKSTUROWANIE ● Definiowanie współrzędnych tekstury polega na przyporządkowaniu współrzędnych UV wierzchołkom naszej teksturowanej bryły

u(0,0) (1,0)

(0,1) (1,1)v

Tekstura:

Teksturowana bryła:

(0.0,1.0) (1.0,1.0)

(0.0,0.0) (1.0,0.0)

Łatwo można też uzyskać odbicie lustrzane nakładanej tekstury.

Page 37: Bartosz Bazyluk Teksturowaniebazyluk.net/dydaktyka/GKiW_2015/05_Tekstury.pdf · 30 listopada 2015 Bartosz Bazyluk 2 SPOSOBY REPREZENTACJI OBRAZU Grafika rastrowa Obraz jako macierz

30 listopada 2015 Bartosz Bazyluk 37

TEKSTUROWANIE ● Definiowanie współrzędnych tekstury polega na przyporządkowaniu współrzędnych UV wierzchołkom naszej teksturowanej bryły

u(0,0) (1,0)

(0,1) (1,1)v

Tekstura:

Teksturowana bryła:

(0.0,0.0) (4.0,0.0)

(0.0,1.0) (4.0,1.0)

Współrzędne mogą wykraczać poza zakres od 0.0 do 1.0.

Wówczas rezultat będzie zależał od ustawienia danej tekstury.

Na przykład możliwe jest powtarzanie tekstury:

GL_REPEAT, GL_MIRRORED_REPEAT

Źródło obrazu:http://open.gl/

Page 38: Bartosz Bazyluk Teksturowaniebazyluk.net/dydaktyka/GKiW_2015/05_Tekstury.pdf · 30 listopada 2015 Bartosz Bazyluk 2 SPOSOBY REPREZENTACJI OBRAZU Grafika rastrowa Obraz jako macierz

30 listopada 2015 Bartosz Bazyluk 38

TEKSTUROWANIE ● Definiowanie współrzędnych tekstury polega na przyporządkowaniu współrzędnych UV wierzchołkom naszej teksturowanej bryły

u(0,0) (1,0)

(0,1) (1,1)v

Tekstura:

Teksturowana bryła:

(0.0,0.0) (4.0,0.0)

(0.0,1.0) (4.0,1.0)

Na przykład możliwe jest też przycinanie tekstury:

GL_CLAMP_TO_BORDER, GL_CLAMP_TO_EDGE

Wówczas ostatni wiersz/kolumna są powtarzane w nieskończoność.

Źródło obrazu:http://open.gl/

Page 39: Bartosz Bazyluk Teksturowaniebazyluk.net/dydaktyka/GKiW_2015/05_Tekstury.pdf · 30 listopada 2015 Bartosz Bazyluk 2 SPOSOBY REPREZENTACJI OBRAZU Grafika rastrowa Obraz jako macierz

30 listopada 2015 Bartosz Bazyluk 39

TEKSTUROWANIE ● Zadanie: zwrócić wartość na podstawie tekstury dla zadanych współrzędnych, wynikających z danego fragmentu teksturowanej powierzchni.

Nasza tekstura ma określoną rozdzielczość, mamy załadowany obraz.

Page 40: Bartosz Bazyluk Teksturowaniebazyluk.net/dydaktyka/GKiW_2015/05_Tekstury.pdf · 30 listopada 2015 Bartosz Bazyluk 2 SPOSOBY REPREZENTACJI OBRAZU Grafika rastrowa Obraz jako macierz

30 listopada 2015 Bartosz Bazyluk 40

TEKSTUROWANIE ● Zadanie: zwrócić wartość na podstawie tekstury dla zadanych współrzędnych, wynikających z danego fragmentu teksturowanej powierzchni.

Mapujemy tę teksturę na powierzchnię ściany naszej bryły (czarna siatka).

Wyznaczenie wartości poszczególnych fragmentów nie stanowi problemu – po prostu pobierane są wartości

poszczególnych tekseli.

Page 41: Bartosz Bazyluk Teksturowaniebazyluk.net/dydaktyka/GKiW_2015/05_Tekstury.pdf · 30 listopada 2015 Bartosz Bazyluk 2 SPOSOBY REPREZENTACJI OBRAZU Grafika rastrowa Obraz jako macierz

30 listopada 2015 Bartosz Bazyluk 41

TEKSTUROWANIE ● Zadanie: zwrócić wartość na podstawie tekstury dla zadanych współrzędnych, wynikających z danego fragmentu teksturowanej powierzchni.

Mapujemy tę teksturę na powierzchnię ściany naszej bryły (czarna siatka).

Co jeśli z mapowania lub projekcji wynika, że pikselowi bufora klatki wcale

nie odpowiada dokładnie jeden teksel?

Operację wyliczenia wartości na podstawie jednego lub więcej tekseli

w wyniku nieregularnego jej mapowania nazywa się

filtrowaniem tekstury.

Page 42: Bartosz Bazyluk Teksturowaniebazyluk.net/dydaktyka/GKiW_2015/05_Tekstury.pdf · 30 listopada 2015 Bartosz Bazyluk 2 SPOSOBY REPREZENTACJI OBRAZU Grafika rastrowa Obraz jako macierz

30 listopada 2015 Bartosz Bazyluk 42

TEKSTUROWANIE ● Zadanie: zwrócić wartość na podstawie tekstury dla zadanych współrzędnych, wynikających z danego fragmentu teksturowanej powierzchni.

Mapujemy tę teksturę na powierzchnię ściany naszej bryły (czarna siatka).

Sytuacja taka ma miejsce także gdy teksele są podczas projekcji

na bufor klatki „większe” niż piksele.

Page 43: Bartosz Bazyluk Teksturowaniebazyluk.net/dydaktyka/GKiW_2015/05_Tekstury.pdf · 30 listopada 2015 Bartosz Bazyluk 2 SPOSOBY REPREZENTACJI OBRAZU Grafika rastrowa Obraz jako macierz

30 listopada 2015 Bartosz Bazyluk 43

TEKSTUROWANIE ● Zadanie: zwrócić wartość na podstawie tekstury dla zadanych współrzędnych, wynikających z danego fragmentu teksturowanej powierzchni.

Mapujemy tę teksturę na powierzchnię ściany naszej bryły (czarna siatka).

Także wtedy, gdy tekstura jest obrócona względem docelowego rastra.

Page 44: Bartosz Bazyluk Teksturowaniebazyluk.net/dydaktyka/GKiW_2015/05_Tekstury.pdf · 30 listopada 2015 Bartosz Bazyluk 2 SPOSOBY REPREZENTACJI OBRAZU Grafika rastrowa Obraz jako macierz

30 listopada 2015 Bartosz Bazyluk 44

TEKSTUROWANIE ● Zadanie: zwrócić wartość na podstawie tekstury dla zadanych współrzędnych, wynikających z danego fragmentu teksturowanej powierzchni.

Mapujemy tę teksturę na powierzchnię ściany naszej bryły (czarna siatka).

Lub gdy uświadomimy sobie, że nasz świat ma przecież trzy wymiary

i perspektywę...

Page 45: Bartosz Bazyluk Teksturowaniebazyluk.net/dydaktyka/GKiW_2015/05_Tekstury.pdf · 30 listopada 2015 Bartosz Bazyluk 2 SPOSOBY REPREZENTACJI OBRAZU Grafika rastrowa Obraz jako macierz

30 listopada 2015 Bartosz Bazyluk 45

TEKSTUROWANIE ● 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

● Metoda najbliższego sąsiada (ang. nearest neighbor)

– Bierze pod uwagę tylko jeden teksel, który najlepiej odpowiada przetrwarzanemu fragmentowi

Metoda najmniej kosztowna.

Nadaje się zarówno do powiększania, jak i pomniejszania.

Rezultaty zachowują wyraźne krawędzie, ale często spotyka się

artefakty w postaci aliasingu.

Źródło obrazu:beyond3D

id softwarehttp://felixgers.de

Page 46: Bartosz Bazyluk Teksturowaniebazyluk.net/dydaktyka/GKiW_2015/05_Tekstury.pdf · 30 listopada 2015 Bartosz Bazyluk 2 SPOSOBY REPREZENTACJI OBRAZU Grafika rastrowa Obraz jako macierz

30 listopada 2015 Bartosz Bazyluk 46

TEKSTUROWANIE ● 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

● Metoda filtracji liniowej (ang. (bi)linear filtering)

– Interpolacja liniowa czterech najbliższych tekseli

Metoda pobiera zawsze cztery wartości teksela zamiast tylko jednej,

przez co jest wolniejsza.

Nadaje się zarówno do powiększania, jak i pomniejszania – choć w tym

drugim przypadku pojawiają się artefakty podobne do metody

najbliższego sąsiada gdy tekstura jest znacznie pomniejszona.

Rezultaty rozmywają krawędzie.

Źródło obrazu:beyond3D

id software

Page 47: Bartosz Bazyluk Teksturowaniebazyluk.net/dydaktyka/GKiW_2015/05_Tekstury.pdf · 30 listopada 2015 Bartosz Bazyluk 2 SPOSOBY REPREZENTACJI OBRAZU Grafika rastrowa Obraz jako macierz

30 listopada 2015 Bartosz Bazyluk 47

TEKSTUROWANIE ● Mipmapy (łac. multum im parvo) są wcześniej wyliczonymi sekwencjami pomniejszonych wersji tej samej oryginalnej tekstury

● Każdy następny poziom mipmapy ma wymiary dwukrotnie mniejsze wzdłuż każdej krawędzi

● Mipmapa zerowego poziomu to oryginalny obraz

● Najmniejsza mipmapa to pojedynczy teksel

Podczas tworzenia, każdy teksel następnego poziomu mipmapy

to średnia arytmetyczna odpowiadających mu czterech tekseli

poprzedniego poziomu.

Aby przechować pełną piramidę mipmap, nigdy nie potrzeba więcej niż

o 1/3 więcej miejsca w pamięciniż na przechowanie samej oryginalnej

tekstury.

Źródło obrazu:http://tomshardwareguide.com

Page 48: Bartosz Bazyluk Teksturowaniebazyluk.net/dydaktyka/GKiW_2015/05_Tekstury.pdf · 30 listopada 2015 Bartosz Bazyluk 2 SPOSOBY REPREZENTACJI OBRAZU Grafika rastrowa Obraz jako macierz

30 listopada 2015 Bartosz Bazyluk 48

TEKSTUROWANIE ● 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

● Najbliższa mipmapa (ang. nearest mipmap)

– Wartość pobierana jest z poziomu mipmapy, który najlepiej odpowiada wielkości przetwarzanego fragmentu

Metoda może wykorzystywać podejście najbliższego sąsiada lub filtrację liniową

w obrębie poziomu mipmapy.

Wymaga wcześniejszego wygenerowania mipmap.

Nadaje się jedynie do pomniejszania – mipmapy naturalnie nic nie dają

gdy spodziewany obrazjest większy niż oryginał.

Mogą być widoczne granice poszczególnych poziomów mipmap.

Źródło obrazu:beyond3D

id software

Page 49: Bartosz Bazyluk Teksturowaniebazyluk.net/dydaktyka/GKiW_2015/05_Tekstury.pdf · 30 listopada 2015 Bartosz Bazyluk 2 SPOSOBY REPREZENTACJI OBRAZU Grafika rastrowa Obraz jako macierz

30 listopada 2015 Bartosz Bazyluk 49

TEKSTUROWANIE ● 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

● Filtracja trójliniowa (ang. trilinear filtering)

– Wartość jest obliczana jako średnia ważona pomiędzy najbliższymi mipmapami

Praktycznie zawsze pobierane są wartości z dwu sąsiadujących poziomów

mipmap – co w przypadku filtracji liniowej w ich obrębie daje zawsze

8 odczytów z tekstury.Jest to metoda kosztowna.

Wymaga wcześniejszego wygenerowania mipmap.

Nadaje się jedynie do pomniejszania – mipmapy naturalnie nic nie dają

gdy spodziewany obrazjest większy niż oryginał.

Granice pomiędzy poziomami mipmap zacierają się.

Źródło obrazu:beyond3D

id software

Page 50: Bartosz Bazyluk Teksturowaniebazyluk.net/dydaktyka/GKiW_2015/05_Tekstury.pdf · 30 listopada 2015 Bartosz Bazyluk 2 SPOSOBY REPREZENTACJI OBRAZU Grafika rastrowa Obraz jako macierz

30 listopada 2015 Bartosz Bazyluk 50

TEKSTUROWANIE ● Filtrowanie anizotropowe● Technika zmniejszająca uciążliwość rozmycia wynikającego

z dużej deformacji tekseli podczas oglądania tekstury pod małym kątem do jej powierzchni

Źródła obrazów:NVIDIA

http://3dgep.com

Page 51: Bartosz Bazyluk Teksturowaniebazyluk.net/dydaktyka/GKiW_2015/05_Tekstury.pdf · 30 listopada 2015 Bartosz Bazyluk 2 SPOSOBY REPREZENTACJI OBRAZU Grafika rastrowa Obraz jako macierz

30 listopada 2015 Bartosz Bazyluk 51

TEKSTUROWANIE ● Jednostka teksturująca (ang. texture unit)● Dawniej osobny układ logiczny karty graficznej (TMU)

dedykowany operacjom na teksturze

● Obecnie integralna część GPU, może być rozumiana jako lokacja do której przypisujemy teksturę celem jej użycia

– Mówi się o niej jako o texture image unit (TIU)

– W danej chwili jednostka może mieć przypisaną (ang. bound) tylko jedną teksturę

– Karta graficzna ma ograniczoną liczbę jednostek, np.:● 3dfx Voodoo 2: 2 jednostki● NVIDIA GeForce 7600 GT: 12 jednostek● NVIDIA GeForce 750M: 32 jednostki● NVIDIA GeForce GTX 980 Ti: 176 jednostek

● Odpowiada za adresowanie, dekompresję danych, dostęp do nich i ich filtrowanie

– Zadanie jednostki teksturującej: dostarczyć wartość próbki na podstawie danych tekstury, dla zadanych współrzędnych

– Całą operację nazywa się często w jęz. ang. texture fetch

Źródło obrazu:Wikipedia

3dfx Voodoo 2 (1998) był pierwszym akceleratorem 3D, który oferował aż dwie jednostki

teksturujące.

Page 52: Bartosz Bazyluk Teksturowaniebazyluk.net/dydaktyka/GKiW_2015/05_Tekstury.pdf · 30 listopada 2015 Bartosz Bazyluk 2 SPOSOBY REPREZENTACJI OBRAZU Grafika rastrowa Obraz jako macierz

30 listopada 2015 Bartosz Bazyluk 52

TEKSTUROWANIE

Źródło obrazu:http://real3dtutorials.com

To ile jest dostępnych jednostek, determinuje z ilu tekstur

jednocześnie można korzystać przy operacji na danym fragmencie

podczas jednego żądania renderowania

Tekstura

Tekstura

Jednostkateksturująca

Operacjana fragmencie

Tekstura

Tekstura

Pamięćkarty graficznej

...

Jednostkateksturująca

współrzędne

współrzędne

danez tekseli

danez tekseli

● Tekstura znajdująca się w pamięci karty graficznej musi zostać przypisana (ang. bound) do jednostki teksturującej, aby mogła zostać użyta

Przypisanie tekstury do jednostkinie zmienia się w trakcie trwania

żądania renderowania

Page 53: Bartosz Bazyluk Teksturowaniebazyluk.net/dydaktyka/GKiW_2015/05_Tekstury.pdf · 30 listopada 2015 Bartosz Bazyluk 2 SPOSOBY REPREZENTACJI OBRAZU Grafika rastrowa Obraz jako macierz

30 listopada 2015 Bartosz Bazyluk 53

TEKSTUROWANIE ● W OpenGL w danej chwili z punktu widzenia edycji danych i parametrów aktywna jest tylko jedna jednostka teksturująca

● Analogicznie do aktywnej macierzy transformacji:

● Podczas renderowania aktywne są wszystkie jednostki, do których przypisane są tekstury

● Dana jednostka teksturująca może mieć jednocześnie przypisane po jednej teksturze dla każdego z typów

– Na przykład jednocześnie przypisana jest inna tekstura dla GL_TEXTURE_1D i inna dla typu GL_TEXTURE_2D.

– W jednej chwili tylko jedna z nich może być używana, choć przypisanie pozostałych typów jest pamiętane

– Wybór tego który typ tekstury, a więc de facto która z przypisanych do danej jednostki tekstur jest używana, odbywa się na podstawie typu samplera w programie cieniującym

glActiveTexture(texture_unit); // np. GL_TEXTURE0 lub GL_TEXTURE6

Jednostkateksturująca

GL_TEXTURE_2D

GL_TEXTURE_3D

GL_TEXTURE_1D14

… ...

Jednostka teksturująca posiada osobne miejsca przyłączenia dla każdego z typów tekstur.

Jednocześnie mogą być przypisane do niej różne tekstury pod

warunkiem że każda jest innego typu. Jendak w danej chwili

używana może być tylko jedna z nich.

52

Page 54: Bartosz Bazyluk Teksturowaniebazyluk.net/dydaktyka/GKiW_2015/05_Tekstury.pdf · 30 listopada 2015 Bartosz Bazyluk 2 SPOSOBY REPREZENTACJI OBRAZU Grafika rastrowa Obraz jako macierz

30 listopada 2015 Bartosz Bazyluk 54

TEKSTUROWANIE ● W OpenGL mapowanie UV odbywa się poprzez przypisanie wierzchołkowi jego współrzędnych tekstury

● Analogicznie do współrzędnych wektora normalnego – współrzędne tekstury też są atrybutem wierzchołka

● Służy do tego funkcja glTexCoord*()

– Są też dostępne odmiany dla innych typów danych

● Raz ustawione współrzędne tekstury będą nadawane wszystkim nowo tworzonym wierzchołkom, dopóki nie zostaną one zmienione na inne

● Możliwe jest oczywiście też korzystanie z VA i VBO, wtedy miejsce w pamięci wskazujemy następująco:

glTexCoord1f(s); // dla współrzędnych tekstury 1DglTexCoord2f(s, t); // dla współrzędnych tekstury 2DglTexCoord3f(s, t, r); // dla współrzędnych tekstury 3D

glTexCoordPointer(num, type, stride, offset);

Page 55: Bartosz Bazyluk Teksturowaniebazyluk.net/dydaktyka/GKiW_2015/05_Tekstury.pdf · 30 listopada 2015 Bartosz Bazyluk 2 SPOSOBY REPREZENTACJI OBRAZU Grafika rastrowa Obraz jako macierz

30 listopada 2015 Bartosz Bazyluk 55

TEKSTUROWANIE ● Stworzenie tekstury w OpenGL polega na:● Uzyskaniu jej identyfikatora

(w dokumentacji opisanego jako texture name)

● Podłączeniu tekstury o zadanym identyfikatorze do jednostki cieniującej (ang. binding)

– W pierwszym parametrze określamy typ tekstury, do którego przypisujemy identyfikator

– Od tego momentu wszystkie operacje na teksturach będą dotyczyły tej zbindowanej tekstury (dla aktywnej jednostki cieniującej)

● Wysłaniu danych do pamięci karty graficznej

GLuint id;glGenTextures(1, &id); // Pierwszy parametr określa żądaną liczbę tekstur

glBindTexture(GL_TEXTURE_2D, id);

Page 56: Bartosz Bazyluk Teksturowaniebazyluk.net/dydaktyka/GKiW_2015/05_Tekstury.pdf · 30 listopada 2015 Bartosz Bazyluk 2 SPOSOBY REPREZENTACJI OBRAZU Grafika rastrowa Obraz jako macierz

30 listopada 2015 Bartosz Bazyluk 56

TEKSTUROWANIE ● Wysyłanie danych do pamięci karty graficznej zawierających obraz będący częścią aktualnie wybranej tekstury:

● Dla tekstury 2D:

– Przekazanie NULL w miejscu d sprawia, że pamięć jest tylko alokowana

– Pamięć nie jest alokowana, zmieniany jest tylko fragment danych tekstury

– Format danych zostanie zachowany taki jak podczas alokacji

level – poziom MIPmapy (0, 1, 2...)format – format danych w pamięci

w, h – liczba kolumn, wierszyborder – grubość obramowania

d_format – format danych wejściowychd_type – typ danych wejściowychd – wskaźnik na pierwszy element

glTexImage2D(GL_TEXTURE_2D, level, format, w, h, border, d_format, d_type, d);

glTexSubImage2D(GL_TEXTURE_2D, level, xoffset, yoffset, w, h,d_format, d_type, d);

Page 57: Bartosz Bazyluk Teksturowaniebazyluk.net/dydaktyka/GKiW_2015/05_Tekstury.pdf · 30 listopada 2015 Bartosz Bazyluk 2 SPOSOBY REPREZENTACJI OBRAZU Grafika rastrowa Obraz jako macierz

30 listopada 2015 Bartosz Bazyluk 57

TEKSTUROWANIE ● Ustawienie parametrów tekstury w OpenGL● Funkcja do tego służąca:

● Wybrane parametry:

– GL_TEXTURE_WRAP_S, GL_TEXTURE_WRAP_T, GL_TEXTURE_WRAP_R

Okreśelenie zachowania w momencie gdy współrzędne tekstury wykraczają poza zakres 0..1

● GL_CLAMP_TO_BORDER, GL_CLAMP_TO_EDGE, GL_MIRRORED_REPEAT, GL_MIRROR_CLAMP_TO_EDGE, GL_REPEAT

– GL_TEXTURE_MIN_FILTER, GL_TEXTURE_MAG_FILTER

Techniki filtracji dla pomniejszania i powiększania tekstury● GL_NEAREST, GL_LINEAR, GL_NEAREST_MIPMAP_NEAREST,

GL_LINEAR_MIPMAP_NEAREST, GL_NEAREST_MIPMAP_LINEAR, GL_LINEAR_MIPMAP_LINEAR

pname – stała określająca którego parametru wartość chcemy ustawić

glTexParameterf(GL_TEXTURE_2D, pname, value);glTexParameteri(GL_TEXTURE_2D, pname, value);glTexParameterfv(GL_TEXTURE_2D, pname, *value);// ...

Wartości związane z MIPmapami nie mają sensu dla powiększania tekstur.

Page 58: Bartosz Bazyluk Teksturowaniebazyluk.net/dydaktyka/GKiW_2015/05_Tekstury.pdf · 30 listopada 2015 Bartosz Bazyluk 2 SPOSOBY REPREZENTACJI OBRAZU Grafika rastrowa Obraz jako macierz

30 listopada 2015 Bartosz Bazyluk 58

TEKSTUROWANIE

Problemy z atlasami tekstur:

Ograniczona rozdzielczośćBleeding

Niemożliwy wrappingProblemy z MIPmapami

● Atlas tekstur● Jest to podejście, w którym jeden obraz będący częścią

tekstury zawiera niezależne informacje które zwyczajnie stanowiłyby kilka odrębnych obrazów

– Idea podobna do sprite sheet

● Dlaczego?

– Zmiana tekstury podłączonej do danej jednostki jest kosztowna

– Mając do narysowania wiele elementów z różnymi teksturami, konieczne byłoby częste przełączanie tekstur

– Możliwość korzystania z kilku obrazów wyłącznie poprzez użycie innych współrzędnych w obrębie tej samej tekstury

Źródła obrazów:EPIC Games

0fps.net

Page 59: Bartosz Bazyluk Teksturowaniebazyluk.net/dydaktyka/GKiW_2015/05_Tekstury.pdf · 30 listopada 2015 Bartosz Bazyluk 2 SPOSOBY REPREZENTACJI OBRAZU Grafika rastrowa Obraz jako macierz

30 listopada 2015 Bartosz Bazyluk 59

ZASTOSOWANIA TEKSTUROWANIA

Wartości z różnych tekstur mogą być łączone by uzyskać jeden kolor,

ale proces może być też bardziej złożony.

Jedna tekstura może służyć do modyfikacji koloru diffuse, inna do

modyfikacji mnożnika specular, a jeszcze inna może być informacją

o oświetleniu danego miejsca.

Źródła obrazów:d3dcoder.net

http://felixfox.com

● Multiteksturowanie (ang. multi-texturing)● Wykorzystanie wartości pochodzących z wielu tekstur

podczas jednego żądania renderowania

● Można definiować różne współrzędne dla różnych tekstur

glMultiTexCoord2f(GL_TEXTURE0, s, t);

Page 60: Bartosz Bazyluk Teksturowaniebazyluk.net/dydaktyka/GKiW_2015/05_Tekstury.pdf · 30 listopada 2015 Bartosz Bazyluk 2 SPOSOBY REPREZENTACJI OBRAZU Grafika rastrowa Obraz jako macierz

30 listopada 2015 Bartosz Bazyluk 60

ZASTOSOWANIA TEKSTUROWANIA

Atlas map światła z gry Quake 2. Mapy są bardzo małe, ale zmiany

oświetlenia nie mają dużej częstotliwości więc wystarcza to

dla uzyskania zadowalającego efektu (po prawej)

Źródło obrazów:id software

Fabien Sanglard

● Mapowanie światła (ang. light mapping)● Technika polegająca na "wypaleniu" off-line mapy światła

dla statycznych źródeł, czyli takich które nie będą się zmieniały w trakcie cyklu życia sceny

● Wartości z takiej mapy są później gotowymi mnożnikami dla intensywności poszczególnych komponentów światła

Page 61: Bartosz Bazyluk Teksturowaniebazyluk.net/dydaktyka/GKiW_2015/05_Tekstury.pdf · 30 listopada 2015 Bartosz Bazyluk 2 SPOSOBY REPREZENTACJI OBRAZU Grafika rastrowa Obraz jako macierz

30 listopada 2015 Bartosz Bazyluk 61

ZASTOSOWANIA TEKSTUROWANIA

● Mapowanie nierówności (ang. bump mapping)● Symulacja nierówności na powierzchni bryły bez ingerencji

w jej oryginalny kształt

– Wykorzystywane są tekstury jako źródło informacji o nierównościach, które mają być mapowane na powierzchnię

– W większości technik płaskość powierzchni jest szczególnie widoczna przy krawędziach obiektu

Podstawowe techniki:

Normal mappingParallax mapping

Displacement mapping

Bump mapping Nierówności jako faktycznamodyfikacja kształtu bryły

Źródło obrazu:Wikipedia

Page 62: Bartosz Bazyluk Teksturowaniebazyluk.net/dydaktyka/GKiW_2015/05_Tekstury.pdf · 30 listopada 2015 Bartosz Bazyluk 2 SPOSOBY REPREZENTACJI OBRAZU Grafika rastrowa Obraz jako macierz

30 listopada 2015 Bartosz Bazyluk 62

ZASTOSOWANIA TEKSTUROWANIA

● Mapowanie wektorów normalnych(ang. normal mapping)

● Wektory normalne dla fragmentów są wyznaczane na podstawie wartości tekstury – tzw. mapy wektorów normalnych (ang. normal map)

– Mapa może zawierać wektory normalne zdefiniowane w: ● Przestrzeni obiektu lub świata – wówczas nie jest potrzebna definicja

wektorów normalnych w wierzchołkach● Przestrzeni stycznej do powierzchni bryły (ang. tangent space) – wówczas są

one jedynie modyfikacją (odchyleniem) wektorów wyliczonych na podstawie zwyczajnej interpolacji pomiędzy wierzchołkami

● Konieczne użycie cieniowania per-fragmentWspółrzędne XYZ wektorów normalnych są zapisane jako

wartości RGB w ich mapie.

Kiedy wizualizujemy mapę wektorów normalnych, często

ma ona niebieskawe zabarwienie – jak na przykładzie wyżej.

Źródła obrazów:Wikipedia

IndependentDeveloper.com

Page 63: Bartosz Bazyluk Teksturowaniebazyluk.net/dydaktyka/GKiW_2015/05_Tekstury.pdf · 30 listopada 2015 Bartosz Bazyluk 2 SPOSOBY REPREZENTACJI OBRAZU Grafika rastrowa Obraz jako macierz

30 listopada 2015 Bartosz Bazyluk 63

ZASTOSOWANIA TEKSTUROWANIA

Źródło obrazu:CD Projekt RED

● Mapowanie wektorów normalnych(ang. normal mapping)

● Przykład - kolejno od lewej:

– Cieniowanie płaskie

– Cieniowanie gładkie

– Mapowanie wektorów normalnych na podstawie ich mapy

– Dodatkowo modulacja koloru na podstawie tekstury

Page 64: Bartosz Bazyluk Teksturowaniebazyluk.net/dydaktyka/GKiW_2015/05_Tekstury.pdf · 30 listopada 2015 Bartosz Bazyluk 2 SPOSOBY REPREZENTACJI OBRAZU Grafika rastrowa Obraz jako macierz

30 listopada 2015 Bartosz Bazyluk 64

Źródło obrazu:GameDev.net, Jason Zink

ZASTOSOWANIA TEKSTUROWANIA

Lokalna mapa wysokości zawiera informacje o głębokości każdego

teksela pod powierzchnią bryły.

● Mapowanie paralaksy (ang. parallax mapping)● Uwzględnienie przesunięć tekseli i ich wzajemnego

przysłaniania się zależnie od położeniaw jakim znajduje się obserwator

● Opiera się na lokalnej mapie wysokości zawartej w teksturze

Page 65: Bartosz Bazyluk Teksturowaniebazyluk.net/dydaktyka/GKiW_2015/05_Tekstury.pdf · 30 listopada 2015 Bartosz Bazyluk 2 SPOSOBY REPREZENTACJI OBRAZU Grafika rastrowa Obraz jako macierz

30 listopada 2015 Bartosz Bazyluk 65

Źródło obrazu:AMD

ZASTOSOWANIA TEKSTUROWANIA

Normal mapping

Parallax mapping

Przy krawędziach oteksturowanej powierzchni wyraźnie widać,

że pomimo paralaksy jest ona płaska.

Page 66: Bartosz Bazyluk Teksturowaniebazyluk.net/dydaktyka/GKiW_2015/05_Tekstury.pdf · 30 listopada 2015 Bartosz Bazyluk 2 SPOSOBY REPREZENTACJI OBRAZU Grafika rastrowa Obraz jako macierz

30 listopada 2015 Bartosz Bazyluk 66

ZASTOSOWANIA TEKSTUROWANIA

Źródło obrazu:Masami Kuramoto

● Mapowanie komponentu specular(ang. specular mapping)

● Pozwala modyfikować podatność powierzchni na powstanie odblasku na podstawie mapy wartości

Wartości tekseli z zakresuod 0.0 do 1.0 są traktowane jako mnożnik komponentu specular.

Zwykle wystarczy obraz jednokanałowy.

Page 67: Bartosz Bazyluk Teksturowaniebazyluk.net/dydaktyka/GKiW_2015/05_Tekstury.pdf · 30 listopada 2015 Bartosz Bazyluk 2 SPOSOBY REPREZENTACJI OBRAZU Grafika rastrowa Obraz jako macierz

30 listopada 2015 Bartosz Bazyluk 67

Źródło obrazów:Padalasuresh's Blog

Page 68: Bartosz Bazyluk Teksturowaniebazyluk.net/dydaktyka/GKiW_2015/05_Tekstury.pdf · 30 listopada 2015 Bartosz Bazyluk 2 SPOSOBY REPREZENTACJI OBRAZU Grafika rastrowa Obraz jako macierz

30 listopada 2015 Bartosz Bazyluk 68

Źródło obrazów:Padalasuresh's Blog

Page 69: Bartosz Bazyluk Teksturowaniebazyluk.net/dydaktyka/GKiW_2015/05_Tekstury.pdf · 30 listopada 2015 Bartosz Bazyluk 2 SPOSOBY REPREZENTACJI OBRAZU Grafika rastrowa Obraz jako macierz

Bartosz Bazyluk

TeksturowanieMapy bitowe, pojęcie tekstury, potok, zastosowania.

Grafika Komputerowa i Wizualizacja, Informatyka S1, II Rok

http://bazyluk.net/dydaktyka