GRK 5. dr Wojciech Palubicki

Podobne dokumenty
GRK 5. dr Wojciech Palubicki

GRK 4. dr Wojciech Palubicki

Grafika Komputerowa Wykład 5. Potok Renderowania Oświetlenie. mgr inż. Michał Chwesiuk 1/38

GRK 3. Dr Wojciech Palubicki

Oświetlenie. Modelowanie oświetlenia sceny 3D. Algorytmy cieniowania.

Grafika Komputerowa Wykład 6. Teksturowanie. mgr inż. Michał Chwesiuk 1/23

Programowanie gier komputerowych Tomasz Martyn Wykład 6. Materiały informacje podstawowe

Model oświetlenia. Radosław Mantiuk. Wydział Informatyki Zachodniopomorski Uniwersytet Technologiczny w Szczecinie

Grafika komputerowa i wizualizacja. dr Wojciech Pałubicki

Oświetlenie obiektów 3D

Animowana grafika 3D. Opracowanie: J. Kęsik.

Synteza i obróbka obrazu. Tekstury. Opracowanie: dr inż. Grzegorz Szwoch Politechnika Gdańska Katedra Systemów Multimedialnych

GRK 2. dr Wojciech Palubicki

Plan wykładu. Akcelerator 3D Potok graficzny

Autodesk 3D Studio MAX Teksturowanie modeli 3D

Transformacje obiektów 3D

Grafika komputerowa. Model oświetlenia. emisja światła przez źródła światła. interakcja światła z powierzchnią. absorbcja światła przez sensor

Grafika komputerowa Tekstury

Scena 3D. Cieniowanie (ang. Shading) Scena 3D - Materia" Obliczenie koloru powierzchni (ang. Lighting)

Zjawisko widzenia obrazów

Efekty dodatkowe w rasteryzacji

Transformacje. dr Radosław Matusik. radmat

Synteza i obróbka obrazu. Algorytmy oświetlenia globalnego

Animowana grafika 3D. Opracowanie: J. Kęsik.

Wykład 4. Rendering (1) Informacje podstawowe

GRAKO: ŚWIATŁO I CIENIE. Modele barw. Trochę fizyki percepcji światła. OŚWIETLENIE: elementy istotne w projektowaniu

Gry komputerowe: efekty specjalne cz. 2

PODSTAWY RACHUNKU WEKTOROWEGO

GRAFIKA KOMPUTEROWA. Plan wykładu. 1. Początki grafiki komputerowej. 2. Grafika komputerowa a dziedziny pokrewne. 3. Omówienie programu przedmiotu

Modelowanie i wstęp do druku 3D Wykład 1. Robert Banasiak

OpenGL : Oświetlenie. mgr inż. Michał Chwesiuk mgr inż. Tomasz Sergej inż. Patryk Piotrowski. Szczecin, r 1/23

Ustawienia materiałów i tekstur w programie KD Max. MTPARTNER S.C.

Sphere tracing: integracja z klasycznymi metodami symulacji i renderingu

Grafika Komputerowa. Wykład 8. Przygotowanie do egzaminu. mgr inż. Michał Chwesiuk 1/32

Grafika komputerowa Wykład 8 Modelowanie obiektów graficznych cz. II

Grafika Komputerowa Wykład 4. Synteza grafiki 3D. mgr inż. Michał Chwesiuk 1/30

SYNTEZA OBRAZU. Rendering obrazu 3D

0. OpenGL ma układ współrzędnych taki, że oś y jest skierowana (względem monitora) a) w dół b) w górę c) w lewo d) w prawo e) w kierunku do

1. Prymitywy graficzne

Architektura Procesorów Graficznych

Rendering obrazu 3D. Rendering. Synteza i obróbka obrazu

Algorytmy oświetlenia globalnego

Filtrowanie tekstur. Kinga Laurowska

Julia 4D - raytracing

Teselacja i uzupełnienia do grafiki

Elementy geometrii analitycznej w R 3

