44
BARVANJE

BARVANJE - ucilnica2021.fri.uni-lj.si

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: BARVANJE - ucilnica2021.fri.uni-lj.si

BARVANJE

Page 2: BARVANJE - ucilnica2021.fri.uni-lj.si

▪ Transformacija v k.s. pogleda in projekcija v senčilniku oglišč

rezultat so trikotniki na projekcijski ravnini

▪ Rasterizacija določi katere piksle/fragmente

pokriva vsak trikotnik

▪ Določanje barve pikslov/fragmentov senčilnik fragmentov

▪ Faze cevovoda bodo podrobneje predstavljene pozneje

Specifikacija oglišč

Senčilnik oglišč

Teselacija

Senčilnik geometrije

Postprocesiranje oglišč

Sestava primitivov

Rasterizacija

Senčilnik fragmentov

Obdelava vzorcev

transformacije

piksli

barvanje

Page 3: BARVANJE - ucilnica2021.fri.uni-lj.si

▪ Barvo piksla/fragmenta določimo glede na barvo v ogliščih

interpolacija v notranjosti

▪ Barvo določimo glede na teksturo

2D - tipično slika, ki jo nalepimo na trikotnike

3D – zaporedje slik ali proceduralna tekstura

Page 4: BARVANJE - ucilnica2021.fri.uni-lj.si

Interpolacija

Page 5: BARVANJE - ucilnica2021.fri.uni-lj.si

▪ Z interpolacijo določimo vrednosti v notranjosti trikotnika na podlagi vrednosti v ogliščih

gre za kakršnekoli lastnosti – barva, normale, teksturne koordinate, globina ipd.

▪ Bilinearna interpolacija

linearno interpolacijo izvedemo najprej po eni, nato po drugi osi

A

B

C

Page 6: BARVANJE - ucilnica2021.fri.uni-lj.si

A

B

C

▪ Imamo trikotnik z oglišči 𝐴, 𝐵, 𝐶 in vrednostmi 𝑉𝐴, 𝑉𝐵 , 𝑉𝐶, ki jih želimo interpolirati v točki 𝑃

▪ Najprej interpoliramo po eni osi - npr. 𝑦, da dobimo vrednosti v 𝑄 in 𝑅

𝑉𝑄 =𝑦𝑃−𝑦𝐵

𝑦𝐴−𝑦𝐵𝑉𝐴 +

𝑦𝐴−𝑦𝑃

𝑦𝐴−𝑦𝐵𝑉𝐵

𝑉𝑅 =𝑦𝑃−𝑦𝐵

𝑦𝐶−𝑦𝐵𝑉𝐶 +

𝑦𝐶−𝑦𝑃

𝑦𝐶−𝑦𝐵𝑉𝐵

▪ Potem interpoliramo po osi 𝑥, da dobimo končno vrednost v 𝑃

𝑉𝑃 =𝑥𝐶−𝑥𝑃

𝑥𝐶−𝑥𝐵𝑉𝑄 +

𝑥𝑃−𝑥𝐵

𝑥𝐶−𝑥𝐵𝑉𝑅

▪ Izračun v zaporednih točkah lahko pohitrimo (sprememba je konstantna vzdolž črte)

Q R

P

Page 7: BARVANJE - ucilnica2021.fri.uni-lj.si

▪ Pri trikotnikih lahko definiramo tudi t.i. težiščni (baricentrični) koordinatni sistem

koordinatni osi sta stranici trikotnika

▪ Točko v tem prostoru predstavimo kot:

𝑃 = 𝐴 + 𝛽 𝐵 − 𝐴 + 𝛾(𝐶 − 𝐴), oz.𝑃 = 𝛼𝐴 + 𝛽𝐵 + 𝛾𝐶𝛼 + 𝛽 + 𝛾 = 1

𝐴

𝐵

𝐶

𝛾 = 0

𝛾 = 1

𝛽 = 1

𝛽 = 0

𝑃

Page 8: BARVANJE - ucilnica2021.fri.uni-lj.si

