Poglavlje 18: Material Modeli -- Shading Models u Unreal Engine 5

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:

  1. Diffuse komponenta -- Lambert diffuse model
  2. 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:

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:

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:

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:

Roughness (Scalar, 0-1)

Roughness kontrolise mikro-hrapavost povrsine:

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.

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:

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).

Kada koristiti Default Lit

Default Lit koristite za vecinu materijala u vasem projektu:

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:


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:

  1. Geometrija se renderuje u depth buffer (za korektnu okluziju)
  2. Emissive boja se direktno upisuje u scene color buffer
  3. Nema Normal, Metallic, Roughness, ili bilo kojih drugih GBuffer kanala
  4. 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:

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:

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:

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:

SSS posebno dolazi do izrazaja u dva scenarija:

  1. Backlit situacije -- kada je svetlo iza objekta (npr. sunce iza glave osobe)
  2. 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:

  1. Renderirajte scenu normalno
  2. Za SSS materijale, primenite Gaussian blur na lighting rezultat u screen space-u
  3. 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:

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):

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:

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:

  1. 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.

  2. 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.

  3. 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
  4. 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
  5. 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:

Optimizacijski saveti:


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:

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)

Top Layer (clear coat sloj)

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:

Clear Coat Roughness (Scalar, 0-1)

Roughness gornjeg sloja, nezavisna od roughness donjeg sloja:

Clear Coat Normal

Ovo je izuzetno koristan input koji omogucava posebnu Normal mapu za gornji sloj. Primer:

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:

  1. Dva odvojena specular highlight-a -- ako pazljivo gledate, videcete dva odvojena odsjaja: jedan od coat-a (ostriji, belji) i jedan od baze (siri, obojen)
  2. Dubina -- materijal izgleda kao da ima "dubinu" jer vidite refleksiju na dva razlicita nivoa
  3. 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:

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:

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)

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:

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:

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:

  1. Atenuira u zavisnosti od debljine/opacity
  2. Oboji bojom materijala (apsorpcija -- zeleni list propusta zelenu svetlost)
  3. Dodaje na prednji lit rezultat

Inputi

Thin Translucent koristi standardne Default Lit inpute plus:

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:

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:

  1. Geometrija -- kosa se sastoji od hiljada individualnih vlakana, svako debljine ~70 mikrometara. Renderovanje svake dlake kao geometrije je izuzetno skupo.

  2. Optika -- svetlost interaguje sa kosom na kompleksan nacin. Svaka dlaka je transparentan cilindar koji reflektuje, prelamaju (refract) i interno reflektuje svetlost.

  3. Multiple scattering -- svetlost se rasprsuje izmedju dlaka, sto daje kosi karakteristicnu "mekotu" i dubinu.

  4. Anizotropija -- specular highlight na kosi je uvek izduzen duz pravca dlake (jer je dlaka cilindar).

  5. 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:

TT (Transmission) -- Transmisija

Svetlost ulazi u dlaku sa jedne strane, prolazi kroz nju, i izlazi sa druge strane:

  1. Prelamanje (refraction) na ulazu
  2. Apsorpcija unutar dlake (boja dlake utice na boju transmitovane svetlosti)
  3. Prelamanje na izlazu

Karakteristike:

TRT (Internal Reflection) -- Interna refleksija

Svetlost ulazi u dlaku, reflektuje se sa unutrasnje strane, i izlazi:

  1. Prelamanje na ulazu
  2. Interna refleksija
  3. Apsorpcija (dva prolaska kroz materijal)
  4. Prelamanje na izlazu

Karakteristike:

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:

Geometrija kose u UE5

UE5 podrzava dva glavna pristupa geometriji kose:

1. Hair Cards (strip/card metod)

2. Hair Strands (Groom system)

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:


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)

2. Iris

3. Pupila

4. Beonjaca (Sclera)

5. Suzni film (Tear Film)

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:

SSS na beonjaci

Beonjaca (sclera) pokazuje suptilan SSS efekat. Eye model ukljucuje pojednostavljeni SSS za beonjacku oblast:

Dual specular

Oko ima dva sloja specular refleksije:

  1. Kornea specular -- ostar, svetao refleks na spoljnoj povrsini (kornea je mokra i glatka)
  2. Iris specular -- mnogo meksi, difuzniji refleks na samom irisu (tekstura irisa ima mikro-hrapavost)

Kljucni inputi

Eye shading model koristi:

Prakticni saveti za realisticne oci

  1. Geometrija oka treba da bude odvojena od ostatka glave -- kornea je posebni mesh sa konveksnom geometrijom

  2. 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)
  3. Beonjaca treba da ima:

    • Suptilne krvne sudove (posebno na ivicama)
    • Blago zuckast/rozikast ton (nikada cisto bela)
    • Vlazni specular
  4. Kornea refleks -- specular highlight na kornei treba da bude ostar i svetao. Ovo je "iskra u oku" koja najvise doprinosi osecaju zivosti lika.

  5. 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:

  1. Specular highlight na tkanini je siri i meksi -- vlakna rasprsuju svetlost u sirokom uglu
  2. "Fuzz" na ivicama -- vlakna koja strce iz povrsine tkanine stvaraju mekan sjaj na ivicama (grazing angles), posebno na somotu i veluru
  3. Inverzni Fresnel -- na tkaninana poput somota, ivice su svetlije nego centar, sto je suprotno od standardnog Fresnel efekta
  4. 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:

Charlie Sheen Model

Noviji model koji je generalnije primenljiv na razlicite tipove tkanina. Nazvan po "sheen" efektu koji tkanina pokazuje. Karakteristike:

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:

Cloth (Scalar, 0-1)

Intenzitet cloth shading efekta:

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:

  1. Geometrija se renderuje u GBuffer (Base Color, Normal, Metallic, Roughness, itd.)
  2. Upisuje se u depth buffer (z-buffer)
  3. Lighting se izracunava u odvojenom pasu koristeci GBuffer podatke
  4. Early-Z rejection eliminise piksele koji su iza vec renderovanih objekata

Zasto je najjeftiniji

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:

Mane:

Resenja za aliasing

Tipicna primena

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:

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:

3. Ne koristi deferred pipeline

Translucentni materijali se renderuju u forward pass-u, ne kroz GBuffer. To znaci:

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:

Kada koristiti

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

Tipicna primena

Modulate -- Multiplikativni blend

Kako radi

Modulate blend mode mnozi boju materijala sa scenom iza njega:

finalColor = sceneColorBehind * materialColor

Karakteristike

Tipicna primena

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

  1. Koristite Opaque kad god je moguce. Cak i ako materijal ima malo transparentnosti, razmislite da li Opaque + dithered transparency moze da postigne slican efekat.

  2. Masked umesto Translucent za binarne slucajeve. Ako je piksel ili potpuno providan ili potpuno vidljiv (lisce, resetke), koristite Masked. Manje je skupo od Translucent.

  3. Ogranucite overdraw za translucentne materijale. Svaki sloj translucentnog materijala kosta. Particle sistemi sa mnogo overlapping cestica su cest uzrok performansnih problema.

  4. Additive za svetlosne efekte. Ne zahteva sortiranje i daje prirodan izgled za sve sto emituje svetlost.

  5. 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:

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:

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:

Ceste greske

  1. 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.

  2. 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).

  3. Roughness van opsega -- vrednosti blizu 0.0 za materijale koji ne bi trebalo da budu ogledalo (npr. roughness 0.0 za drvo).

  4. 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.

  5. Pogresan shading model -- koristenje Default Lit za materijale koji zahtevaju SSS (koza izgleda kao plastika), ili koristenje Cloth za materijale koji nisu tkanina.

  6. 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

Akademski radovi i reference

Video resursi i tutoriali


18.17 Rezime poglavlja

U ovom poglavlju smo detaljno obradili sve shading modele dostupne u Unreal Engine 5. Evo kljucnih poruka:

  1. 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.

  2. Unlit je najjeftiniji model -- bez ikakvih lighting kalkulacija. Koristite za UI, post-process, custom lighting, i VFX.

  3. 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.

  4. Clear Coat dodaje drugi specular sloj za lakirane i prevucene povrsine. Kljucan za auto farbu, lakirano drvo, vlazne povrsine.

  5. Anisotropy modifikuje oblik specular highlight-a za materijale sa direkcionom hrapavoscu -- cesljani metal, saten, CD diskovi.

  6. Thin Translucent je jeftinan nacin za simulaciju svetlosti koja prolazi kroz tanke materijale bez volumetrijskog scatteringa.

  7. Hair, Eye, i Cloth su specijalizovani modeli za specificne tipove materijala koji ne mogu da se adekvatno predstave standardnim PBR modelom.

  8. 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.

  9. 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).