Co to jest wektor? Jest to obiekt posiadający: moduł (długość), kierunek wraz ze zwrotem.

Grafika realistyczna. Oświetlenie globalne ang. global illumination. Radosław Mantiuk

SIMR 2016/2017, Analiza 2, wykład 1, Przestrzeń wektorowa

Tekstury Ćwiczenie 1 (Kostka)

Ćwiczenie 4 - Podstawy materiałów i tekstur. Renderowanie obrazu i animacji

WSTĘP DO GRAFIKI KOMPUTEROWEJ

Geometria analityczna

WPROWADZENIE DO GRAFIKI KOMPUTEROWEJ

System graficzny. Potok graficzny 3D. Scena 3D Zbiór trójwymiarowych danych wejściowych wykorzystywanych do wygenerowania obrazu wyjściowego 2D.

Bartosz Bazyluk SYNTEZA GRAFIKI 3D Grafika realistyczna i czasu rzeczywistego. Pojęcie sceny i kamery. Grafika Komputerowa, Informatyka, I Rok

RENDERING W CZASIE RZECZYWISTYM. Michał Radziszewski

Gry Komputerowe Laboratorium 4. Teksturowanie Kolizje obiektów z otoczeniem. mgr inż. Michał Chwesiuk 1/29. Szczecin, r

Grafika komputerowa Wykład 4 Geometria przestrzenna

15. Macierze. Definicja Macierzy. Definicja Delty Kroneckera. Definicja Macierzy Kwadratowej. Definicja Macierzy Jednostkowej

Zaawansowana Grafika Komputerowa

PRZEDMIOTOWY SYSTEM OCENIANIA- MATEMATYKA KLASA 6. Rok szkolny 2012/2013. Tamara Kostencka

RENDERING W CZASIE RZECZYWISTYM. Michał Radziszewski

1. Oświetlenie Materiały i powierzchnie

Przygotowanie grafiki 3D do gier komputerowych

RENDERING W CZASIE RZECZYWISTYM. Michał Radziszewski

Karty graficzne możemy podzielić na:

Trójwymiarowa grafika komputerowa rzutowanie

zajęcia 1. Bartosz Górski, Tomasz Kulczyński, Błażej Osiński

a. Czym różni się sposób liczenia odbicia zwierciadlanego zaproponowany przez Phonga od zaproponowanego przez Blinna?

Architektura Komputerów

WYMAGANIA Z WIEDZY I UMIEJĘTNOŚCI NA POSZCZEGÓLNE STOPNIE SZKOLNE DLA KLASY CZWARTEJ H. zakres rozszerzony. Wiadomości i umiejętności

i = [ 0] j = [ 1] k = [ 0]

W naukach technicznych większość rozpatrywanych wielkości możemy zapisać w jednej z trzech postaci: skalara, wektora oraz tensora.

Grafika 3D na przykładzie XNA 3.1

LUBELSKA PRÓBA PRZED MATURĄ 09 MARCA Kartoteka testu. Maksymalna liczba punktów. Nr zad. Matematyka dla klasy 3 poziom podstawowy

Ćwiczenia nr 7. TEMATYKA: Krzywe Bézier a

Bartosz Bazyluk POTOK RENDEROWANIA Etapy renderowania w grafice czasu rzeczywistego. Grafika Komputerowa, Informatyka, I Rok

Gry komputerowe, Informatyka N1, III Rok

Śledzenie promieni w grafice komputerowej

Wyświetlanie terenu. Clipmapy geometrii

Teksturowanie (ang. texture mapping)

ROZKŁAD MATERIAŁU DO II KLASY LICEUM (ZAKRES ROZSZERZONY) A WYMAGANIA PODSTAWY PROGRAMOWEJ.

RENDERING W CZASIE RZECZYWISTYM. Michał Radziszewski

Maskowanie i selekcja

OpenGL Światło (cieniowanie)