▪ V 2D prostoru (npr. zaslonskih koordinatah) lahko zapišemo:

𝛽 𝐵 − 𝐴 + 𝛾 𝐶 − 𝐴 = 𝑃 − 𝐴

𝑥𝐵 − 𝑥𝐴 𝑥𝐶 − 𝑥𝐴𝑦𝐵 − 𝑦𝐴 𝑦𝐶 − 𝑦𝐴

𝛽𝛾

=

𝑥𝑃 − 𝑥𝐴𝑦𝑃 − 𝑦𝐴

▪ in dobimo:

𝛽 =𝑥𝐴−𝑥𝐶 𝑦𝑃−𝑦𝐴 − 𝑦𝐶−𝑦𝐴 𝑥𝑃−𝑥𝐴

𝑥𝐵−𝑥𝐴 𝑦𝐶−𝑦𝐴 − 𝑦𝐵−𝑦𝐴 𝑥𝐶−𝑥𝐴

𝛾 =𝑥𝐵−𝑥𝐴 𝑦𝑃−𝑦𝐴 − 𝑦𝐴−𝑦𝐵 𝑥𝑃−𝑥𝐴

𝑥𝐵−𝑥𝐴 𝑦𝐶−𝑦𝐴 − 𝑦𝐵−𝑦𝐴 𝑥𝐶−𝑥𝐴

𝛼 = 1 − 𝛽 − 𝛾

𝐴

𝐵

𝐶

𝛾 = 0

𝛾 = 1

𝛽 = 1

𝛽 = 0

𝑃

Page 9: BARVANJE - ucilnica2021.fri.uni-lj.si

A

B

C

▪ Če poznamo predstavitev točke 𝑃s težiščnimi koordinatami 𝛼, 𝛽, 𝛾, lahko:

enostavno računamo interpolacijolastnosti 𝑉 oglišč v točki 𝑉𝑃 = 𝛼𝑉𝐴 + 𝛽𝑉𝐵 + 𝛾𝑉𝐶

enostavno ugotovimo, če je točka znotraj trikotnika: 0 < 𝛼, 𝛽, 𝛾 < 1: točka je znotraj

trikotnika

0 ≤ 𝛼, 𝛽, 𝛾 ≤ 1: točka je znotraj ali na robu trikotnika

sicer je točka izven trikotnika

P

Page 10: BARVANJE - ucilnica2021.fri.uni-lj.si

▪ Če uporabljamo perspektivnoprojekcijo, ta popači predmete

perspektiva ni linearna

delimo s homogeno koordinato 𝑤

𝑃′ =

1 0 0 00 1 0 00 0 1 0

0 01

𝑑0

𝑥𝑦𝑧1

=

𝑥𝑦𝑧𝑧

𝑑

=

𝑥𝑑/𝑧𝑦𝑑/𝑧𝑑1

▪ Navadna bilinearna interpolacija po projekciji ne upošteva pravilno tega popačenja

linearna interpolacija v koordinatah zaslona

perspektivno pravilna interpolacija

Page 11: BARVANJE - ucilnica2021.fri.uni-lj.si

▪ Tudi vrednosti, ki jih interpoliramo homogeniziramo s faktorjem 𝑤 =

𝑧

𝑑

𝑞 =1

𝑤

𝑉𝐴′ = 𝑞𝐴𝑉𝐴, 𝑉𝐵

′ = 𝑞𝐵𝑉𝐵, 𝑉𝐶′ = 𝑞𝐶𝑉𝐶

▪ Izvedemo bilinearno interpolacijo (navadno ali preko težiščnih koordinat) homogeniziranih vrednosti: 𝑉𝑃

′ = 𝑙𝑒𝑟𝑝 𝑉𝐴′, 𝑉𝐵

′ , 𝑉𝐶′

▪ Bilinearno interpoliramo tudi inverzhomogene koordinate 𝑞: 𝑞𝑃 = 𝑙𝑒𝑟𝑝 𝑞𝐴, 𝑞𝐵, 𝑞𝐶

