Poglavlje 18: Material Modeli -- Shading Models u Unreal Engine 5
Uvod
U prethodnim poglavljima detaljno smo obradili PBR pipeline (Poglavlje 11), razumeli kako depth buffer i transparency sorting funkcionisu (Poglavlje 09), i izgradili solidnu osnovu za razumevanje kako GPU renderuje scene. Sada dolazimo do jednog od najvaznijih pitanja u praksi: koji shading model odabrati za vas materijal?
Unreal Engine 5 nudi citav arsenal shading modela -- od jednostavnog Default Lit koji pokriva 90% slucajeva, do specijalizovanih modela poput Hair, Eye, ili Cloth koji simuliraju kompleksne fizicke fenomene. Svaki od ovih modela ima razlicit skup jednacina koje GPU izvrsava za svaki piksel, i svaki donosi drugaciji balans izmedju vizuelnog kvaliteta i performansi.
U ovom poglavlju cemo "zaroniti ispod haube" svakog modela. Necemo samo reci sta radi -- objasnicemo kako radi, zasto postoji, i kada ga treba koristiti. Na kraju poglavlja, imasete jasnu sliku o tome koji model koristiti za svaki tip povrsine u vasem projektu.
Napomena o terminologiji: Koristimo srpski jezik sa latinicnim pismom, ali tehnicke termine (Cook-Torrance, BRDF, shading model, render pass, itd.) ostavljamo na engleskom, jer su to standardni termini u industriji koje svaki developer koristi bez prevoda.
18.1 Default Lit -- Radni konj PBR renderinga
Sta je Default Lit?
Default Lit je standardni physically-based shading model u Unreal Engine 5. Kada kreirate novi materijal, ovo je model koji je podrazumevano selektovan -- i to sa dobrim razlogom. Pokriva ogromnu vecinu real-world materijala: metal, plastiku, drvo, kamen, beton, keramiku, staklo (opaque varijanta), i mnoge druge.
Pod haubom, Default Lit implementira takozvani microfacet BRDF model koji kombinuje dve komponente:
- Diffuse komponenta -- Lambert diffuse model
- Specular komponenta -- Cook-Torrance specular model
Ovo smo detaljno obradili u Poglavlju 11, ali hajde da osvezimo kljucne koncepte u kontekstu material editora.
Cook-Torrance specular model -- ukratko
Cook-Torrance BRDF (Bidirectional Reflectance Distribution Function) opisuje kako se svetlost reflektuje sa mikro-povrsine materijala. Formula izgleda ovako:
f_specular = (D * F * G) / (4 * (N.L) * (N.V))
Gde su:
-
D (Normal Distribution Function) -- opisuje distribuciju mikro-fasetki na povrsini. UE5 koristi GGX (Trowbridge-Reitz) distribuciju. Roughness parametar direktno kontrolise sirinu ove distribucije: niska roughness = koncentrisane fasetke = ostar specular highlight; visoka roughness = rasute fasetke = sirok, mek highlight.
-
F (Fresnel term) -- opisuje kako se reflektivnost povrsine menja u zavisnosti od ugla gledanja. Koristimo Schlick aproksimaciju Fresnelove jednacine. Na strmom uglu (grazing angle), skoro svaka povrsina postaje visoko reflektivna. Metallic parametar odredjuje baznu reflektivnost (F0): dielektrici imaju nisku F0 (~0.04), metali visoku (0.5-1.0).
-
G (Geometry/Shadowing term) -- opisuje koliko mikro-fasetki medjusobno blokiraju svetlost (self-shadowing). UE5 koristi Smith GGX model. Ovaj term sprecava da specular bude prejacan na grazing angles.
Lambert diffuse
Diffuse komponenta je mnogo jednostavnija:
f_diffuse = BaseColor / PI
Lambert model pretpostavlja da se svetlost koja udje u povrsinu ravnomerno rasipa u svim pravcima. Ovo je gruba ali efikasna aproksimacija za vecinu dielektricnih materijala. Za metale, diffuse komponenta je nula (jer metali apsorbuju svu svetlost koja udje u povrsinu -- sva vidljiva refleksija je spekularna).
Ulazi (inputs) Default Lit modela
Kada odaberete Default Lit, Material Editor vam nudi sledece pinove:
Base Color (RGB, 0-1)
Ovo je albedo vase povrsine -- boja materijala bez ikakvih lighting informacija. Kljucna pravila:
- Za dielektrike (nemetale): ovo je difuzna boja. Vrednosti treba da budu u opsegu 0.02-0.95 (nikada cisto crno ili cisto belo u prirodi).
- Za metale: ovo je specular color (boja refleksije). Zlato je zuckasto, bakar je crvenkast, gvozdje je sivo.
- Nikada ne stavljajte lighting informacije u Base Color! Nema ambient occlusion, nema senki, nema specular highlights. Samo cista boja materijala.
Tipicne vrednosti Base Color (sRGB):
- Svez sneg: (0.95, 0.95, 0.95)
- Ugalj: (0.04, 0.04, 0.04)
- Trava: (0.20, 0.30, 0.07)
- Crvena cigla: (0.55, 0.15, 0.10)
- Suvo drvo: (0.45, 0.30, 0.15)
- Zlato (metal): (1.00, 0.76, 0.34)
- Gvozdje (metal): (0.56, 0.57, 0.58)
- Bakar (metal): (0.96, 0.64, 0.38)
Metallic (Scalar, 0 ili 1)
Metallic parametar kontrolise da li se materijal ponasa kao metal ili kao dielektrik:
- 0.0 = dielektrik (plastika, drvo, kamen, koza...)
- 1.0 = metal (gvozdje, aluminijum, zlato, bakar...)
U praksi, ovaj parametar treba da bude ili 0 ili 1. Medjuvrednosti (npr. 0.5) fizicki ne postoje u prirodi. Jedini izuzetak su tranzicione zone na teksturi -- na primer, tamo gde se boja na metalu ljusti i ispod se vidi metal. U tom slucaju, metallic mapa ima ostre prelaze izmedju 0 i 1, ali na granicama moze imati blagi gradient zbog filtriranja teksture.
Sta se desava interno kada promenite Metallic:
- Metallic = 0: Base Color se koristi za diffuse, specular F0 je fiksiran na ~0.04 (4% reflektivnosti pod pravim uglom)
- Metallic = 1: Diffuse postaje crn (nema difuzije), Base Color se koristi kao specular F0
Roughness (Scalar, 0-1)
Roughness kontrolise mikro-hrapavost povrsine:
- 0.0 = savrseno glatka povrsina (ogledalo, hromirana povrsina)
- 1.0 = potpuno hrapava povrsina (grubi beton, kreda)
Ovaj parametar direktno utice na GGX Normal Distribution Function (D term u Cook-Torrance jednacini). Niza roughness = uzi, ostriji specular lobe. Visa roughness = siri, meksi specular lobe.
Tipicne Roughness vrednosti:
- Ogledalo/hrom: 0.0 - 0.05
- Polirani metal: 0.05 - 0.15
- Plastika (sjajna): 0.15 - 0.30
- Drvo (lakirano): 0.20 - 0.35
- Drvo (sirovo): 0.50 - 0.80
- Koža: 0.35 - 0.55
- Beton (gladak): 0.50 - 0.65
- Beton (hrapav): 0.70 - 0.90
- Tkanina: 0.80 - 1.00
Normal (RGB, tangent space)
Normal mapa simulira mikro-geometriju povrsine bez dodavanja stvarnih poligona. Svaki piksel Normal mape sadrzi vektor koji "pomera" povrsinski normal, sto menja kako se svetlost odbija sa te tacke.
- UE5 koristi tangent-space Normal mape (plava boja = ravna povrsina)
- Format: BC5 (dva kanala, Z se rekonstruise) ili BC7
- Flat normal = (0.5, 0.5, 1.0) u teksturi, sto odgovara vektoru (0, 0, 1) u tangent space
Normal mape su jedan od najznacajnijih alata za dodavanje vizuelnog detalja bez geometrijskog kosta. Jedan quad sa dobrom Normal mapom moze izgledati kao kompleksna povrsina sa hiljadama poligona.
Emissive Color (RGB, HDR)
Emissive je svetlost koju materijal sam emituje. Ovo je jedini input koji moze imati vrednosti vece od 1.0 (HDR). Emissive svetlost:
- Ne utice na okolne objekte (osim ako koristite Lumen ili screen-space global illumination)
- Moze da "gori" (bloom) ako je vrednost dovoljno visoka
- Koristi se za: ekrane, svetlece panele, neonske znakove, lavu, itd.
- Sa Lumenom, emissive materijali zaista osvetljavaju okolinu
Ambient Occlusion (Scalar, 0-1)
AO input omogucava da dodate micro-ambient occlusion koji je "upecen" u teksturu materijala. Ovo je occlusion na nivou detalja teksture (pukotine, srafovi, ivice), ne na nivou scene (to rade SSAO/GTAO).
- 1.0 = potpuno osvetljeno
- 0.0 = potpuno zasenjena oblast
- AO utice samo na difuzno indirektno osvetljenje (ambient/indirect light), ne na direktno svetlo ili specular
Kada koristiti Default Lit
Default Lit koristite za vecinu materijala u vasem projektu:
- Svi metali (gvozdje, aluminijum, bakar, zlato)
- Sva plastika
- Drvo, kamen, beton, cigla
- Staklo (opaque varijanta)
- Keramika, porcelan
- Guma, latex
- Koza (leather)
- Obojeni materijali generalno
Prelazite na specijalizovane modele samo kada Default Lit ne moze da reprodukuje fizicki fenomen koji vam treba (SSS za kozu, anisotropy za cesljani metal, itd.).
Performanse
Default Lit je referentni model za performanse. Svi ostali modeli se mere u odnosu na njega:
- Shader complexity: srednja (baseline)
- Render passes: standardni (GBuffer fill, lighting pass)
- Memory: zavisi od broja i rezolucije tekstura, ne od samog modela
18.2 Unlit -- Materijal bez osvetljenja
Sta je Unlit?
Unlit shading model potpuno eliminise sve lighting kalkulacije. Nema diffuse, nema specular, nema senki, nema ambient occlusion. Jedini output je Emissive Color -- materijal se renderuje tacno onom bojom koju vi zadate, bez ikakve modifikacije od strane lighting sistema.
Kako radi "ispod haube"
Kada koristite Unlit model, GPU presksace kompletnu lighting fazu za taj materijal. U deferred rendering pipelineu (koji UE5 koristi), Unlit materijali se ne upisuju u GBuffer na isti nacin kao lit materijali. Umesto toga:
- Geometrija se renderuje u depth buffer (za korektnu okluziju)
- Emissive boja se direktno upisuje u scene color buffer
- Nema Normal, Metallic, Roughness, ili bilo kojih drugih GBuffer kanala
- Nema lighting pass za ovaj materijal
Ovo znaci da je Unlit model najjeftiniji moguc shading model u smislu GPU kosta po pikselu. Nema BRDF evaluacije, nema shadow sampling, nema reflection probe lookup -- nista. Samo citanje teksture (ako je koristite) i upisivanje boje.
Dostupni inputi
Kada odaberete Unlit, Material Editor prikazuje samo:
- Emissive Color (RGB, HDR) -- jedini vizuelni output
- Opacity (ako koristite Translucent blend mode)
- Opacity Mask (ako koristite Masked blend mode)
- World Position Offset -- za vertex animacije
Svi ostali pinovi (Base Color, Metallic, Roughness, Normal, AO) su nedostupni jer nema lighting sistema koji bi ih koristio.
Kada koristiti Unlit
Unlit je pravi izbor u nekoliko specificnih scenarija:
1. UI elementi i HUD
Elementi korisnickog interfejsa ne treba da reaguju na svetlost u sceni. Dugmad, tekst, health barovi, minimape -- sve ovo treba da bude Unlit. Ako koristite Widget Component u 3D prostoru (npr. health bar iznad neprijatelja), Unlit osigurava da je boja konzistentna bez obzira na osvetljenje scene.
2. Post-Process materijali
Post-Process materijali po definiciji rade na vec renderovanoj slici -- oni ne predstavljaju fizicke povrsine. Uvek koriste Unlit model. (Tehnicki, post-process materijali automatski ignorisu shading model, ali je dobra praksa eksplicitno postaviti Unlit.)
3. Custom lighting modeli
Ponekad zelite potpunu kontrolu nad osvetljenjem -- na primer, za stilizovani (toon/cel-shaded) izgled. U tom slucaju, mozete koristiti Unlit model i rucno implementirati lighting u Material Graphu:
// Pseudo-logika za custom toon shading u Unlit materijalu:
1. Dohvatite Light Direction (koristite Custom node ili Material Parameter)
2. Izracunajte N dot L (Normal dot Light Direction)
3. Kvantizujte N dot L u diskretne korake (npr. 3 koraka za toon efekat)
4. Pomnozite Base Color sa kvantizovanom vrednoscu
5. Povezite na Emissive Color output
Ovo vam daje kompletnu slobodu, ali vi preuzimate odgovornost za sav lighting -- engine nece nista uraditi za vas.
4. Specijalni efekti
Mnogi VFX koriste Unlit model:
- Particle sistemi (vatra, dim, iskre) -- cesto koriste Unlit + Additive blend
- Laser zraci, energetski stitovi, magicni efekti
- Hologami, distortion efekti
- Lightmapped okruzenja (retko, ali moguce -- bake-ovano svetlo u teksturu + Unlit)
5. Billboardi i imposteri
Impostor sistemi (gde se 3D objekat zamenjuje 2D slikom iz odredjenog ugla) cesto koriste Unlit jer je lighting vec "upecen" u teksturu.
Performanse
Relativni kost shading modela (GPU, po pikselu):
- Unlit: ~0.3x Default Lit
- Default Lit: 1.0x (referenca)
Unlit je najjeftiniji model. Medjutim, zapamtite da shading model cesto nije bottleneck -- overdraw, texture sampling, i kompleksnost Material Grapha mogu biti znacajniji faktori.
18.3 Subsurface Scattering (SSS) -- Svetlost ispod povrsine
Fizicki fenomen
Subsurface scattering je fizicki fenomen koji se desava kada svetlost prodre ispod povrsine materijala, rasipa se unutar njega interagujuci sa cesticama materijala, i na kraju izadje na drugoj tacki povrsine. Ovo je fundamentalno razlicit fenomen od surface reflection (koji Cook-Torrance modeluje).
Zamislite da drzite baterijsku lampu iza svog uha. Videcete crvenkasto svetlo kako prolazi -- to je subsurface scattering u akciji. Svetlost ulazi u kozu sa jedne strane, prolazi kroz tkivo (pri cemu se crvena talasna duzina najmanje apsorbuje), i izlazi sa druge strane.
Materijali koji pokazuju SSS:
- Ljudska koza -- najpoznatiji primer. Kolagen i krv u koži rasprsuju svetlost, dajuci kozi karakteristicnu "mekanu" toplotu.
- Vosak -- sveca osvetljena odzada ima karakteristican topli sjaj.
- Mramor -- tanki listovi mramora propustaju svetlost.
- Lisce -- kada je sunce iza lista, vidite svetlo-zelenu boju jer svetlost prolazi kroz list.
- Mleko i tecnosti -- svetlost se rasprsuje u tecnosti (zato je mleko belo -- cesitce masti rasprsuju sve talasne duzine).
- Jade, oniks -- poluprozirni minerali.
- Sapun -- posebno providan sapun.
Zasto je SSS vazan za realizam
Bez SSS-a, rendrovana koza izgleda kao plastika. Ovo je jedan od najcescih problema u real-time renderingu. Problem je u tome sto Cook-Torrance model tretira svaku tacku povrsine nezavisno -- svetlost koja udari u jednu tacku ne utice na susedne tacke. U stvarnosti, svetlost koja udje u kozu na jednom mestu moze da izadje na mestu udaljenom i do nekoliko milimetara.
Ovaj efekat daje kozi karakteristicnu mekotu i toplinu. Bez njega:
- Senke na kozi su preostre
- Tranzicije svetlo/tamno su previše kontrastne
- Nema "glow" efekta na tankim delovima (usi, prsti, nos)
- Koza izgleda hladno i artificijelno
SSS posebno dolazi do izrazaja u dva scenarija:
- Backlit situacije -- kada je svetlo iza objekta (npr. sunce iza glave osobe)
- Oblasti tankog tkiva -- usi, nos, prsti, gde svetlost lakse prolazi
Kako SSS radi u renderingu
Postoje razliciti pristupi simulaciji SSS-a, od najjednostavnijih do najkompleksnijih:
Wrap lighting (najjednostavniji, nije pravi SSS)
Jednostavno prosirenje Lambert modela gde se difuzno osvetljenje "uvija" oko objekta, simulirajuci efekat svetlosti koja prolazi kroz materijal:
// Umesto:
diffuse = max(0, N dot L)
// Koristimo:
diffuse = max(0, (N dot L + wrap) / (1 + wrap))
Ovo je jeftino ali neprecizno -- ne postoji stvarno rasipanje svetlosti.
Screen-space diffusion (srednji kvalitet)
Pravi SSS efekat u screen space-u:
- Renderirajte scenu normalno
- Za SSS materijale, primenite Gaussian blur na lighting rezultat u screen space-u
- Blur kernel je vazan -- ne koristimo uniformni blur, vec profil koji odgovara rasipanju svetlosti u materijalu
Prednosti: relativno jeftin, vizuelno uverljiv Mane: ne radi pravilno na siluetama, ne hvata transmisiju (backlit efekte)
Subsurface Profile u UE5 (Burley SSS model)
UE5 koristi Burley normalized diffusion model za Subsurface Profile shading model. Ovo je fizicki zasnovan model koji je razvio Brent Burley iz Walt Disney Animation Studios. Model aproksimira rasprsivanje svetlosti korisceci profil koji se moze opisati sa malim brojem parametara.
Burley model koristi sledeci diffusion profil:
R(r) = A * (e^(-r/d) + e^(-r/(3*d))) / (8 * PI * d * r)
Gde je:
r= rastojanje od tacke ulaska svetlostid= mean free path (koliko daleko svetlost putuje pre nego sto se rasipa)A= albedo materijala
Ovaj profil se primenjuje u screen space-u kao separabilni filter (horizontalni + vertikalni pass), sto znaci da su potrebna dva dodatna render passa za SSS materijale.
Implementacija u UE5
UE5 nudi dva SSS modela:
1. Subsurface shading model (jednostavniji)
Koristi Subsurface Color parametar direktno u materijalu. Ovo je jednostavniji model koji aproksimira SSS efekat.
Dostupni inputi (pored standardnih Default Lit inputova):
- Subsurface Color (RGB) -- boja svetlosti koja se rasprsuje unutar materijala. Za kozu, ovo je obicno crvenkasto/narandzasto (krv ispod koze). Za lisce, zelenkasto.
- Opacity -- kontrolise intenzitet SSS efekta (koliko svetlosti prolazi)
2. Subsurface Profile shading model (bolji kvalitet)
Koristi poseban Subsurface Profile asset koji definise kako se svetlost rasprsuje. Ovo je preporuceni nacin za visoko-kvalitetni SSS, posebno za kozu karaktera.
Subsurface Profile sadrzi:
- Scatter Radius -- koliko daleko svetlost putuje kroz materijal (u world units)
- Subsurface Color -- boja rasprsivanja za svaki kanal (R, G, B imaju razlicite scatter distance)
- Mean Free Path -- srednji put koji svetlost predje pre rasprsivanja (za Burley model)
- Falloff Color -- boja na ivicama scatter regiona
- Boundary Color Bleed -- kontrolise bleeding boje na granicama objekta
- Transmission Tint Color -- boja svetlosti koja prolazi kroz tanke delove materijala (backlit efekat)
Kreiranje Subsurface Profile-a:
1. Content Browser > desni klik > Materials & Textures > Subsurface Profile
2. Otvorite Subsurface Profile asset
3. Podesite parametre:
- Scatter Radius: 1.2 (za kozu)
- Subsurface Color: (0.48, 0.23, 0.09) -- topla boja koze
- Mean Free Path: (1.0, 0.3, 0.2) -- R putuje najdalje
- Falloff Color: (0.7, 0.3, 0.2)
4. U materijalu: selektujte ovaj Subsurface Profile u Material Details panelu
Podesavanje SSS-a za kozu -- prakticni vodic
Kvalitetan skin shader zahteva pazljivo podesavanje. Evo kljucnih saveta:
-
Base Color treba da bude "suvlja" -- bez crvenih tonova koji dolaze od krvi ispod koze. SSS ce dodati tu toplotu automatski. Ako dodate crvene tonove i u Base Color i u SSS, koza ce izgledati previse crveno.
-
Scatter Radius treba da bude konzistentan sa skalom vaseg karaktera. Ako je karakter realisticne velicine (u centimetrima), tipican scatter radius je 1.0-2.0 cm.
-
Mean Free Path razlike po kanalima su kljucne za realizam:
- Crvena: najduzi put (~1.0) -- crvena svetlost prolazi najdalje kroz kozu
- Zelena: srednji put (~0.3) -- zelena se apsorbuje vise
- Plava: najkraci put (~0.2) -- plava se apsorbuje skoro odmah
-
Normal mapa za kozu treba da ima dva nivoa detalja:
- Macro normal (pore, bore) -- na standardnom Normal input-u
- Micro normal (sitna tekstura koze) -- ponekad na Clear Coat Normal za dual-normal efekat
-
Roughness za kozu je tipicno 0.3-0.6, sa varijacijama:
- Celo: glatkije (~0.35)
- Nos: sjajniji na vrhu (~0.25)
- Obrazi: srednji (~0.4)
- Brada (muskarac): hrapavija (~0.55)
Performanse SSS-a
SSS je skuplji od Default Lit zbog dodatnih render passa:
Relativni kost:
- Default Lit: 1.0x
- Subsurface (basic): ~1.3x
- Subsurface Profile: ~1.5x-2.0x (zavisi od scatter radius-a)
Kljucni faktori koji uticu na kost:
- Scatter Radius -- veci radius = veci blur kernel = vise texture reads
- Broj SSS materijala na ekranu -- svaki SSS materijal dodaje blur pass
- Rezolucija -- SSS blur je screen-space, tako da veca rezolucija = vise posla
Optimizacijski saveti:
- Koristite Subsurface Profile samo za glavne karaktere koji su blizu kamere
- Za NPC-ove u daljini, Default Lit sa pametnom Base Color mapom moze biti dovoljno dobar
- Smanjite Scatter Radius za manje objekte
- Koristite LOD materijale -- na vecoj distanci prebacite na jednostavniji model (vise u Poglavlju 21)
18.4 Clear Coat -- Dvoslojni materijal
Fizicki fenomen
Clear Coat model simulira materijale koji imaju dva odvojena sloja: donji bazni sloj i gornji providni sloj sa sopstvenom reflektivnoscu. Ovo je izuzetno cest fenomen u realnom svetu:
- Farba na automobilu -- metalik baza + clear coat lak
- Lakirano drvo -- drvo + sloj laka
- Vlazne povrsine -- bilo koji materijal + tanak sloj vode na vrhu
- Lakirana koza -- patent leather
- Stakleni telefon/tablet -- displej ispod stakla
- Smola (epoxy) -- objekti zaliveni u providnu smolu
- Nokt -- keratin + sloj laka za nokte
Kako radi "ispod haube"
Clear Coat model izracunava dva odvojena specular lobe-a:
Total Specular = Bottom Layer Specular + Top Layer Specular
Bottom Layer (bazni sloj)
- Standardni Cook-Torrance BRDF
- Koristi Base Color, Metallic, Roughness iz materijala
- Ovo je "pravi" materijal ispod coata
Top Layer (clear coat sloj)
- Drugi Cook-Torrance BRDF, ali sa fiksnim parametrima:
- Metallic = 0 (coat je dielektricni)
- Roughness = kontrolise se posebnim Clear Coat Roughness parametrom
- F0 ~= 0.04-0.05 (tipicno za lak/staklo)
- Refleksija top layera je suptilna ali vidljiva -- daje materijalu dubinu
Interakcija izmedju slojeva
Svetlost koja prodje kroz top layer (bez refleksije) dolazi do bottom layera. Energija se konzervise -- sto vise svetlosti top layer reflektuje, manje ostaje za bottom layer:
// Pseudo-kod za Clear Coat
float coatFresnel = SchlickFresnel(clearCoat_F0, NdotV);
float coatAttenuation = 1.0 - coatFresnel * ClearCoat;
// Bottom layer dobija umanjenu svetlost
bottomSpecular = CookTorrance(baseParams) * coatAttenuation;
topSpecular = CookTorrance(coatParams) * ClearCoat;
finalColor = bottomSpecular + topSpecular;
Inputi specifcni za Clear Coat
Pored standardnih Default Lit inputova, Clear Coat model dodaje:
Clear Coat (Scalar, 0-1)
Intenzitet clear coat sloja:
- 0.0 = nema coat-a (ponasa se kao Default Lit)
- 1.0 = potpun coat
- Medjuvrednosti su korisne za efekte trosenja (worn clear coat)
Clear Coat Roughness (Scalar, 0-1)
Roughness gornjeg sloja, nezavisna od roughness donjeg sloja:
- 0.0 = savrsen sjaj (novi auto lak)
- 0.1-0.2 = koristen ali jos sjajan
- 0.3+ = matiran ili istrosen coat
Clear Coat Normal
Ovo je izuzetno koristan input koji omogucava posebnu Normal mapu za gornji sloj. Primer:
- Orange peel efekat na automobilima: Farba na auto ima mikro-neravnine u clear coat-u koje su razlicite od neravnina u baznom sloju. Clear Coat Normal moze da simulira ovo -- suptilne, siroke varijacije normala samo na gornjem sloju.
- Kapljice vode: Base normal je gladak, ali Clear Coat Normal ima bump-ove za kapljice.
- Prskanje prasine: Base je gladak metal, coat normal ima sitne neravnine.
Primer: Automobilska farba
- Base Color: boja farbe (npr. crvena)
- Metallic: 0.8-1.0 (metalik farba)
- Roughness: 0.3-0.5 (baza ispod coata)
- Clear Coat: 1.0
- Clear Coat Roughness: 0.02-0.05 (sjajan lak)
- Clear Coat Normal: suptilna orange peel tekstura
Vizuelni efekat
Clear Coat materijal se razlikuje od obicnog sjajnog materijala na nekoliko nacina:
- Dva odvojena specular highlight-a -- ako pazljivo gledate, videcete dva odvojena odsjaja: jedan od coat-a (ostriji, belji) i jedan od baze (siri, obojen)
- Dubina -- materijal izgleda kao da ima "dubinu" jer vidite refleksiju na dva razlicita nivoa
- Razlicito ponasanje na uglovima -- Fresnel efekat na coat-u i na bazi se razlicito ponasaju, sto daje karakteristican izgled
Performanse
Clear Coat je skuplji od Default Lit jer GPU mora da izracuna dva odvojena specular lobe-a:
Relativni kost:
- Default Lit: 1.0x
- Clear Coat: ~1.3x-1.5x
Razlozi za dodatan kost:
- Dva Cook-Torrance evaluiranja umesto jednog
- Dodatni Normal map sampling (ako koristite Clear Coat Normal)
- Fresnel kalkulacija za oba sloja
Optimizacijski savet: Za objekte u daljini, razmislite o prelasku na Default Lit sa vecom roughness -- efekat dva sloja je teze primetiti na velikoj distanci.
18.5 Anisotropy -- Direkciona hrapavost
Fizicki fenomen
Vecina materijala koje srecemo u svakodnevnom zivotu ima izotropnu hrapavost -- mikro-neravnine na povrsini su ravnomerno rasporedjene u svim pravcima. Medjutim, neki materijali imaju anizotropnu hrapavost -- mikro-neravnine su poravnate u jednom pravcu, sto stvara karakteristican izduzen specular highlight.
Primeri anizotropnih materijala:
- Cesljani (brushed) metal -- cetkica ostavlja paralelne mikro-brazde
- Brušeni aluminijum -- industrijski obradjen metal sa vidljivim pravcima obrade
- Kosa -- svaka dlaka je cilindar sa anizotropnom refleksijom
- Vinilne ploce -- koncentricne brazde na ploce
- CD/DVD diskovi -- spiralne brazde stvaraju difrakcionu saru
- Saten tkanina -- vlakna poravnata u jednom pravcu
- Bakarno zice -- vukovano zica ima anizotropnu refleksiju
Kako Anisotropy modifikuje BRDF
U izotropnom GGX modelu, roughness je ista u svim pravcima. Anizotropni GGX model uvodi dva odvojena roughness parametra:
// Izotropni GGX:
alpha = roughness^2
// Anizotropni GGX:
alpha_x = roughness * (1 + anisotropy) // roughness u tangent pravcu
alpha_y = roughness * (1 - anisotropy) // roughness u bitangent pravcu
Kada je anisotropy = 0, alpha_x == alpha_y i model se ponasa izotropno (standardni GGX). Kada je anisotropy > 0, roughness u jednom pravcu se povecava dok se u drugom smanjuje, sto dovodi do izduzenog specular highlight-a.
Normal Distribution Function za anizotropni GGX:
D_aniso(h) = 1 / (PI * alpha_x * alpha_y * ((h.x/alpha_x)^2 + (h.y/alpha_y)^2 + h.z^2)^2)
Gde su h.x i h.y komponente half-vector-a u tangent space-u (poravnate sa tangent i bitangent pravcima).
Inputi za Anisotropy
Anisotropy (Scalar, -1 do 1)
- 0 = izotropno (isto kao Default Lit)
- 1 = maksimalna anizotropija u tangent pravcu (highlight izduzen duz bitangent-a)
- -1 = maksimalna anizotropija u bitangent pravcu (highlight izduzen duz tangent-a)
Tangent (Vector, World/Tangent Space)
Tangent vektor odredjuje pravac anizotropije. Ovo je kljucni input jer odredjuje u kom pravcu ce se specular highlight izduziti.
Za vecinu slucajeva, tangent se izvodi iz UV mapiranja modela (tangent pravac prati U os UV mape). Medjutim, mozete ga eksplicitno zadati:
Nacini definisanja tangent pravca:
1. Automatski iz UV-a (podrazumevano) -- radi za vecinu slucajeva
2. Custom tangent mapa -- tekstura koja definise pravac za svaki piksel
3. Proceduralni tangent -- izracunat u Material Graphu (npr. radijalni za CD)
Prakticni primer: Cesljani metal
Material setup za brushed metal (cesljani nerdjajuci celik):
- Shading Model: Default Lit (sa Anisotropy omogucenom)
- Base Color: (0.6, 0.6, 0.6) -- svetlo siv metal
- Metallic: 1.0
- Roughness: 0.25
- Anisotropy: 0.8
- Tangent: iz UV-a (UV poravnat sa pravcem cesljanja)
Za ovaj efekat, kljucno je da UV mapa modela bude poravnata sa pravcem u kome je metal cesljan. Ako je metal cesljan horizontalno, U os UV mape treba da bude horizontalna.
Prakticni primer: Vinilna ploca
Za vinilnu plocu, brazde su koncentricne krugove oko centra. Tangent pravac treba da prati ove krugove -- sto znaci da je tangent u svakoj tacki tangencijalan na krug:
// Proceduralni radijalni tangent u Material Graphu:
1. Object Position - Pivot Point = lokalni offset
2. Normalizujte XY komponentu
3. Rotirajte za 90 stepeni (tangent na krug, ne normala kruga)
4. Povezite na Tangent input
Performanse
Anizotropni specular je skuplji od izotropnog jer:
- GGX NDF je kompleksnija (dve roughness vrednosti umesto jedne)
- Potreban je tangent frame (tangent + bitangent vektori)
- Dodatne trigonometrijske operacije
Relativni kost:
- Default Lit (izotropni): 1.0x
- Default Lit (anizotropni): ~1.15x-1.25x
Razlika nije drasticna, ali se akumulira ako imate mnogo anizotropnih povrsina.
18.6 Thin Translucent -- Tanki providan materijal
Fizicki fenomen
Thin Translucent model je dizajniran za tanke listove materijala kroz koje svetlost moze da prodje. Kljucna razlika u odnosu na SSS: ovde nema volumetrijskog rasprsivanja svetlosti unutar materijala. Svetlost jednostavno prolazi kroz tanak sloj i izlazi sa druge strane, potencijalno sa promenjenom bojom (apsorpcija).
Primeri:
- Papir -- drzite list papira prema svetlu i vidite da je providan
- Lisce (tanko) -- svetlost prolazi kroz list
- Tanka tkanina -- svila, sifon, tanka pamucna tkanina
- Lampion -- papirni ili tkaninski lampion
- Sator -- tanka tkanina satora, posebno danju
- Usi likova -- veoma tanki delovi tela (moze se koristiti i SSS)
- Leptirova krila -- tanke strukture koje propustaju svetlost
Razlika izmedju Thin Translucent i SSS
| Aspekt | SSS | Thin Translucent |
|---|---|---|
| Rasprsivanje | Da, volumetrijsko | Ne, samo transmisija |
| Debljina materijala | Vazan parametar | Pretpostavlja se tanak |
| Back-lighting | Da, sa scatter-om | Da, direktna transmisija |
| Boja transmisije | Scatter profil | Jednostavna apsorpcija |
| Kost | Visok (blur passes) | Nizak |
| Koriscenje | Koza, vosak, mramor | Papir, lisce, tkanina |
Kako radi
Thin Translucent model izracunava koliko svetlosti prolazi kroz materijal korisceci jednostavan transmisioni model:
// Pseudo-kod za thin translucent
float transmission = (1 - opacity) * surfaceTransmission;
float3 transmitted = lightColor * transmission * surfaceColor;
// Finalna boja = normalni lit rezultat + transmitted svetlost sa zadnje strane
finalColor = frontLitColor + transmitted;
Svetlost koja dolazi sa zadnje strane objekta se:
- Atenuira u zavisnosti od debljine/opacity
- Oboji bojom materijala (apsorpcija -- zeleni list propusta zelenu svetlost)
- Dodaje na prednji lit rezultat
Inputi
Thin Translucent koristi standardne Default Lit inpute plus:
- Opacity -- koliko je materijal providan za svetlost sa zadnje strane
- Subsurface Color (ili Transmission Color) -- boja svetlosti koja prolazi
Back-lighting efekat
Najupecatljiviji vizuelni efekat Thin Translucent modela je back-lighting. Kada je izvor svetlosti iza tankog objekta, svetlost prolazi kroz njega i osvetljava prednju stranu:
- List drveta sa suncem iza njega svetli zelenkasto
- Papirni lampion sa svecom unutra
- Satorna tkanina danju
- Usi likova kada je sunce iza njih
Ovaj efekat je vizuelno veoma efektan i dodaje realizam sceni uz minimalan kost.
Performanse
Thin Translucent je mnogo jeftiniji od SSS-a jer nema blur/diffusion pass:
Relativni kost:
- Default Lit: 1.0x
- Thin Translucent: ~1.05x-1.1x
- Subsurface: ~1.3x
- Subsurface Profile: ~1.5x-2.0x
Ako vam treba efekat svetlosti koja prolazi kroz materijal ali ne trebate rasprsivanje (scattering), Thin Translucent je odlican izbor. Koristite SSS samo kada vam zaista treba volumetrijsko rasprsivanje (koza, vosak, mramor).
18.7 Hair Shading Model -- Renderovanje kose
Zasto je kosa poseban problem
Kosa je jedan od najtezih materijala za renderovanje u real-time grafici. Postoji nekoliko razloga:
-
Geometrija -- kosa se sastoji od hiljada individualnih vlakana, svako debljine ~70 mikrometara. Renderovanje svake dlake kao geometrije je izuzetno skupo.
-
Optika -- svetlost interaguje sa kosom na kompleksan nacin. Svaka dlaka je transparentan cilindar koji reflektuje, prelamaju (refract) i interno reflektuje svetlost.
-
Multiple scattering -- svetlost se rasprsuje izmedju dlaka, sto daje kosi karakteristicnu "mekotu" i dubinu.
-
Anizotropija -- specular highlight na kosi je uvek izduzen duz pravca dlake (jer je dlaka cilindar).
-
Transparentnost i sortiranje -- kosa je delimicno providna, sto zahteva korektno sortiranje (vidi Poglavlje 09).
Marschner Hair Model
UE5 koristi Marschner model za hair shading, koji je fizicki zasnovan model specifican za cilindricna vlakna (kosa, krzno). Marschner model razlaze svetlost koja interaguje sa dlakom na tri komponente:
R (Reflection) -- Direktna refleksija
Svetlost se reflektuje direktno sa spoljne povrsine dlake bez ulaska u nju. Ovo stvara primarni specular highlight na kosi. Karakteristike:
- Boja refleksije je bela (boja svetlosti) -- svetlost ne prodire u dlaku, ne apsorbuje se
- Highlight je uzak i svetao
- Polozaj zavisi od ugla svetla i ugla gledanja
TT (Transmission) -- Transmisija
Svetlost ulazi u dlaku sa jedne strane, prolazi kroz nju, i izlazi sa druge strane:
- Prelamanje (refraction) na ulazu
- Apsorpcija unutar dlake (boja dlake utice na boju transmitovane svetlosti)
- Prelamanje na izlazu
Karakteristike:
- Boja je obojana bojom dlake (svetlost je prosla kroz pigmentiran materijal)
- Vidljiva je sa zadnje strane kose (backlit kosa)
- Daje kosi karakteristican "halo" efekat kada je svetlo iza osobe
TRT (Internal Reflection) -- Interna refleksija
Svetlost ulazi u dlaku, reflektuje se sa unutrasnje strane, i izlazi:
- Prelamanje na ulazu
- Interna refleksija
- Apsorpcija (dva prolaska kroz materijal)
- Prelamanje na izlazu
Karakteristike:
- Stvara sekundarni specular highlight, pomeren u odnosu na primarni
- Boja je obojana (vise od TT jer svetlost prolazi dva puta kroz materijal)
- Daje kosi dubinu i bogatsvo boje
Vizuelno na kosi:
1. R lobe: Svetao, beli highlight na vrhu kose
2. TRT lobe: Meksi, obojeni highlight ispod R highlight-a
3. TT: Soft glow sa zadnje strane kose (backlit)
Implementacija u UE5
UE5 Hair shading model implementira Marschner model sa sledecim inputima:
- Base Color -- boja dlake (koristi se za apsorpciju u TT i TRT komponentama)
- Metallic -- obicno 0 za kosu
- Roughness -- kontrolise sirinu specular lobe-ova (tipicno 0.2-0.5 za kosu)
- Scatter -- intenzitet multiple scattering-a izmedju dlaka
- Tangent -- pravac dlake (kljucno za korektan oblik specular highlight-a)
- Backlit -- kontrolise intenzitet back-lighting efekta (TT komponenta)
- Specular -- intenzitet specular refleksije
Geometrija kose u UE5
UE5 podrzava dva glavna pristupa geometriji kose:
1. Hair Cards (strip/card metod)
- Kosa se predstavlja kao niz ravnih povrsina (kartica) sa transparentnom teksturom
- Svaka kartica prikazuje grupu dlaka
- Jeftinije za renderovanje
- Koristi se za vecinu igara
- Alpha testing ili alpha blending za providne delove
2. Hair Strands (Groom system)
- Svaka dlaka je individualna kriva (spline)
- Mnogo realisticniji rezultat
- Izuzetno skup za renderovanje
- UE5 podrzava Alembic groom import
- Koristi se za filmski kvalitet ili next-gen projekte
Performanse
Hair shading je znacajno skuplji od Default Lit:
Relativni kost:
- Default Lit: 1.0x
- Hair: ~2.0x-3.0x (shader kost)
+ Geometry kost: Hair cards su OK, hair strands su veoma skupi
+ Transparency: Alpha blending za kosu zahteva sortiranje (Poglavlje 09)
+ Overdraw: Kosa ima veliki overdraw (mnogo slojeva karata)
Optimizacijski saveti:
- Koristite hair cards za vecinu karaktera
- Hair strands samo za glavnog lika i samo u cinematic rezimima
- LOD sistem: smanjite broj kartica sa distancom
- Dithered opacity umesto alpha blending za smanjenje overdraw-a
- Ogranucite broj svetala koja uticu na kosu
18.8 Eye Shading Model -- Renderovanje ociju
Zasto su oci kriticne za realizam
Oci su prvi element koji ljudi gledaju na licu nekog karaktera. Ljudski mozak je evolucijski optimizovan za citanje izraza lica i pogleda -- sto znaci da je izuzetno senzitivan na bilo kakvu nepravilnost u renderovanju ociju. Cak i suptilne greske mogu da unisite iluziju "zivog" lika i izazovu uncanny valley efekat.
Realisticne oci zahtevaju simulaciju vise opticki kompleksnih fenomena koji se ne mogu postici standardnim PBR modelom.
Anatomija oka iz perspektive renderinga
Oko se sastoji od vise slojeva koji su relevantni za rendering:
1. Kornea (Cornea)
- Spoljni, providni sloj oka
- Konveksna povrsina sa visokim indeksom prelamanja (~1.376)
- Daje oku karakteristican sjajni refleks
- Prelamanje (refraction) kroz korneu distorzira iris ispod nje
2. Iris
- Obojeni deo oka sa kompleksnom mikro-strukturom
- Sadrzi kriptove, fibrilarne strukture, pigmentne slojeve
- Reaguje na svetlost -- pupila se siri/sužava
- Kaustike -- svetlost koja se prelamaju kroz korneu fokusira se na iris, stvarajuci svetle tacke
3. Pupila
- Otvor u centru irisa
- Crna (apsorbuje skoro svu svetlost)
- Dinamicki menja velicinu (mydriasis/miosis)
4. Beonjaca (Sclera)
- Beli deo oka
- Nije savrseno bela -- ima suptilne krvne sudove, zuckaste tonove
- Pokazuje SSS efekat (svetlost se rasprsuje ispod povrsine beonjace)
- Vlazna povrsina sa specular refleksom
5. Suzni film (Tear Film)
- Tanak sloj tecnosti preko celog oka
- Daje oku vlazni, sjajni izgled
- Moze da stvori suptilne kaustike i refleksije
Kako Eye Shading Model radi
UE5 Eye shading model kombinuje nekoliko tehnika:
Refrakcija kornee
Kornea je konveksna providna povrsina koja prelamaju svetlost. Kada gledate neciji iris, zapravo ga vidite kroz korneu -- sto znaci da je slika irisa blago distorzirana i pomerena. Eye model simulira ovo korisceci parallax/refraction offset:
// Pseudo-kod za kornealnu refrakciju
float3 refractedView = refract(viewDir, corneaNormal, 1.0/1.376);
float2 irisUV = baseUV + refractedView.xy * irisDepth;
// Semplujemo iris teksturu sa pomaknutim UV-om
float3 irisColor = IrisTexture.Sample(irisUV);
Ovo stvara suptilnu ali vaznu iluziju dubine -- iris izgleda kao da je "ispod" kornee, ne na istoj ravni sa njom.
Kaustike na irisu
Svetlost koja prolazi kroz korneu se fokusira na iris, stvarajuci svetle tacke (kaustike). UE5 moze da simulira ovo korisceci:
- Aproksimaciju bazirano na poziciji svetla i geometriji kornee
- Izracunat fokusirani osvetljenost na irisu
- Bright spots koji se pomeraju sa promenom ugla svetla
SSS na beonjaci
Beonjaca (sclera) pokazuje suptilan SSS efekat. Eye model ukljucuje pojednostavljeni SSS za beonjacku oblast:
- Svetlost se rasprsuje ispod bele povrsine
- Daje beonjaci meksi, organski izgled
- Sprečava "teniski loptica" efekat (suvise bela, suvise oštra beonjaca)
Dual specular
Oko ima dva sloja specular refleksije:
- Kornea specular -- ostar, svetao refleks na spoljnoj povrsini (kornea je mokra i glatka)
- Iris specular -- mnogo meksi, difuzniji refleks na samom irisu (tekstura irisa ima mikro-hrapavost)
Kljucni inputi
Eye shading model koristi:
- Iris Normal -- normal mapa za iris teksturu (daje dubinu)
- Iris Mask -- definise oblast irisa vs. beonjaca
- Iris Distance -- dubina irisa ispod kornee (za refrakciju)
- Base Color -- boja irisa i beonjace
- Roughness -- razlicit za korneu (veoma nizak) i beonjaci (nesto visi)
- Specular -- intenzitet specular refleksije
Prakticni saveti za realisticne oci
-
Geometrija oka treba da bude odvojena od ostatka glave -- kornea je posebni mesh sa konveksnom geometrijom
-
Iris tekstura treba da ima:
- Visok nivo detalja (kriptovi, fibrili, pigmentne varijacije)
- Radijalnu strukturu (vlakna od pupile ka ivici)
- Varijacije boje (nikada uniformna boja)
- Limubus ring (tamni prsten na ivici irisa)
-
Beonjaca treba da ima:
- Suptilne krvne sudove (posebno na ivicama)
- Blago zuckast/rozikast ton (nikada cisto bela)
- Vlazni specular
-
Kornea refleks -- specular highlight na kornei treba da bude ostar i svetao. Ovo je "iskra u oku" koja najvise doprinosi osecaju zivosti lika.
-
Animacija -- pupila treba da reaguje na svetlost (dilatacija), pogled treba da bude korektan (focus point), i kapci treba da se prirodno pomeraju.
Performanse
Relativni kost:
- Default Lit: 1.0x
- Eye: ~1.5x-2.0x
Eye shader je skuplji zbog refrakcije, dual specular-a, i SSS kalkulacija. Medjutim, oci su male na ekranu (mali broj piksela), tako da je ukupan uticaj na performanse obicno mali. Glavna briga su texture reads (iris tekstura, normal mapa, sclera tekstura, itd.).
18.9 Cloth/Fabric Shading Model -- Renderovanje tkanina
Zasto tkanine ne prate standardni PBR
Tkanine (pamuk, svila, vuna, poliester, denim, itd.) imaju fundamentalno drugaciju mikro-strukturu od metala ili plastike. Dok metal i plastika imaju relativno ravnu povrsinu sa mikro-neravninama, tkanina se sastoji od prepletenih vlakana koja interaguju sa svetloscu na potpuno drugaciji nacin.
Kljucne razlike:
- Specular highlight na tkanini je siri i meksi -- vlakna rasprsuju svetlost u sirokom uglu
- "Fuzz" na ivicama -- vlakna koja strce iz povrsine tkanine stvaraju mekan sjaj na ivicama (grazing angles), posebno na somotu i veluru
- Inverzni Fresnel -- na tkaninana poput somota, ivice su svetlije nego centar, sto je suprotno od standardnog Fresnel efekta
- Anizotropni odsjaj -- mnoge tkanine imaju izduzen specular u jednom pravcu (pravac tkanja)
Standardni Cook-Torrance BRDF ne moze da reprodukuje ove fenomene jer pretpostavlja ravnu povrsinu sa mikro-fasetkama -- sto ne opisuje strukturu tkanine.
Cloth BRDF modeli
UE5 Cloth shading model koristi alternativni BRDF koji je dizajniran za tkanine. Postoje dva glavna modela:
Ashikhmin Velvet Model
Dizajniran od strane Michaela Ashikhmina za somot (velvet) i slicne materijale sa "fuzz" efektom. Ovaj model:
- Simulira rasprsivanje svetlosti na visi vlakana koja strce iz povrsine
- Proizvodi inverzni Fresnel efekat -- ivice su svetlije
- Daje karakteristican mekan, "warm" izgled tkanine
Charlie Sheen Model
Noviji model koji je generalnije primenljiv na razlicite tipove tkanina. Nazvan po "sheen" efektu koji tkanina pokazuje. Karakteristike:
- Meksi specular highlight sa sirokom distribucijom
- Bolje rukovanje razlicitim tipovima tkanina (ne samo somot)
- Fizicki vise plauzibilan model
UE5 koristi Charlie sheen model kao osnovu za Cloth shading model, sa opcionalnim fuzz slojem.
Inputi za Cloth model
Pored standardnih inputa, Cloth model dodaje:
Fuzz Color (RGB)
Boja "malja" na povrsini tkanine. Ovo je boja koja se vidi na ivicama (grazing angles). Na primer:
- Crni somot sa plavim fuzz-om (karakteristican efekat)
- Tamno plava tkanina sa svetlije plavim fuzz-om
- Bela tkanina sa belim fuzz-om (suptilniji efekat)
Cloth (Scalar, 0-1)
Intenzitet cloth shading efekta:
- 0 = potpuno metallic/plastic ponasanje (standardni BRDF)
- 1 = potpuno cloth ponasanje (Charlie sheen BRDF)
Tipicna podesavanja za razlicite tkanine
Pamuk (Cotton):
- Base Color: boja tkanine
- Roughness: 0.7-0.9
- Cloth: 1.0
- Fuzz Color: blago svetlija varijanta Base Color
- Metallic: 0
- Normal: mikro-tekstura tkanja
Somot (Velvet):
- Base Color: tamna varijanta boje
- Roughness: 0.8-1.0
- Cloth: 1.0
- Fuzz Color: svetlija varijanta boje (kljucan za velvet efekat)
- Metallic: 0
- Normal: sitna tekstura vlakana
Svila (Silk):
- Base Color: boja svile
- Roughness: 0.3-0.5
- Cloth: 0.7-0.8
- Fuzz Color: svetlija varijanta
- Metallic: 0
- Anisotropy: 0.3-0.5 (svila ima anizotropni sjaj)
Denim (Farmerke):
- Base Color: plava boja denima
- Roughness: 0.8-0.95
- Cloth: 1.0
- Fuzz Color: svetlije plava
- Normal: jaka mikro-tekstura (dijagonalno tkanje denima)
Koza (Leather) -- standardni, ne cloth:
- Shading Model: Default Lit (ne Cloth!)
- Base Color: boja koze
- Roughness: 0.3-0.6
- Metallic: 0
- Normal: jaka tekstura pora i nabora
Performanse
Relativni kost:
- Default Lit: 1.0x
- Cloth: ~1.1x-1.2x
Cloth model je blago skuplji od Default Lit jer koristi drugaciju BRDF evaluaciju i dodaje fuzz sloj. Medjutim, razlika je mala i Cloth model se moze slobodno koristiti na svim tkaninama bez znacajnog uticaja na performanse.
18.10 Tabela poredjenja shading modela
Sledeca tabela sumarize sve modele koje smo obradili, sa njihovim kljucnim karakteristikama, relativnim kostom, i tipicnim primenama:
| Shading Model | Relativni kost | Kljucna karakteristika | Tipicna primena |
|---|---|---|---|
| Default Lit | 1.0x (referenca) | Standardni PBR (Cook-Torrance + Lambert) | Metal, plastika, drvo, kamen, staklo, keramika -- vecina materijala |
| Unlit | ~0.3x | Bez lighting kalkulacija | UI, post-process, custom lighting, VFX, billboardi |
| Subsurface | ~1.3x | Jednostavniji SSS efekat | Koža (background NPC), vosak, lisce |
| Subsurface Profile | ~1.5x-2.0x | Fizicki tacniji SSS (Burley) | Koža (glavni karakter), jade, mramor, mleko |
| Clear Coat | ~1.3x-1.5x | Dva specular sloja | Auto farba, lakirano drvo, vlazne povrsine |
| Anisotropy | ~1.15x-1.25x | Direkciona roughness | Cesljani metal, kosa (basic), CD, saten |
| Thin Translucent | ~1.05x-1.1x | Transmisija bez scatteringa | Papir, tanke tkanine, lisce, lampioni |
| Hair | ~2.0x-3.0x | Marschner model (R, TT, TRT) | Kosa, krzno, brk, obrve |
| Eye | ~1.5x-2.0x | Kornealna refrakcija, kaustike | Ljudske oci, oci zivotinja |
| Cloth | ~1.1x-1.2x | Charlie sheen BRDF, fuzz | Tkanine (pamuk, somot, svila, denim) |
Dijagram odluke -- Koji model koristiti?
Da li materijal reaguje na svetlost?
/ \
Da Ne
/ \
DEFAULT LIT pocetak UNLIT
|
Da li svetlost prolazi KROZ materijal?
/ | \
Da Delimicno Ne
/ | \
Da li je materijal tanak? | Da li ima jasni sloj?
/ \ | / \
Da Ne | Da Ne
| | | | |
THIN SUBSURFACE | CLEAR COAT |
TRANSLUCENT PROFILE | |
| Da li je tkanina?
Da li je koza? / \
/ \ Da Ne
Da Ne | |
| | CLOTH Da li je anizotropno?
SUBSURFACE | / \
PROFILE | Da Ne
| | |
Da li je kosa? ANISOTROPY DEFAULT LIT
/ \
Da Ne
| |
HAIR Da li je oko?
/ \
Da Ne
| |
EYE DEFAULT LIT
18.11 Blend Modes -- Nacini mesanja materijala
Uvod u Blend Modes
Pored shading modela (koji odredjuje kako se svetlost izracunava), blend mode odredjuje kako se rezultat materijala kombinuje sa scenom iza njega. Ovo je kriticna odluka koja znacajno utice na rendering pipeline i performanse.
Blend mode se odabira u Material Details panelu, nezavisno od shading modela. Medjutim, neke kombinacije su logicnije od drugih.
Opaque -- Neprozirni blend
Kako radi
Opaque je najjednostavniji i najjeftiniji blend mode. Piksel materijala potpuno zamenjuje sve sto je iza njega. Nema mesanja, nema transparentnosti.
U deferred rendering pipeline-u:
- Geometrija se renderuje u GBuffer (Base Color, Normal, Metallic, Roughness, itd.)
- Upisuje se u depth buffer (z-buffer)
- Lighting se izracunava u odvojenom pasu koristeci GBuffer podatke
- Early-Z rejection eliminise piksele koji su iza vec renderovanih objekata
Zasto je najjeftiniji
- Depth write omogucava early-z rejection -- pikseli koji su iza vec renderovanog objekta se preskasu BEZ izvrsavanja pixel shader-a
- Nema sortiranja -- redosled renderovanja nije vazan (depth buffer se brine o korektnoj okluziji)
- GBuffer kompatibilan -- potpuno kompatibilan sa deferred rendering pipeline-om
- Nema alpha blending -- jedna operacija upisivanja
Kada koristiti
Koristite Opaque za sve materijale koji nisu providni. Ovo je podrazumevani i preporuceni blend mode. Cak i materijali koji realno imaju malo transparentnosti (npr. staklene flase sa debelim staklom) su cesto bolje realizovani kao Opaque sa visokim specularem.
Masked -- Maskirana transparentnost
Kako radi
Masked blend mode je binarna transparentnost: svaki piksel je ili potpuno vidljiv ili potpuno nevidljiv. Nema poluprozirnih piksela. Odluka se donosi na osnovu Opacity Mask inputa i Opacity Mask Clip Value praga:
if (OpacityMask >= ClipValue)
// Piksel je vidljiv -- renderuje se normalno
else
// Piksel se odbacuje (discard/clip) -- potpuno providan
U praksi, ovo koristi clip() (HLSL) ili discard (GLSL) instrukciju u pixel shader-u.
Prednosti i mane
Prednosti:
- Kompatibilan sa deferred pipeline-om (upisuje se u GBuffer)
- Upisuje depth -- korektna okluzija sa drugim objektima
- Ne zahteva sortiranje
- Podrzava senke (shadow mapping radi korektno)
Mane:
- Nema anti-aliasing na ivicama maskiranja -- ivice su ostre i nazubljene (aliasing)
- Pixel shader se izvrsava za SVE piksele -- discard se desava NAKON sto shader zavrsi, tako da nema ustedu od early-z za maskirane piksele
- Aliasing je najveci problem -- ivice lista, trave, restetki, ograda imaju vidljive stepenice
Resenja za aliasing
- Temporal Dithering -- UE5 moze da koristi dithered opacity umesto ostrih ivica, gde se TAA (Temporal Anti-Aliasing) oslanja na razresavanje dithering paterna kroz vreme
- Veci Opacity Mask Clip Value -- umesto 0.5, probajte 0.33 da sacuvate vise detalja
- TAA -- Temporal Anti-Aliasing pomaze jer usrednjava ivice kroz vise frejmova
- MSAA -- ne pomaze za texture-based masking (samo za geometrijske ivice)
Tipicna primena
- Lisce drveca
- Trava
- Ograde, resetke
- Kosa (hair cards sa alpha mask-om)
- Zicane ograde, mreze
- Decali sa nepravilnim oblicima
Translucent -- Providna transparentnost
Kako radi
Translucent je prava transparentnost gde se piksel materijala mesa sa pikselima iza njega na osnovu opacity vrednosti:
finalColor = materialColor * opacity + sceneColorBehind * (1 - opacity)
Ovo je standardni "alpha blending" koji se koristi u 2D grafici, ali u 3D svetu donosi niz ozbiljnih problema.
Problemi sa Translucent blend mode-om
1. Nema depth write (podrazumevano)
Translucent materijali ne upisuju depth u z-buffer (podrazumevano). To znaci:
- Nema early-z rejection -- pikseli iza translucent objekta se i dalje renderuju
- Overdraw je znacajan problem -- svaki sloj translucentnog materijala dodaje kost
- Vise u Poglavlju 09
2. Sortiranje je neophodno (i problematicno)
Da bi alpha blending bio korektan, translucentni objekti moraju da se renderuju od najdaljeg ka najblizem (back-to-front). Ovo zahteva sortiranje, koje:
- Dodaje CPU kost (sortiranje objekata)
- Moze da propadne (overlapping objekti koji se ne mogu korektno sortirati)
- Per-object sortiranje, ne per-pixel (dva poligona istog objekta mogu biti pogresno sortirani)
3. Ne koristi deferred pipeline
Translucentni materijali se renderuju u forward pass-u, ne kroz GBuffer. To znaci:
- Lighting se izracunava u pixel shader-u (za svaki piksel)
- Ogranicen broj svetala (obicno mali broj najvaznijih svetala)
- Nema screen-space refleksija
- Nema SSAO/GTAO
4. Shader complexity je visa
Zato sto se lighting izracunava inline u pixel shader-u (forward), a ne u odvojenom lighting pass-u (deferred), shader za Translucent materijale je obicno kompleksniji.
Translucent Lighting Modes
UE5 nudi nekoliko lighting modova za translucentne materijale, svaki sa razlicitim balansom kvaliteta i performansi:
- Volumetric NonDirectional -- najjednostavniji, svetlost iz svih pravaca
- Volumetric Directional -- dodaje direkcionalnu komponentu
- Volumetric PerVertex -- lighting po vertexu (jeftinije, ali manje precizno)
- Surface ForwardShading -- najprecizniji, koristi isti lighting kao opaque materijali ali u forward pass-u
- Surface TranslucencyVolume -- koristi volumetrijske light podatke za translucency lighting
Kada koristiti
- Staklo (prozori, case, boce)
- Voda (surface, ne volumen)
- Dim, magla (particle sistemi)
- Hologrami, energetski stitovi
- Ghostly efekti
- Ice (led) -- delimicno providan
- Gel, sluz
- Oblaci (volumetrijski ili billboard)
Additive -- Aditivni blend
Kako radi
Additive blend mode dodaje boju materijala na scenu iza njega:
finalColor = sceneColorBehind + materialColor * opacity
Nema "pokrivanja" scene -- materijal samo dodaje svetlost. Crni pikseli (0,0,0) su potpuno providni jer ne dodaju nista.
Karakteristike
- Ne moze da zatamni scenu -- samo dodaje svetlost
- Crna = providno -- ne treba vam alpha maska za providne delove
- Ne zahteva sortiranje -- aditivno mesanje je komutativno (A+B = B+A), redosled ne utice na rezultat
- Nema depth write
Tipicna primena
- Svetlosni efekti -- lens flare, light shafts, glow
- Vatra -- particl efekti za plamen
- Iskre -- kratke svetlosne cestice
- Laser, energija -- svetlosni zraci
- Duhovi svetlosti -- ghostly glow
- Eksplozije -- svetla faza eksplozije
Modulate -- Multiplikativni blend
Kako radi
Modulate blend mode mnozi boju materijala sa scenom iza njega:
finalColor = sceneColorBehind * materialColor
Karakteristike
- Moze samo da zatamni -- vrednosti su 0-1, mnozenje uvek smanjuje ili zadrzava vrednost
- Belo (1,1,1) = providno -- ne menja scenu iza
- Crno (0,0,0) = potpuno crno -- eliminise svu svetlost
- Obojeno (npr. crveno = 1,0,0) -- filtrira scenu -- propusta samo crvenu svetlost
- Nema depth write
- Ne zahteva sortiranje -- multiplikativno mesanje je komutativno
Tipicna primena
- Sencke -- decal senke (npr. projekted shadow decals)
- Darkening efekti -- vinjete, zatamnjenja
- Obojena stakla -- stained glass efekat (filtrira svetlost)
- Prljanje -- decali za prljavstinu, vlazne mrlje
Tabela poredjenja Blend Modes
| Blend Mode | Depth Write | Sortiranje | Deferred | Senke | Relativni kost | Primena |
|---|---|---|---|---|---|---|
| Opaque | Da | Ne treba | Da | Da | 1.0x | Vecina materijala |
| Masked | Da | Ne treba | Da | Da | ~1.1x | Lisce, trava, ograde, kosa |
| Translucent | Ne* | Da | Ne (forward) | Ograniceno | ~2.0x-4.0x | Staklo, voda, dim |
| Additive | Ne | Ne treba | Ne | Ne | ~1.5x-2.0x | Svetlosni efekti, vatra |
| Modulate | Ne | Ne treba | Ne | Ne | ~1.5x-2.0x | Senke, zatamnjenja |
*Translucent moze opciono da upisuje depth, ali se to retko koristi jer onemogucava korektno mesanje sa drugim translucentnim objektima.
Uticaj na rendering pipeline
Razumevanje kako blend modes uticu na rendering pipeline je kljucno za optimizaciju. Detaljno o ovome govorimo u Poglavlju 09 (depth buffer i transparency sorting) i Poglavlju 21 (shader optimizacija), ali evo sazetka:
Opaque/Masked objekti (Deferred path):
1. Z-Prepass (opciono) -- popuni depth buffer bez pixel shader kosta
2. GBuffer Fill -- renderuj sve opaque/masked materijale u GBuffer
- BaseColor RT
- Normal RT
- Metallic/Roughness/AO RT
- Depth buffer
3. Lighting Pass -- izracunaj lighting za celu scenu koristeci GBuffer
4. Post-processing
Translucent/Additive/Modulate objekti (Forward path):
1. Sortiraj objekte back-to-front (za Translucent)
2. Za svaki objekat:
a. Izvrsi vertex shader
b. Izvrsi pixel shader (ukljucujuci inline lighting)
c. Blend rezultat sa scene color bufferom
3. Post-processing
Kljucna razlika: Deferred path izracunava lighting JEDNOM za celu scenu. Forward path izracunava lighting POSEBNO za svaki translucentni objekat. Zato su translucentni materijali znacajno skuplji, posebno sa mnogo svetala u sceni.
Prakticni saveti za Blend Modes
-
Koristite Opaque kad god je moguce. Cak i ako materijal ima malo transparentnosti, razmislite da li Opaque + dithered transparency moze da postigne slican efekat.
-
Masked umesto Translucent za binarne slucajeve. Ako je piksel ili potpuno providan ili potpuno vidljiv (lisce, resetke), koristite Masked. Manje je skupo od Translucent.
-
Ogranucite overdraw za translucentne materijale. Svaki sloj translucentnog materijala kosta. Particle sistemi sa mnogo overlapping cestica su cest uzrok performansnih problema.
-
Additive za svetlosne efekte. Ne zahteva sortiranje i daje prirodan izgled za sve sto emituje svetlost.
-
Pazite na "invisible" kost. Translucentni objekat koji je potpuno iza opaque objekta i dalje se renderuje (nema early-z rejection jer nema depth write). GPU radi posao ciji rezultat nikad ne vidite.
18.12 Napredne teme i medjusobne kombinacije
Kombinovanje Shading Modela sa Blend Modes
Neke kombinacije su uobicajene i logicne, dok su neke retkost ili nemaju smisla:
| Shading Model | Opaque | Masked | Translucent | Additive |
|---|---|---|---|---|
| Default Lit | Najcesci | Cest | Umeren | Redak |
| Unlit | Umeren | Umeren | Cest | Vrlo cest |
| Subsurface Profile | Cest | Redak | Retko | Ne |
| Clear Coat | Cest | Redak | Retko | Ne |
| Hair | -- | Cest | Umeren | Ne |
| Eye | Cest | -- | Retko | Ne |
| Cloth | Cest | Umeren | Redak | Ne |
Material Domains
Pored shading modela i blend moda, UE5 ima koncept Material Domain koji odredjuje gde se materijal koristi:
- Surface -- standardni 3D povrsinski materijal (najcesci)
- Deferred Decal -- decal materijal koji se projektuje na povrsine
- Light Function -- materijal koji modifikuje svetlo (za svetlosne cookie-je)
- Volume -- volumetrijski materijal (za volumetric fog, oblake)
- Post Process -- post-processing efekat
- User Interface -- UMG UI materijal
Per-Pixel vs Per-Object Shading Model izbor
UE5 zahteva da shading model bude odabran na nivou celog materijala -- ne mozete imati razlicite shading modele za razlicite piksele istog materijala (sa izuzetkom Material Layer blending sistema koji koristi virtualne teksture za kombinovanje razlicitih materijala).
Ako vam treba razlicit shading model na razlicitim delovima objekta:
- Koristite vise Material Slot-ova na mesh-u (svaki slot je odvojen material)
- Koristite Material Layer Blend (zahteva Virtual Texturing)
- Razmislite da li mozete postici slican efekat unutar jednog modela (npr. koristite Default Lit sa kreativnim parametrima umesto Cloth za mali deo materijala)
Substrate (eksperimentalni u UE5.x)
UE5 je uveo eksperimentalni Substrate material framework (ranije poznat kao "Strata") koji potencijalno menja nacin na koji se materijali definisu. Umesto odabira jednog shading modela, Substrate omogucava slaganje slojeva materijala (material layering) sa razlicitim svojstvima. Ovo je naprednija tema i framework je u aktivnom razvoju -- za sada, razumevanje tradicionalnih shading modela je esencijalno i cini osnovu za rad u UE5.
18.13 Prakticni primeri -- kompleksni materijali
Primer 1: Koza ljudskog lica
Shading Model: Subsurface Profile
Blend Mode: Opaque
Teksture:
- T_Face_BaseColor -- difuzna boja koze (bez crvenih tonova ispod)
- T_Face_Normal -- makro normal (bore, pore)
- T_Face_Roughness -- varijacija hrapavosti
- T_Face_AO -- ambient occlusion detalji
Subsurface Profile podesavanja:
- Scatter Radius: 1.2
- Subsurface Color: (0.48, 0.23, 0.09)
- Mean Free Path: (1.2, 0.36, 0.22)
- Falloff Color: (0.68, 0.28, 0.18)
Material Paramteri:
- Base Color: T_Face_BaseColor
- Roughness: T_Face_Roughness (0.3-0.6 range)
- Normal: T_Face_Normal (strength ~0.8)
- AO: T_Face_AO
- Opacity: 1.0 (full SSS efekat)
Primer 2: Metalik auto farba
Shading Model: Clear Coat
Blend Mode: Opaque
Teksture:
- T_CarPaint_BaseColor -- boja farbe
- T_CarPaint_Flake -- metalik flake noise
- T_CarPaint_CoatNormal -- orange peel tekstura za clear coat
Material Parametri:
- Base Color: T_CarPaint_BaseColor * (1 + T_CarPaint_Flake * 0.3)
- Metallic: 0.9
- Roughness: 0.35 (bazna farba ispod coata)
- Clear Coat: 1.0
- Clear Coat Roughness: 0.02 (veoma sjajan lak)
- Clear Coat Normal: T_CarPaint_CoatNormal (suptilan, strength 0.1-0.2)
Primer 3: Realisticna kosa
Shading Model: Hair
Blend Mode: Masked (za hair cards)
Teksture:
- T_Hair_Color -- boja kose
- T_Hair_Alpha -- alpha maska (vidljive dlake vs providno)
- T_Hair_Depth -- dubina/slojevitost kose
- T_Hair_Root -- gradient od korena do vrha (korenovi su tamniji)
- T_Hair_ID -- per-strand varijacija (boja varijacija)
- T_Hair_Direction -- flow mapa za tangent pravac
Material Parametri:
- Base Color: T_Hair_Color * lerp(0.3, 1.0, T_Hair_Root) * T_Hair_ID varijacije
- Roughness: 0.35 (cista kosa) do 0.65 (suvlja kosa)
- Scatter: 0.5-0.8
- Tangent: iz T_Hair_Direction flow mape
- Backlit: 0.5-0.8 (za back-lighting efekat)
- Opacity Mask: T_Hair_Alpha
- Opacity Mask Clip Value: 0.33 (sacuvaj vise detalja)
Primer 4: Somot (velvet) tkanina
Shading Model: Cloth
Blend Mode: Opaque
Material Parametri:
- Base Color: tamna boja somota (npr. (0.05, 0.01, 0.02) za tamno crveni)
- Roughness: 0.85
- Cloth: 1.0
- Fuzz Color: svetlija varijanta (npr. (0.35, 0.08, 0.12))
- Normal: mikro-tekstura vlakana somota
- Metallic: 0
Primer 5: Vlazni beton
Shading Model: Default Lit (ili Clear Coat za intenzivniji efekat)
Blend Mode: Opaque
Material Parametri (Default Lit varijanta):
- Base Color: T_Concrete_BaseColor * 0.6 (vlazna povrsina je tamnija)
- Roughness: T_Concrete_Roughness * 0.3 (vlazna povrsina je manje hrapava)
- Metallic: 0
- Normal: T_Concrete_Normal
// Alternativno, Clear Coat varijanta za izrazitiji efekat:
- Clear Coat: 0.5-0.8 (intenzitet vlaznosti)
- Clear Coat Roughness: 0.05-0.1
18.14 Dijagnostika i debugging materijala
Vizualizacioni modovi
UE5 nudi razlicite buffer visualization modove koji pomazu u debugging-u materijala:
- Buffer Visualization > Base Color -- prikazuje samo Base Color bez lightinga. Korisno za proveru da Base Color ne sadrzi lighting informacije.
- Buffer Visualization > Metallic -- vizualizuje metallic mapu. Treba da bude vecinom crna ili bela (0 ili 1).
- Buffer Visualization > Roughness -- vizualizuje roughness. Korisno za proveru raspona vrednosti.
- Buffer Visualization > World Normal -- prikazuje world-space normale. Korisno za proveru normal mapa.
- Shader Complexity -- prikazuje relativnu kompleksnost shadera. Crveno = skupo, zeleno = jeftino. Translucentni materijali sa overdrawom ce biti jarko crveni.
- Quad Overdraw -- prikazuje koliko puta se svaki piksel renderuje. Idealno je 1x.
Ceste greske
-
Lighting informacije u Base Color -- senke, AO, ili specular u Base Color teksturi. Ovo je najcesca greska. Base Color treba da bude "cist" -- samo boja materijala.
-
Metallic medjuvrednosti -- vrednosti izmedju 0 i 1 u metallic mapi tamo gde ne bi trebalo da budu (tranzicione zone su OK, ali velike oblasti sa 0.5 metallic su fizicki nekorektne).
-
Roughness van opsega -- vrednosti blizu 0.0 za materijale koji ne bi trebalo da budu ogledalo (npr. roughness 0.0 za drvo).
-
Normal map format -- korisecnje DirectX normal mape u UE5 bez flipa zelenog kanala (UE5 koristi OpenGL konvenciju za normal mape), ili koristenje sRGB umesto Linear prostora boja.
-
Pogresan shading model -- koristenje Default Lit za materijale koji zahtevaju SSS (koza izgleda kao plastika), ili koristenje Cloth za materijale koji nisu tkanina.
-
Preterano koristenje Translucent -- mnogi materijali koji izgledaju kao da treba da budu translucent mogu da se realizuju kao Opaque ili Masked sa mnogo boljim performansama.
18.15 Kljucni termini
| Termin | Objasnjenje |
|---|---|
| Shading Model | Skup jednacina koji odredjuje kako povrsina interaguje sa svetloscu. UE5 nudi Default Lit, Unlit, Subsurface, Clear Coat, Hair, Eye, Cloth, i druge. |
| Blend Mode | Nacin na koji se renderovani piksel materijala kombinuje sa scenom iza njega (Opaque, Masked, Translucent, Additive, Modulate). |
| BRDF | Bidirectional Reflectance Distribution Function -- matematicka funkcija koja opisuje kako povrsina reflektuje svetlost. Cook-Torrance je specijalan tip BRDF-a za PBR. |
| Cook-Torrance | Microfacet specular BRDF model koji koristi D (distribucija normala), F (Fresnel), i G (geometrijsko prigusenje) termine. Standard u PBR renderingu. |
| GGX/Trowbridge-Reitz | Normal Distribution Function (NDF) koja opisuje distribuciju mikro-fasetki. Popularno jer dobro aproksimira izgled realnih materijala. |
| Lambert Diffuse | Najjednostavniji diffuse model gde se svetlost ravnomerno rasipa u svim pravcima. Koristiti za dielektricne materijale. |
| Subsurface Scattering (SSS) | Fizicki fenomen gde svetlost prodire ispod povrsine, rasprsuje se unutar materijala, i izlazi na drugoj tacki. Kljucno za realizam koze. |
| Burley Diffusion | Fizicki zasnovan model za aproksimaciju subsurface scatteringa, razvijen u Walt Disney Animation Studios. UE5 ga koristi za Subsurface Profile. |
| Clear Coat | Dvoslojni material model sa baznim slojem i gornjim providnim slojem. Simulira auto farbu, lakirane povrsine, vlazne materijale. |
| Anisotropy | Direkciona hrapavost gde su mikro-neravnine poravnate u jednom pravcu, stvarajuci izduzen specular highlight. |
| Marschner Model | Fizicki zasnovan model za renderovanje kose koji razlaze svetlosnu interakciju na R (refleksija), TT (transmisija), i TRT (interna refleksija) komponente. |
| Charlie Sheen | BRDF model dizajniran za tkanine koji proizvodi sirok, mekan specular highlight, razlicit od standardnog GGX-a. |
| Microfacet | Teorija koja modeluje povrsinu kao skup sitnih, ravnih, savrseno reflektujucih ogledala (fasetki) razlicitih orijentacija. |
| Fresnel Effect | Povecanje reflektivnosti povrsine na strmim (grazing) uglovima. Svaka povrsina postaje vise reflektivna kada je gledate pod malim uglom. |
| GBuffer | Skup render target-a koji sadrze sve informacije o povrsinskim svojstvima (normal, albedo, roughness, itd.) potrebne za deferred lighting kalkulaciju. |
| Early-Z Rejection | GPU optimizacija gde se pikseli koji ne prolaze depth test odbacuju PRE izvrsavanja pixel shadera, stedeci GPU resurse. |
| Alpha Blending | Tehnika mesanja boja gde se boja piksela kombinuje sa bojom iza njega na osnovu alpha (opacity) vrednosti. |
| Overdraw | Situacija kada se isti piksel na ekranu renderuje vise puta, troseci GPU resurse. Cest problem sa translucentnim materijalima. |
| Forward Rendering | Rendering pristup gde se lighting izracunava za svaki objekat posebno u pixel shaderu, za razliku od deferred pristupa. |
| Deferred Rendering | Rendering pristup gde se prvo popuni GBuffer sa povrsinskim informacijama, a zatim se lighting izracuna u odvojenom pasu. |
18.16 Linkovi i dodatni resursi
Zvanicna UE5 dokumentacija
-
Material Shading Models -- Unreal Engine zvanicna dokumentacija za sve shading modele:
docs.unrealengine.com/5.0/en-US/shading-models-in-unreal-engine/ -
Material Inputs -- Detaljan opis svakog material input-a:
docs.unrealengine.com/5.0/en-US/material-inputs-in-unreal-engine/ -
Material Blend Modes -- Dokumentacija za blend modove:
docs.unrealengine.com/5.0/en-US/material-blend-modes-in-unreal-engine/ -
Subsurface Profile Shading Model -- Specijalizovana dokumentacija za SSS:
docs.unrealengine.com/5.0/en-US/subsurface-profile-shading-model-in-unreal-engine/
Akademski radovi i reference
-
Burley, B. (2015) -- "Extending the Disney BRDF to a BSDF with Integrated Subsurface Scattering" -- Osnova za Burley SSS model koji UE5 koristi.
-
Marschner, S.R. et al. (2003) -- "Light Scattering from Human Hair Fibers" -- Originalni rad za Marschner hair model.
-
Karis, B. (2013) -- "Real Shading in Unreal Engine 4" -- SIGGRAPH prezentacija koja opisuje PBR implementaciju u UE4 (osnova za UE5).
-
Cook, R.L., Torrance, K.E. (1982) -- "A Reflectance Model for Computer Graphics" -- Originalni Cook-Torrance rad.
-
Walter, B. et al. (2007) -- "Microfacet Models for Refraction through Rough Surfaces" -- GGX Normal Distribution Function.
-
Ashikhmin, M., Premoze, S. (2007) -- "Distribution-based BRDFs" -- Osnova za Ashikhmin cloth model.
Video resursi i tutoriali
- Unreal Engine YouTube kanal -- Oficijalni tutoriali za material sistem
- Ben Cloward's Shader Tutorials -- Detaljni video tutoriali za UE5 materijale
- GDC/SIGGRAPH prezentacije -- Epic Games redovno prezentuje tehnicke detalje svog rendering sistema na ovim konferencijama
18.17 Rezime poglavlja
U ovom poglavlju smo detaljno obradili sve shading modele dostupne u Unreal Engine 5. Evo kljucnih poruka:
-
Default Lit pokriva 80-90% svih materijala. Koristite Cook-Torrance specular + Lambert diffuse model, kontrolisan sa Base Color, Metallic, Roughness, Normal, Emissive i AO inputima. Ovo je vas "go-to" model.
-
Unlit je najjeftiniji model -- bez ikakvih lighting kalkulacija. Koristite za UI, post-process, custom lighting, i VFX.
-
Subsurface Scattering je esencijalan za realisticnu kozu, vosak, mramor, i slicne materijale gde svetlost prodire ispod povrsine. Subsurface Profile sa Burley modelom daje najbolji kvalitet ali je skuplji.
-
Clear Coat dodaje drugi specular sloj za lakirane i prevucene povrsine. Kljucan za auto farbu, lakirano drvo, vlazne povrsine.
-
Anisotropy modifikuje oblik specular highlight-a za materijale sa direkcionom hrapavoscu -- cesljani metal, saten, CD diskovi.
-
Thin Translucent je jeftinan nacin za simulaciju svetlosti koja prolazi kroz tanke materijale bez volumetrijskog scatteringa.
-
Hair, Eye, i Cloth su specijalizovani modeli za specificne tipove materijala koji ne mogu da se adekvatno predstave standardnim PBR modelom.
-
Blend modes (Opaque, Masked, Translucent, Additive, Modulate) odredjuju kako se materijal kombinuje sa scenom. Opaque je uvek najjeftiniji -- koristite ga kad god je moguce. Translucent je najskuplji i treba ga koristiti samo kada je neophodno.
-
Performanse su kljucni faktor -- svaki specijalizovani model donosi dodatan GPU kost. Koristite LOD materijale da prebacite na jeftinije modele za objekte u daljini (vise u Poglavlju 21).
U sledecem poglavlju nastavljamo sa daljim temama renderinga i optimizacije, gde cemo primeniti znanje o material modelima u prakticnim scenarijima optimizacije shader-a.
Kros-reference: Poglavlje 11 (PBR osnove, Cook-Torrance), Poglavlje 09 (Depth buffer, transparency sorting), Poglavlje 21 (Shader optimizacija i LOD materijali).