Całki podwójne. Definicja całki podwójnej. Jacek Kłopotowski. 25 maja Katedra Matematyki i Ekonomii Matematycznej

Wektor, prosta, płaszczyzna; liniowa niezależność, rząd macierzy

Wprowadzenie do grafiki maszynowej. Wprowadenie do teksturowania

Arkusz 6. Elementy geometrii analitycznej w przestrzeni

1 Funkcje dwóch zmiennych podstawowe pojęcia

9. Podstawowe narzędzia matematyczne analiz przestrzennych

Z ostatniego wzoru i zależności (3.20) można obliczyć n6. Otrzymujemy (3.23) 3.5. Transformacje geometryczne

2 Przygotował: mgr inż. Maciej Lasota

SYSTEMY PROJEKCJI STEREOSKOPOWEJ W ANIMACJACH KOMPUTEROWYCH. Techniki projekcji Generowanie wizyjnego sygnału stereoskopowego Instalacje mobilne

Grafika komputerowa. Dr inż. Michał Kruk

KLUCZ PUNKTOWANIA ODPOWIEDZI

Cyfrowe przetwarzanie obrazów i sygnałów Wykład 7 AiR III

Parametryzacja obrazu na potrzeby algorytmów decyzyjnych

Obliczenie punktu przecięcia półprostej i płaszczyzny w przestrzeni 3-D wymaga rozwiązania równania liniowego.

Transkrypt:

GRK 5 dr Wojciech Palubicki

Projekty (dwu-osobowe) Napisać symulacje lotu kosmicznego w OpenGLu: Korzystając tylko z bibliotek które na ćwiczeniach zostały omówione Interaktywna symulacja Wszystkie wielokąty są teksturowane Wszystkie wielokąty są oświetlone Napisać dokumentacje która opisuję program (około 30 wierszy) Przygotować 5 minutową prezentację projektu na ostatnich ćwiczeń - przygotować się na kilka pytań Implementacja (50%), opis i prezentacja (50%)

Wybrać jakiś dodatkowy efekt graficzny, np.: Normal lub Environment mapping Proceduralne tekstury: np. szum Perlina Statek ma obracającą bron (strzela) Kolizja obiektów jest obsługiwana Ciekawa scena, np. lot przez asteroidy Własne pomysły

Uproszczony Potok Graficzny (Rendering) Model Matrix View Matrix Projection Matrix Viewport Transform Object Space World Space View Space Clip Space Screen Space

Projection Matrix View Space Clip Space

Potok graficzny Window space View Space Orthographic view Canonical view

Rzutowania Perspektywicznie rzutowanie Ortograficzne rzutowanie

Clipping Żeby zdecydować czy pociąć trójkąt musimy: Sprawdzić czy on przecina hiperpłaszczyznę Stworzyć nowy trójkąt(y)

Culling Gdy jednak trójkąt leży poza bryłą widzenia usuwamy go całkowicie z dalszych obliczeń Testowanie wierzchołków jest ale jednak kosztowne

Backface culling Gdy modelujemy obiekty geometryczne za pomocy trójkątów to normalna trójkątów jest ustawiona na zewnątrz obiektu Odrzucanie trójkątów których normalna jest skierowana od punktu widzenia nazywamy to backface culling (usuwanie powierzchni tylnych)

Przykład Bez backface culling Backface culling

CPU GPU Vertex shader Fragment shader

Algorytm malarza (painter s algorithm)

Z-bufor

Podpowierzchniowe rozpraszanie (subsurface scattering) Dystans pomiędzy punktem wejścia i wyjścia promieni światła jest wyznaczony przez materiał

Modelowanie za pomocy BRDF BRDF to Bidirectional Reflectance Distribution Function lub "dwukierunkowa funkcja rozkładu odbicia " Modelujemy światło ignorując różnice dystansu punktu wejścia i wyjścia światła (lustrzane) (rozproszone)

Model Phonga odbicia rozproszonego