▪ Nazaj popravimo interpolirane homogenizirane vrednosti:

𝑉𝑃 =𝑉𝑃′

𝑞𝑃

B: 𝑉𝐵 , 𝑤𝐵

P: 𝑉𝑃A: 𝑉𝐴, 𝑤𝐴

C: 𝑉𝐶 , 𝑤𝐶

Page 12: BARVANJE - ucilnica2021.fri.uni-lj.si

▪ Interpolacija lastnosti oglišč na posamezne fragmente se izvede med rasterizacijo

▪ Spremenljivke interpoliranke, ki jih z out-in prenesemo med senčilnikom oglišč in fragmentov, se avtomatsko interpolirajo

Specifikacija oglišč

Senčilnik oglišč

Teselacija

Senčilnik geometrije

Postprocesiranje oglišč

Sestava primitivov

Rasterizacija

Senčilnik fragmentov

Obdelava vzorcev

Senčilnik oglišč…out vec4 vColor;

void main(void) {

…// pošlji barvo v senč. frag.vColor = aVertexColor;

}

Senčilnik fragmentov…in vec4 vColor;out vec4 fragColor;

void main(void) {

…// vColor je interpoliranafragColor = vColor;

}

Spreminjanje oglišč

Spreminjanje fragmentov

Interpolacija lastnosti oglišč na fragmente

Page 13: BARVANJE - ucilnica2021.fri.uni-lj.si

▪ Novejše GPE interpolirajo preko težiščnih koordinat

interpolacija različnih lastnosti

test ali je točka v trikotniku

enostavna paralelizacija

▪ Privzeto se uporablja perspektivno pravilna interpolacija (smooth)

če želimo drugačno obnašanje, lahko uporabimo flat, noperspective, smooth pri deklaraciji interpolirank noperspective ni podprta v WebGL 2.0

A

B

C

Page 14: BARVANJE - ucilnica2021.fri.uni-lj.si

Teksture

Page 15: BARVANJE - ucilnica2021.fri.uni-lj.si
Page 16: BARVANJE - ucilnica2021.fri.uni-lj.si

▪ Enobarvni poligoni – enostavni, hitri, nezanimivi

▪ Želimo več podrobnosti – na ploskve nalepimo teksture 2D slike (npr. fotografije ali umetno

ustvarjene)

3D teksture (serija slik ali proceduralno ustvarjene)

▪ Tekstura lahko vpliva na barvo, pa tudi na druge parametre – normale, položaj oglišč itn. simulacija materialov

zmanjševanje geometrijske kompleksnosti

odsevi

Page 17: BARVANJE - ucilnica2021.fri.uni-lj.si

2D Teksture

Page 18: BARVANJE - ucilnica2021.fri.uni-lj.si

▪ Kako se 2D tekstura – bitna slika - preslika na predmet?

▪ uv koordinatni prostor teksture:

pikslom teksture (texels) določimo koordinate 𝑢, 𝑣 na območju [0,1]

levo spodaj je (0,0), desno zgoraj(1,1)

▪ Vsako oglišče trikotnika hrani 𝑢, 𝑣koordinate dela teksture, ki se nanj preslika

(0,0)

(1,1)

u

v

Page 19: BARVANJE - ucilnica2021.fri.uni-lj.si

▪ Slika je definirana na intervalu

𝑢, 𝑣 ∈ [0,0] × [1,1]

▪ Če 𝑢, 𝑣 koordinate padejo izven tega območja:

teksturo ponavljamo (tiling) ali zrcalimo (mirroring) pri ponavljanju je smiselno, da so robovi

teksture enaki, sicer je prehod viden

uporabimo barvo roba teksture(clamping) ali teksture ne upoštevamo

ponavljanje zrcaljenje

barva roba

Page 20: BARVANJE - ucilnica2021.fri.uni-lj.si

▪ Za vsako točko (fragment oz. piksel) v trikotniku lahko z interpolacijo uv koordinat izračunamo v katero točko teksture se preslika

