Poglavlje 25: Lumen -- Dinamicka Globalna Iluminacija
"Svetlost se ne bake-uje. Svetlost zivi." -- Nepisano pravilo Unreal Engine 5 tima
Uvod
Zamislite sledeci scenario. Napravili ste prelepu sobu u vasem nivou -- drveni pod, beli zidovi, veliki prozor okrenut ka zapadu. Sunce polako zalazi, i kako se pomera, topla narandzasta svetlost ulazi kroz prozor, odbija se od poda, blago oboji plafon, i stvara meke senke iza svake stolice. Vi pomerite jednu stolicu -- i sve se azurira. Dodate zid -- svetlost se odmah prilagodi. Promenite boju poda iz braon u crvenu -- i odjednom cela soba dobije blagi crvenkasti odsjaj.
Ovo nije filmska scena renderovana satima na render farmi. Ovo je Lumen, i radi u realnom vremenu, u vasem editoru, dok vi radite.
U ovom poglavlju cemo detaljno razmotriti kako Lumen funkcionise, zasto je revolucionaran, sta ga cini brzim, sta ga cini skupim, i kako da ga pravilno koristite u vasim projektima. Ako ste procitali Poglavlje 12, gde smo objasnili teoriju globalne iluminacije, i Poglavlje 14, gde smo se upoznali sa ray tracing-om, sada cemo spojiti te koncepte u prakticni sistem koji Unreal Engine 5 koristi svakodnevno.
Pripremite se -- ovo je jedno od najvaznijih poglavlja u celoj knjizi.
25.1 Sta je Lumen?
25.1.1 Definicija
Lumen je UE5-ov sistem za potpuno dinamicku globalnu iluminaciju (Global Illumination, GI) i refleksije. To znaci:
- Potpuno dinamicka -- nema potrebe za bake-ovanjem (pretpocesiranjem) svetlosti. Nikakav Lightmass, nikakvi lightmap-ovi, nikakvo cekanje.
- Globalna iluminacija -- ne samo direktna svetlost, vec i indirektna: svetlost koja se odbija od povrsina, prenosi boju, ispunjava senke mekim osvrtljenjem.
- Refleksije -- Lumen takodje upravlja i refleksijama u sceni, ali to cemo detaljno obraditi u Poglavlju 26.
- Real-time -- sve se desava u realnom vremenu, frame po frame. Pomerite svetlo, promenite geometriju, izmenite materijal -- Lumen reaguje odmah.
25.1.2 Zasto je Lumen revolucionaran?
Da bismo razumeli zasto je Lumen toliko bitan, moramo se kratko osvrnuti na istoriju. Pre UE5, globalna iluminacija u igrama je funkcionisala na jedan od sledecih nacina:
-
Baked GI (Lightmass u UE4): Izracunajte svetlost unapred, sacuvajte je u lightmap teksture. Izgleda lepo, ali je staticna -- ne moze reagovati na promene. Bake-ovanje moze trajati minutima ili satima. Detaljno smo ovo obradili u Poglavlju 24.
-
Screen Space GI (SSGI): Koristite informacije vidljive na ekranu da simulirate odbijanje svetlosti. Brzo, ali ograniceno -- ne moze videti sta je iza kamere ili van ekrana.
-
Probe-based GI (Light Probes): Postavite probe (sonde) po sceni koje snimaju okolnu svetlost. Jednostavno za staticne scene, ali ruzan prelaz izmedju proba i slaba preciznost.
-
Voxel GI (VXGI): Pretvorite scenu u voxele i simulirajte svetlost kroz voxelsku strukturu. Kvalitetno, ali izuzetno skupo za racunanje.
-
Full Ray Traced GI: Pratite zrake za svaki piksel, simulirajte sve odbijke. Fizicki korektno, ali i uz najnoviji hardware, preskupo za igre u realnom vremenu sa punom rezolucijom.
Lumen je revolucionaran jer resava ovo na potpuno nov nacin. Umesto da bira jednu od ovih tehnika, Lumen koristi viseslojni, hibridni pristup koji kombinuje vise metoda istovremeno. Koristi software ray tracing (koji ne zahteva specijalan RT hardware), Signed Distance Fields, surface cache, screen probes, i temporal accumulation da postigne globalnu iluminaciju koja:
- Radi na siroko dostupnom hardveru (ne zahteva RTX kartice u default rezimu)
- Reaguje na promene u realnom vremenu
- Podrzava vise odbijanja svetlosti (multi-bounce)
- Daje rezultate dovoljno kvalitetne za production-quality igre
To je nesto sto nijedan raniji sistem u game engine-u nije mogao da ponudi.
25.1.3 Lumen u kontekstu UE5 pipeline-a
Lumen nije izolovan sistem. On je duboko integrisan u UE5 rendering pipeline:
- Nanite obezbjedjuje geometriju visoke rezolucije iz koje Lumen moze generisati distance field-ove.
- Virtual Shadow Maps rade zajedno sa Lumen-om za senke.
- Materials se evaluiraju kroz surface cache koji Lumen koristi.
- Post-processing moze dodatno uticati na izgled Lumen svetlosti (bloom, exposure, tone mapping).
Kada pokrenete UE5 projekat sa Lumen-om, vi u sustini aktivirate kompletan, moderan rendering pipeline koji je dizajniran da radi kao celina. Svaki deo potpomaze drugi.
25.2 Kako Lumen zaista radi -- Viseslojni pristup
Ovo je centralni deo poglavlja. Ovde cemo skinuti poklopac sa motora i pogledati kako svaki deo Lumen-a funkcionise. Krecemo od najnizeg nivoa i gradimo prema gore.
25.2.1 Mesh Distance Fields -- Temelj software ray tracing-a
Sta je Signed Distance Field (SDF)?
Signed Distance Field je 3D reprezentacija nekog mesh-a gde svaka tacka u prostoru cuva jednu vrednost: rastojanje do najblize povrsine tog mesh-a.
- Ako je vrednost pozitivna, tacka je izvan mesh-a.
- Ako je negativna, tacka je unutar mesh-a.
- Ako je nula, tacka je tacno na povrsini.
Zamislite mesh kao neku skulpturu. Sada zamislite da oko te skulpture imate nevidljivu mrezu kockica (voxela). U svakoj kockici zapisujete: "koliko sam daleko od povrsine skulpture?" To je SDF.
Vizuelno, ako bismo presekli SDF ravni, videli bismo nesto poput topografske mape -- konture koje pokazuju rastojanje od povrsine, sve blize i blize dok ne dodjemo do same povrsine (nulta kontura).
Zasto su SDF-ovi korisni za ray tracing?
Obican ray tracing radi ovako: pustite zrak i proveravajte da li je pogodio neki trougao u sceni. Ovo zahteva testiranje protiv potencijalno miliona trouglova (uz, naravno, razne akceleracione strukture poput BVH stabala, kao sto smo objasnili u Poglavlju 14).
SDF ray tracing radi drugacije i mnogo elegantnije:
- Pustite zrak iz neke tacke.
- Na trenutnoj poziciji zraka, procitajte SDF vrednost -- ona vam kaze koliko je daleko najbliza povrsina.
- Bezbedno se pomerite za tu distancu duz zraka -- jer znate da u tom radijusu nema nikakve povrsine.
- Ponovite.
Ova tehnika se zove sphere tracing (ili ray marching sa SDF-om). Kljucna prednost je sto svaki korak moze biti veliki ako je zrak daleko od svih povrsina, i postepeno se smanjuje kako se priblizava nekom objektu. U praksi, tipican zrak treba samo 10-30 koraka da pronadje presek, u poredjenju sa kompleksnim BVH traversal-om za triangle ray tracing.
Vizuelizacija sphere tracing-a:
Zrak --> O--------O------O----O--O-O|
^ ^ ^ ^ ^ ^|
| | | | | ||
Veliki Veliki Manji Mali ||
korak korak korak Pogodak!
Svaki krug (O) predstavlja sferu bezbednog rastojanja.
Zrak "skace" od sfere do sfere dok ne dosegne povrsinu.
Generisanje Mesh Distance Field-ova
UE5 automatski generise Mesh Distance Field za svaki Static Mesh pri importu. Ovo se desava u pozadini i rezultat se cuva kao deo asset-a.
Nekoliko kljucnih stavki:
- Rezolucija: SDF se cuva kao 3D tekstura (volume texture). Rezolucija se automatski odredjuje na osnovu velicine mesh-a, ali mozete je podesiti u mesh settings-u.
- Preciznost: SDF je aproksimacija -- ne cuva svaki detalj mesh-a. Jako sitni detalji (tanki listovi, zice, ograda sa tankim sipkama) mogu biti izgubljeni ili pogresno predstavljeni.
- Memorija: Svaki Mesh Distance Field zauzima nesto memorije. Za scene sa hiljadama unikatnih mesh-ova, ovo moze postati znacajno.
- Global Distance Field: UE5 takodje generise Global Distance Field -- nizorezolucioni SDF cele scene. Ovo se koristi za duze zrake gde preciznost pojedinanog mesh-a nije kriticna.
Mozete vizualizovati Mesh Distance Field-ove u editoru preko Show > Visualize > Mesh Distance Fields. Ovo je izuzetno korisno za debugovanje -- videcete zelenu reprezentaciju vasih mesh-ova i odmah uociti gde SDF ne predstavlja geometriju verno.
Prakticni savet: Ako primetite "svetlosno curenje" (light leaking) -- svetlost prolazi kroz zidove ili podove gde ne bi trebalo -- jedan od prvih mesta za proveru je kvalitet Mesh Distance Field-a tog mesh-a. Zidovi koji su pretanki ili mesh-ovi sa otvorenim geometrijama cesto imaju lose SDF-ove.
25.2.2 Surface Cache -- Pojednostavljena reprezentacija povrsina scene
Problem koji Surface Cache resava
Kada Lumen-ov zrak pogodi neku povrsinu, on mora da zna: "Koje boje je ova povrsina? Koliko je hrapava? Da li emituje svetlost?" Drugim recima, mora da evaluira materijal te povrsine.
Problem je sto evaluiranje punog UE5 materijala za svaku tacku pogodka zraka je izuzetno skupo. Materijali u UE5 mogu biti kompleksni -- sa vise tekstura, math operacijama, proceduralnim sablonima. Evaluirati ih za milione tacaka po frame-u bi bilo neodrzivo.
Resenje je Surface Cache.
Kako Surface Cache funkcionise
Surface Cache je pojednostavljena, unapred izracunata reprezentacija povrsina svakog mesh-a u sceni. Konkretno, svaki mesh se "fotografise" iz vise uglova, cime se kreiraju takozvane Mesh Cards (kartice mesh-a).
Mesh Cards su ravne projekcije mesh-a -- zamislite da stavite mesh u kutiju i fotografisete ga sa svih sest strana (gore, dole, levo, desno, napred, nazad). Svaka ta "fotografija" cuva:
- Albedo (bazna boja)
- Normal (pravac povrsine)
- Emissive (emisija svetlosti)
- Opacity (prozirnost)
Ova "atlas" kartica se naziva Surface Cache i predstavlja kompaktnu aproksimaciju izgleda mesh-a iz bilo kog pravca.
Mesh Cards koncept:
+-------+
/ Gore /|
/ / |
+-------+ |
| | D | Svaka strana kutije je jedna
| Napred| e | "kartica" (card) koja cuva
| | s | materijal properties tog mesh-a
| | n | iz tog ugla.
+-------+ o |
\ \ |
\ Dole \|
+-------+
Rezolucija i azuriranje Surface Cache-a
Surface Cache ima ogranicenu rezoluciju. Svaka Mesh Card je relativno male rezolucije (tipicno oko 128x128 ili 256x256 piksela, zavisno od velicine mesh-a i podesavanja). Ovo je namerno -- drzimo velicinu malom da bi azuriranje bilo brzo.
Azuriranje Surface Cache-a se desava u vise faza:
- Inicijalno kreiranje -- pri ucitavanju nivoa, svaki mesh dobija svoje kartice.
- Osvezavanje pri promeni -- ako se materijal promeni (na primer, Dynamic Material Instance menja boju), Surface Cache se azurira. Ovo se ne desava odmah za sve mesh-ove, vec se raspodjeljuje kroz vise frame-ova (amortized update).
- Osvezavanje osvjetljenja -- Surface Cache takodje cuva informaciju o osvjetljenju (iz prethodnih frame-ova), sto se kontinuirano azurira kako se svetlost menja.
Mozete vizualizovati Surface Cache u editoru: Show > Visualize > Lumen Scene. Videcete mesh-ove predstavljene njihovim karticama -- ovo je "svet" kakav ga Lumen vidi.
Prakticni savet: Ako primetite da Lumen "ne vidi" neki objekat (ne odbija svetlost od njega, ne baca GI senke), proverite da li taj mesh ima validne Mesh Cards. Vrlo mali mesh-ovi, mesh-ovi sa neobicnim oblicima, ili mesh-ovi sa iskljucenim "Generate Mesh Distance Field" mozda nemaju validan Surface Cache.
Ogranicenja Surface Cache-a
Posto je Surface Cache pojednostavljena reprezentacija, ona ima inherentna ogranicenja:
- Mali detalji se gube -- sitne rupe, tankii elementi, fine teksture mogu biti zamagljeni ili potpuno nestati u Surface Cache-u.
- Rezolucija je ogranicena -- na velikim mesh-ovima (npr. ceo pod jednog nivoa kao jedan mesh), Surface Cache moze biti previse grubo rasporeljen, sto dovodi do "blocky" izgleda indirektne svetlosti.
- Dinamicki materijali -- iako se Surface Cache azurira za promene materijala, ceste i brze promene mogu dovesti do vidljivog kasnjenja u azuriranju GI-ja.
25.2.3 Screen Probes -- Prikupljanje svetlosti sa ekrana
Sta su Screen Probes?
Screen Probes (probes na ekranu) su kljucni mehanizam kojim Lumen prikuplja informacije o indirektnoj svetlosti za svaki vidljivi piksel.
Zamislite svaki vidljivi piksel na ekranu. Svaki od tih piksela treba da zna: "Koliko indirektne svetlosti pada na mene iz raznih pravaca?" Da bi to saznao, trebalo bi da posalje stotine zraka u svom poluprostoru (hemisferi iznad povrsine) i prikupi svetlost. Ali to bi bilo enormno skupo -- milioni piksela puta stotine zraka = milijarde zraka po frame-u.
Screen Probes resavaju ovo na pametan nacin.
Strategija postavljanja proba
Umesto da svaki piksel ima svoju probu, Lumen postavlja probe na redukovanoj mrezi preko ekrana. Tipicno, probe se postavljaju na razmaku od oko 16x16 piksela (ovo varira zavisno od podesavanja). Svaka proba pokriva grupu okolnih piksela.
Ali postavljanje nije uniformno! Lumen koristi adaptivno postavljanje:
- Vise proba na mestima gde se geometrija brzo menja (ivice objekata, uglovi).
- Manje proba na velikim, ravnim povrsinma gde se osvetljenje sporo menja.
- Probe se prate u screen space-u -- postoje samo tamo gde su vidljivi pikseli.
Screen Probe postavljanje (shematski prikaz):
+--+--+--+--+--+--+--+--+--+--+
| | | | | | | | | | |
+--+--+--+--+--+--+--+--+--+--+
| | P| | | P| | | P| | | P = Screen Probe
+--+--+--+--+--+--+--+--+--+--+
| | | | | | | | | | | Na ravnim povrsinma: retke probe
+--+--+--+--+--+--+--+--+--+--+
| | P| | | P| | | P| | | Na ivicama i uglovima: guscce probe
+--+--+P-+P-+--+P-+P-+--+--+--+
| | | | | | | | | | |
+--+--+P-+P-+--+P-+P-+--+--+--+
| | P| | | P| | | P| | |
+--+--+--+--+--+--+--+--+--+--+
Prikupljanje svetlosti (radiance gathering)
Svaka Screen Probe prikuplja svetlost iz okolne hemisfere. Ali koliko zraka salje? Ne stotine -- tipicno oko 16-64 zraka po probi po frame-u. To zvuci kao premalo za kvalitetno osvjetljenje, ali tu na scenu stupa temporal accumulation (vremenska akumulacija).
Princip je sledeci:
- U frame-u N, proba salje 32 zraka u razlicitim pravcima hemisfere.
- U frame-u N+1, salje novih 32 zraka, ali u drugacijim pravcima (roterira sampling pattern).
- U frame-u N+2, opet novih 32 zraka.
- Rezultati se akumuliraju kroz vreme, tako da posle 4-8 frame-ova proba ima podatke ekvivalentne stotinama zraka.
Ovo je genijalano -- umesto da u jednom frame-u uradite ogromnu kolicinu posla, rasporedite rad kroz vise frame-ova i akumulirate rezultat. Rezultat je da Lumen moze pruziti visokokvalitetan GI sa relativno malim brojem zraka po frame-u.
Hijerarhijsko pracenje zraka
Kada Screen Probe salje zrak, taj zrak ne ide odmah u "svemirsku" potragu. Umesto toga, Lumen koristi hijerarhijski pristup:
-
Screen Trace (pracenje na ekranu): Prvo, zrak se prati kroz depth buffer ekrana (slicno screen-space ray tracing). Ovo je izuzetno jeftino jer koristi podatke koje vec imamo. Ako zrak pogodi nesto sto je vidljivo na ekranu, imamo rezultat odmah.
-
Mesh SDF Trace: Ako screen trace ne pronadje presek (zrak ide prema necemu sto nije vidljivo na ekranu), prelazi se na pracenje protiv Mesh Distance Field-ova. Ovde se koristi sphere tracing koji smo opisali ranije.
-
Global Distance Field Trace: Za jos duze zrake, koristi se Global Distance Field (nizorezolucioni SDF cele scene) koji je mnogo jeftiniji za dugorocno pracenje ali manje precizan.
Hijerarhijsko pracenje:
[Screen Trace] --> [Mesh SDF Trace] --> [Global SDF Trace]
Najjeftinije Srednjei cene Najjeftinije
Najkraci domet Srednji domet Najduzi domet
Najvisa preciznost Dobra preciznost Najniza preciznost
Ovaj hijerarhijski pristup osigurava da se najskuplje operacije (detaljno SDF tracing) koriste samo kada je to neophodno, dok jeftine operacije (screen trace) pokrivaju vecinu slucajeva.
25.2.4 Radiosity Cache -- Visestruko odbijanje svetlosti
Problem visih odbijanja
Do sada smo objasnili kako Lumen racuna jedno odbijanje svetlosti: svetlost pogodi povrsinu, odbije se, i Screen Probe to uhvati. Ali realna globalna iluminacija ukljucuje vise odbijanja (multi-bounce):
- Svetlost ulazi kroz prozor (direktna svetlost).
- Pogodi pod (prvo odbijanje).
- Odbija se od poda ka zidu (drugo odbijanje).
- Od zida ka plafonu (trece odbijanje).
- I tako dalje...
Svako dodatno odbijanje eksponencijalno povecava broj zraka koje treba pratiti. Dva odbijanja znaci da za svaki primarni zrak morate pustiti dodatne sekundarne zrake. Tri odbijanja -- terciijarne zrake. Ovo brzo postaje neodrzivo.
Kako Radiosity Cache resava problem
Lumen koristi Radiosity Cache -- sistem koji racuna visa odbijanja svetlosti na povrsinma scene (u Surface Cache-u) umesto na ekranu.
Princip je sledeci:
- Prva iteracija: Direktna svetlost se izracuna i zapise u Surface Cache svake kartice mesh-a.
- Druga iteracija: Svaka kartica "pogleda" okolne kartice i prikupi svetlost koja dolazi od njih (svetlost prvog odbijanja). Ovo se zapise nazad u Surface Cache.
- Treca iteracija: Ponovite -- svaka kartica prikupi svetlost koja sada ukljucuje i drugo odbijanje. I tako dalje.
Kljucna stvar: ove iteracije se ne desavaju sve u jednom frame-u. Radiosity Cache se azurira inkrementalno, kroz vise frame-ova. U jednom frame-u mozda se azurira samo deo kartica, u sledecem drugi deo. Kroz 4-8 frame-ova, sve kartice su azurirane sa novim informacijama o visim odbijanjima.
Radiosity Cache -- tok azuriranja:
Frame 1: Azuriraj kartice 1-100 (ukljuci svetlost 1. odbijanja)
Frame 2: Azuriraj kartice 101-200 (ukljuci svetlost 1. odbijanja)
Frame 3: Azuriraj kartice 201-300 (ukljuci svetlost 1. odbijanja)
Frame 4: Azuriraj kartice 1-100 (sada ukljuci i 2. odbijanje)
Frame 5: Azuriraj kartice 101-200 (sada ukljuci i 2. odbijanje)
...
Rezultat je da Lumen moze podrzati vise odbijanja svetlosti bez da ikada u jednom frame-u radi enormnu kolicinu posla. Cena je sto potpuno konvergirano resenje (sa svim odbijanjima) dolazi sa zakasnjenjem od nekoliko frame-ova. U praksi, ovo je jedva primetno za ljudsko oko jer su visa odbijanja po prirodi meka i difuzna.
25.2.5 Hardware Ray Tracing rezim
Sta je Hardware RT u kontekstu Lumen-a?
Pored default-nog software ray tracing rezima (koji koristi SDF-ove), Lumen takodje podrzava Hardware Ray Tracing -- koristeci RT jezgra (cores) na modernim GPU-ovima (NVIDIA RTX serija, AMD RDNA 2+).
U hardware RT rezimu, Lumen ne koristi SDF-ove za pracenje zraka. Umesto toga, koristi pravu geometriju trouglova (triangle meshes) sa hardverski ubrzanim BVH (Bounding Volume Hierarchy) traversal-om.
Razlike izmedju Software i Hardware RT
| Karakteristika | Software RT (SDF) | Hardware RT |
|---|---|---|
| Geometrija za tracing | Signed Distance Fields | Pravi trouglovi |
| Hardverski zahtevi | Bilo koji moderan GPU | RT-capable GPU (RTX, RDNA2+) |
| Preciznost | Ogranicena SDF rezolucijom | Tacna geometrija |
| Sitni detalji | Mogu se izgubiti | Uhvaceni precizno |
| Tanka geometrija | Problematicna | Korektna |
| Performanse | Generalno brze | Generalno sporije |
| Foliage/vegetacija | Cesto lose SDF aproks. | Precizna |
| Surface Cache | Koristi se i dalje | Koristi se i dalje |
Vazna napomena: Surface Cache se koristi u oba rezima. Razlika je samo u tome kako se zraci prate -- protiv SDF-ova ili pravih trouglova. Jednom kada zrak pogodi povrsinu, informacija o materijalu se i dalje cita iz Surface Cache-a.
Kada koristiti Hardware RT?
Hardware RT ima smisla u sledecim situacijama:
- Arhitekturalna vizualizacija: Gde je kvalitet svetlosti kriticno vazan i imate jake GPU-ove.
- Scene sa puno vegetacije: Drvecci, trava, lisce -- sve sto ima tanku, kompleksnu geometriju koju SDF-ovi tesko predstavljaju.
- Scene sa sitnim detaljima: Ograde, resetke, tanke strukture.
- Filmski sadrzaj / cinematics: Gde frame rate nije toliko kritican (mozete ciljati 30fps ili cak renderovati offline).
Hardware RT nema smisla kada:
- Ciljate 60fps na mainstream hardveru.
- Vasa scena je vecinom velikih, solidnih mesh-ova (gde je SDF odlican).
- Ciljate konzole (PS5 i Xbox Series X podrzavaju RT, ali sa ogranicenim budzetom).
- Pravite mobilnu igruili VR gde je svaki milisekund vazan.
Prakticni savet: Pocnite uvek sa Software RT. Ako primetite specificne probleme (lose GI na vegetaciji, light leaking kroz tanke zidove), razmotrite ukljucivanje Hardware RT samo za te slucajeve. UE5 vam dozvoljava per-mesh kontrolu u nekim slucajevima.
25.2.6 Kompletna slika -- kako sve radi zajedno
Hajde da sada spojimo sve delove u koherentnu celinu. Evo kako Lumen izracunava globalnu iluminaciju za jedan frame:
Korak 1: Priprema scene
- Svi mesh-ovi imaju generisane Mesh Distance Field-ove.
- Global Distance Field je izracunat za celu scenu.
- Surface Cache (Mesh Cards) su kreirane za sve relevantne mesh-ove.
- Direktna svetlost iz svih izvora je izracunata.
Korak 2: Surface Cache azuriranje
- Direktna svetlost se zapise u Surface Cache kartice.
- Radiosity Cache propagira svetlost visih odbijanja inkrementalno.
Korak 3: Screen Probe postavljanje
- Probe se postavljaju na adaptivnoj mrezi preko ekrana.
- Gustina proba se prilagodjava geometriji scene (vise na ivicama, manje na ravnim povrsinma).
Korak 4: Hijerarhijsko pracenje zraka Za svaku probu:
- Screen Trace -- pratite zrake kroz depth buffer.
- SDF Trace -- za zrake koji ne pogode nista na ekranu, pratite kroz Mesh Distance Field-ove.
- Global SDF Trace -- za najduze zrake, koristite Global Distance Field.
Korak 5: Radiance prikupljanje
- Svaki zrak koji pogodi povrsinu cita informacije iz Surface Cache-a.
- Prikupljena svetlost se zapisuje u probu.
- Temporal accumulation kombinuje rezultate sa prethodnim frame-ovima.
Korak 6: Interpolacija na piksele
- Svaki piksel na ekranu interpolira svoju indirektnu svetlost iz okolnih proba.
- Rezultat se kombinuje sa direktnom svetloscu za finalni izgled.
Kompletan Lumen pipeline (dijagram toka):
+-------------------+ +-----------------+ +------------------+
| Direktna | | Mesh Distance | | Surface Cache |
| Svetlost | | Fields | | (Mesh Cards) |
+--------+----------+ +--------+--------+ +--------+---------+
| | |
v v v
+--------+-------------------------+------------------------+---------+
| Radiosity Cache |
| (Multi-bounce propagacija kroz Surface Cache) |
+------------------------------+--------------------------------------+
|
v
+----------+----------+
| Screen Probes |
| (Adaptivna mreza) |
+----------+----------+
|
+----------+----------+
| Hijerarhijski Trace |
| 1. Screen Trace |
| 2. Mesh SDF Trace |
| 3. Global SDF Trace |
+----------+----------+
|
+----------+----------+
| Temporal Accumulation |
+----------+----------+
|
+----------+----------+
| Finalna interpolacija|
| na piksel level |
+----------+----------+
|
v
FINALNA SLIKA (GI)
25.3 Sta je brzo kod Lumen-a?
Sada kada razumemo kako Lumen radi, hajde da razmotrimo zasto je dovoljno brz za real-time primenu. Svaka od sledecih tehnika doprinosi performansama.
25.3.1 Screen-space probe postavljanje -- pracenje samo gde je potrebno
Ovo je mozda najvazniji trik. Lumen ne pokusava da izracuna GI za celu scenu -- samo za ono sto je vidljivo na ekranu. Probe postoje samo na pikselima koji su vidljivi. Ako kamera gleda u prazno nebo, skoro da nema proba. Ako kamera gleda u kompleksnu sobu, probe su guste.
Ovo znaci da se racunarski posao automatski skalira sa kompleksnoscu vidljive scene. Jednostavna scena = manje posla. Kompleksna scena = vise posla, ali samo za ono sto je vidljivo.
25.3.2 Temporal Accumulation -- rasporedite posao kroz vreme
Kao sto smo objasnili, svaka proba ne salje sve zrake u jednom frame-u. Rezultati se akumuliraju kroz 4-8 frame-ova. Ovo efektivno znaci da je "per-frame cost" Lumen-a 4-8 puta manji nego sto bi bio da se sve radi u jednom frame-u.
Naravno, ovo ima cenu -- konvergencija zahteva vreme. Ali za tipicne igre gde se kamera pomera umerenom brzinom, temporal accumulation je praktično nevidljiv za igraca.
Analogija: zamislite da morate prebrojati sve knjige u biblioteci. Umesto da ih prebrojite sve odjednom (sto bi trajalo sat vremena i blokiralo vas), svaki put kada prodjete pored polica prebrojite jednu policu. Posle nedelju dana, imate tacan broj -- a nikada niste morali da stanete i cekate.
25.3.3 Surface Cache -- ne re-evaluirajte materijale
Kada zrak pogodi povrsinu, Lumen ne evaluira pun materijal te povrsine u tom trenutku. Umesto toga, cita vec izracunat rezultat iz Surface Cache-a. Evaluacija materijala je skupa operacija (citanje tekstura, racunanje matematickih izraza, itd.), i izbegavanjem ponovne evaluacije Lumen stedi enormnu kolicinu vremena.
Zamislite razliku: umesto da za svaki zrak (a ima ih stotine hiljada po frame-u) ponovo racunate boju, hrapavost i normalu materijala, jednostavno procitate jednu vrednost iz pripremljene tabele. To je razlika izmedju restorana gde svaki put kuvate od nule i restorana koji ima pripremljene sastojke (mise en place) -- drasticno brze.
25.3.4 Distance Field tracing je jeftiniji od triangle tracing-a
Software ray tracing sa SDF-ovima je inherentno jeftiniji od pravog triangle ray tracing-a:
- Manje memorijskog pristupa: SDF je kompaktan volumen. Triangle mesh sa BVH stablom zahteva vise nepredvidivih memorijskih pristupa (sto je najskuplji deo na modernom hardveru).
- Predvidiv broj koraka: Sphere tracing tipicno zavrsi u 10-30 koraka. BVH traversal moze zahtevati vise koraka za kompleksne scene.
- Jednostavnija matematika: Svaki korak sphere tracing-a je trivia (procitaj vrednost, pomeri se za tu distancu). BVH traversal ukljucuje kompleksnije box-ray i triangle-ray preseke.
25.3.5 Hijerarhijsko pracenje -- najjeftinija opcija prvo
Screen Trace je izuzetno jeftin -- koristi depth buffer koji vec postoji. Za ogromnu vecinu zraka u tipicnoj sceni (posebno za kratke zrake koji pogadjaju bliske povrsine), Screen Trace je dovoljan. Samo zraci koji "promase" ekran idu na skuplje SDF tracing.
U praksi, ovo znaci da mozda 50-70% zraka budu reseni samo sa Screen Trace-om, sto dramaticno smanjuje ukupan trosak.
25.4 Sta je skupo kod Lumen-a?
Lumen je impresivan sistem, ali nije besplatan. Razumevanje gde Lumen trosi resurse je kljucno za optimizaciju vasih projekata.
25.4.1 Surface Cache azuriranja
Surface Cache mora da se azurira kad god se promene materijali ili osvjetljenje. U scenama sa mnogo dinamickih objekata koji menjaju materijale ili se krecu (cime menjaju koje kartice su vidljive), Surface Cache azuriranje moze postati znacajan trosak.
Memorija je takodje faktor. Svaki mesh sa Surface Cache-om zauzima GPU memoriju za svoje kartice. U velikim scenama sa hiljadama unikatnih mesh-ova, ovo moze zauzeti stotine megabajta VRAM-a.
Konkretno, problematicni su:
- Scene sa mnogo instanci razlicitih mesh-ova (svaki unikatan mesh treba svoj Surface Cache).
- Mesh-ovi sa dinamickim materijalima koji se cesto menjaju.
- Vrlo veliki mesh-ovi (npr. teren kao jedan mesh) -- zahtevaju velike kartice za pokrivanje cele povrsine.
25.4.2 Dugacki zraci (Long-distance tracing)
Sto je veci radijus koji Lumen mora da pretrazi, to je tracing skuplji. U otvorenim spoljasnjim scenama gde svetlost putuje stotine metara, zraci moraju da predju vece distance, sto zahteva vise koraka (cak i sa SDF sphere tracing-om).
Max Trace Distance podesavanje direktno kontrolise koliko daleko zraci mogu ici. Smanjivanje ove vrednosti moze znacajno poboljsati performanse, ali na racun toga da udaljeni objekti ne doprinose indirektnoj svetlosti.
25.4.3 Mnogo preklapajucih svetala
Lumen mora da izracuna doprinos svakog svetla za Surface Cache. Ako u sceni imate mnogo svetala koja se preklapaju (na primer, hodnik sa 50 malih point light-ova), svaka kartica u tom prostoru mora da primi svetlost od svih tih izvora.
Ovo je jedan od najcescih izvora losih performansi sa Lumen-om. Resenje je:
- Koristite manje, ali jacih svetala gde god je moguce.
- Postavite attenuation radius svetala na razumne vrednosti (ne prevelike).
- Razmotrite Importance Volume pristup gde prioritizujete oblasti u kojima je kvalitet svetlosti kriticno vazan.
25.4.4 Visoka rezolucija pracenja (High detail tracing distance)
Lumen Scene Detail i Final Gather Quality podesavanja kontrolisu koliko detaljno Lumen prati zrake i koliko proba koristi. Vise vrednosti = bolji kvalitet, ali i vise posla.
Na primer, povecanje Final Gather Quality sa 1.0 na 2.0 efektivno udvostrucava broj proba i/ili zraka po probi. Ovo moze dodati 2-4ms po frame-u na modernom GPU-u, sto je ogromna razlika ako ciljate 60fps (gde imate samo ~16.6ms ukupnog budzeta po frame-u).
25.4.5 Kompleksni materijali u Surface Cache-u
Iako Surface Cache pojednostavljuje evaluaciju materijala, kreiranje Surface Cache-a i dalje zahteva evaluaciju svakog materijala. Materijali sa mnogo teksturnih uzorkovanja, kompleksnim World Position Offset-om, ili skupim proceduralnim izrazima ce usporiti Surface Cache azuriranje.
Ovo je posebno problematicno za materijale koji koriste World Position Offset (WPO) -- jer se oblik mesh-a menja, ali SDF to ne prati (SDF se racuna jednom pri importu). Mesh Cards takodje ne mogu uvek precizno uhvatiti deformisanu geometriju.
25.4.6 Final Gather kvalitet
Final Gather je poslednji korak gde se prikupljena svetlost iz proba interpolira na svaki piksel. Visoki kvalitet Final Gather-a znaci:
- Vise proba po ekranu.
- Bolja interpolacija (manje artefakata).
- Ali i proporcionalno vise posla.
Na niskom kvalitetu, mozete primetiti blage "patchwork" artefakte gde se vidi granica izmedju proba. Na visokom kvalitetu, ovi artefakti nestaju, ali cena se placa u milisekundama.
25.5 Kompromisi i ogranicenja
Nijedan sistem nije savrsen, i Lumen nije izuzetak. Razumevanje ogranicenja je jednako vazno kao razumevanje mogucnosti.
25.5.1 Ogranicenja Software RT-a (SDF-based tracing)
SDF kvalitet nije savrsen. Signed Distance Field je aproksimacija originalne geometrije. Ova aproksimacija je generalno dobra za solide, konveksne oblike, ali moze imati problema sa:
- Tankom geometrijom: Zid debljine 1cm moze imati SDF koji ga prikazuje kao deblji ili cak prolazan. Ovo je najcesci uzrok "light leaking-a" u Lumen-u.
- Konkavnim detaljima: Duboke rupe, mali udubljeni delovi mesh-a mogu biti zamazani u SDF-u.
- Vrlo sitnim elementima: Tanke sipke ograde, zice, mali ukrasi -- mogu potpuno nestati iz SDF-a.
- Foliage-om i vegetacijom: Listovi drveta su tanki, kompleksni, i SDF ih tesko predstavlja. Ovo je jedan od glavnih razloga za Hardware RT rezim.
Prakticni savet: Vizualizujte SDF-ove vasih mesh-ova rano u procesu razvoja. Ako vidite da SDF ne predstavlja kljucne delove geometrije, razmotrite:
- Povecanje SDF rezolucije za taj mesh.
- Dodavanje debljine tankim zidovima (minimum 10-20cm za pouzdane SDF-ove).
- Prebacivanje na Hardware RT ako je neophodno.
25.5.2 Ogranicenja Surface Cache-a
Surface Cache, kao sto smo pomenuli, ima ogranicenu rezoluciju. Ovo se manifestuje na vise nacina:
- "Blocky" indirektna svetlost: Na velikim mesh-ovima, Surface Cache moze imati premalo rezolucije da uhvati fine varijacije osvetljenja. Rezultat je indirektna svetlost koja izgleda gruba ili "blokasta".
- Artefakti na malim objektima: Mesh Cards za male objekte mogu biti previse grube da uhvate detalje materijala. Sitna, sarena dekoracija moze izgledati kao jednolicna boja u Surface Cache-u.
- Kasnjenje u azuriranju: Kada se nesto promeni (pomeri svetlo, promeni materijal), Surface Cache ne azurira odmah za sve objekte. Mozete primetiti "ghosting" ili zaostajanje GI-ja za 1-2 sekunde u nekim slucajevima.
Resenja za Surface Cache artefakte:
- Podelite velike mesh-ove na manje delove (ovo daje vise, manjih kartica sa boljom rezolucijom).
- Podesiteite Lumen Scene Detail parametar za bolju rezoluciju kartica.
- Prihvatite da je Surface Cache za grube, difuzne informacije -- sitni detalji ce doci od direktne svetlosti i refleksija, ne od GI-ja.
25.5.3 Temporal Accumulation -- sum pri brzom kretanju
Temporal accumulation je genijalana tehnika, ali ima ugradjenu slabost: zahteva vreme za konvergenciju. Kada se kamera ili objekti brzo krecu, akumulirani podaci iz prethodnih frame-ova postaju nevazeci, i Lumen mora da "pocne ispocetka" za pogodjena podrucja.
Ovo se manifestuje kao:
- Sum (noise): Brzo kretanje kamere moze otkriti graniularan, nekonvergiran GI. Ovo je posebno vidljivo u mracnim scenama gde je GI dominantan izvor svetlosti.
- Ghosting: Ponekad se svetlost iz prethodnog polozaja "zadrzi" na trenutak na novom polozaju, dok se novi podaci ne akumuliraju.
- "Popping": Pri naglim promenama ugla kamere, indirektna svetlost moze na trenutak nestati i onda se ponovo pojaviti.
Mitigacije:
- Izbegavajte ekstremno brza kretanja kamere ako je GI kvalitet vazan.
- Koristite neke oblike staticnog fill light-a (dodatna svetla male snage) u kriticnim oblastima da zamaskujete sum.
- U cut-scene-ama, razmotrite pre-warming: pustite kameru da stoji na poziciji sekundu pre nego sto pocne snimanje, da Lumen konvergira.
25.5.4 Tipovi projekata gde Lumen moze imati problema
Lumen nije idealan za svaki projekat. Evo gde mozete ocekivati probleme:
VR projekti:
- VR zahteva stabilan 90fps (ili cak 120fps).
- Lumen na tim frame rate-ovima ostavlja vrlo mali budzetski prostor za GI.
- Temporal accumulation artefakti su posebno neprijatni u VR-u jer se vide stereoskopski.
- Za VR, razumni baked lighting (Poglavlje 24) je cesto bolji izbor.
Veoma brze igre (racing, fast-paced FPS):
- Ekstremno brza kretanja kamere ne daju Lumen-u dovoljno vremena za konvergenciju.
- Sum i ghosting mogu biti primetni.
- Moze pomocci kombinacija Lumen-a sa staticnim fill svetlima.
Mobilne igre:
- Lumen zahteva znacajnu GPU snagu. Na mobilnim uredjajima, to nije dostupno.
- UE5 na mobilnim platformama koristi drugacije tehnike za GI.
Retro stilovi sa hard shadows:
- Lumen prirodno proizvodi meke, difuzne GI efekte. Ako zelite ostre, dramaticne senke bez meke radijancije, Lumen moze "omeksati" vas izgled vise nego sto zelite. U tim slucajevima, mozete smanjiti intenzitet indirektne svetlosti ili potpuno iskljuciti Lumen i rucno kontrolisati svetlost.
25.5.5 Distance Field ogranicenja -- poseban slucaj
Pored opsta ogranicenja SDF preciznosti, postoje specificni problemi:
Tanka geometrija:
- Zidovi tanji od ~10cm mogu dozvoliti "curenje" svetlosti jer ih SDF ne moze precizno modelirati.
- Resenje: koristite zidove minimalne debljine 15-20cm ili dodajte "blocker" geometriju (nevidljive mesh-ove cija jedina svrha je da imaju dobar SDF za blokiranje svetlosti).
Foliage (vegetacija):
- Listovi stabala su obicno modelovani kao tanke ravni (quads) sa alpha masking-om. SDF ne razume alpha maske -- vidi samo geometriju. Zato SDF drvceta izgleda kao solidni blob umesto prozracne krosnje.
- Ovo znaci da drvece u Lumen Software RT rezimu cesto baca previse GI senke (jer SDF prikazuje krosnju kao solidnu sferu).
- Hardware RT rezim radi bolje sa vegetacijom jer koristi prave trouglove i moze citati alpha maske.
Deformisane geometrije (Skeletal Meshes):
- SDF se generise jednom pri importu, za default pozu (bind pose) mesh-a. Ako se mesh animira (npr. karakter pokrece ruke), SDF ne prati te deformacije.
- Lumen ce tretirati animirani karakter kao da je u svojoj default pozi za potrebe GI-ja. Ovo je generalno prihvatljivo jer GI od karaktera retko treba biti piksel-precizan, ali moze biti primetno u nekim slucajevima.
25.6 Pregled Lumen podesavanja
Sada cemo proci kroz kljucna podesavanja koja kontrolisu kvalitet i performanse Lumen-a. Razumevanje ovih parametara je od sustinskog znacaja za svakoga ko zeli da fino podesi Lumen za svoj projekat.
25.6.1 Aktiviranje Lumen-a
Pre svega, hajde da se uverimo da je Lumen ukljucen:
- Otvorite Project Settings.
- Idite na Engine > Rendering.
- Pod Global Illumination, postavite Dynamic Global Illumination Method na Lumen.
- Pod Reflections, postavite Reflection Method na Lumen (vise o ovome u Poglavlju 26).
Alternativno, mozete koristiti Post Process Volume da lokalno kontrolisete GI metodu:
- Postavite Post Process Volume u scenu.
- U njegovim podesavanjima, pod Global Illumination > Lumen Global Illumination, aktivirajte override.
- Ovde mozete podesiti parametre specificne za tu oblast scene.
25.6.2 Lumen Scene Detail
Gde se nalazi: Post Process Volume > Lumen Global Illumination > Lumen Scene Detail
Sta kontrolise: Rezoluciju i preciznost Scene representation-a (Surface Cache). Visa vrednost = detaljnije Mesh Cards, bolja rezolucija Surface Cache-a.
Podrazumevana vrednost: 1.0
Opseg: 0.25 -- 4.0
Efekat povecanja:
- Bolja rezolucija Surface Cache kartica.
- Manji mesh-ovi postaju vidljivi za Lumen (na nizim vrednostima, jako mali mesh-ovi mogu biti ignorisani).
- Smanjuje "blocky" artefakte u GI-ju.
Efekat smanjenja:
- Brze performanse.
- Manje memorije.
- Ali grublja GI, vise artefakata na malim objektima.
Preporuka:
- Za igre, koristite 1.0 -- 1.5.
- Za arhitekturalnu vizualizaciju, pokusajte 2.0 -- 4.0.
- Za najbrze performanse, mozete spustiti na 0.5, ali ocekujte vizuelnu degradaciju.
25.6.3 Final Gather Quality
Gde se nalazi: Post Process Volume > Lumen Global Illumination > Final Gather Quality
Sta kontrolise: Gustinu Screen Proba i/ili broj zraka po probi. Ovo direktno utice na kvalitet finalne GI slike.
Podrazumevana vrednost: 1.0
Opseg: 0.25 -- 4.0 (moze se ici i vise komandama konzole, ali se ne preporucuje za real-time)
Efekat povecanja:
- Manje suma u GI-ju.
- Glatkija interpolacija izmedju proba.
- Precizniji GI na sitnim detaljima.
- Ali proporcionalno skuplje -- dvostruka vrednost otprilike znaci dvostruku cenu.
Efekat smanjenja:
- Brze ali sumnijije.
- Vidljivi "patchwork" artefakti na niskim vrednostima.
Preporuka:
- Za 60fps gameplay, koristite 0.5 -- 1.0.
- Za 30fps ili cinematic kvalitet, koristite 1.0 -- 2.0.
- Za offline rendering ili snimanje filmskih sekvenci, mozete ici na 4.0+.
25.6.4 Lumen Scene Lighting Quality
Gde se nalazi: Post Process Volume > Lumen Global Illumination > Lumen Scene Lighting Quality
Sta kontrolise: Kvalitet osvjetljenja unutar Surface Cache-a -- koliko zraka se koristi za izracunavanje svetlosti na Mesh Cards.
Podrazumevana vrednost: 1.0
Opseg: 0.25 -- 4.0
Efekat povecanja:
- Preciznija svetlost na Surface Cache karticama.
- Bolje multi-bounce rezultati (manje suma u Radiosity Cache-u).
- Posebno primetno u scenama sa mnogo indirekti obojene svetlosti (crveni zid koji reflektuje na beli plafon).
Efekat smanjenja:
- Brlze performanse.
- Ali suumniji Surface Cache, sto moze dovesti do "prljavijeg" GI-ja.
Preporuka:
- Generalno, 1.0 je dobar balans.
- Povecajte na 2.0 za interijer scene gde je GI kriticno vazan.
- Smanjite na 0.5 za otvorene spoljasnje scene gde je direktna svetlost dominantna.
25.6.5 Software vs Hardware Ray Tracing
Gde se nalazi: Post Process Volume > Lumen Global Illumination > Use Hardware Ray Tracing when available
Sta kontrolise: Da li Lumen koristi SDF software tracing ili pravi hardware RT.
Podrazumevana vrednost: Iskljuceno (Software RT)
Preduslovi za Hardware RT:
- GPU sa RT podrskom (NVIDIA RTX 2000+, AMD RX 6000+).
- Ukljucen Support Hardware Ray Tracing u Project Settings > Rendering.
- Shader Model 5 ili vise.
Kada ukljuciti:
- Scene sa puno vegetacije gde SDF aproksimacija nije adekvatna.
- Arhitekturalna vizualizacija gde je kvalitet prioritet.
- Detekcija sitnih detalja (resete, ograde, tanke strukture).
Kada NE ukljucivati:
- Ciljanje 60fps na mainstream hardveru.
- Scene gde Software RT daje dovoljno dobre rezultate.
- Projekti koji ciljaju konzole sa ogranicenim RT budzetom.
25.6.6 Max Trace Distance
Gde se nalazi: Post Process Volume > Lumen Global Illumination > Max Trace Distance
Sta kontrolise: Maksimalnu distancu (u Unreal Units, gde 1 uu = 1 cm) koju Lumen zraci mogu preci pre nego sto odustanu.
Podrazumevana vrednost: Zavisno od projekta, tipicno oko 20000 (200 metara).
Efekat povecanja:
- Udaljeni objekti doprinose GI-ju (npr. brdo u daljini baca globalnu senku).
- Ali zraci moraju da putuju duze = skuplje.
Efekat smanjenja:
- Bolje performanse -- zraci se ranije zaustavljaju.
- Ali gubite doprinos dalekih objekata GI-ju.
Preporuka:
- Za unutrasnje scene (interijer), cesto mozete smanjiti na 5000-10000 (50-100 metara). Zidovi ionako ogranicavaju koliko daleko svetlost putuje.
- Za spoljasnje scene, mozda morate postaviti na 50000+ (500 metara) za prihvatljive rezultate.
- Eksperimentsite -- ovo je jedno od najefikasnijih podesavanja za performanse.
25.6.7 Dodatna korisna podesavanja
Pored glavnih parametara, postoji niz dodatnih podesavanja koja mogu biti korisna:
Lumen Scene Lighting Update Speed:
- Kontrolise koliko brzo se Radiosity Cache azurira.
- Visa vrednost = brza konvergencija, ali vise posla po frame-u.
- Niza vrednost = sporija konvergencija (zaostajanje GI za promenama), ali bolje performanse.
Lumen Scene View Distance:
- Kontrolise koliko daleko od kamere Lumen postoji.
- Objekti van ove distance ne doprinose Lumen GI-ju.
- Vazan za performanse u otvorenim svetovima.
Mesh Distance Field Resolution Scale:
- Per-mesh podesavanje u Static Mesh editoru.
- Kontrolise rezoluciju SDF-a za taj mesh.
- Povecajte za mesh-ove gde primetite lose SDF artefakte.
r.Lumen.ScreenProbeGather.DownsampleFactor:
- Konzolna komanda koja kontrolise downsample factor za Screen Probes.
- Visa vrednost = manje proba, bolje performanse, ali grublji GI.
- Default je 16 (probe su na razmaku od 16 piksela).
25.7 Lumen u praksi -- Saveti i best practices
25.7.1 Interijer vs. Eksterijer
Interijer scene (sobe, hodnici, zgrade):
Ovo je gde Lumen zaista blista. U zatvorenim prostorima, indirektna svetlost je izuzetno vazna -- svetlost ulazi kroz prozor, odbija se vise puta, i ispunjava sobu. Bez GI-ja, delovi sobe koji nisu direktno osvetljeni bi bili potpuno tamni.
Preporuke za interijer:
- Povecajte Lumen Scene Detail na 1.5-2.0 za bolje kartice u manjim prostorima.
- Povecajte Lumen Scene Lighting Quality na 1.5-2.0 za kvalitetnije multi-bounce.
- Smanjite Max Trace Distance na 5000-10000 (nema potrebe za dugim zracima u zatvorenom prostoru).
- Obratite paznju na debljinu zidova -- minimum 15-20cm za pouzdane SDF-ove.
- Izbegavajte previse malih svetala -- koristite manje, jacih izvora svetlosti.
Eksterijer scene (otvoreni svetovi, spoljasnji prostori):
U otvorenim prostorima, direktna svetlost (sunce) je dominantna, i GI igra manju ulogu. Lumen i dalje doprinosi -- ambient occlusion, obojeno odbijanje od terena i zgrada -- ali efekat je suptilniji.
Preporuke za eksterijer:
- Lumen Scene Detail moze biti 1.0 ili cak 0.75.
- Max Trace Distance treba biti dovoljan da uhvati doprinos velikih struktura (zgrada, brda). Tipicno 30000-50000.
- Koristite Lumen Scene View Distance da ogranicite koliko daleko Lumen scena postoji.
- Vegetacija moze biti problematicna -- razmotrite Hardware RT ako imate mnogo drveca.
- Skylight sa cubemap-om je vazan za opstu ambient svetlost u eksterijeru.
25.7.2 Debljina zidova i blokirajuca geometrija
Ovo je toliko cest problem da zasluzuje poseban pasus. Mnogi level dizajneri prave zidove kao tanke ravni (single-sided walls), sto je u redu za vizuelni izgled, ali katastrofalno za Lumen jer SDF ne moze pouzdano predstaviti tanke povrsine.
Pravilo: Svaki zid koji treba da blokira svetlost mora imati debljinu od minimum 10cm, idealno 15-20cm u SDF rezimu.
Ako iz nekog razloga ne mozete napraviti debele zidove (npr. koristite modularni kit sa tankim zidovima), mozete:
- Dodati "shadow blocker" mesh -- nevidljiv mesh (sa iskljucenim renderingom ali ukljucenim SDF generation) koji ima dovoljnu debljinu.
- Prebaciti se na Hardware RT za tu oblast.
- Koristiti Lumen Scene Lighting Quality da smanjite intenzitet curenja.
25.7.3 Emissive materijali i Lumen
Jedna od najlepsih mogucnosti Lumen-a je podrska za emissive materijale -- materijale koji emituju svetlost. Ekran televizora, neonska reklama, usijana lava -- sve ovo moze emitovati svetlost u Lumen-u i doprineti globalnoj iluminaciji.
Kako to radi:
- Mesh sa emissive materijalom ima tu emisiju zapisanu u svom Surface Cache-u.
- Kada Lumen zraci pogode taj mesh, oni "pokupe" emitovanu svetlost.
- Ta svetlost se propagira dalje kroz scenu kao svaka druga indirektna svetlost.
Vazno: Emissive materijali u Lumen-u ne stvaraju senke. Oni emituju meku, difuznu svetlost, ali nemaju fizicki izvor koji baca senke. Ako vam trebaju i senke, dodajte klasicnu Light actor blizu emissive povrsine.
Performanse: Emissive materijali ne dodaju poseban trosak za Lumen -- oni se obradjuju kao deo Surface Cache-a. Medjutim, jako svetle emissive povrsine mogu dovesti do viseg suma u GI-ju jer kreiraju jake svetlosne gradijente.
25.7.4 Debugging Lumen problema
Kada nesto ne izgleda kako treba, UE5 pruza vise alata za debugovanje Lumen-a:
Vizualizacioni rezimi (View Modes):
-
Lumen Scene (
Show > Visualize > Lumen Scene): Prikazuje kako Lumen vidi vasu scenu -- Surface Cache kartice. Korisno za identifikovanje mesh-ova koje Lumen ne registruje ili koji imaju lose kartice. -
Mesh Distance Fields (
Show > Visualize > Mesh Distance Fields): Prikazuje SDF reprezentaciju mesh-ova. Korisno za identifikovanje losih SDF-ova (mesh-ovi koji imaju "rupee" ili deformisane SDF-ove). -
Lumen Scene Overview: Prikazuje rezoluciju kartica svakog mesh-a kao heatmap-u. Crveno = niska rezolucija, zeleno = dobra rezolucija.
Konzolne komande:
r.Lumen.Visualize.Mode 1-- Vizualizuje Screen Probe-ove.r.Lumen.TraceMeshSDFs 0/1-- Ukljuci/iskljuci SDF tracing (za izolovanje problema).r.Lumen.ScreenProbeGather.DownsampleFactor X-- Kontrolise gustinu proba.stat GPU-- Prikazuje GPU timings, ukljucujuci Lumen sub-timings.
Tipicni problemi i resenja:
| Problem | Mogucii uzrok | Resenje |
|---|---|---|
| Svetlost curi kroz zid | Tanak zid, los SDF | Povecajte debljinu zida (min 15cm) |
| GI ne reaguje na materijal | Surface Cache se nije azurirao | Sacekajte par frame-ova ili forsirajte update |
| Sum/noise u GI-ju | Niska Final Gather Quality ili brza kamera | Povecajte Final Gather Quality ili usporite kameru |
| Objekat ne doprinosi GI-ju | Mesh nema SDF ili kartice | Proverite "Generate Mesh Distance Field" u mesh settings |
| GI izgleda "blocky" | Niska Lumen Scene Detail | Povecajte Lumen Scene Detail |
| Performanse su lose | Previse detalja, dugacki zraci | Smanjite Max Trace Distance, koristite manje svetala |
25.8 Lumen i ostali sistemi -- kako se sve uklapa
25.8.1 Lumen i Nanite
Nanite i Lumen su dizajnirani da rade zajedno, ali vazno je razumeti njihov odnos:
- Nanite upravlja geometrijom -- milioni/milijarde trouglova efikasno renderovani.
- Lumen koristi SDF-ove za software ray tracing, a ne Nanite geometriju direktno.
- Medjutim, Nanite mesh-ovi automatski generisu SDF-ove pri importu.
- U Hardware RT rezimu, Lumen moze koristiti Nanite geometriju za tracing (UE 5.1+), sto pruza izuzetno visok kvalitet.
25.8.2 Lumen i Virtual Shadow Maps
Virtual Shadow Maps (VSM) su UE5-ov sistem za visoko-rezolucione senke. Lumen koristi informacije iz VSM za tacniju simulaciju svetlosti -- ako VSM kaze da je neka tacka u senci, Lumen to uzima u obzir za Surface Cache evaluaciju.
25.8.3 Lumen i Sky Light
Skylight je vazan izvor svetlosti za Lumen, posebno u spoljasnjim scenama. Lumen moze da koristi Skylight (sa ili bez HDRI cubemap-a) kao izvor ambijentalnog osvetljenja koji se propagira kroz GI.
Preporuka: Uvek imajte aktivan Skylight u scenama sa Lumen-om, posebno u eksterijeru. U interijeru, Skylight moze doprineti svetlosti koja ulazi kroz otvore.
25.8.4 Lumen i Post Processing
Post processing efekti mogu znacajno uticati na konacni izgled Lumen GI-ja:
- Exposure (Auto Exposure): Automatska ekspozicija moze "pojacati" ili "smanjiti" percepciju GI-ja. Pazljivo podesavanje exposure parametara je vazno za konzistentan izgled.
- Bloom: Svetle oblasti od emissive materijala sa Lumen GI mogu biti dodatno naglasene bloom-om.
- Ambient Occlusion: Screen Space AO (SSAO) moze dodati dodatne kontaktne senke koje Lumen mozda ne uhvati. Ali pazite -- prevelik SSAO sa Lumen-om moze rezultirati "dvostrukim zatamnjenjem."
25.9 Napredne teme
25.9.1 Lumen i World Partition
U velikim, otvorenim svetovima sa World Partition sistemom, Lumen se automatski prilagodjava:
- Samo ucitani delovi sveta generisu Surface Cache i SDF-ove.
- Lumen Scene View Distance kontrolise koliko daleko od kamere Lumen postoji.
- Streaming nivoa moze izazvati kratke "pop-in" efekte u GI-ju dok se novi delovi ucitavaju.
25.9.2 Lumen sa dinamickim objektima
Dinamicki objekti (Movable actors) u potpunosti rade sa Lumen-om:
- Ako pomerite objekat, njegov SDF se pomera sa njim, i Lumen ce reagovati.
- Ako objekat baca senku, Lumen ce izracunati promenu u GI-ju.
- Medjutim, Surface Cache azuriranje za pomerene objekte zahteva dodatni rad.
Za brzo pomicucce objekte (projektili, cestice), Lumen moze ne uhvatiti njihov GI doprinos jer je Surface Cache azuriranje presporo. Ovo je generalno u redu jer su brzi objekti retko znacajni za GI.
25.9.3 Per-Object Lumen podesavanja
Neki mesh-ovi imaju specificna podesavanja relevantna za Lumen:
- Affect Distance Field Lighting: Da li mesh ucestvuje u distance field osvjetljenju.
- Distance Field Resolution Scale: Kontrolise rezoluciju SDF-a za taj mesh.
- Affect Lumen Scene: Da li mesh ucestvuje u Lumen sceni (Surface Cache).
Ova podesavanja omogucuju fino kontrolisanje -- na primer, mozete iskljuciti Lumen doprinos za male dekorativne objekte koji ne uticu znacajno na GI ali potrosili bi resurse.
25.9.4 Profajliranje Lumen performansi
Za detaljno profajliranje Lumen-a, koristite:
- stat GPU -- Prikazuje ukupne GPU timings ukljucujuci Lumen.
- ProfileGPU (Ctrl+Shift+,) -- Detaljan breakdown svih rendering pass-ova.
- Unreal Insights -- Za sveobuhvatno profajliranje.
Tipican Lumen breakdown u ProfileGPU:
Lumen (ukupno): 3.5ms
|-- Lumen Scene Update: 0.8ms (Surface Cache azuriranje)
|-- Lumen Radiosity: 0.5ms (Multi-bounce propagacija)
|-- Lumen Screen Probe Gather: 1.2ms (Probe tracing i gathering)
|-- Lumen Screen Probe Filter: 0.3ms (Filtering i denoising)
|-- Lumen Reflections: 0.7ms (Refleksije, vise u Pogl. 26)
Svaki od ovih delova moze biti optimizovan zasebno podesavanjima koja smo opisali.
25.10 Lumen vs. Baked Lighting -- Kada koristiti sta?
Poglavlje 24 je detaljno obradilo baked lighting (Lightmass). Hajde da napravimo direktno poredjenje:
| Aspekt | Lumen (Dinamicki GI) | Baked Lighting (Lightmass) |
|---|---|---|
| Setup vreme | Nula -- radi odmah | Bake-ovanje moze trajati od minuta do sati |
| Iteracija | Trenutna -- promenite svetlo, vidite rezultat odmah | Svaka promena zahteva novo bake-ovanje |
| Kvalitet na staticnim scenama | Odlican, ali sa nekim artefaktima | Izvrstan -- gotovo perfektan za staticne scene |
| Dinamicke promene | Potpuno podrzane | Nisu moguce bez menjanja baked podataka |
| Memorija (runtime) | GPU memorija za SDF, Surface Cache | Lightmap teksture mogu biti ogromne |
| GPU trosak (runtime) | 2-5ms+ po frame-u | Blizu nuli (vec izracunato) |
| Tanki mesh-ovi | Problematicni (SDF ogranicenja) | Rade korektno |
| Multi-bounce | Podrzano (Radiosity Cache) | Podrzano (sa dovoljno bake vremena) |
| Emissive GI | Podrzano i dinamicko | Podrzano ali staticno |
| Mobilni uredjaji | Nije podrzano | Jedina opcija za GI |
Preporuka: Koristite Lumen za vecinu PC/konzolnih projekata, posebno one sa dinamickim sadrzajem. Razmotrite baked lighting za VR, mobilne igre, ili projekte gde je apsolutni kvalitet GI bez artefakata kritican i scena je vecinom staticna.
Zapamtite: ovo nije "ili-ili." Mozete koristiti kombinaciju u razlicitim delovima igre ili cak hibridne pristupe.
25.11 Rezime poglavlja
Prosli smo dug put u ovom poglavlju. Hajde da rezimiramo kljucne tacke:
-
Lumen je UE5-ov sistem za potpuno dinamicku globalnu iluminaciju i refleksije koji ne zahteva bake-ovanje i reaguje na promene u realnom vremenu.
-
Lumen koristi viseslojni pristup:
- Mesh Distance Fields (SDF) za software ray tracing.
- Surface Cache (Mesh Cards) za brzo citanje materijala.
- Screen Probes za prikupljanje svetlosti na ekranu.
- Radiosity Cache za multi-bounce propagaciju.
- Hijerarhijsko pracenje (Screen > Mesh SDF > Global SDF) za efikasnost.
-
Lumen je brz zahvaljujuci screen-space probe-ovima, temporal accumulation-u, Surface Cache-u, i hijerarhijskom pracenju.
-
Lumen je skup pri Surface Cache azuriranjima, dugackim zracima, mnogo preklapajucim svetlima, i visokim quality podesavanjima.
-
Lumen ima ogranicenja sa tankom geometrijom, SDF preciznoscu, temporal noise-om pri brzom kretanju, i odredjenim tipovima projekata (VR, mobilno).
-
Kljucna podesavanja ukljucuju Lumen Scene Detail, Final Gather Quality, Lumen Scene Lighting Quality, Software vs Hardware RT, i Max Trace Distance.
Tabela kljucnih pojmova
| Termin (EN) | Termin (SR) | Opis |
|---|---|---|
| Global Illumination (GI) | Globalna iluminacija | Simulacija sveukupnog osvetljenja ukljucujuci odbiijenu svetlost |
| Signed Distance Field (SDF) | Polje oznacene distanc | 3D struktura gde svaka tacka cuva rastojanje do najblize povrsine |
| Surface Cache | Kes povrsina | Pojednostavljena reprezentacija materijala mesh-ova za brzo citanje |
| Mesh Cards | Kartice mesh-a | Ravne projekcije mesh-a koje cine Surface Cache |
| Screen Probes | Probe na ekranu | Tacke na ekranu koje prikupljaju indirektnu svetlost |
| Radiosity Cache | Kes radijancije | Sistem za inkrementalno izracunavanje visih odbijanja svetlosti |
| Temporal Accumulation | Vremenska akumulacija | Tehnika raspodjele posla kroz vise frame-ova sa akumulacijom rezultata |
| Sphere Tracing | Sferno pracenje | Tehnika ray marchinga koristeci SDF vrednosti za odredjivanje velicine koraka |
| Final Gather | Finalno prikupljanje | Poslednji korak interpolacije GI-ja na svaki piksel |
| Hardware Ray Tracing | Hardversko pracenje zraka | Koristenje RT jezgara GPU-a za pravcenje zraka protiv pravih trouglova |
| Light Leaking | Curenje svetlosti | Artefakt gde svetlost prolazi kroz geometriju koja bi trebalo da je blokira |
| Multi-bounce | Visestruko odbijanje | Svetlost koja se odbija vise od jednom pre nego sto dospe do posmatraca |
| Global Distance Field | Globalno polje distance | Nizorezolucioni SDF cele scene za dugorocno pracenje |
| Ray Marching | Marsiranje zraka | Tehnika pracenja zraka u diskretnim koracima |
| Emissive Material | Emisivni materijal | Materijal koji emituje svetlost (samoosvetljavajuci) |
Reference i dalje citanje
Poglavlja u ovoj knjizi
- Poglavlje 12: Teorija globalne iluminacije -- Fizicki osnovi GI-ja, rendering jednacina, Monte Carlo metode, radiometrija.
- Poglavlje 14: Ray Tracing -- od teorije do prakse -- Detaljno objasnjenje ray tracing-a, BVH stabla, RT pipeline.
- Poglavlje 24: Baked Lighting sa Lightmass-om -- Alternativni pristup GI-ju, pogodan za staticne scene i platforme gde Lumen nije dostupan.
- Poglavlje 26: Lumen Refleksije -- Kako Lumen upravlja refleksijama, specular GI, refleksije u ogledalima i sjajnim povrsinma.
Zvanicni resursi
-
Unreal Engine dokumentacija -- Lumen Global Illumination and Reflections:
https://docs.unrealengine.com/5.0/en-US/lumen-global-illumination-and-reflections-in-unreal-engine/ -
Unreal Engine dokumentacija -- Lumen Technical Details:
https://docs.unrealengine.com/5.0/en-US/lumen-technical-details-in-unreal-engine/ -
Epic Games -- "Lumen in UE5" (GDC prezentacija od Daniel Wright-a): Detaljan tehncicki uvid u arhitekturu Lumen-a od jednog od glavnih inzenjera.
-
Unreal Engine Blog -- Inside Unreal: Lumen:
https://www.unrealengine.com/en-US/blog
Akademski i tehncicki resursi
-
"Real-Time Rendering, 4th Edition" (Akenine-Moller, Haines, Hoffman): Poglavlje o globalnoj iluminaciji u realnom vremenu. Izvrstan opsti resurs.
-
"GPU Gems 2" (NVIDIA): Poglavlje o SDF rendering-u i sphere tracing-u.
-
John Hart -- "Sphere Tracing: A Geometric Method for the Antialiased Ray Tracing of Implicit Surfaces": Originalni akademski rad o sphere tracing tehnici koja je osnova Lumen software RT-a.
Sta sledi?
U sledecem poglavlju (Poglavlje 26) cemo se fokusirati na Lumen Refleksije -- kako Lumen upravlja refleksijama u sceni, od matiranih povrsina do ogledala, i kako da postignete fotorealisticne refleksije u realnom vremenu.
Vidimo se tamo!
Kljucna poruka ovog poglavlja: Lumen nije magija -- to je izuzetno pametan inzenjerski sistem koji koristi vise tehnika istovremeno da simulira globalnu iluminaciju u realnom vremenu. Razumevanje kako svaki deo radi (SDF-ovi, Surface Cache, Screen Probes, Radiosity Cache) daje vam moc da dijagnostikujete probleme, optimizujete performanse, i iskoristite puni potencijal ovog neverovatnog sistema. Ne plasite se eksperimentisanja -- ukljucite vizualizacione rezime, pomajte podesavanja, i pratite GPU profajler. To je jedini nacin da zaista ovladate Lumen-om.