Definicja iloczynu skalarnego to: a b = a b cos(θ) Ale jak L i n są wektory jednostkowe to: L n = cos(θ) Czyli kosztowne obliczenie kosinusa da się zastąpić prostym iloczynem skalarnym D = I p k d max[l n, 0]

k d = 0.25 k d = 0.5 k d = 0.75 k d = 1

Odbicie geometryczne lustrzane - wektory Model Phonga odbicia geometrycznego lustrzanego jest S = I p k s cos n α = I p k s (V R) n Gdzie k s [0, 1] jest współczynnik geometryczny lustrzany n jest wykładnik geometryczny lustrzany α jest kątem pomiędzy R i V cos n (α) ustala ile światła jest odbite

n = 50 n = 20 n = 5 n = 1

Wynik światło otoczenia (ambient) światło rozproszone (diffuse) światło odbite geometryczne lustrzane (specular) = model odbicia światła Phonga

Uśrednianie intensywności Gdy I jest intensywność oświetlenia w danym punkcie P: I A,i+1 = I A,i ΔI A I B,i+1 = I B,i ΔI B I C,i+1 = I C,i ΔI C Gdzie ΔI A = I 3 I 1 y 3 y 1, ΔI B = I 3 I 2 y 3 y 2, ΔI C = x B x A I B I A

Gradient Δy prostej 3 3 = 1 4 2 = 2 3 5 = 0.6

Interpolacja liniowa Gdy są dane dwa wektory Ԧa, b, liniowa interpolacja jest zdefiniowana: Ԧp t = 1 t Ԧa + tb Gdzie t [0, 1] Ԧa b

Interpolacja liniowa Gdy są dane dwa wektory Ԧa, b, liniowa interpolacja jest zdefiniowana: Ԧp t = 1 t Ԧa + tb Gdzie t [0, 1] Ԧa b t b

Interpolacja liniowa Gdy są dane dwa wektory Ԧa, b, liniowa interpolacja jest zdefiniowana: Ԧp t = 1 t Ԧa + tb Gdzie t [0, 1] Ԧa b 1 t Ԧa t b

Interpolacja liniowa Gdy są dane dwa wektory Ԧa, b, liniowa interpolacja jest zdefiniowana: Ԧa Ԧp(t) b Ԧp t = 1 t Ԧa + tb Gdzie t [0, 1] 1 t Ԧa t b

Interpolacja liniowa Geometryczna interpretacja: Ԧp t = 1 t Ԧa + tb = Ԧa t Ԧa + tb = Ԧa + t(b Ԧa) Dla 0 t 1 daje nam to wszystkie możliwe pozycje pomiędzy Ԧa i b Ԧa b

Wariacja kolorów w przestrzeni Kolor światła rozproszonego jest identyczny w każdym punkcie Możemy zakładać że kolor k d rożni się z x

Dwa główne sposoby Z danych: teksturowanie Wczytaj informacje o kolorach z 2D obrazów Proceduralnie: w shaderze Napisać program który oblicza kolor jako funkcja pozycji w przestrzeni

Efekt tekstur Model

Efekt tekstur Model Model + Cieniowanie

Efekt tekstur Model Model + Cieniowanie Model + Cieniowanie + Tekstury

Teksturowanie 3D model Teksturowany model

Potrzebujemy funkcje która asocjuje każdy punkt na powierzchni naszego modelu z współrzędną w teksturze

Dla każdego punktu którego rysujemy chcemy odzyskać informacje kolorystyczne z tekstury

Współrzędne u, v Każdy wierzchołek zapisuje współrzędne 2D (u, v) tekstury Współrzędne u, v definiują nam pozycje w teksturze każdego wierzchołka Informacje kolorystyczne dla pozycji pomiędzy wierzchołkami jest uzyskane za pomocy interpolacji

Współrzędne u, v Współrzędne tekstury u, v są specyfikowane: Manualnie przez użytkownika (pracochłonne) Automatycznie, używając optymizacje parametryczna Matematyczne odwzorowywanie (niezależnie od wierzchołków)