▪ Interpolacija je standardna perspektivno pravilna bilinearnainterpolacija

uv koordinate oglišč prenesemo v senčilnik fragmentov v out-in interpolirankah

Page 21: BARVANJE - ucilnica2021.fri.uni-lj.si

▪ Dobljene interpolirane 𝑢, 𝑣 koordinate navadno ne padejo “na” teksel

▪ Kako izračunamo barvo na 𝑢, 𝑣 , če poznamo barvo štirih najbližjih tekslov?

najbližji sosed (hitro, slaba kvaliteta)

bilinearna interpolacija najprej izračunamo 𝑐𝑡 in 𝑐𝑏, potem 𝑐

Page 22: BARVANJE - ucilnica2021.fri.uni-lj.si

▪ Uporabimo perspektivno pravilno interpolacijo za izračun 𝑢, 𝑣 in bilinearno interpolacijo za izračun barve piksla, in …

Page 23: BARVANJE - ucilnica2021.fri.uni-lj.si

▪ Na teksturo gledamo kot na signal:

če vzorčimo (izbiramo teksle) dovolj pogosto, je vse v redu

če ne vzorčimo dovolj pogosto, hitro menjanje barv (visoke frekvence) postane počasno menjanje barv (nizke frekvence) pojavu, ki ga dobimo z vzorčenjem pri

prenizki frekvenci, rečemo prekrivanje (aliasing)

črna

bela

črna

bela

Page 24: BARVANJE - ucilnica2021.fri.uni-lj.si

▪ Do prekrivanja pride, ker lahko piksel na sliki pokrije velik kos teksture

▪ Izognemo se ga lahko s povprečenjem tekslov(nizkoprepustni filter)

je pa to počasno – potencialno je potrebno povprečiti veliko tekslov

Page 25: BARVANJE - ucilnica2021.fri.uni-lj.si

▪ Povprečenje izvedemo vnaprej -mipmapping

vnaprej izračunamo več verzij teksture različnih velikosti –mipmaps vsaka verzija je 2x manjša od prejšnje

mip = multum in parvo = veliko v malem

▪ Porabimo 1/3 več pomnilnika;

1

3=

1

4+

1

16+

1

64+⋯

▪ Mipmapping je strojno podprt

Nivo 0: 512x512

Nivo 1: 256x256

Nivo 2: 128x128

64x64

32x32

1 teksel na nivoju 1 je povprečje 2x2=4 pikslov nivoja 01 teksel na nivoju 4 je povprečje 44=256 tekslov na nivoju 0

Page 26: BARVANJE - ucilnica2021.fri.uni-lj.si

1. Izračunamo koordinate 𝑢, 𝑣

2. Izračunamo približno velikost piksla v teksturnem prostoru

3. Barvo z bilinearno interpolacijo izberemo iz ustrezno velike teksture

npr. če piksel pokriva 10x10 tekslov, izberemo teksturo tretjega nivoja (8x8)

Nivo 0: 512x512

Nivo 1: 256x256

Nivo 2: 128x128

64x64

32x32

1 teksel na nivoju 3 je povprečje 43=64 tekslov na nivoju 0

Page 27: BARVANJE - ucilnica2021.fri.uni-lj.si

▪ Za bolj mehek prehod med nivoji lahko uporabimo dva nivoja –trilinearna interpolacija:

vzamemo teksturi dveh najbližjih nivojev – npr. za 10x10 vzamemo tretji (8x8) in četrti (16x16) nivo

naredimo bilinearno interpolacijo, da dobimo barvo piksla v obeh nivojih

linearno interpoliramo še med nivojema

Page 28: BARVANJE - ucilnica2021.fri.uni-lj.si

▪ Mipmapping povpreči teksturo v vseh smereh enako, kot da je piksel kvadrat piksel pa navadno ni kvadrat v teksturnem

prostoru kadarkoli ne gledamo naravnost, ampak pod kotom

mipmapping “preveč” povpreči v teh primerih

▪ Anizotropično filtriranje povpreči teksturo v tekslih znotraj okna, izračunanega za vsak piksel okno je odvisno od orientacije ploskve in je

