Poglavlje 11: Physically Based Rendering (PBR)
"PBR nije samo tehnika renderovanja -- to je fundamentalna promena u načinu na koji razmišljamo o materijalima. Umesto da pitamo 'kako ovo izgleda pod ovim svetlom?', pitamo 'od čega je ovo napravljeno?' -- i fizika se pobrine za ostatak."
Sadržaj poglavlja
- Zašto PBR?
- Teorija mikrofaseta (Microfacet Theory)
- Cook-Torrance BRDF
- Fresnel efekat
- Roughness -- hrapavost površine
- Metalness -- metalni karakter
- Konzervacija energije (Energy Conservation)
- Specular vs Diffuse refleksija
- Dielektrici vs Metali
- PBR workflow-ovi: Metal/Rough vs Spec/Gloss
- Image-Based Lighting (IBL)
- Rezime ključnih pojmova
- Dodatna literatura i linkovi
Uvod
Ovo je poglavlje u kome sve što smo do sada naučili -- od tekstura (poglavlje 5), preko svetlosnih modela i BRDF-a (poglavlje 10) -- konvergira u jedinstven, koherentan sistem. Physically Based Rendering nije samo "lepši shader" -- to je filozofija renderovanja koja garantuje fizički konzistentne rezultate bez obzira na uslove osvetljenja.
Ako ste ikada radili sa starijim rendering engine-ima, znate bol: napravite materijal koji izgleda savršeno u jednoj sceni, premestite ga u drugu sa drugačijim svetlom, i sve se raspada. PBR eliminiše taj problem iz korena.
U ovom poglavlju ćemo zaroniti duboko u matematiku i fiziku iza PBR-a, ali nikada nećemo izgubiti iz vida praktičnu primenu u Unreal Engine 5. Svaki koncept ćemo objasniti i intuitivno i formalno, jer je za istinsko razumevanje potrebno oboje.
Zašto PBR?
Svet pre PBR-a
Da bismo razumeli zašto je PBR revolucionaran, moramo prvo razumeti šta je bilo pre njega.
U ranim danima real-time renderovanja (i značajnom delu ere filmske produkcije), materijali su se kreirali pukim "pogađanjem". Tipičan workflow za kreiranje materijala izgledao je ovako:
- Uzmete diffuse mapu -- bazičnu boju objekta
- Dodate specular mapu -- gde i koliko jako površina reflektuje
- Tweakujete specular power/exponent -- koliko je oštro specularno svetlo
- Tweakujete ambient vrednost -- da objekat ne bude potpuno crn u senci
- Možda dodate environment map za refleksije
- Gledate rezultat, ne sviđa vam se, tweakujete dalje
- Ponovite korake 2-6 dok ne izgleda "okej"
Ovaj pristup imao je nekoliko fundamentalnih problema:
Pristrasnost prema jednom osvetljenju. Materijal koji izgleda kao polirani metal pod jednim svetlom može izgledati kao plastika pod drugim. Artist je bukvalno "pekao" karakteristike osvetljenja u sam materijal, umesto da definiše fizička svojstva površine.
Nekonzistentnost između artista. Svaki artist je imao svoj "recept" za kožu, metal, drvo, kamen. Dva artista koja rade na istom projektu mogli su proizvesti materijale koji izgledaju kao da pripadaju potpuno različitim svetovima. Bez fizičkih smernica, stil je bio potpuno subjektivan.
Kršenje zakona fizike. Materijal je mogao reflektovati više svetla nego što prima (kršenje konzervacije energije), imati Fresnel efekat koji fizički nema smisla, ili pokazivati specularnu refleksiju koja ne odgovara nijednom poznatom materijalu. Rezultat je bio da su scene, uprkos visokom tehničkom kvalitetu, često izgledale "nekako pogrešno" -- i gledalac možda nije mogao da artikuliše zašto, ali je podsvesno osećao da nešto nije u redu.
Nemogućnost ponovnog korišćenja. Materijal napravljen za outdoor scenu sa sunčevom svetlošću bio je praktično neupotrebljiv u indoor sceni sa veštačkim osvetljenjem. Isti materijal u dawn i noon sceni zahtevao je potpuno različite parametre. Ovo je drastično usporavalo produkciju.
Paradigmatski prelom
PBR nastaje kao odgovor na sve ove probleme. Ključna ideja je jednostavna ali revolucionarna:
Umesto da opisujemo kako površina izgleda, opisujemo šta površina jeste -- a renderer koristi zakone fizike da izračuna kako bi izgledala pod bilo kojim osvetljenjem.
Ovo znači da kada definišete PBR materijal, vi ne kažete "ovaj piksel treba da ima specular highlight ovog oblika i ove jačine". Vi kažete: "ova površina je napravljena od čelika sa roughness vrednošću 0.35". Renderer zatim koristi poznate fizičke osobine čelika i matematičke modele interakcije svetla sa površinom da izračuna tačan izgled pod bilo kojim uslovima.
Istorijski kontekst
PBR nije nastao preko noći. Evo kratke hronologije ključnih doprinosa:
- 1967 -- Torrance i Sparrow objavljuju fizički zasnovani model refleksije koji uzima u obzir mikrogeometriju površine. Ovo je začetak microfacet teorije.
- 1977 -- Blinn uvodi "halfway vector" formulaciju za efikasno računanje specularnog osvetljenja.
- 1982 -- Cook i Torrance objavljuju svoj landmark paper koji kombinuje microfacet teoriju sa Fresnel efektom u praktičan rendering model. Cook-Torrance BRDF postaje osnova modernog PBR-a.
- 1994 -- Schlick objavljuje svoju čuvenu aproksimaciju Fresnel jednačine, čineći je dovoljno jednostavnom za real-time upotrebu.
- 2007 -- Trowbridge i Reitz (originalno 1975), a zatim Walter et al. popularizuju GGX distribuciju mikrofaseta, koja postaje de facto standard u game industriji.
- 2012 -- Disney objavljuje svoj "Principled BRDF" paper. Ovo je prelomni momenat -- Disney pokazuje da se kompleksni fizički modeli mogu parametrizovati na intuitivan način koji artisti mogu koristiti. Ovaj rad direktno inspiriše PBR implementacije u svim modernim game engine-ima.
- 2013-2014 -- Unreal Engine 4, Frostbite, Unity i drugi major engine-i prelaze na PBR kao default rendering model. Era PBR-a u igrama zvanično počinje.
Šta PBR zahteva
Da bi PBR radio korektno, moraju biti ispunjeni određeni preduslovi:
- Fizički korektan model osvetljenja -- BRDF koji poštuje zakone fizike (konzervacija energije, reciprocitet).
- Fizički zasnovane vrednosti materijala -- roughness, metalness, base color koji odgovaraju merenim vrednostima realnih materijala.
- Linearni color space workflow -- svi proračuni moraju biti u linearnom prostoru boja (pogledajte poglavlje 5 za detalje o gamma korekciji i sRGB).
- High Dynamic Range (HDR) osvetljenje -- svetlosni izvori moraju imati fizički korektan intenzitet i opseg.
UE5 obezbeđuje sve ovo "out of the box", ali je na vama kao artistu da razumete zašto su ove stvari važne i kako da pravilno koristite sistem.
Teorija mikrofaseta
Osnovna ideja
Pogledajte bilo koju površinu golim okom -- čak i ako deluje savršeno glatka, pod mikroskopom biste videli potpuno drugačiju sliku. Svaka realna površina ima mikroskopsku teksturu -- sitne neravnine, udubljenja, ispupčenja. Ove mikroskopske neravnine nazivamo mikrofasetama (microfacets).
Mikrofaseta teorija polazi od genijalnog pojednostavljenja:
Svaka mikrofaseta je savršeno ravno, savršeno reflektujuće mikroskopsko ogledalo.
Dakle, čak i "mat" površina poput kreča na zidu je, prema ovom modelu, sastavljena od miliona sićušnih savršenih ogledala -- samo su ta ogledala okrenuta u različitim pravcima. Kada su sva ogledala poravnata (kao kod poliranog metala), dobijate oštru, jasnu refleksiju. Kada su razasuta u svim pravcima (kao kod kreča), dobijate raspršeno, mat svetlo.
Veza sa roughness parametrom
Roughness parametar u PBR-u direktno kontroliše distribuciju orijentacija mikrofaseta:
-
Roughness = 0 (savršeno glatko): sve mikrofasete su poravnate sa makroskopskom normalom površine. Rezultat je savršeno ogledalo -- incident light se reflektuje u jednom preciznom pravcu.
-
Roughness = 0.5 (srednje hrapavo): mikrofasete su delimično raspršene. Specularni highlight postoji, ali je raširen i blaži. Pomislite na brušeni metal ili poliranu plastiku.
-
Roughness = 1 (maksimalno hrapavo): mikrofasete su potpuno haotično raspoređene. Specularni highlight je toliko raširen da je praktično nevidljiv kao distinktna refleksija. Pomislite na kredu ili neobrađeni beton.
Statistička distribucija
Matematički, ne modeliramo svaku pojedinačnu mikrofasetu (to bi bilo nemoguće -- ima ih milionima na svakom pikselu). Umesto toga, koristimo statističku distribuciju koja opisuje verovatnoću da mikrofaseta na datoj tački površine ima određenu orijentaciju.
Ova distribucija se naziva Normal Distribution Function (NDF) -- ne mešati sa Gausovom normalnom distribucijom iz statistike! U kontekstu PBR-a, NDF opisuje kako su normale mikrofaseta raspoređene oko makroskopske normale površine.
NDF: GGX/Trowbridge-Reitz
U industriji se koristi nekoliko različitih NDF modela, ali daleko najrašireniji je GGX (poznat i kao Trowbridge-Reitz distribucija). Unreal Engine 5 koristi upravo GGX kao default.
Matematička formulacija GGX NDF-a:
α²
D(h) = ─────────────────────────
π ((n·h)²(α² - 1) + 1)²
Gde je:
- h -- halfway vektor između vektora svetla (L) i vektora pogleda (V):
h = normalize(L + V) - n -- normala površine
- α -- roughness parametar (α = roughness²; UE5 koristi remap gde je perceptualni roughness zapravo α)
- n·h -- dot product normale i halfway vektora
Zašto baš GGX?
GGX je pobedio konkurenciju iz nekoliko razloga:
-
Duži "rep" distribucije. U poređenju sa starijim modelima (Blinn-Phong, Beckmann), GGX ima širi, postepniji pad specularnog highlight-a. Ovo bolje odgovara realnim merenjima -- specularni highlight na većini materijala nema oštar prekid, već postepeno bledi.
-
Vizualno ubedljivije. GGX highlight-i izgledaju prirodnije ljudskom oku, posebno na srednjim roughness vrednostima (0.3--0.7) gde je razlika najuočljivija.
-
Efikasan za računanje. Uprkos boljim rezultatima, GGX nije značajno skuplji za izračunavanje od jednostavnijih modela.
-
Industrijski standard. Koriste ga praktično svi moderni engine-i i offline rendereri, što znači da materijali izgledaju konzistentno između različitih alata (Substance, Blender, Maya, UE5...).
Efekat samozaklanjanja (Self-Shadowing)
Mikrofasete ne postoje u vakuumu -- one su fizički deo površine i međusobno interaguju. Na hrapavijim površinama, mikrofasete mogu:
- Zaklanjati (shadowing) -- mikrofaseta blokira svetlost koja pokušava da dospe do susedne mikrofasete
- Maskirati (masking) -- mikrofaseta blokira reflektovanu svetlost susedne mikrofasete pre nego što stigne do posmatrača
Ovi efekti su posebno izraženi pri grazing uglovima (kada posmatrač ili svetlo gledate površinu pod veoma malim uglom). Geometry function (G) u Cook-Torrance BRDF-u modelira upravo ove efekte, ali o tome detaljnije u narednom odeljku.
Vizualna intuicija za mikrofasete
Zamislite sledeći eksperiment: uzmite hiljadu malih ogledalca i rasporedite ih na ravnoj ploči.
Scenario A (Roughness ≈ 0): Sva ogledalca leže potpuno ravno. Kada obasjate ploču usmerenim svetlom, vidite jednu jasnu refleksiju -- praktično savršeno ogledalo.
Scenario B (Roughness ≈ 0.3): Svako ogledalce je malo nagnuto u nasumičnom pravcu, ali nikada više od ~15 stepeni od horizontale. Refleksija postoji, ali je blago raspršena -- vidite sjajnu tačku umesto oštre refleksije.
Scenario C (Roughness ≈ 0.7): Ogledalca su značajno nagnuta, mnoga i do 45+ stepeni. Refleksija je veoma raspršena -- svetlost se rasipa u širokom opsegu pravaca.
Scenario D (Roughness ≈ 1.0): Ogledalca su potpuno haotično raspoređena. Refleksija je toliko raspršena da ne možete identifikovati nikakav specularni highlight -- izgleda kao da površina jednako reflektuje u svim pravcima (što je zapravo definicija difuzne refleksije).
Ova mentalna slika je suština microfacet teorije -- i jedna od najelegantnijih ideja u computer graphics-u.
Cook-Torrance BRDF
Kontekst
U poglavlju 10 smo detaljno objasnili šta je BRDF (Bidirectional Reflectance Distribution Function) i kako se koristi u rendering jednačini. Sada ćemo se fokusirati na konkretni BRDF model koji Unreal Engine 5 koristi za specularnu komponentu PBR osvetljenja: Cook-Torrance BRDF.
Cook-Torrance model, originalno predstavljen 1982. godine, ostaje -- uz različite modifikacije i unapređenja -- standard u real-time PBR renderovanju. Njegov uspeh leži u tome što elegantno kombinuje tri fizička fenomena u jedan koherentni matematički model.
Kompletni PBR BRDF
Pre nego što uđemo u detalje Cook-Torrance modela, važno je razumeti celokupnu strukturu PBR BRDF-a. Kompletni BRDF se deli na dve komponente:
f(l, v) = f_diffuse + f_specular
Diffuse komponenta -- modelira svetlost koja ulazi u površinu, rasipa se unutar materijala, i izlazi nazad. Za ovu komponentu UE5 koristi modifikovani Lambertian model:
f_diffuse = c_base / π
gde je c_base bazna boja materijala (Base Color). Faktor 1/π obezbeđuje korektnu normalizaciju energije.
Specular komponenta -- modelira svetlost koja se direktno reflektuje od površine mikrofaseta. Ovo je Cook-Torrance deo.
Cook-Torrance formula
Specularni deo BRDF-a definisan je kao:
D(h) · F(v, h) · G(l, v, h)
f_specular = ─────────────────────────────────
4 · (n · l) · (n · v)
Gde je:
- D(h) -- Normal Distribution Function (NDF) -- distribucija mikrofaseta
- F(v, h) -- Fresnel term -- zavisnost reflektivnosti od ugla
- G(l, v, h) -- Geometry function -- samozaklanjanje mikrofaseta
- n · l -- dot product normale površine i vektora svetla
- n · v -- dot product normale površine i vektora pogleda
- h -- halfway vektor:
h = normalize(l + v) - Imenilac 4(n·l)(n·v) -- korekcioni faktor koji kompenzuje razliku između mikroskopskog i makroskopskog ugla refleksije
Svaki od tri člana u brojiocu ima specifičnu fizičku ulogu. Razmotrimo ih redom.
D -- Normal Distribution Function (NDF)
NDF smo već detaljno objasnili u prethodnom odeljku. U kontekstu Cook-Torrance formule, D(h) odgovara na pitanje:
"Koliki procenat mikrofaseta na ovoj tački površine ima normalu poravnatu sa halfway vektorom h?"
Zašto halfway vektor? Zato što samo mikrofasete čija normala tačno odgovara halfway vektoru mogu reflektovati svetlo iz pravca L u pravac V. Sve ostale mikrofasete doprinose refleksiji u nekom drugom pravcu.
Ponavljamo GGX formulu za kompletnost:
α²
D(h) = ─────────────────────────
π ((n·h)²(α² - 1) + 1)²
Uticaj na vizualni rezultat: D kontroliše oblik i veličinu specularnog highlight-a. Nizak roughness daje mali, koncentrisani highlight. Visok roughness daje širok, difuzan highlight.
Grafički prikaz uticaja D na specularni highlight:
Roughness 0.0: * (tačkast, izuzetno jak)
Roughness 0.2: *** (mali krug, jak)
Roughness 0.5: ***** (srednji krug, umeren)
Roughness 0.8: ********* (veliki krug, slab)
Roughness 1.0: *********** (praktično nevidljiv kao diskretni highlight)
F -- Fresnel Term
Fresnel efekat opisuje fundamentalno svojstvo elektromagnetnog zračenja: količina svetlosti koja se reflektuje sa površine zavisi od ugla pod kojim svetlost pada na površinu.
Fresnelov zakon je tačan, ali kompleksan za izračunavanje (uključuje polarizaciju, kompleksne indekse prelamanja...). Za real-time rendering koristimo Schlick-ovu aproksimaciju:
F(v, h) = F0 + (1 - F0) · (1 - v·h)⁵
Gde je:
- F0 -- reflektivnost pri normalnom uglu upada (θ = 0°, svetlost pada direktno na površinu). Ovo je "bazna reflektivnost" materijala.
- v·h -- kosinus ugla između vektora pogleda i halfway vektora (koji je ekvivalentan uglu upada na mikrofasetu)
O Fresnel efektu ćemo mnogo detaljnije govoriti u posebnom odeljku. Za sada, bitno je razumeti da F kontroliše koliko svetlosti se reflektuje vs. koliko prolazi u materijal, i da ta količina zavisi od ugla posmatranja.
Uticaj na vizualni rezultat: F je razlog zašto vidite refleksije na ivicama objekata -- čak i mat površine postaju reflektivne pri grazing uglovima. Ovo je posebno uočljivo na vodi, staklu, lakiranim površinama.
G -- Geometry Function (Shadowing-Masking)
Geometry function modelira dva fizička fenomena koja nastaju zbog mikrogeometrije površine:
- Shadowing -- mikrofaseta je u senci jer je susedna mikrofaseta blokira od izvora svetlosti
- Masking -- mikrofaseta reflektuje svetlo, ali reflektovano svetlo ne može da stigne do posmatrača jer ga blokira susedna mikrofaseta
UE5 koristi Smith model za G, specifično formulaciju poznatu kao "Smith Joint GGX" (ili "Height-Correlated Smith GGX"):
G(l, v) = G₁(l) · G₁(v)
gde je svaki faktor:
2(n · x)
G₁(x) = ─────────────────────────────────────
(n · x) + √(α² + (1 - α²)(n · x)²)
(x je ili l ili v)
Nešto optimizovanija varijanta koju UE5 zapravo koristi je Schlick-GGX aproksimacija, gde se α remapira kao:
k = (roughness + 1)² / 8 (za direktno osvetljenje)
k = roughness² / 2 (za IBL)
n · x
G₁(x) = ────────────────
(n · x)(1 - k) + k
Uticaj na vizualni rezultat: G sprečava da ivice objekata "eksplodiraju" u prejakom specularnom sjaju. Bez G, pri grazing uglovima bi Fresnel term proizveo nerealno jake refleksije, jer ne bi bio uračunat gubitak svetla usled samozaklanjanja mikrofaseta. G takođe obezbeđuje da hrapavije površine budu ukupno tamnije pri grazing uglovima, što je fizički korektno ponašanje.
Imenilac: 4(n·l)(n·v)
Ovaj faktor nije arbitraran -- on je matematički neophodan za korektnu transformaciju između mikroskopskog i makroskopskog merenja refleksije.
Intuitivno: NDF nam daje distribuciju mikrofaseta, ali mi renderujemo makroskopsku površinu. Projekcija mikrofaseta na makroskopsku ravan zahteva korekcioni faktor koji zavisi od uglova upada (n·l) i posmatranja (n·v).
Bez ovog imenioca, BRDF ne bi bio energetski konzistentan -- ukupna reflektovana energija bi zavisila od pravca posmatranja na fizički nesmislen način.
Kombinovani efekat
Lepota Cook-Torrance modela je u tome kako tri komponente sarađuju:
| Situacija | D | F | G | Rezultat |
|---|---|---|---|---|
| Nizak roughness, normalan ugao | Visok | Nizak (F0) | Visok (~1) | Jak, oštar specular |
| Nizak roughness, grazing ugao | Nizak | Visok (~1) | Nizak | Umeren specular (G kompenzuje F) |
| Visok roughness, normalan ugao | Nizak i širok | Nizak (F0) | Visok (~1) | Slab, raširen specular |
| Visok roughness, grazing ugao | Vrlo nizak | Visok (~1) | Vrlo nizak | Gotovo ništa (G dominira) |
Ovakvo ponašanje tačno odgovara realnim merenjima materijala, što je potvrda fizičke korektnosti modela.
Napomena o implementaciji u UE5
UE5 koristi određene optimizacije i varijacije u odnosu na "udžbeničku" Cook-Torrance formulu:
- NDF koristi GGX/Trowbridge-Reitz
- Fresnel koristi Schlick aproksimaciju
- Geometry koristi Smith GGX sa Schlick aproksimacijom
- Roughness se interno remapira:
α = roughness² - Postoji posebna obrada za "specular" parametar koji skalira F0 za dielektrike
- Za difuzni term koristi se Disney diffuse model umesto čistog Lambertian-a
Za većinu artista, ovi implementacioni detalji nisu bitni za svakodnevni rad -- ali su apsolutno ključni ako želite da razumete zašto vaši materijali izgledaju kako izgledaju, ili ako trebate da debugujete neočekivano ponašanje.
Fresnel efekat
Fizička pozadina
Augustin-Jean Fresnel je početkom 19. veka formulisao jednačine koje opisuju kako se elektromagnetni talasi (uključujući vidljivu svetlost) ponašaju na granici dva medijuma sa različitim indeksima prelamanja.
Ključni zaključak je iznenađujuće intuitivan kada ga jednom razumete:
Što je ugao pod kojim svetlost pada na površinu manji (bliži grazing uglu), to se više svetlosti reflektuje umesto da prodire u materijal.
Ovo je nešto što svi svakodnevno opažamo, ali retko svesno registrujemo:
-
Voda u jezeru: Pogledajte pravo nadole u vodu -- vidite dno. Pogledajte pod malim uglom prema horizontu -- vidite savršenu refleksiju neba i oblaka. Ista voda, dramatično drugačiji izgled, samo zato što ste promenili ugao posmatranja.
-
Asfalt na putu: Pogledajte asfalt pod nogama -- mat, tamnosivi. Pogledajte asfalt u daljini pod malim uglom -- ima sjajni odsjaj, posebno kad je mokar.
-
Staklo izloga: Stojite direktno ispred -- vidite unutrašnjost prodavnice. Pomerite se u stranu i gledate pod uglom -- vidite sve više refleksije ulice.
Matematika: tačne Fresnel jednačine
Tačne Fresnel jednačine razlikuju s-polarizovanu i p-polarizovanu komponentu svetlosti:
n₁ cos θᵢ - n₂ cos θₜ
Rs = (─────────────────────────)²
n₁ cos θᵢ + n₂ cos θₜ
n₁ cos θₜ - n₂ cos θᵢ
Rp = (─────────────────────────)²
n₁ cos θₜ + n₂ cos θᵢ
Za nepolarizovanu svetlost:
F = (Rs + Rp) / 2
Gde je:
- n₁, n₂ -- indeksi prelamanja dva medijuma
- θᵢ -- ugao upada
- θₜ -- ugao prelamanja (Snell-ov zakon: n₁ sin θᵢ = n₂ sin θₜ)
Za metale, situacija je dodatno komplikovana jer je indeks prelamanja kompleksan broj (ima realnu i imaginarnu komponentu, gde imaginarna komponenta predstavlja apsorpciju svetlosti).
Schlick aproksimacija
Pošto su tačne Fresnel jednačine skupe za izračunavanje u real-time-u (posebno za metale), Christophe Schlick je 1994. predložio elegantnu aproksimaciju koja daje izvanredne rezultate:
F(θ) = F0 + (1 - F0)(1 - cos θ)⁵
Gde je:
- F0 -- reflektivnost pri normalnom uglu upada (θ = 0°)
- θ -- ugao između vektora pogleda i normale (ili, preciznije u Cook-Torrance kontekstu, između vektora pogleda i halfway vektora)
- cos θ -- se računa kao dot product
v · hiliv · n, zavisno od konteksta
Zašto eksponent 5?
Schlick je eksperimentalno utvrdio da stepen 5 daje najbolji kompromis između tačnosti i jednostavnosti za većinu realnih materijala. Zanimljivo, neki engine-i koriste stepen koji nije tačno 5 za specifične materijale, ali za generalni slučaj, 5 je odličan izbor i praktično industrijski standard.
F0 -- bazna reflektivnost
F0 (čita se "F-nula" ili "F-zero") je jedan od najvažnijih koncepata u PBR-u. Predstavlja koliki procenat svetlosti površina reflektuje kada svetlost pada potpuno normalno (pod uglom od 90° u odnosu na površinu, ili 0° u odnosu na normalu).
F0 vrednosti za uobičajene materijale
| Materijal | F0 (linearna vrednost) | F0 (sRGB priblizno) |
|---|---|---|
| Voda | 0.02 | 0.15 |
| Plastika / Staklo | 0.04 | 0.22 |
| Drvo | 0.04 | 0.22 |
| Koža (skin) | 0.028 | 0.18 |
| Dijamant | 0.17 | 0.45 |
| Gvožđe (Iron) | 0.56 | 0.77 |
| Bakar (Copper) | (0.95, 0.64, 0.54) | (0.98, 0.82, 0.76) |
| Zlato (Gold) | (1.00, 0.71, 0.29) | (1.00, 0.86, 0.57) |
| Aluminijum | (0.91, 0.92, 0.92) | (0.96, 0.96, 0.96) |
| Srebro (Silver) | (0.95, 0.93, 0.88) | (0.98, 0.97, 0.95) |
| Titan (Titanium) | (0.54, 0.50, 0.44) | (0.76, 0.73, 0.69) |
Ključno zapažanje za dielektrike: Gotovo svi nemetalni materijali imaju F0 oko 0.02 -- 0.05 (2% do 5%). Ovo je razlog zašto UE5 defaultno koristi F0 = 0.04 za dielektrike i zašto specular parametar u UE5 materijalu retko treba menjati sa defaultne vrednosti od 0.5 (što mapira na F0 = 0.04).
Ključno zapažanje za metale: Metali imaju dramatično viši F0, tipično 0.5 -- 1.0. Štaviše, F0 za metale je obojeno -- zlato reflektuje više crvene i zelene nego plave svetlosti, što mu daje karakterističnu zlatnu boju. Ovo je fundamentalna razlika između metala i dielektrika u PBR-u.
Vizualni uticaj Fresnel efekta
Fresnel efekat je jedan od onih "nevidljivih" detalja koji dramatično doprinose realizmu scene. Bez njega:
- Sfere bi izgledale "ravno" i dvodimenzionalno
- Voda bi izgledala neprirodna -- ne biste videli refleksije pri grazing uglu
- Lakirane površine ne bi imale karakteristični sjaj na ivicama
- Materijali bi generalno izgledali "plastično" i neubedljivo
Jedan od najčešćih znakova nekorektnog PBR-a je upravo odsustvo ili prekomerni Fresnel efekat. Ako vaš materijal izgleda "ravno" čak i na zakrivljenim površinama, proverite da li je Fresnel pravilno implementiran. Ako ivice objekata "svetle" previše, možda imate prevelik specular parametar.
Fresnel u UE5
U UE5 Material Editor-u, Fresnel efekat je automatski uračunat u PBR shader -- ne morate ga ručno dodavati. Specular parametar materijala kontroliše skaliranje F0 za dielektrike:
F0_actual = 0.08 * Specular
Sa defaultnim Specular = 0.5:
F0_actual = 0.08 * 0.5 = 0.04
Što odgovara tipičnom dielektriku (plastika, staklo, drvo...).
Za metale, F0 dolazi direktno iz Base Color parametra -- o tome više u odeljku o Metalness-u.
Roughness -- hrapavost površine
Šta roughness zapravo kontroliše
Roughness je verovatno najintuitivniji parametar u PBR-u. Kontroliše koliko je površina "hrapava" na mikroskopskom nivou, što se vizualno manifestuje kao:
- Veličina i oštrina specularnog highlight-a -- glatke površine imaju mali, oštar highlight; hrapave površine imaju veliki, raspršeni highlight
- Jasnost refleksija okruženja -- glatke površine daju jasne refleksije (kao ogledalo); hrapave površine daju zamućene refleksije
- Ukupan "sjaj" materijala -- glatke površine izgledaju sjajno; hrapave izgledaju mat
Roughness skala
0.0 ──────── 0.25 ──────── 0.5 ──────── 0.75 ──────── 1.0
│ │ │ │ │
Savršeno Polirani Brušeni Hrapav Potpuno
ogledalo metal metal/sjaj beton/drvo mat
sjajni plastika tkanina kreda
automobil koža
Primeri materijala po roughness vrednosti
| Roughness | Materijali | Vizualni opis |
|---|---|---|
| 0.0 -- 0.1 | Ogledalo, hrom, mirna voda | Savršena ili gotovo savršena refleksija |
| 0.1 -- 0.3 | Poliran metal, lak automobila, glazirana keramika | Jasne refleksije sa blagim blurring-om |
| 0.3 -- 0.5 | Plastika, polirano drvo, koža | Vidljiv specular ali raspršen |
| 0.5 -- 0.7 | Neobrađeno drvo, beton, opeka | Slab specular, dominantno diffuse |
| 0.7 -- 0.9 | Tkanina, guma, kreda | Praktično čist diffuse izgled |
| 0.9 -- 1.0 | Pesak, prah, neobrađena glina | Potpuno mat, nema vidljivog speculara |
Roughness vs Glossiness
U nekim engine-ima i alatima (npr. Substance Painter podržava oba), srešćete termin Glossiness umesto Roughness. Veza je trivijalna:
Glossiness = 1 - Roughness
Roughness = 1 - Glossiness
To je bukvalno samo invertovana skala:
- Roughness 0 = Glossiness 1 (savršeno glatko)
- Roughness 1 = Glossiness 0 (maksimalno hrapavo)
UE5 koristi Roughness konvenciju. Ako importujete Glossiness mape iz drugog alata, morate ih invertovati (node OneMinus u Material Editor-u ili direktna inverzija u Photoshop-u/GIMP-u).
Roughness mape
U praksi, materijali nemaju uniforman roughness na celoj površini. Roughness mapa (pogledajte poglavlje 5 za detalje o teksturama) je grayscale tekstura gde:
- Beli pikseli (1.0) = maksimalna hrapavost
- Crni pikseli (0.0) = minimalna hrapavost (savršeno glatko)
- Sivi pikseli = srednje vrednosti
Primeri varijacija roughness-a na jednom materijalu:
- Čelik sa ogrebotinama: bazni roughness ~0.3 (polirani čelik), ogrebotine ~0.6-0.8 (gde je lak oštećen, metal je hrapav)
- Staro drvo: glatke, izlizane zone ~0.4, pukotine i neobrađene zone ~0.8
- Mokra opeka: suve zone ~0.7, mokre zone ~0.2 (voda popunjava mikroreljef, čineći površinu efektivno glatkijom)
Veza roughness-a i microfacet distribucije
Matematički, roughness direktno kontroliše parametar α u GGX NDF-u:
α = roughness²
Ovaj kvadratni remap nije arbitraran -- on obezbeđuje da perceptualna promena roughness-a bude linearnija. Bez remapiranja, razlika između roughness 0.0 i 0.1 bi bila dramatično veća nego razlika između 0.9 i 1.0, što bi bilo neintuitvno za artiste.
Sa α² remapiranjem:
- roughness 0.0 → α = 0.0 (svi mikrofaseti savršeno poravnati)
- roughness 0.5 → α = 0.25 (umerena distribucija)
- roughness 1.0 → α = 1.0 (maksimalna distribucija)
Česte greške sa roughness-om
-
Uniforman roughness na celom objektu. Realni materijali gotovo nikada nemaju uniforman roughness. Dodajte varijacije!
-
Previsok roughness za reflektivne materijale. Čest polirani metal ima roughness 0.1-0.3, ne 0.5+.
-
Roughness 0.0 svuda. Savršeno ogledalo ne postoji u realnosti. Koristite 0.0 samo za ogledala i hromirana ogledala; za većinu "glatkih" materijala koristite bar 0.05-0.1.
-
Zaboravljanje da voda smanjuje roughness. Mokre površine imaju niži roughness nego suve verzije istog materijala (voda popunjava mikropukotine).
Metalness -- metalni karakter
Fundamentalna razlika metala i nemetala
Metalness parametar izgleda jednostavno -- slider od 0 do 1 -- ali iza njega leži jedna od najvažnijih fizičkih distinkcija u nauci o materijalima.
Na atomskom nivou, metali i dielektrici (nemetali) interaguju sa svetlošću na fundamentalno različite načine:
Metali imaju slobodne elektrone koji mogu da apsorbuju i re-emituju fotone svetlosti. Ovo znači:
- Svetlost ne prodire u metal dalje od nekoliko nanometara
- Sva interakcija se dešava na samoj površini
- Reflektovana svetlost je obojena bojom metala (slobodni elektroni selektivno apsorbuju određene talasne dužine)
- Nema difuzne refleksije -- svetlost ili se reflektuje spekulrno, ili se apsorbuje
Dielektrici (nemetali -- plastika, drvo, kamen, koža, staklo...) nemaju slobodne elektrone u ovom smislu:
- Deo svetlosti se reflektuje sa površine (spekularna refleksija) -- ovo je uvek belo (neobojeno), jer se refleksija dešava na granici medijuma bez selektivne apsorpcije
- Ostatak svetlosti prodire u materijal, gde se rasipa (scatter) na mikroskopskim nehomogenostima
- Nakon višestrukog rasipanja, deo svetlosti izlazi nazad iz površine -- ovo je difuzna refleksija, i ona JESTE obojena, jer su različite talasne dužine različito apsorbovane unutar materijala
- Boja dielektrika dolazi od difuzne, ne od spekularne komponente
Kako Metalness kontroliše shader
U PBR sistemu sa Metal/Roughness workflow-om, Metalness parametar funkcioniše kao prekidač koji fundamentalno menja kako shader interpretira Base Color:
Kada je Metalness = 0 (dielektrik):
- Base Color → koristi se kao difuzna boja (albedo)
- F0 → fiksna vrednost ~0.04 (tipični dielektrik)
- Spekularna refleksija je neobojeno bela
- Difuzna refleksija postoji i nosi boju materijala
Kada je Metalness = 1 (metal):
- Base Color → koristi se kao spekularna boja (F0)
- Difuzna komponenta → potpuno eliminisana (postavljena na crno/nula)
- F0 → jednako Base Color (zlatna bazna boja → zlatna refleksija)
- Spekularna refleksija je obojena baznom bojom
Za vrednosti između 0 i 1, shader linearno interpolira između ova dva ponašanja. Međutim...
Metalness je binarni parametar
Uprkos tome što je slider od 0 do 1, metalness u praksi treba da bude ili 0 ili 1. Nema materijala u prirodi koji je "50% metal". Materijal je ili metal, ili nije.
Jedini izuzetak je na granicama između metalnih i nemetalnih regiona u teksturi. Na primer, zarđali čelik: čist čelik je metal (metalness = 1), rđa je oksid (dielektrik, metalness = 0), a na granici postoji uska tranziciona zona gde metalness prolazi od 0 do 1 kroz par piksela. Ova tranzicija je posledica ograničene rezolucije teksture, ne fizičke realnosti.
Vrednosti poput 0.3 ili 0.7 za metalness su gotovo uvek greška. One proizvode materijal koji ne odgovara nijednom realnom materijalu -- previše spekularan za dielektrik, ali sa nefizičkom difuznom komponentom za metal.
Vizualna posledica pogrešnog metalness-a
Jedan od najčešćih vizualnih artefakata u PBR-u nastaje kada metal ima metalness < 1:
Zamislite zlato sa metalness 0.5:
- Polovina bazne boje ide u difuznu komponentu → zlatna difuzna boja
- Polovina bazne boje ide u F0 → zlatna spekularna refleksija
- F0 je samo polovina pune zlatne vrednosti → refleksije su slabije i bledže
- Difuzna komponenta postoji ali ne bi trebalo → materijal izgleda kao "zlatna plastika"
Rezultat je materijal koji izgleda "čudno" i "jeftino" -- nije dovoljno reflektivan da izgleda kao pravi metal, ali ima čudnu obojenu difuznu komponentu koja ne odgovara nijednom realnom materijalu.
Base Color smernice za metale vs dielektrike
Za dielektrike:
- Base Color predstavlja albedo (difuznu boju)
- Vrednosti treba da budu u opsegu 30-240 (sRGB), odnosno 0.02-0.9 (linearno)
- Nikad potpuno crno (0, 0, 0) -- čak i ugalj reflektuje ~4% svetla
- Nikad potpuno belo (255, 255, 255) -- nijedan realan materijal ne reflektuje 100% svetla difuzno
- Ovo su sRGB vrednosti reflektovanog svetla, i treba da odgovaraju merenim vrednostima realnih materijala
Za metale:
- Base Color predstavlja spekulrnu reflektivnost (F0)
- Vrednosti treba da budu u opsegu 180-255 (sRGB), odnosno 0.5-1.0 (linearno)
- Nikad ispod 180 sRGB -- ne postoje metali sa tako niskom reflektivnošću
- Vrednosti ne moraju biti achromatske (gvožđe je skoro sivo, bakar je narandžasto-crvenkast, zlato je žuto)
- Konsultujte referentne tabele za F0 vrednosti poznatih metala
Metalness mape u praksi
Metalness mapa je grayscale tekstura gde:
- Belo (1.0) = potpuno metalan
- Crno (0.0) = potpuno dielektrik
- Sivo = tranziciona zona (samo na granicama!)
Tipični primeri:
- Čist čelik: potpuno bela metalness mapa
- Zarđali čelik: bela gde je čelik čist, crna gde je rđa, uska siva tranzicija
- Farbani metal: crna gde je farba (farba je dielektrik!), bela samo gde je farba oštećena i metal proviruje
- Drvo sa metalnim ekserima: crna svuda osim na ekserima
Konzervacija energije
Fundamentalni zakon
Konzervacija energije je jedan od najosnovnijih zakona fizike, i u kontekstu renderovanja kaže:
Površina ne može reflektovati više svetla nego što prima.
Ovo zvuči očigledno, ali pre PBR-a, ovo pravilo je rutinski kršeno u real-time renderovanju. Artist bi mogao postaviti jak diffuse i jak specular, i materijal bi "emitovao" više svetlosne energije nego što prima. Rezultat je bio preosvetljena scena koja je izgledala nerealno.
Kako PBR obezbeđuje konzervaciju energije
U PBR-u, konzervacija energije se obezbeđuje na dva nivoa:
1. Difuzno-spekulrna ravnoteža
Za svaki foton koji pogodi površinu, postoje samo dve mogućnosti:
- Reflektuje se spekulrno (ostaje na površini)
- Ulazi u materijal (gde se ili apsorbuje ili izlazi kao difuzna refleksija)
Ovo znači:
k_diffuse + k_specular ≤ 1
U praksi, Fresnel jednačina nam daje koliko svetla se spekulrno reflektuje (F), a ostatak (1 - F) ulazi u materijal za potencijalnu difuznu refleksiju:
diffuse_contribution = (1 - F) * base_color / π
specular_contribution = Cook-Torrance BRDF
Faktor (1 - F) ispred difuzne komponente je ključan -- on automatski smanjuje difuzni doprinos kako se spekulrna refleksija povećava (npr. pri grazing uglovima, gde Fresnel daje visoku reflektivnost, difuzna komponenta se proporcionalno smanjuje).
Za metale, ovaj mehanizam prirodno eliminiše difuznu komponentu: pošto metali imaju F0 blizu 1.0, faktor (1 - F) je blizu nule za sve uglove.
2. Roughness i intenzitet highlight-a
Kada povećavate roughness, specularni highlight se širi na veću površinu. Ali -- i ovo je ključno -- ukupna količina reflektovane specularme energije ostaje ista. To znači da se energija "razmazuje" na veću površinu, pa je svaka tačka unutar highlight-a slabija.
Matematički, NDF je normalizovana tako da integral preko cele hemisfere daje konstantnu vrednost:
∫ D(h) (n·h) dω = 1 (za svaki roughness)
Ovo znači:
- Nizak roughness: highlight je mali ali veoma intenzivan (energija je koncentrisana)
- Visok roughness: highlight je veliki ali slab (energija je raspršena)
Ukupna energija je ista u oba slučaja -- samo je distribucija drugačija.
Vizualna demonstracija
Zamislite niz sfera istog materijala sa roughness-om od 0.0 do 1.0:
Roughness: 0.0 0.2 0.4 0.6 0.8 1.0
Specular: * .** ..*. .... ..... .......
(*) (..*.) (..**.) (.....) (.....) (.......)
* .** ..*. .... ..... .......
Intenzitet: ■■■■ ■■■ ■■ ■ ▪ ·
- Roughness 0.0: sićušan ali blještav highlight (gotovo savršena refleksija)
- Roughness 1.0: ogroman ali jedva vidljiv highlight (praktično difuzno ponašanje)
U oba slučaja, ako integralite intenzitet preko cele površine highlight-a, dobili biste istu ukupnu energiju. Ovo je konzervacija energije na delu.
Česta greška: kršenje konzervacije u custom shader-ima
Ako pravite custom shading modele u UE5 (pogledajte Custom Shading Model dokumentaciju), morate ručno obezbediti konzervaciju energije. UE5-ov default PBR shader to radi automatski, ali custom shaderi nemaju tu garanciju.
Simptomi kršenja konzervacije energije:
- Materijal izgleda "previše sjajno" ili "svetli sam od sebe"
- Povećavanje roughness-a ne smanjuje ukupan sjaj, samo ga širi
- Scena izgleda "preosvetljeno" čak i sa fizički korektnim svetlosnim izvorima
Specular vs Diffuse refleksija
Fizička osnova
Da bismo istinski razumeli PBR, moramo razumeti šta se fizički dešava kada svetlost pogodi površinu. Postoje dva fundamentalno različita procesa:
Specular (površinska) refleksija
Specularma refleksija se dešava na samoj površini materijala -- tačnije, na granici između dva medijuma (npr. vazduh-staklo, vazduh-metal).
Fizički proces:
- Foton dolazi do granice dva medijuma
- Elektromagnetno polje fotona interaguje sa elektronima na površini
- Foton se "odbija" nazad -- menja pravac ali ostaje u istom medijumu
- Pravac refleksije zavisi od normale mikrofasete na mestu udara
Ključne karakteristike specularme refleksije:
- Dešava se na površini -- svetlost ne ulazi u materijal
- Zavisi od ugla -- Fresnel efekat, ugao refleksije = ugao upada (zakon refleksije)
- Za dielektrike je neobojeno bela -- refleksija ne menja talasnu dužinu svetlosti
- Za metale je obojena -- slobodni elektroni selektivno apsorbuju određene frekvencije
- Kontrolisana roughness-om -- oblik i oštrina refleksije zavise od mikrogeometrije
Diffuse (podpovršinska) refleksija
Difuzna refleksija je dramatično drugačiji proces:
- Foton prolazi kroz površinu i ulazi u materijal
- Unutar materijala, foton nailazi na mikroskopske nehomogenosti (pigmente, vazdušne mehuriće, kristalne granice...)
- Na svakoj nehomogenosti, foton menja pravac -- "rasipa" se
- Nakon višestrukog rasipanja, neki fotoni izlaze nazad iz površine
- Izlazni pravac je praktično nasumičan (nezavisan od upadnog pravca)
Ključne karakteristike difuzne refleksije:
- Dešava se unutar materijala -- svetlost ulazi, rasipa se, izlazi
- Pravac izlaza je nezavisan od pravca ulaza -- zato difuzna refleksija izgleda jednako iz svih uglova posmatranja (Lambertian ponašanje)
- Uvek je obojena -- različite talasne dužine se različito apsorbuju unutar materijala, što daje boju
- Ne postoji za metale -- svetlost ne prodire u metal, pa nema šta da se rasipa
- Tačka izlaza je blizu tačke ulaza -- za većinu materijala, svetlost izlazi u okviru par piksela od mesta ulaza (za translucent materijale ovo rastojanje je veće -- to je Subsurface Scattering, koji ćemo pokriti u posebnom poglavlju)
Zašto je drvo braon?
Ovaj primer savršeno ilustruje razliku:
- Bela svetlost (sadrži sve talasne dužine) pada na drvenu površinu
- ~4% svetlosti se spekulrno reflektuje sa površine → beli specular highlight (neobojeno)
- ~96% svetlosti ulazi u drvo
- Unutar drveta, plavi i zeleni fotoni se pretežno apsorbuju od strane hemijskih jedinjenja u drvetu (lignin, celuloza)
- Crveni i žuti fotoni preživljavaju rasipanje i izlaze nazad → braon difuzna boja
Dakle: specular highlight na drvetu je beo (kao na svim dielektricima), a difuzna boja je braon. Oba procesa se dešavaju istovremeno, na istoj površini.
Zašto je zlato zlatno?
Za metal, priča je drugačija:
- Bela svetlost pada na zlatnu površinu
- Svetlost interaguje sa slobodnim elektronima na površini zlata
- Plavi fotoni se pretežno apsorbuju (slobodni elektroni zlata efikasno apsorbuju visoke frekvencije)
- Crveni i žuti fotoni se reflektuju → zlatna spekularna refleksija
- Nema difuzne komponente -- svetlost ne prodire u metal
Dakle: zlato ima obojenu specularnu refleksiju i nema difuznu refleksiju. Boja zlata dolazi isključivo od selektivne specularme refleksije.
Dijagram oba procesa
SPECULAR REFLEKSIJA (dielektrik):
svetlo ↓ ↑ reflektovano (~4%)
\ /
--------\-------/--------- ← površina
\ /
(odbija se na površini, ne ulazi)
DIFUZNA REFLEKSIJA (dielektrik):
svetlo ↓ ↑ difuzno (~96% minus apsorpcija)
\ /
--------\-----------------/--------- ← površina
\ scatter /
→ ○ → ○ → ○ → ← višestruko rasipanje unutar materijala
↓ ○ ↑ ← (neki fotoni se apsorbuju → boja)
METAL (samo specular):
svetlo ↓ ↑ reflektovano (60-95%, obojeno)
\ /
--------\-------/--------- ← površina
\ /
(odbija se, ne ulazi; boja od selektivne apsorpcije)
xxxxxxxxx ← svetlost ne prodire dalje od ~nm
Dielektrici vs Metali
Detaljna poređenja
Sada kada razumemo fiziku iza specularme i difuzne refleksije, možemo napraviti sveobuhvatan pregled razlika između metala i dielektrika:
| Svojstvo | Dielektrici | Metali |
|---|---|---|
| Primeri | Plastika, drvo, kamen, koža, staklo, voda, tkanina, keramika | Gvožđe, bakar, zlato, srebro, aluminijum, titan, hrom |
| Difuzna refleksija | DA -- ovo je primarni izvor boje | NE -- ne postoji |
| Spekularna refleksija | DA -- ali slaba pri normalnom uglu (~2-5%) | DA -- i to je jedini tip refleksije (50-100%) |
| Boja speculara | Bela (neobojeno) | Obojena (boja metala) |
| Izvor boje | Difuzna refleksija (selektivna apsorpcija unutar materijala) | Spekulrna refleksija (selektivna apsorpcija na površini) |
| F0 (reflektivnost pri 0°) | 0.02 -- 0.05 (nizak) | 0.5 -- 1.0 (visok) |
| F0 boja | Monohromatska (ista za R, G, B) | Može biti obojeno (različite vrednosti za R, G, B) |
| Fresnel efekat | Dramatičan (od ~4% do ~100%) | Prisutan ali manje izražen (od ~70% do ~100%) |
| Base Color u PBR-u | Albedo (difuzna boja) | F0 (spekularna reflektivnost) |
| Metalness | 0 | 1 |
| Provodljivost | Električni izolator | Električni provodnik |
| Indeks prelamanja | Realan broj (1.0 -- 2.5 tipično) | Kompleksan broj (ima apsorpcionu komponentu) |
Granični slučajevi i izuzeci
Kao i sve u fizici, postoje granični slučajevi koji ne padaju čisto u jednu kategoriju:
Poluprovodnici (silicijum, germanijum): Imaju svojstva između metala i dielektrika. U PBR-u ih obično tretiramo kao metale sa visokim roughness-om.
Oksidovani metali (rđa, patina): Oksid je dielektrik! Zarđali čelik treba da ima metalness = 0 na mestima gde je rđa. Ovo je česta greška -- artisti često ostavljaju metalness = 1 za ceo objekat, uključujući zarđale delove.
Farebni metali: Farba na metalu je dielektrik. Samo gde je farba oštećena i metal proviruje treba biti metalness = 1.
Staklo i dijamant: Iako imaju viši F0 od većine dielektrika, oni su i dalje dielektrici (metalness = 0). Njihova visoka reflektivnost se kontroliše specular parametrom, ne metalness-om.
Ugljenik u formi grafita: Tehnički provodnik, ali u praksi se renderuje kao dielektrik sa veoma tamnim base color-om.
Praktični test za identifikaciju
Kada niste sigurni da li je materijal metal ili dielektrik u kontekstu PBR-a, postavite sebi ovo pitanje:
"Da li ovaj materijal provodi električnu struju?"
Ako da → metal (metalness = 1) Ako ne → dielektrik (metalness = 0)
Ovo je pojednostavljen test koji radi u 99% slučajeva. Izuzetak su poluprovodnici i egzotični materijali, ali oni su retki u tipičnim game art scenama.
PBR workflow-ovi
Dva pristupa
U PBR industriji postoje dva ustaljeno korišćena workflow-a za definisanje materijala. Oba su fizički validna i mogu proizvesti identične rezultate -- razlikuju se u tome kako artist parametrizuje materijal.
Metal/Roughness workflow
Ovo je workflow koji UE5 koristi kao default, i koji je de facto standard u game industriji.
Parametri:
| Mapa/Parametar | Tip | Opis |
|---|---|---|
| Base Color | RGB | Albedo za dielektrike, F0 za metale |
| Metalness | Grayscale | 0 = dielektrik, 1 = metal |
| Roughness | Grayscale | 0 = savršeno glatko, 1 = potpuno hrapavo |
| Normal Map | RGB | Perturbacija normale površine |
Prednosti:
- Samo 3 teksture za kompletne materijale (Base Color, MetalRough, Normal)
- Metalness i Roughness se mogu spakivati u jednu teksturu (R = Metalness ili Ambient Occlusion, G = Roughness, ili obrnuto), što štedi memoriju
- Teže je napraviti fizički nekorektne materijale -- metalness je binarni prekidač, teško je "pogrešno podesiti" F0
- Intuitivniji za većinu artista
- Industrisjki standard (UE5, Unity, Godot, Blender/Eevee/Cycles...)
Mane:
- Manja kontrola nad specularnom refleksijom dielektrika (F0 je fiksiran na ~0.04 sa default specular = 0.5)
- Potencijalni artefakti na granicama metal/dielektrik u teksturi (gde metalness prelazi između 0 i 1)
- Base Color ima "dvostruku ulogu" (albedo za dielektrike, F0 za metale), što može biti konfuzno
Specular/Glossiness workflow
Alternativni workflow koji je bio popularniji u ranijim PBR implementacijama i koji neki alati još uvek podržavaju.
Parametri:
| Mapa/Parametar | Tip | Opis |
|---|---|---|
| Diffuse / Albedo | RGB | Difuzna boja (za metale treba da bude crna) |
| Specular | RGB | F0 reflektivnost (obojeno za metale, ~0.04 za dielektrike) |
| Glossiness | Grayscale | 0 = potpuno hrapavo, 1 = savršeno glatko (invertovan roughness) |
| Normal Map | RGB | Perturbacija normale površine |
Prednosti:
- Direktna kontrola nad F0 za svaki materijal (uključujući dielektrike)
- Nema artefakata na metal/dielektrik granicama (jer ne postoji binarni metalness prekidač)
- Specular mapa eksplicitno enkodira reflektivnost, što može biti intuitivnije za artiste sa fizičarskim backgroundom
Mane:
- 4 teksture umesto 3 (Diffuse, Specular, Glossiness, Normal) -- veća potrošnja memorije
- Lakše je napraviti fizički nekorektne materijale -- artist može postaviti visok diffuse I visok specular istovremeno, kršeći konzervaciju energije
- Artist mora ručno postavljati fizički korektne F0 vrednosti -- nema automatske zaštite
- Metal mora imati crn diffuse I obojeni specular -- greška u jednom od ta dva remeti celokupan izgled
- Manje rasprostranjen u modernoj game industriji
Zašto je Metal/Roughness pobedio
Metal/Roughness workflow je postao industrijski standard iz nekoliko praktičnih razloga:
-
Manje tekstura = manje memorije. U AAA igrama sa hiljadama materijala, ušteda jedne teksture po materijalu je značajna.
-
Teže je napraviti greške. Metalness je de facto binarni parametar, i Base Color automatski menja ulogu na osnovu metalness-a. Artist ne može slučajno staviti jak diffuse na metal.
-
Substance workflow. Substance Designer i Substance Painter (sada Adobe Substance), koji su de facto standard za kreiranje PBR tekstura, koriste Metal/Roughness kao primarni workflow.
-
Industrijski momentum. Kada su UE4, Unity i Frostbite usvojili Metal/Roughness, ostatak industrije ih je pratio. Artisti su se prilagodili, tutoriali su napisani, pipeline-i su postavljeni.
Konverzija između workflow-ova
Ako morate konvertovati materijale između dva workflow-a:
Metal/Rough → Spec/Gloss:
if metalness == 1:
diffuse = (0, 0, 0) // crno -- metal nema diffuse
specular = base_color // base color metala je F0
else:
diffuse = base_color // base color dielektrika je albedo
specular = (0.04, 0.04, 0.04) // default F0 za dielektrike
glossiness = 1 - roughness
Spec/Gloss → Metal/Rough:
if diffuse ≈ (0, 0, 0): // ako je diffuse crn, verovatno metal
metalness = 1
base_color = specular // F0 postaje base color
else:
metalness = 0
base_color = diffuse // diffuse postaje base color
roughness = 1 - glossiness
U praksi, ova konverzija nije uvek savršena jer se informacije mogu izgubiti, posebno na graničnim slučajevima. Substance alati mogu obaviti ovu konverziju automatski i pametnije od naivnog algoritma iznad.
UE5 specifičnosti
UE5 koristi Metal/Roughness kao primarni workflow, ali nudi i neke dodatne parametre:
- Specular (default 0.5): Skalira F0 za dielektrike.
F0 = 0.08 * Specular. Većina materijala ne zahteva promenu ovog parametra. - Metallic: UE5 termin za Metalness (0-1)
- Roughness: Direktan roughness parametar (0-1)
- Base Color: RGB boja koja služi kao albedo (za dielektrike) ili F0 (za metale)
UE5 takođe podržava Specular/Glossiness workflow kroz Custom Material Expression i konverzione node-ove, ali to nije preporučeni pristup za nove projekte.
Image-Based Lighting (IBL)
Motivacija
Do sada smo uglavnom razmatrali direktno osvetljenje -- svetlost koja putuje direktno od izvora svetlosti do površine i zatim do kamere. Ali u realnom svetu, najveći deo osvetljenja je indirektan -- svetlost koja se odbija od drugih površina pre nego što stigne do objekta koji posmatramo.
Zamislite objekat na otvorenom: osim direktne sunčeve svetlosti, osvetljen je i svetlošću neba (plava boja), refleksijama od okolnih zgrada, zemlje, oblaka... Ovo indirektno osvetljenje je ono što sprečava da senke budu potpuno crne i što daje sceni "dubinu" i "atmosferu".
Image-Based Lighting je tehnika koja koristi slike okruženja (environment maps) da simulira ovo indirektno osvetljenje. Umesto da postavljamo stotine virtualnih svetala da simuliramo nebo, okolne zgrade i ostale izvore indirektnog svetla, koristimo jednu HDR sliku koja "obavija" celu scenu i služi kao izvor svetlosti iz svih pravaca.
Kako IBL radi sa PBR-om
U kontekstu rendering jednačine (pogledajte poglavlje 10), IBL efektivno postaje integracija dolazećeg svetla sa BRDF-om preko cele hemisfere:
L_out(v) = ∫ f(l, v) · L_in(l) · (n · l) dl
Ω
Gde L_in(l) dolazi iz environment mape za svaki pravac l na hemisferi.
Problem: ovaj integral je izuzetno skup za izračunavanje u real-time-u. Za svaki piksel na ekranu, trebalo bi integraliti svetlost iz svih pravaca na hemisferi, pomnoženu sa BRDF-om. Čak i sa Monte Carlo uzorkovanjem, ovo je previše za 60 FPS.
Split-Sum aproksimacija
Rešenje koje koriste praktično svi moderni engine-i (uključujući UE5) je Split-Sum aproksimacija, koju je Epic Games popularizovao za UE4:
Osnovna ideja: razdvojiti integral na dva nezavisna dela koji se mogu preračunati unapred:
L_out(v) ≈ [∫ L_in(l) dl] · [∫ f(l, v) · (n · l) dl]
Prvi deo: Pre-filtered Environment Map
Ovo je environment mapa koja je "zamućena" (filtrirana) za svaki nivo roughness-a. Rezultat se čuva kao mipmap chain environment mape:
- Mip 0 (najviša rezolucija) = roughness 0 (ogledalna refleksija)
- Mip 1 = roughness ~0.25 (blago zamućena)
- Mip 2 = roughness ~0.5 (srednje zamućena)
- ...
- Mip N (najniža rezolucija) = roughness 1.0 (potpuno zamućena, gotovo uniformna boja)
Kada shader traži refleksiju za određeni roughness, jednostavno uzorkuje odgovarajući mip level environment mape. Ovo je izuzetno efikasno -- samo jedan texture lookup!
Drugi deo: Environment BRDF (LUT)
Ovaj integral zavisi samo od roughness-a i ugla posmatranja (n·v), a ne od samog okruženja. To znači da se može preračunati za sve kombinacije roughness i n·v i čuvati u 2D lookup teksturi (LUT -- Look-Up Table).
UE5 koristi 2D LUT teksturu gde:
- U osa = n·v (kosinus ugla posmatranja, 0 do 1)
- V osa = roughness (0 do 1)
- R kanal = skala za F0
- G kanal = bias za F0
Finalna formula za IBL specular je:
L_specular = prefilteredColor · (F0 · envBRDF.r + envBRDF.g)
Gde je prefilteredColor uzorkovan iz pre-filtered environment mape sa odgovarajućim roughness mip level-om, a envBRDF.r i envBRDF.g su uzorkovani iz LUT teksture.
IBL Diffuse
Za difuznu komponentu, situacija je jednostavnija. Difuzni BRDF je (približno) konstantan (Lambertian: c / π), pa integral postaje:
L_diffuse = (c / π) · ∫ L_in(l) · (n · l) dl
Ω
Integral ∫ L_in(l) · (n · l) dl se preračunava za svaki pravac normale i čuva u irradiance map -- niskoresolucionoj (tipično 64x64 ili 128x128) cubemap teksturi gde svaki texel sadrži ukupno difuzno osvetljenje za taj pravac.
Lookup je trivijalan: uzorkujte irradiance mapu sa normalom površine kao lookup vektorom, pomnožite sa base color-om, i imate difuznu IBL komponentu.
IBL u UE5
UE5 koristi IBL kroz nekoliko mehanizama:
-
Reflection Captures -- sferne ili box-shaped zone koje hvataju okolno osvetljenje u cubemap i koriste ga za specularme refleksije na objektima unutar zone. Ovo su pre-filtered environment mape za lokalno okruženje.
-
Sky Light -- globalni izvor ambijentalnog osvetljenja baziran na skybox-u ili HDR slici. Obezbeđuje i difuzni i specularni IBL za celu scenu.
-
Lumen -- UE5-ov revolucionarni sistem globalnog osvetljenja koji ide dalje od tradicionalnog IBL-a. Lumen dinamički izračunava indirektno osvetljenje u real-time-u, bez potrebe za statičnim Reflection Capture-ima. Ipak, Lumen interno koristi mnoge principe koje smo ovde objasnili.
-
Screen Space Reflections (SSR) -- dopunjava IBL/Reflection Capture sa refleksijama baziranim na onome što je trenutno vidljivo na ekranu. SSR je "lokalnija" i preciznija dopuna globalnom IBL-u, ali radi samo za ono što je vidljivo kameri.
Ograničenja IBL-a
IBL nije savršeno rešenje za indirektno osvetljenje:
- Statičnost: Tradicionalne Reflection Capture mape su statične -- ne reaguju na dinamičke promene u sceni (Lumen rešava ovo).
- Lokalna aproksimacija: Reflection Capture pretpostavlja da je okruženje "beskonačno daleko" (parallax korekcija pomaže, ali nije savršena).
- Ograničena rezolucija: Refleksije su ograničene rezolucijom cubemap-a (tipično 128-256 po strani).
- Split-Sum je aproksimacija: Razdvajanje integrala na dva dela unosi malu grešku, posebno za anizotropne materijale.
Rezime ključnih pojmova
| Termin | Definicija |
|---|---|
| PBR | Physically Based Rendering -- pristup renderovanju zasnovan na fizičkim zakonima interakcije svetla sa materijalima |
| Microfacet | Mikroskopski mali, savršeno ravni element površine. Površina se modelira kao kolekcija mikrofaseta |
| NDF | Normal Distribution Function -- statistička distribucija orijentacija mikrofaseta. Kontroliše oblik specularnog highlight-a |
| GGX | Trowbridge-Reitz NDF model -- industrijski standard za distribuciju mikrofaseta |
| Cook-Torrance | Specularni BRDF model: f = DFG / 4(n·l)(n·v). Standard za PBR specular |
| Fresnel efekat | Povećanje reflektivnosti pri grazing uglovima. Sve površine postaju ogledala pri dovoljno malom uglu |
| Schlick aproksimacija | F = F0 + (1-F0)(1-cosθ)⁵ -- efikasna aproksimacija Fresnel jednačine |
| F0 | Bazna reflektivnost pri normalnom uglu upada (θ=0°). ~0.04 za dielektrike, 0.5-1.0 za metale |
| Roughness | Parametar koji kontroliše hrapavost površine (0=ogledalo, 1=potpuno mat). Matematički kontroliše širinu NDF-a |
| Glossiness | Inverzan roughness (1-roughness). Alternativna konvencija |
| Metalness | Binarni parametar koji definiše da li je materijal metal (1) ili dielektrik (0) |
| Base Color | RGB boja koja služi kao albedo (difuzna boja) za dielektrike ili F0 (specularma reflektivnost) za metale |
| Energy Conservation | Princip da površina ne može reflektovati više svetla nego što prima |
| Diffuse refleksija | Svetlost koja ulazi u materijal, rasipa se interno, i izlazi nazad. Obojena, nezavisna od ugla posmatranja |
| Specular refleksija | Svetlost koja se odbija od površine. Neobojeno za dielektrike, obojeno za metale. Zavisi od ugla |
| IBL | Image-Based Lighting -- korišćenje environment mapa kao izvora indirektnog osvetljenja |
| Split-Sum | Aproksimacija koja razdvaja IBL integral na pre-filtered environment map i environment BRDF LUT |
| Irradiance Map | Preračunata mapa difuznog osvetljenja iz okruženja za svaki pravac normale |
| Geometry Function (G) | Deo Cook-Torrance BRDF-a koji modelira samozaklanjanje (shadowing/masking) mikrofaseta |
| Halfway Vector | h = normalize(L + V) -- vektor na pola puta između vektora svetla i pogleda |
| BRDF | Bidirectional Reflectance Distribution Function -- funkcija koja opisuje kako površina reflektuje svetlost |
| Lambertian | Idealni difuzni reflektor koji reflektuje svetlost jednako u svim pravcima. f = c/π |
| Albedo | Difuzna reflektivnost površine -- koliki procenat svetlosti se difuzno reflektuje, bez speculara |
| HDR | High Dynamic Range -- opseg svetlosnih intenziteta širi od standardnog 0-1 (ili 0-255) |
Dodatna literatura i linkovi
Akademski radovi (hronološki)
-
Torrance, K.E. & Sparrow, E.M. (1967). Theory for Off-Specular Reflection From Roughened Surfaces. Journal of the Optical Society of America.
- Originalni rad koji postavlja temelje microfacet teorije.
-
Cook, R.L. & Torrance, K.E. (1982). A Reflectance Model for Computer Graphics. ACM Transactions on Graphics.
- Landmark paper koji uvodi Cook-Torrance BRDF. Obavezno štivo za razumevanje specularnog modela.
-
Schlick, C. (1994). An Inexpensive BRDF Model for Physically-Based Rendering. Computer Graphics Forum.
- Uvodi Schlick aproksimaciju Fresnel jednačine i mnoge druge korisne aproksimacije.
-
Walter, B. et al. (2007). Microfacet Models for Refraction through Rough Surfaces. Eurographics Symposium on Rendering.
- Popularizuje GGX/Trowbridge-Reitz NDF za rendering. Ključan rad za razumevanje modernog NDF-a.
-
Burley, B. (2012). Physically-Based Shading at Disney. SIGGRAPH Course Notes.
- Disney-ev "Principled BRDF" paper. Direktan preteča PBR sistema u svim modernim engine-ima.
Industrijske prezentacije
-
Karis, B. (2013). Real Shading in Unreal Engine 4. SIGGRAPH Course Notes.
- Epic-ov paper o implementaciji PBR-a u UE4. Direktno relevantno za UE5 jer je osnova ista.
-
Lagarde, S. & de Rousiers, C. (2014). Moving Frostbite to Physically Based Rendering. SIGGRAPH Course Notes.
- Detaljan opis prelaska Frostbite engine-a na PBR. Odličan za razumevanje praktičnih izazova.
Online resursi
-
LearnOpenGL -- PBR sekcija: https://learnopengl.com/PBR/Theory
- Izvrstan, besplatan vodič kroz PBR matematiku sa kodom. Topla preporuka.
-
Google Filament -- Material Documentation: https://google.github.io/filament/Filament.html
- Jedna od najdetaljnijih tehničkih dokumentacija PBR implementacije. Google-ov Filament engine.
-
Substance Academy: https://academy.substance3d.com/
- Adobe-ov besplatni kurs za PBR teksturiranje u Substance alatima.
-
UE5 Documentation -- Physically Based Materials: Zvanična Unreal Engine dokumentacija za PBR materijale.
- Uvek ažurno sa najnovijom verzijom engine-a.
Referentne tabele
-
Dontnod Entertainment -- PBR Chart: Referentna tabela F0 vrednosti i preporučenih roughness/metalness opsega za uobičajene materijale.
-
Substance PBR Guide: Sveobuhvatan vodič za PBR vrednosti materijala, sa slikama i preporučenim opsezima.
Veze sa drugim poglavljima
-
Poglavlje 5 (Teksture): Detaljno objašnjava roughness mape, metalness mape, normal mape i kako ih pravilno kreirati i importovati u UE5. Ako niste sigurni kako da napravite ili optimizujete PBR teksture, pogledajte poglavlje 5.
-
Poglavlje 10 (Teorija osvetljenja): Pokriva rendering jednačinu, BRDF koncept, vrste svetlosti i osnove fizike osvetljenja. Cook-Torrance BRDF koji smo ovde detaljno objasnili je specijalizacija opšteg BRDF koncepta iz poglavlja 10.
-
Naredna poglavlja: PBR je osnova na kojoj se grade napredni rendering efekti: Subsurface Scattering (SSS) za kožu i vosak, Clear Coat za lakirane površine, Anisotropic refleksije za brušeni metal -- svi ovi efekti su proširenja Cook-Torrance modela koji smo ovde naučili.
Zaključak
PBR nije samo tehnika -- to je lingua franca modernog renderovanja. Razumevanje fizičkih principa iza PBR-a ne čini vas samo boljim tehničkim artistom; ono vam daje intuiciju za to zašto materijali izgledaju kako izgledaju, što vam omogućava da brže i tačnije kreirate ubedljive materijale.
Ključni zaključci ovog poglavlja:
-
PBR materijali opisuju šta je površina, ne kako izgleda -- fizika se brine za izgled pod svim osvetljenjima.
-
Microfacet teorija modelira površinu kao kolekciju sićušnih ogledala -- roughness kontroliše njihovu distribuciju.
-
Cook-Torrance BRDF (D·F·G / 4·(n·l)·(n·v)) kombinuje distribuciju mikrofaseta, Fresnel efekat i samozaklanjanje u fizički korektan specularni model.
-
Fresnel efekat čini površine reflektivnijim pri grazing uglovima -- F = F0 + (1-F0)(1-cosθ)⁵.
-
Metalness je binarni prekidač: metali nemaju diffuse i imaju obojeni specular; dielektrici imaju diffuse i neobojeni specular.
-
Konzervacija energije garantuje da materijal ne može reflektovati više svetla nego što prima.
-
IBL i Split-Sum obezbeđuju efikasno indirektno osvetljenje na osnovu environment mapa.
U narednom poglavlju, primenićemo sve ovo znanje u praksi -- kreiraćemo kompleksne PBR materijale u UE5 Material Editor-u, od prostih površina do višeslojnih materijala sa maskama, blending-om i dinamičkim efektima.
Sledeće poglavlje: Poglavlje 12 -- Kreiranje materijala u UE5
Prethodno poglavlje: Poglavlje 10 -- Teorija osvetljenja i rendering jednačina