Optymizacja parametryczna

3D model Potrzebne dane: Dla wierzchołków: Pozycja (3D współrzędne) Normalna 2D u, v współrzędne Inne informacje: Parametry i sposób cieniowania Obraz dla naszej tekstury

Wavefront.OBJ plik

Teksturowanie (texture mapping) Teksturowanie to zwyczajnie jest procesem odwzorowywania dwuwymiarowego obrazu na trójwymiarowego wielokąta Obraz który odwzorowujemy nazywamy teksturą Piksel w teksturze nazywamy teksel Kolory pikeslow są dane przez kolory tekselow w teksturze

Teksturowanie

Przestrzeń tekstury Przestrzeń tekstury to przestrzeń w jakiej tekstura istnieje Jest to dwuwymiarowa tekstura gdzie horyzontalne i wertykalne osie są nazywane u [0, 1] i v [0, 1] Tekstura wypełnia przestrzeń tekstury, tzn. lewy dolny róg jest w pozycji (0,0) i górny prawy róg jest w (1, 1) Współrzędne tekseli (U, V) dla M x x M y tekstur są U = M x u + 1 V = M y v + 1 Wtedy gdy u = 0 to U = 0 i gdy u = 1 to U = M x + 1, dlatego musimy sprawdzić czy 0 < u, v < 1

Wierzchołki wielokąta P, korespondują do wierzchołków Q w przestrzeni tekstury Każda transformacja wielokątów powinna być uwzględniona w teksturowaniu Używając metody skanowania wierszy, ekstremum P L jest obliczony interpolując pomiędzy P 1 i P 4 Podobnie ekstremum P R jest obliczony interpolując pomiędzy P 4 i P 3

Korespondujące ekstremy w przestrzeni tekstury Q L i Q R, są obliczone interpolując krawędzie tekstury Piksele pomiędzy P L i P R przybierają ten sam kolor jak teksele pomiędzy Q L i Q R

Obliczenie ekstremy współrzędnych Współrzędne wierzchołków są skalowane do wielkości wyświetlacza x = max 1, x s + 1 N x, y = max 1, y 2 s + 1 N y 2 Ekstremy P L i P R są inicjalizowane z wartością największej współrzędnej y s (tzn. P 4 ) Współrzędna y od P L i P R jest obliczana odejmując 1 od obecnej współrzędnej x L jest obliczony interpolując pomiędzy P 4 i P 1 x L = x 4 x 4 x 1 y 4 y 1 Bo y = y 4 1 x L = x 4 y 4 y 4 +1 y 4 y 1 x 4 x 1 = x 4 x 4 x 1 y 4 y 1

Obliczenie ekstremy współrzędnych x L = x 4 x 4 x 1 y 4 y 1 Gradient jest stały wzdłuż krawędzi wielokąta, tzn. możemy ułamek przekalkulować x L = x L x L x R = x R x R Gdzie x L = x R = dlugosc lewej krawedzi = x 4 x 1 wysokosc lewej krawedzi y 4 y 1 dlugosc prawej krawedzi = x 4 x 3 wysokosc prawej krawedzi y 4 y 3

Obliczenie ekstremy współrzędnych

Obliczenie ekstremy współrzędnych w przestrzeni teksturowej v L przemieszcza się pomiędzy v 4 i v 1 tak samo jak y pomiędzy y 4 i y 1 u L = u 4 u 1 y 4 y 1 v L = v 4 v 1 y 4 y 1 Gdy P L obniża się do następnego wiersza skanowania u L = u L u L v L = v L v L Podobnie dla u R i v R

Interpolacja wierszu skanowania Zaczynajac w (x L, x R ) inicjalizujemy u = u L i v = v L Dla każdego piksela przemieszczamy się na wierszu skanowania i aktualizujemy współrzędne (u, v) u = u + u v = v + v Idziemy od u L do u R w tej samej powłoce liniowej jak dla x L do x R, dlatego u = u R u L x R x L v = v R v L x R x L