boljši približek realnosti povprečimo določeno število tekslov znotraj

tega okna (npr. 16) boljša kvaliteta od mipmappinga, bolj

zahtevno, predvsem glede pretoka podatkov (večkrat dostopamo do tekslov) npr. 16x trilinearno anizotropično filtriranje

dostopa do 128 tekslov (16 vzorcev * 4 mipmap * 2 nivoja)

je strojno podprto

piksel ni nujno kvadrat v teksturnem prostoru

Page 29: BARVANJE - ucilnica2021.fri.uni-lj.si

http://www.geforce.com/whats-new/guides/aa-af-guide

Page 30: BARVANJE - ucilnica2021.fri.uni-lj.si

▪ Enostavno generiranje mipmapov: gl.generateMipmap(gl.TEXTURE_2D)

▪ Filtriranje: ločimo med minificationin magnification določimo lahko drugačno obravnavo

minification: teksel je manjši kot piksel magnification: texel je večji kot piksel

▪ Podprto je tudi anizotropičnofiltriranje TEXTURE_MAX_ANISOTROPY_EXT

▪ Robne vrednosti lahko damo na fiksno vrednost ali ponavljamo (clamp, repeat) TEXTURE_WRAP_S, TEXTURE_WRAP_T

CLAMP REPEAT

TEXTURE_MIN_FILTER, TEXTURE_MAG_FILTER• NEAREST = choose 1 pixel• LINEAR = choose 4 pixels and blend them• NEAREST_MIPMAP_NEAREST = choose the

best mip, then pick one pixel from that mip• LINEAR_MIPMAP_NEAREST = choose the

best mip, then blend 4 pixels from that mip• NEAREST_MIPMAP_LINEAR = choose the

best 2 mips, choose 1 pixel from each, blend them

• LINEAR_MIPMAP_LINEAR = choose the best 2 mips. choose 4 pixels from each, blend them

Page 31: BARVANJE - ucilnica2021.fri.uni-lj.si

▪ Kako dobimo 𝑢, 𝑣 koordinate za izris tekstur, če imamo model?

preslikava med 3D položajem teksture na predmetu in 2D koordinatami tekstur

Page 32: BARVANJE - ucilnica2021.fri.uni-lj.si

▪ Uporabimo linearno transformacijo xyz koordinat predmeta

▪ Primer:1 0 0 0

0 1 0 0

x

u y

v z

w

=

Page 33: BARVANJE - ucilnica2021.fri.uni-lj.si

▪ Uporabimo perspektivno projekcijo xyz koordinat predmeta

▪ Uporabno npr. za efekte osvetlitve

Page 34: BARVANJE - ucilnica2021.fri.uni-lj.si

▪ Uporabimo sferične koordinate

▪ Kot bi predmet postavili v kroglo in teksturo s krogle nalepili na predmet

▪ Izračun 𝑢, 𝑣 v točki p, če je krogla z radijem R v središču c :

krogelne koordinate p-ja:

cos 𝜃 =𝑝𝑦−𝑐𝑦

𝑅, tan𝜙 =

𝑝𝑧−𝑐𝑧

𝑝𝑥−𝑐𝑥

𝑢,𝑣 coordinate točke p:

𝑢 =𝜙

2𝜋, 𝑣 =

𝜋−𝜃

𝜋

Page 35: BARVANJE - ucilnica2021.fri.uni-lj.si

▪ Podobno kot sferično, teksturo mapiramo preko valja

tan𝜙 =𝑝𝑧−𝑐𝑧

𝑝𝑥−𝑐𝑥, 𝑢 =

𝜙

2𝜋

𝑣 ≃ 𝑦

Page 36: BARVANJE - ucilnica2021.fri.uni-lj.si

▪ Površino predmeta razvijemo v 2D – kožo

kompleksen problem

▪ Kožo pobarvamo, nalepimo nazaj

Page 37: BARVANJE - ucilnica2021.fri.uni-lj.si