Texture space Screen space

Texture space Screen space

Dlaczego widzimy artefakty? Nasza metoda teksturowania opiera się na założeniu ze rzutowanie z 3D na 2D jest liniowa transformacja Relacja pomiędzy x i x s i y i y s jest liniowa, relacja pomiędzy z i z s nie jest liniowa Żeby pozbyć się artefaktów musimy dystans od obserwatora brać pod uwagę

Rzutowanie perspektywiczne

Rzutowanie perspektywiczne

Rzutowanie perspektywiczne

Rzutowanie perspektywiczne

Rzutowanie perspektywiczne Punkt w przestrzeni świata P jest rzutowany na przestrzeń okna P s Trójkąty OAP i OBP są podobne: x s n = x z x s = n z x y s n = y z y s = n z y z s = n

Rzutowanie perspektywiczne Rownanie krawędzi w przestrzeni świata jest dane przez: x = αz + β Odwracając rzutowanie perspektywiczne x = z n x s Daje nam z n x s = αz + β z = βn 1 x s + β α

Rzutowanie perspektywiczne Rownanie krawędzi w przestrzeni świata jest dane przez: x = αz + β Odwracając rzutowanie perspektywiczne x = z n x s Daje nam z n x s = αz + β z = βn 1 x s + β α

Rzutowanie perspektywiczne Rownanie krawędzi w przestrzeni świata jest dane przez: x = αz + β Odwracając rzutowanie perspektywiczne x = z n x s Daje nam z n x s = αz + β z = βn 1 x s + β α

z = βn 1 x s + β α To nie jest liniowa relacja pomiędzy z i x s Ale możemy używać zwrotna relacje 1 z = x s βn α β Która jest liniowa relacja pomiędzy 1 z i x s

z = βn 1 x s + β α To nie jest liniowa relacja pomiędzy z i x s Ale możemy używać zwrotna relacje 1 z = x s βn α β Która jest liniowa relacja pomiędzy 1 z i x s

Perspektywiczne teksturowanie Żeby zastosować rzutowanie perspektywiczne ale nadal używając liniowa interpolacje musimy obliczyć wartość 1 z dla ekstremy P L i P R Wierzchołki przestrzeni teksturowej są podzielone przez z dając u z i v z Liniowa interpolacja jest wtedy zastosowana jak poprzednio żeby obliczyć współrzędne przestrzeni teksturowej ( u z, v z ) które korespondują do współrzędnych przestrzeni okna (x s, y s, 1 z )

Tylko liniowa interpolacja Rzutowanie perspektywiczne

Mipmapping

Mipmapping Przyspiesza teksturowanie

Mipmapping Przyspiesza teksturowanie

Teksturowanie i oświetlenie Teksturowanie może być używane żeby zmienić wartości parametrów modelu oświetlenia (np. parametr k d ) Cieniowanie Tekstura Nałożona tekstura Oświetlenie i tekstura

Szybkie cieniowanie Phonga Teksturowanie może być używane żeby przyspieszyć obliczenia cieniowania Phonga

Mapowanie normalnych Jeden z powodów dlaczego używamy tekstury jest żeby modelować powierzchnie które nie są płaskie ale często nierówne. Te nierówności mogą uczynić ze światło jest odbijane w różnych kątach.

Mapowanie normalnych Ludzkie oko dobrze rozpoznaje formę obiektów z bodźców oświetlenia Możemy ten fakt wykorzystać i użyć obraz normalnych dla naszych płaszczyzn żeby stworzyć wrażenie nierównej powierzchni Nazywamy ten proces mapowanie normalnych lub bump mapping

Mapowanie normalnych Dla każdego cieniowanego punktu w naszej scenie podajemy 3D normalna przechowana w 2D mapie normalnych Dla każdego punktu Interpoluj UV Normalna = mapanormalnych[u, V] Oblicz cieniowanie używając tą normalną

Mapowanie normalnych Tekstura Mapa normalnych

Mapowanie normalnych Bez bump mapping Bump mapping

Mapowanie normalnych

Normalne obliczone z mapy wysokości

Układanie tekstur

Environment mapping

Environment mapping Środowisko Obserwator Obiekt

Environment mapping Pomysł: wsiąść kostkę i w środek położyć obiekt. Zrzutować tekstury środowiska obiektu na ściany kostki. W czasie rysowania, na podstawie wektora odbicia lustrzanego znaleźć odpowiedne kolory w wartościach tekstur kostki. Środowisko dzbanka Końcowy efekt

Dwa główne sposoby Z danych: teksturowanie Wczytaj informacje o kolorów z 2D obrazów Proceduralnie: w shaderze Napisać program który oblicza kolor jako funkcja pozycji w przestrzeni

Tekstury proceduralne Alternatywnie do teksturowania możemy stworzyć program który oblicza kolor jako funkcja pozycji (x, y, z) f x, y, z kolor

Tekstury proceduralne Zalety: Zajmują mniej miejsca w pamięci Nieskończona rezolucja Wady: Mało intuicyjne Często trudno istniejący wzorzec zamodelować za pomocy funkcji

Przykład: 3D paski Paski wzdłuż osi x: Paski(x s, y s, z s ) { If(sin x s > 0) return color0 Else return color1 }

Przykład: 3D paski Paski wzdłuż osi z: Paski(x s, y s, z s ) { If(sin z s > 0) return color0 Else return color1 }

Przykład: 3D paski Paski z kontrolowaną szerokością Paski(x s, y s, z s, szerokość) { If(sin (π * x s / szerokość) > 0) return color0 Else return color1 }

Przykład: 3D paski Paski z kontrolowaną szerokością Paski(x s, y s, z s, szerokość) { If(sin (π * x s / szerokość) > 0) return color0 Else return color1 }

3D paski Ciągła wariacja pomiędzy dwoma kolorami Paski(x s, y s, z s, szerokość) { t = (1 + sin (π * x s / szerokość)) / 2 Return (1 - t) color0 + t color1 }

Szum Perlina Ważna komponenta tekstur proceduralnych żeby uzyskać wariacje w kolorach

Szum Perlina Ważna komponenta tekstur proceduralnych żeby uzyskać wariacje w kolorach Teren generowany za pomocy szumu Perlina - Minecraft

Szum Perlina Kubiczna siatka Wartość zerowa we wierzchołków Pseudo-przypadkowa pochodna w wierzchołkach Funkcje sklejane interpolują wartości do pozostałych punktów

Pseudo-przypadkowe wektory gradientowe g(x0, y1) g(x1, y1) g(x0, y0) g(x1, y0)

Wektory odległości (distance vectors) (x, y) (x0, y1) (x, y) (x1, y1) (x, y) (x0, y0) (x, y) (x1, y0)

Wektory odległości (distance vectors) (x, y) (x0, y1) (x, y) (x1, y1) θ g(x1, y1) (x, y) (x0, y0) (x, y) (x1, y0)

Mapa kolorów

Iloczyn skalarny Obliczamy iloczyn skalarny wektorów odległości i wektorów gradientowych Interpolujemy wyniki żeby uzyskać uśrednianie

Algorytm w 3D Dla danego punktu wejściowego P Dla każdego z sąsiednich punktów S i na siatce Oblicz pseudo-przypadkowy wektor gradientowy g Oblicz iloczyn skalarny g i PS i Oblicz ważoną sumę wyników używając kubiczne wagi (fade function) Znajdź odpowiedny kolor z mapy kolorów np. 6t 5-15t 4 + 10t 3

Szum Perlina

Szum Perlina - oktawy

Szum Perlina - oktawy

Szum w kilku oktawach Każda oktawa o ma wagę 1/o

Absolutna wartość szumu abs(iloczyn skalarny g i Ps i )

Sinus (absolutną wartość szumu) Szum Perlin przypominający marmur