3D teksture

Page 38: BARVANJE - ucilnica2021.fri.uni-lj.si

▪ Simuliramo predmet narejen iz nekega materiala

▪ 3D tekstura – definirana v treh dimenzijah 𝑓(𝑠, 𝑡, 𝑟) vrne barvo v neki 3D točki

▪ Lahko uporabimo neposredno 3Dlepljenje

(𝑥, 𝑦, 𝑧) = (𝑠, 𝑡, 𝑟)

če je funkcija f definirana le v diskretnih točkah, naredimo interpolacijo (npr. trilinearno)

▪ 3D tekstura serija slik (ena and drugo)

velikokrat je specificirana proceduralno

Page 39: BARVANJE - ucilnica2021.fri.uni-lj.si

▪ Uporabljamo za naravne materiale – les, kamen, oblaki, dim …

▪ Osnova je funkcija f(s,t,r)

funkcija lahko vrne barvo, prosojnost, normale …

▪ Preprost primer: les

𝑓(𝑠, 𝑡, 𝑟) = 𝑠2 + 𝑡2

barvna tabela woodmap0 = novejši les, 1 = starejši les

𝑤𝑜𝑜𝑑(𝑠, 𝑡, 𝑟) =𝑤𝑜𝑜𝑑𝑚𝑎𝑝(𝑓(𝑠, 𝑡, 𝑟) 𝑚𝑜𝑑 1)

𝑤𝑜𝑜𝑑(𝑠, 𝑡, 𝑟)

𝑤𝑜𝑜𝑑𝑚𝑎𝑝(𝑓)0 1

𝑓(𝑠, 𝑡, 𝑟) = 𝑠2 + 𝑡2

Page 40: BARVANJE - ucilnica2021.fri.uni-lj.si

▪ Dodamo šum, izboljšamo realizem

𝑊𝑜𝑜𝑑 𝑠2 + 𝑡2 + 𝑁 𝑠, 𝑡, 𝑟

𝑁 je šumna funkcija

Page 41: BARVANJE - ucilnica2021.fri.uni-lj.si

▪ Proceduralne teksture navadno vsebujejo komponento šuma

večji realizem

▪ Perlinov šum (Perlin noise)

ℝ𝑛šumna funkcija

gradientni šum – interpolacija med naključnimi gradienti, mehki prehodi

veliko se uporablja, ker je “mehka” funkcija, omogoča enostaven nadzor nad frekvenco in fazo

ustvarimo naključne gradiente, interpoliramo vmes

Perlinov šum na krogli

0.3 0.4 0.5 -0.1 -0.8

Page 42: BARVANJE - ucilnica2021.fri.uni-lj.si

▪ V naravnih teksturah velikokrat srečamo neko regularnost, ki se pojavlja na več velikostnih nivojih

lahko jo dobimo s seštevanjem skaliranih šumov

▪ Turbulenca = vsota skaliranihPerlinovih šumov

oz. vsota šumnih oktav:

𝑛𝑜𝑖𝑠𝑒 𝑓 + ½ 𝑛𝑜𝑖𝑠𝑒 2𝑓 +

¼ 𝑛𝑜𝑖𝑠𝑒 4𝑓 + ⋯

𝑓: frekvenca šuma

∑1

𝑛𝑖𝑓(𝑛𝑖)

∑1

𝑛𝑖𝑓 𝑛𝑖

Page 43: BARVANJE - ucilnica2021.fri.uni-lj.si

marmor oblaki

korona marmor – sin(𝑓 ∗ (𝑥 + 𝐴 ∗ 𝑇𝑢𝑟𝑏(𝑥, 𝑦, 𝑧))

Page 44: BARVANJE - ucilnica2021.fri.uni-lj.si

▪ Ken Perlin: Making Noise

▪ J.P. Schulze: Introduction to Computer Graphics (slides)

▪ N. Guid: Računalniška grafika, FERI Maribor

▪ J.D. Foley, A. Van Dam et al.: Computer Graphics: Principles and Practice in C, Addison Wesley