Poglavlje 24: Staticko Osvetljenje i Lightmapping

Poglavlje 24: Staticko Osvetljenje i Lightmapping


"Najbolji frame je onaj koji je vec izracunat." -- Anonimni graficki programer


Dosli smo do jednog od najstarijih, a opet i dalje najkorisnijih koncepata u racunarskoj grafici u realnom vremenu. U prethodnim poglavljima smo istrazivali kako svetlost putuje scenom (Poglavlje 10), kako se indirektno osvetljenje (Global Illumination) simulira u realnom vremenu (Poglavlje 12), i kako Lumen u UE5 resava taj problem dinamicki (Poglavlje 25 ce to detaljno pokriti). Ali pre nego sto se potpuno prepustimo dinamickom osvetljenju, moramo da razumemo tehniku koja je decenijama bila kicma vizuelnog kvaliteta u igrama -- staticko osvetljenje i lightmapping.

Zasto? Zato sto cak i u eri Lumena i real-time ray tracinga, postoje situacije gde je baking osvetljenja ne samo relevantan, vec i jedini ispravan izbor. Mobilne platforme, VR aplikacije, archviz projekti, pa cak i AAA igre koje koriste hibridni pristup -- svi oni zavise od razumevanja lightmappinga.

U ovom poglavlju cemo proci kroz kompletnu pricu: od osnovnog koncepta bakinga, preko lightmap UV zahteva, do GPU Lightmass sistema u UE5, volumetric lightmapa, i resavanja uobicajenih artefakata. Spremite se -- ovo ce biti detaljno, prakticno i, nadam se, korisno.


24.1 Koncept Bakinga -- Zasto Uopste "Peci" Svetlost?

24.1.1 Sta je Baking?

Baking (ili "pecenje") osvetljenja je proces u kome se osvetljenje scene pre-kalkulise offline -- dakle ne u realnom vremenu tokom izvrsavanja igre, vec unapred, u editoru ili posebnom alatu. Rezultati tog izracunavanja se potom cuvaju u teksturama koje se nazivaju lightmape (lightmaps).

Zamislite to ovako: umesto da GPU svaki frame iznova racuna kako svetlost skace po prostoriji, odbija se od zidova, prolazi kroz prozore i pravi meke senke -- sve to se izracuna jednom, rezultat se "upece" u teksturu, i ta tekstura se jednostavno nanosi na geometriju tokom renderinga. GPU vise ne mora da racuna tu kompleksnu fiziku svetlosti -- samo cita vrednosti iz teksture. Brzo, efikasno, a rezultat moze da izgleda fenomenalno.

Formalno receno:

Lightmap texel (u, v) = Integral svetlosti koja dolazi na tacku povrsine 
                         mapirane na taj texel, iz svih pravaca u hemispheri

Ovo ukljucuje:

24.1.2 Zasto je Indirektno Osvetljenje Skupo?

Kada svetlost udari u povrsinu, ona se ne zaustavlja tu. Odbija se i nastavlja da putuje, udarajuci u druge povrsine, ponovo se odbijajuci, i tako dalje. Ovo je sustina Global Illumination (GI) -- i upravo ovo je ono sto scenu cini realisticnom.

Problem? Simulacija ovog procesa u realnom vremenu je izuzetno racunski zahtevna. Za svaki piksel na ekranu, trebalo bi pratiti stotine ili hiljade zraka svetlosti (rays) kroz vise odbijanja. Cak i sa modernim GPU-ovima, ovo je tezak zadatak za 60 FPS rendering.

Zato se koristio baking: izracunaj sve to offline, gde vreme nije ograniceno na 16.67 ms po frameu, vec moze da traje minutima ili satima.

Aspekt Real-time GI Baked GI
Vreme izracunavanja ~ms po frameu Minuti/sati offline
Kvalitet Ogranien budzetom Moze biti neogranicen
Memorija (runtime) GPU compute Lightmap teksture
Dinamicnost Potpuna Nikakva (staticno)
Indirektni bounces Obicno 1-2 Moze 100+

24.1.3 Fundamentalni Trade-off

Baking je, u sustini, razmena dinamicnosti za kvalitet i performanse.

Sta dobijate:

Sta gubite:

Ovo je kljucna stvar koju morate razumeti: kada jednom "ispecete" osvetljenje, ono je zamrznuto. Ako igrac pomeri sto u sobi, senke od tog stola se nece promeniti jer su one deo teksture, ne dinamickog izracunavanja.

24.1.4 Kada je Baking i Dalje Relevantan?

Mozda mislite: "Pa, imamo Lumen, zasto bismo se uopste bavili bakingom?" Odlicno pitanje. Evo konkretnih scenarija:

Mobilne platforme (iOS, Android)

Mobilni GPU-ovi jednostavno nemaju snagu za real-time GI. Lumen nije podrzan na mobilnim platformama u UE5 (barem ne u punom obliku). Baking je jedini nacin da dobijete kvalitetno indirektno osvetljenje na mobilnim uredjajima.

VR (Virtual Reality)

U VR-u, svaki milisekund je vazan. Potrebno vam je stabilnih 90 FPS (ili cak 120 FPS) da bi iskustvo bilo ugodno. Baking vam daje fenomenalan vizuelni kvalitet bez runtime troska, sto je u VR-u neprocenjivo.

Archviz (Arhitektonska vizualizacija)

Archviz projekti su cesto staticne scene -- klijent zeli da setne kroz buducu kucu ili kancelariju. Geometrija se ne menja, svetla su fiksna. Baking je idealan: mozete da postignete fotorealistican kvalitet jer imate potpunu kontrolu i neograniceno vreme za rendering.

Hibridni pristup u AAA igrama

Mnoge moderne igre koriste kombinaciju: baked indirektno osvetljenje + dinamicno direktno osvetljenje. Ovako dobijate kvalitetnu GI bez runtime troska, a dinamicna direktna svetla (i njihove senke) i dalje reaguju na promene u sceni.

Performance-kriticne situacije

Cak i na PC-u ili konzolama, u scenama sa veoma kompleksnom geometrijom ili mnogo svetlosnih izvora, baking moze da oslobodi GPU budget za druge efekte -- post-processing, particle sisteme, kompleksne materijale.


24.2 Lightmap Rezolucija

24.2.1 Sta je Lightmap Rezolucija?

Lightmap rezolucija definise koliko texela (texture pixels) se koristi za cuvanje informacija o osvetljenju po jedinici povrsine objekta. Mozete da je zamislite kao "gustinu piksela" u lightmap teksturi.

U UE5, lightmap rezolucija se izrazava kao dimenzija teksture -- na primer, rezolucija 64 znaci da ce lightmapa tog objekta biti 64x64 texela.

24.2.2 Texeli po Jedinici Sveta (Texels per World Unit)

Kljucni koncept je odnos izmedju broja texela i fizicke velicine objekta u svetu. Ako imate zid od 4 metra sa lightmap rezolucijom 64, to znaci:

Texel density = 64 texela / 400 cm = 0.16 texela po cm
                                    = 16 texela po metru

Sto je veca gustina texela, to su detaljnije senke i osvetljenje -- ali i veca potrosnja memorije.

Za poredjenje:

Gustina Kvalitet Tipicna upotreba
4 texela/m Vrlo nisko Udaljeni tereni, pozadine
8 texela/m Nisko Veliki spoljasnji objekti
16 texela/m Srednje Spoljasnji zidovi, podovi
32 texela/m Dobro Unutrasnji zidovi, namestaj
64 texela/m Visoko Blizi objekti, hero assets
128+ texela/m Vrlo visoko Archviz, close-up detalji

24.2.3 Kako Odabrati Pravu Rezoluciju?

Izbor lightmap rezolucije je balansiranje izmedju vizuelnog kvaliteta i potrosnje memorije. Evo prakticnih smernica:

Pravilo 1: Velicina objekta

Veci objekti generalno trebaju vecu apsolutnu rezoluciju, ali mogu da imaju manju gustinu texela jer su obicno dalje od kamere.

Mali objekat (stolica):       Rezolucija 32-64
Srednji objekat (sto):        Rezolucija 64-128
Veliki objekat (zid sobe):    Rezolucija 128-256
Vrlo veliki (pod citave sobe): Rezolucija 256-512

Pravilo 2: Blizina kamere

Objekti koji su blizu kamere (ili koje igrac moze da ispita izbliza) trebaju vecu rezoluciju. Udaljeni objekti mogu da prodje sa manjom.

Pravilo 3: Kompleksnost senki

Ako objekat prima kompleksne senke (na primer, pod ispod stola sa mnogo nogu), treba mu veca rezolucija da te senke budu jasne i ciste.

Pravilo 4: Budzet memorije

Uvek imajte na umu ukupni budzet. Nemojte staviti rezoluciju 512 na svaki objekat -- to ce brzo pojesti svu raspolozivu memoriju.

24.2.4 Per-Object Podesavanja Rezolucije

U UE5, lightmap rezoluciju mozete podesiti po objektu (per actor instance). Ovo je kljucna mogucnost jer vam omogucava da fino kontrolisete gde trositi lightmap budzet.

Da biste podesili lightmap rezoluciju za odredjeni Static Mesh Actor:

  1. Selektujte actor u viewportu
  2. U Details panelu, nadjite sekciju Lighting
  3. Pronadjite opciju Overridden Light Map Res
  4. Cekrajte checkbox da omogucite override
  5. Postavite zeljenu vrednost

Takodje, svaki Static Mesh asset ima svoju podrazumevanu lightmap rezoluciju koja se koristi ako actor ne napravi override:

  1. Otvorite Static Mesh asset u editoru
  2. U Details panelu, nadjite Light Map Resolution
  3. Postavite podrazumevanu vrednost

Pro tip: Koristite Optimization Viewmodes u UE5 editoru. Pod Optimization Viewmodes > Lightmap Density mozete videti vizuelnu reprezentaciju lightmap gustine na svim objektima. Zelena boja oznacava optimalnu gustinu, crvena preveliku (skupa), a plava premalu (los kvalitet).

24.2.5 Uobicajene Vrednosti za Razlicite Tipove Objekata

Evo konkretnih preporuka za razlicite tipove objekata u tipicnom projektu:

Unutrasnji prostori (Interior):

Tip objekta Preporucena rezolucija Obrazlozenje
Pod (floor) 128-256 Prima mnogo senki, vidljiv izbliza
Zidovi (walls) 64-128 Uglavnom ravne povrsine
Plafon (ceiling) 32-64 Retko se gleda direktno
Namestaj (furniture) 32-128 Zavisi od velicine i blizine
Mali dekorativni objekti 16-32 Obicno mali doprinos
Vrata i prozori 64-128 Cesto u fokusu

Spoljasnji prostori (Exterior):

Tip objekta Preporucena rezolucija Obrazlozenje
Teren (terrain) Ne koristi lightmape Korisiti landscape-specific resenja
Zgrade (buildings) 64-256 Zavisi od velicine fasade
Staze i putevi 32-64 Velike, ravne povrsine
Vegetacija (foliage) 4-16 Mnogo instanci, male povrsine
Kamenje i stene 32-64 Nepravilne povrsine

24.2.6 Kalkulacija Ukupne Lightmap Memorije

Razumevanje koliko memorije trose vase lightmape je kriticno za optimizaciju. Evo kako se to racuna:

Formula za jedan objekat:

Memorija (bytes) = Sirina x Visina x BytesPerTexel

Gde je BytesPerTexel obicno 4 (RGBA8) ili 8 (za HDR lightmape)

Primer:

Objekat sa lightmap rezolucijom 256:
256 x 256 x 4 bytes = 262,144 bytes = 256 KB

Objekat sa lightmap rezolucijom 128:
128 x 128 x 4 bytes = 65,536 bytes = 64 KB

Objekat sa lightmap rezolucijom 64:
64 x 64 x 4 bytes = 16,384 bytes = 16 KB

Kalkulacija za celu scenu:

Ukupna memorija = Suma(Za svaki objekat: Rezolucija^2 x BytesPerTexel)

Primer scene:
  50 objekata sa rezolucijom 64:   50 x 16 KB  = 800 KB
  20 objekata sa rezolucijom 128:  20 x 64 KB  = 1,280 KB
  10 objekata sa rezolucijom 256:  10 x 256 KB = 2,560 KB
  5 objekata sa rezolucijom 512:   5 x 1 MB    = 5,120 KB
  -------------------------------------------------
  Ukupno:                                       ~9.5 MB

Napomena: UE5 takodje koristi kompresiju i atlas pakovanje (vise lightmapa u jednu veliku teksturu), sto utice na stvarnu potrosnju memorije. Stvarna potrosnja moze biti razlicita od grube kalkulacije, ali ovo vam daje dobar okvir za planiranje.

Lightmap atlasi u UE5:

UE5 pakuje individualne lightmape u vece atlas teksture (obicno 1024x1024 ili 2048x2048). Ovo smanjuje broj texture switcheva tokom renderinga i poboljsava performanse. Mozete kontrolisati maksimalnu velicinu atlasa u World Settings > Lightmass > Packed Light and Shadow Map Texture Size.

Prakticne granice:

Platforma Preporuceni ukupni budzet
Mobile (low-end) 16-32 MB
Mobile (high-end) 32-64 MB
VR 32-64 MB
PC/Console (standard) 64-128 MB
Archviz (bez limita) 128-512 MB

24.3 Lightmap UV Zahtevi

24.3.1 Povezanost sa Poglavljem 04

U Poglavlju 04 smo detaljno obradili UV mapping i spomenuli da je UV channel 1 (drugi UV set, posto se broji od 0) obicno rezervisan za lightmape. Sada cemo objasniti zasto su zahtevi za lightmap UV-ove toliko specificni i strogi.

Lightmap UV-ovi se razlikuju od standardnih UV-ova za teksture (UV channel 0) na nekoliko kljucnih nacina. Dok UV channel 0 moze da ima preklapanja (na primer, obe strane kutije koriste istu teksturu), lightmap UV-ovi moraju da budu jedinstveni -- svaka tacka na povrsini meshing mora da ima svoju jedinstvenu poziciju u UV prostoru.

24.3.2 Zahtev 1: Nema Preklapajucih UV-ova (No Overlapping UVs)

Ovo je apsolutno najvazniji zahtev. Ako se dva dela geometrije preklapaju u lightmap UV prostoru, oba dela ce deliti iste texele u lightmapi. To znaci da ce osvetljenje za oba dela biti isto -- sto je ocigledno pogresno.

Zasto je ovo problem?

Zamislite da imate kutiju. U standardnom UV mapiranju, mozda sve cetiri bocne strane dele istu UV oblast (jer koriste istu teksturu). Ali svaka strana kutije prima razlicito osvetljenje -- jedna strana gleda ka prozoru i svetla je, druga je u senci. Ako se lightmap UV-ovi preklapaju, obe strane bi dobile isti osvetljaj, sto bi izgledalo potpuno pogresno.

Kako proveriti u UE5:

  1. Otvorite Static Mesh Editor
  2. U toolbaru, izaberite UV overlay opciju
  3. Izaberite UV channel 1 (lightmap channel)
  4. Vizuelno proverite da nema preklapanja

U DCC alatu (Blender, Maya, 3ds Max):

24.3.3 Zahtev 2: UV-ovi u 0-1 Prostoru

Svi lightmap UV-ovi moraju biti unutar 0-1 UV prostora. Nista ne sme da izlazi van tog opsega.

Validno:
  Svi UV koordinati: 0.0 <= u <= 1.0, 0.0 <= v <= 1.0

Nevalidno:
  Bilo koji UV koordinat: u < 0.0 ili u > 1.0 ili v < 0.0 ili v > 1.0

Zasto?

Lightmapa je jedna tekstura koja pokriva ceo objekat. UV koordinate van 0-1 opsega bi se "umotale" (wrap) i efektivno stvorile preklapanje, sto nas vraca na problem iz prethodnog zahteva.

Za standardne teksture, tiling (ponavljanje) van 0-1 prostora je cesto pozeljno (na primer, za ponavljajuce zidne teksture). Ali za lightmape, tiling nema smisla -- svaki deo povrsine mora da ima jedinstvenu osvetljenost.

24.3.4 Zahtev 3: Adekvatan Padding (Razmak)

Izmedju UV ostrva (UV islands) mora da postoji dovoljan razmak (padding). Ovo je vazno iz dva razloga:

  1. Bleeding prevention: Bez dovoljnog paddinga, texeli jednog UV ostrva mogu da "procure" u susedno ostrvo, stvarajuci vizuelne artefakte (linije svetlosti ili senki gde ne bi trebalo da budu).

  2. Bilinear filtering: GPU koristi bilinearnu filtraciju pri sampliranju tekstura, sto znaci da cita susedne texele i interpolira izmedju njih. Ako su UV ostrva preblizu, filtracija moze da "uhvati" texele iz susednog ostrva.

Preporuceni padding:

Lightmap rezolucija Minimalni padding (texeli) Preporuceni padding (texeli)
32 2 4
64 2 4
128 4 8
256 4 8
512 8 16

Pro tip: UE5 automatski dodaje 1-2 texela paddinga oko svake lightmap chart oblasti. Ali to moze biti nedovoljno za vece rezolucije. Uvek je bolje obezbediti vise paddinga u vasim UV-ovima nego manje.

24.3.5 Zahtev 4: Minimalna Distorzija

UV islands treba da budu sto manje distortovana -- to jest, proporcije u UV prostoru treba da odgovaraju proporcijama na samom mesh-u.

Zasto?

Ako je UV island istegnut ili sabijen u jednom pravcu, texeli u lightmapi ce biti neravnomerno rasporedeni na povrsini. To znaci da ce u jednom pravcu imati vise detalja (visoku gustinu texela), a u drugom manje. Rezultat: senke izgledaju istegnute ili sabijene.

Prakticni primer:

Zamislite dugi, uzani hodnik. Ako je lightmap UV za pod istegnut tako da je u UV prostoru priblizno kvadrat (umesto pravougaonika koji odgovara proporcijama hodnika), onda ce texeli duz hodnika biti "istegnuti" -- senke ce izgledati zamagljeno u jednom pravcu, a ostro u drugom.

Resenje: Koristite conformal ili angle-preserving UV projekcije u vasem DCC alatu. Ovo minimizuje distorziju ugla, sto je najvazniji faktor za lightmap kvalitet.

24.3.6 Automatsko Generisanje Lightmap UV-ova u UE5

Ako ne zelite (ili nemate vremena) da rucno pravite lightmap UV-ove, UE5 moze da ih automatski generise prilikom importa mesha:

  1. Pri importu FBX fajla, cekrajte opciju Generate Lightmap UVs
  2. Ili, nakon importa, otvorite Static Mesh Editor, i u Build Settings cekrajte Generate Lightmap UVs

UE5 automatski generisani lightmap UV-ovi obicno koriste UV channel 1 i kreirani su sa:

Prednosti automatskog generisanja:

Mane automatskog generisanja:

Podesavanja za automatsko generisanje:

Savet: Za brz workflow, koristite automatsko generisanje, pa vizuelno proverite rezultat u Static Mesh Editoru. Ako lightmape izledaju lose posle bakinga, onda investirajte vreme u rucni UV layout za taj konkretni objekat.

24.3.7 Zasto Sve Ovo Utice na Kvalitet Bakinga?

Da rezimiramo zasto su lightmap UV zahtevi toliko vazni, pogledajmo kako svaki zahtev direktno utice na kvalitet ispecenog osvetljenja:

Zahtev Ako je ispostovan Ako NIJE ispostovan
Nema preklapanja Svaka tacka ima jedinstveno osvetljenje Razliciti delovi dobijaju isto osvetljenje -- potpuno pogresno
0-1 prostor Svi texeli su validni Wrapping stvara preklapanja i artefakte
Adekvatan padding Ciste granice izmedju UV ostrva Bleeding, svetle/tamne linije na ivicama
Minimalna distorzija Ravnomerna gustina texela Istegnute, zamagljene ili neravnomerne senke

24.4 Indirect Lighting Cache

24.4.1 Problem: Dinamicki Objekti u Baked Scenama

Zamislite ovu situaciju: imate prelepo ispecenu scenu sa suptilnim indirektnim osvetljenjem. Ali onda igrac udje u sobu. Igracov karakter je dinamicki objekat -- on se pomera, i ne moze da ima baked lightmapu.

Kako taj dinamicki objekat prima indirektno osvetljenje iz ispecene scene? Bez bilo kakvog resenja, dinamicki objekat bi izgledao potpuno "mrtvo" -- osvetljen samo direktnim svetlom, bez ikakve boje ili toplote od indirektne svetlosti.

Tu na scenu stupa Indirect Lighting Cache (ILC).

24.4.2 Kako Funkcionise?

Indirect Lighting Cache je sistem koji cuva volumetriske uzorke (samples) indirektnog osvetljenja na strateskim tackama u 3D prostoru scene. Tokom bakinga, Lightmass ne racuna samo lightmape za staticne povrsine, vec i popunjava 3D mrezu sa informacijama o indirektnom osvetljenju.

Proces izgleda ovako:

  1. Tokom bakinga: Lightmass izracunava indirektno osvetljenje na tackama rasporedenim u 3D mrezi kroz scenu
  2. Runtime: Kada se dinamicki objekat (na primer, igracov karakter) nadje u sceni, engine interpolira osvetljenje iz okolnih sample tacaka
  3. Primena: Interpolirano indirektno osvetljenje se primenjuje na dinamicki objekat kao ambient lighting

24.4.3 Volumetrijske Sample Tacke

Sample tacke u ILC su rasporedene u 3D mrezi koja prati geometriju scene. Tacke se gushe rasporeduju blize staticnoj geometriji (gde je varijacija u osvetljenju veca) i redje u otvorenom prostoru.

U UE5, mozete vizualizovati ove tacke:

  1. U World Settings, pod Lightmass, omogucite Show Indirect Lighting Cache debug opciju
  2. U viewportu, koristite Show > Visualize > Indirect Lighting Cache
  3. Videcete mrezu malih sfera koje predstavljaju sample tacke

Svaka tacka cuva informacije o osvetljenju kodirane u sfericnim harmonicima (Spherical Harmonics, SH) -- matematickoj reprezentaciji koja efikasno opisuje kako svetlost dolazi iz razlicitih pravaca.

24.4.4 Kako Dinamicki Objekti Primaju Baked Indirektno Osvetljenje

Proces primene ILC na dinamicki objekat:

  1. Engine odredjuje poziciju dinamickog objekta u svetu
  2. Pronalazi najblize sample tacke u ILC
  3. Trilinearno interpolira osvetljenje iz tih tacaka
  4. Primenjuje rezultirajuce osvetljenje na objekat

Ovo daje razumnu aproksimaciju indirektnog osvetljenja -- na primer, ako igrac udje u prostoriju sa crvenim zidovima, ILC ce obezbediti blago crvenkasto indirektno osvetljenje na igracu.

24.4.5 Ogranicenja ILC-a

ILC ima znacajna ogranicenja koja morate razumeti:

Niska rezolucija:

ILC je volumetriska mreza sa relativno niskom rezolucijom (u poredjenju sa lightmapama). To znaci da ne moze da uhvati fine detalje u osvetljenju. Dinamicki objekat nece imati iste suptilne varijacije u indirektnom osvetljenju kao sto ima staticna geometrija sa high-res lightmapom.

Light leaking:

Zbog niske rezolucije, ILC moze da "procuri" svetlost kroz tanke zidove. Ako imate tanak zid izmedju svetle i tamne sobe, sample tacke sa obe strane zida mogu da se mesaju, stvarajuci netacno osvetljenje.

Nema self-shadowing:

ILC ne pruza self-shadowing na dinamickim objektima. To jest, ne moze da simulira kako delovi samog objekta blokiraju indirektno svetlo na drugim delovima istog objekta.

Samo indirektno osvetljenje:

ILC se bavi samo indirektnim (odbijena) svetloscu. Direktno osvetljenje dinamickih objekata se i dalje racuna u realnom vremenu.

Poredenje sa Volumetric Lightmaps (videti sekciju 24.9):

UE5 je uglavnom zamenio stariji ILC sa naprednijim Volumetric Lightmap sistemom, koji pruza bolje rezultate. Ipak, razumevanje ILC-a je korisno jer:


24.5 Irradiance Volume

24.5.1 Koncept

Irradiance Volume je tehnika za cuvanje informacija o indirektnom osvetljenju u 3D mrezi (grid). Konceptualno je slicna ILC-u, ali je formalizovanija i koristi se kao generalniji mehanizam za "jeftino" indirektno osvetljenje.

Zamislite 3D kutiju koja obuhvata deo vase scene. Ta kutija je podeljena u celije (voxele), i u svakoj celiji je sacuvan uzorak osvetljenja. Kada trebate da znate koliko indirektnog svetla prima neka tacka u prostoru, jednostavno nadjete odgovarajucu celiju (ili interpolirate izmedju susednih) i procitate sacuvanu vrednost.

24.5.2 3D Mreza Uzoraka Osvetljenja

Irradiance Volume se implementira kao regularna 3D mreza (grid) sa fiksnim rastojanjem izmedju uzoraka u svakoj dimenziji (X, Y, Z).

Primer: Irradiance Volume 16x8x4

  Dimenzije prostora: 32m x 16m x 8m
  Rastojanje izmedju uzoraka: 2m x 2m x 2m
  Ukupno uzoraka: 16 x 8 x 4 = 512

Svaki uzorak cuva informacije o osvetljenju koje dolazi iz svih pravaca na toj tacki -- dakle, ne samo intenzitet vec i direkciju svetlosti.

24.5.3 Spherical Harmonics (SH) Encoding

Kljucna tehnika za efikasno cuvanje direkcijskih informacija o osvetljenju su sfericni harmonici (Spherical Harmonics, SH).

Sta su sfericni harmonici?

Sfericni harmonici su matematicke bazne funkcije definisane na povrsini sfere -- slicno kao sto su sinusoide bazne funkcije za 1D signale (Fourier transformacija). Koristeci SH, mozete da aproksimujete kako svetlost dolazi iz razlicitih pravaca koristeci mali broj koeficijenata.

Nivoi SH:

Nivo (Order) Broj koeficijenata Kvalitet Tipicna upotreba
L0 (order 0) 1 Samo srednja vrednost Ambient color
L1 (order 1) 4 Nizak, basic directionality Jeftini sistemi
L2 (order 2) 9 Srednji, dobri za diffuse Najcesci za lightmape
L3 (order 3) 16 Visok Retko, memorijski skup

UE5 obicno koristi L2 (drugi nivo) sfericne harmonike za volumetriske uzorke osvetljenja. Sa 9 koeficijenata po kanalu boje (R, G, B), to je ukupno 27 floating-point vrednosti po uzorku.

Zasto SH?

24.5.4 Prakticna Upotreba u UE5

U UE5, Irradiance Volume koncept je evoluirao u Volumetric Lightmaps (detaljnije u sekciji 24.9). Ali razumevanje osnovnog koncepta je vazno:

  1. Baking: Lightmass izracunava indirektno osvetljenje u tackama mreze
  2. Encoding: Osvetljenje se kodira u SH koeficijente
  3. Runtime: Engine interpolira SH koeficijente za poziciju dinamickog objekta
  4. Shading: SH koeficijenti se evaluiraju sa normalom povrsine da bi se dobio finalni indirektni osvetljaj

24.5.5 Prednosti i Mane

Prednosti:

Mane:


24.6 Zasto se Baking i Dalje Koristi

24.6.1 Mobilne Platforme

Ovo smo vec kratko spomenuli, ali zasluzuje dublje objasnjenje. Mobilni GPU-ovi (cak i najnoviji Apple A-serija ili Qualcomm Adreno) su znacajno slabiji od desktop i konzolnih GPU-ova.

Konkretni razlozi zasto baking dominira na mobilnim platformama:

Na mobilnim platformama, baked osvetljenje je cesto jedini nacin da se postigne ubedljiv vizuelni kvalitet bez zrtvovanja performansi i trajanja baterije.

UE5 Mobile workflow:

  1. Koristite Stationary ili Static svetla
  2. Baking sa Lightmass-om
  3. Lightmap rezolucije obicno nize (32-128)
  4. Ogranicena upotreba dinamickih senki (samo za glavnog karaktera ili kljucne objekte)
  5. ILC ili Volumetric Lightmaps sa nizom rezolucijom

24.6.2 VR (Virtual Reality)

VR ima unikatne zahteve koji cine baking izuzetno vrednim:

Framerate zahtevi:

Dva puta veci rendering budzet:

U VR-u, scena se renderuje dva puta -- jednom za svako oko (stereoskopski rendering). To efektivno duplira rendering trosak.

Latencija je kriticna:

Svako kasnjenje u renderingu se manifestuje kao "motion sickness" kod korisnika. Svaki milisekund je vazan.

Baking kao spas:

Sa baked osvetljenjem, VR aplikacija dobija kvalitetno GI "besplatno" -- jedini trosak je lightmap texture sampling, sto je trivijalno. Ovo oslobadja GPU budzet za stereo rendering i drzanje visokog framerata.

Archviz u VR-u:

Ovo je posebno popularna kombinacija. Archviz VR iskustvo sa potpuno baked osvetljenjem moze da izgleda fotorealisticki i radi na 90 FPS -- nesto sto bi bilo nemoguce sa potpuno dinamickim osvetljenjem.

24.6.3 Archviz (Arhitektonska Vizualizacija)

Archviz je mozda idealan use case za baking:

U archviz projektima, mozete da pustite Lightmass da radi satima, koristite maksimalne kvalitete, najvise rezolucije lightmapa, i desettine bounce-ova za indirektno osvetljenje. Rezultat moze biti nerazluciv od fotografije.

Tipican archviz baking workflow:

  1. Modelirajte scenu sa preciznom geometrijom
  2. Pripremite lightmap UV-ove (obicno rucno za hero objekte)
  3. Postavite Lightmass Importance Volume oko scene
  4. Koristite high-quality Lightmass settings (mnogo bounceova, visoke rezolucije)
  5. GPU Lightmass za brze iteracije
  6. Finalno pecenje sa maksimalnim kvalitetom

24.6.4 Hibridni Pristup: Baked Indirektno + Dinamicno Direktno

Ovo je verovatno najcesci pristup u modernim igrama koje koriste baking. Ideja je:

U UE5, ovo se postize koriscenjem Stationary Lights:

Prednosti hibridnog pristupa:

Aspekt Vrednost
Indirektno osvetljenje Visok kvalitet (baked, mnogo bounceova)
Direktne senke Dinamicke (reaguju na pomicanje objekata)
Performanse Dobro (samo direktne senke su runtime trosak)
Dinamicnost Parcijalna (senke da, GI ne)

Primer iz prakse:

Igra moze da ima sobu sa:

24.6.5 Poredjenje: Baking vs Lumen

Da bi stvari bile jasne, evo direktnog poredjenja sa Lumenom (koji cemo detaljno obraditi u Poglavlju 25):

Kriterijum Baking (Lightmass) Lumen
Kvalitet GI Izuzetan (offline) Vrlo dobar (real-time)
Dinamicnost Nema Potpuna
Runtime trosak Minimalan Znacajan
Platforme Sve PC/Console (ne mobile)
Iteration vreme Minuti/sati za rebuild Instantno
Memorija Lightmap teksture Screen-space buffers
Podrska u UE5 Potpuna Potpuna (na podr. platformama)

24.7 Baking Artefakti i Resenja

Nema nista frustrirajuce kao kad pustite Lightmass da radi 30 minuta, i onda vidite neprijatne artefakte na rezultatu. U ovoj sekciji cemo proci kroz najcesce probleme i kako ih resiti.

24.7.1 Light Leaking (Procurivanje Svetlosti)

Sta je to?

Light leaking se desava kada se svetlost pojavljuje na mestima gde ne bi trebalo -- na primer, svetlost koja "prolazi" kroz zid i osvetljava tamnu sobu iza njega.

Zasto se desava?

Nekoliko mogucih uzroka:

  1. Geometrija sa rupama: Zidovi koji nisu potpuno zatvoreni (imaju pukotine ili nepovezane vertekse)
  2. Lightmap rezolucija preniska: Texeli su toliko veliki da "pokrivaju" i jednu i drugu stranu zida
  3. Bias podesavanja: Lightmass bias moze uzrokovati pomeranje uzoraka sa jedne strane zida na drugu
  4. ILC/Volumetric Lightmap interpolacija: Volumetrijski uzorci sa jedne strane zida se interpoliraju sa onima sa druge strane

Resenja:

Za geometriju sa rupama:

Za nisku lightmap rezoluciju:

Za Lightmass bias:

Za volumetricke uzorke:

Pro tip: Uobicajen trik je da stavite dodatni, nevidljiv mesh (sa Cast Shadow ukljucenim ali sa nevidljivim materijalom) iza problematicnog zida. Ovo daje Lightmassu dodatnu geometriju za blokiranje svetlosti.

24.7.2 Shadow Seams (Sivovi Izmedju Objekata)

Sta je to?

Shadow seams se pojavljuju kao vidljive linije na mestima gde se dva objekta dodiruju. Na primer, gde se dva zidna panela spajaju, moze se videti tamna ili svetla linija.

Zasto se desava?

Svaki objekat ima svoju lightmapu, i na granici izmedju dva objekta, texeli iz razlicitih lightmapa ne moraju da se tacno poklapaju. Malecne razlike u uzorkovanju stvaraju vidljive sivove.

Resenja:

  1. Povecajte lightmap rezoluciju: Vise texela znaci finiji detalj na granicama
  2. Koristite jedan mesh umesto dva: Ako je moguce, spojite susedne zidove u jedan mesh -- tada imaju zajednicku lightmapu bez sivova
  3. Podesite Lightmass smoothing: Povecajte Indirect Lighting Smoothness da ublazi razlike na granicama
  4. Koristite Lightmap padding: Obezbedjujte dovoljan padding u UV layoutu

24.7.3 UV Problemi koji Uzrokuju Lose Lightmape

Simptomi:

Uzroci i resenja:

Preklapajuci UV-ovi:

UV-ovi van 0-1 prostora:

Nedovoljno paddinga:

Prevelika distorzija:

Pogresni lightmap UV channel:

24.7.4 Niska Rezolucija koja Uzrokuje Blocky (Kockaste) Senke

Sta je to?

Senke izgledaju kockasto, sa vidljivim "stepenicama" ili velikim blokovima boje umesto glatkih prelaza.

Zasto?

Jednostavno: lightmap rezolucija je preniska za objekat te velicine. Nema dovoljno texela da uhvate fine detalje senki.

Resenja:

  1. Povecajte lightmap rezoluciju na problematicnom objektu
  2. Proverite lightmap density vizualizaciju (Optimization Viewmodes > Lightmap Density)
  3. Razmotrite da li je baking pravi pristup za taj objekat -- mozda je bolje koristiti dinamicke senke
  4. Optimizujte UV layout da bolje iskoristi raspolozivi UV prostor -- kompaktiji layout znaci vise texela po jedinici povrsine

Vizuelni vodic za prepoznavanje rezolucije:

Rezolucija 16:  Vidljivi blokovi, skoro neupotrebljivo
Rezolucija 32:  Grubi oblici senki, prihvatljivo za udaljene objekte
Rezolucija 64:  Srednji kvalitet, okej za vecinu objekata
Rezolucija 128: Dobar kvalitet, fine senke su jasne
Rezolucija 256: Visok kvalitet, glatke, detaljne senke
Rezolucija 512: Izuzetan kvalitet, skoro fotografski (ali skupo!)

24.7.5 Sistematski Pristup Resavanju Artefakata

Kada naidjete na problem sa lightmapama, preporucujem sledeci sistematski pristup:

Korak 1: Identifikujte tip problema

Korak 2: Izolujte problematican objekat

Korak 3: Koristite dijagnosticke alate

Korak 4: Primenite resenje

Korak 5: Rebuild i verifikujte


24.8 GPU Lightmass u UE5

24.8.1 Uvod

GPU Lightmass je revolucionarno unapredjenje u UE5 (uvedeno kao beta u UE 4.26 i unapredjeno u UE5). Umesto da koristi CPU za izracunavanje lightmapa (kao tradicionalni Lightmass), GPU Lightmass koristi path tracing na GPU-u sto je dramaticno brze.

Kljucna razlika:

Tradicionalni (CPU) Lightmass:
  - Koristi CPU cores za ray tracing
  - Tipicno 8-32 threadova
  - Moze da traje satima za kompleksne scene
  - Moze da koristi Swarm za distribuiranu obradu

GPU Lightmass:
  - Koristi GPU za path tracing
  - Hiljade CUDA/compute cores
  - Isti kvalitet za 10-50x manje vremena
  - Ne koristi Swarm, radi lokalno

24.8.2 Kako Aktivirati GPU Lightmass

Da biste koristili GPU Lightmass u UE5:

  1. Idite u Edit > Plugins
  2. Pronadjite i omogucite GPU Lightmass plugin
  3. Restartujte editor
  4. Idite u Build > Lighting padajuci meni
  5. Izaberite GPU Lightmass umesto podrazumevanog Lightmass-a

Ili, alternativno:

  1. U World Settings, pod Lightmass, pronadjite opciju Lightmass Type
  2. Promenite na GPU Lightmass

24.8.3 Path Tracing-Based Lightmap Baker

GPU Lightmass koristi path tracing -- istu tehniku koju koriste offline rendereri kao sto su Arnold, V-Ray, ili Blender Cycles. Ovo znaci da:

Prednosti path tracinga:

24.8.4 Brzina: GPU vs CPU Lightmass

Razlika u brzini je dramaticna. Evo pribliznih poredjenja za tipicnu archviz scenu (prostorija sa namestajem):

Konfiguracija CPU Lightmass GPU Lightmass Ubrzanje
Production kvalitet, mala soba 15 min 1-2 min ~10x
Production kvalitet, stan sa vise soba 2 sata 10-15 min ~10x
High kvalitet, velika scena 8+ sati 30-60 min ~10-15x

Napomena: Ovo su priblizne vrednosti. Stvarna brzina zavisi od GPU-a, kompleksnosti scene, lightmap rezolucija, broja bounce-ova i drugih faktora.

24.8.5 Quality Settings i Njihov Uticaj

GPU Lightmass ima nekoliko kljucnih podesavanja kvaliteta:

GI Samples:

Broj uzoraka (samples) po texelu za indirektno osvetljenje. Vise uzoraka = manje suma, bolji kvalitet, duze pecenje.

Nizak:    256 samples  -- Brz preview, vidi se sum (noise)
Srednji:  512 samples  -- Razuman kvalitet, malo suma
Visok:    1024 samples -- Dobar kvalitet, minimalan sum
Produkcija: 2048-4096  -- Izuzetan kvalitet, skoro bez suma

Bounces:

Broj odbijanja svetlosti. Vise odbijanja = realisticnije indirektno osvetljenje.

1 bounce:  Osnovni GI, deluje "plitko"
2 bounces: Dobar za vecinu scena
3 bounces: Visok kvalitet, suptilne varijacije
4+ bounces: Diminishing returns, ali ponekad vredno za interior

Irradiance Caching:

GPU Lightmass moze da koristi irradiance caching za ubrzanje -- umesto da svaki texel nezavisno izracunava GI, cesto izracunava na manjem broju tacaka i interpolira. Brze je, ali moze da uvede blagi sum ili gubitak detalja.

First Bounce Ray Guiding:

Tehnika koja usmerava zrake ka svetlosnim izvorima u prvom odbijanju, ubrzavajuci konvergenciju. Ovo znacajno smanjuje sum sa manjim brojem uzoraka.

Denoiser:

GPU Lightmass u UE5 ukljucuje AI denoiser (baziran na OIDN -- Open Image Denoise, ili na NVIDIA-inim denoiser alatima). Denoiser moze dramaticno da smanji sum u lightmapama, omogucavajuci koriscenje manjeg broja uzoraka za prihvatljiv kvalitet.

Podesavanje Nizak Srednji Visok Produkcija
GI Samples 256 512 1024 4096
Bounces 1 2 3 4+
Irradiance Caching On On On/Off Off
Denoiser On On On Opcionalno
Tipicno vreme* 1-3 min 3-8 min 8-20 min 20-60 min

*Za srednju archviz scenu na modernom GPU-u (RTX 3070+)

24.8.6 Prakticni Saveti za GPU Lightmass

  1. Koristite RTX GPU: GPU Lightmass znacajno profitira od RT cores na NVIDIA RTX karticama (i AMD ekvivalentima). Hardware accelerated ray tracing dramaticno ubrzava proces.

  2. VRAM je vazan: GPU Lightmass ucitava celu scenu u GPU memoriju. Za velike scene, treba vam GPU sa dovoljno VRAM-a (8 GB minimum, 12-24 GB preporuceno).

  3. Iterativni workflow: Koristite nize podesavanja za brze iteracije tokom rada, a visoke postavke samo za finalno pecenje.

  4. Lightmap Importance Volume: Postavite Lightmass Importance Volume da obuhvati samo oblast koja vam je vazna. Ovo dramaticno smanjuje vreme pecenja jer GPU Lightmass ne trosi resurse na nebitne delove scene.

  5. Preview pecenje: Koristite Preview kvalitet za brz pregled (30 sekundi do par minuta). Ovo vam daje grubu ideju o rezultatu pre nego sto pokrenete puni build.

  6. Pratite progres: GPU Lightmass u UE5 pokazuje progresivni rezultat u viewportu dok pece. Mozete videti kako se lightmape postepeno poboljsavaju i zaustaviti pecenje kada ste zadovoljni kvalitetom.


24.9 Volumetric Lightmaps u UE5

24.9.1 Sta su Volumetric Lightmaps?

Volumetric Lightmaps su UE5-ov (i UE4.18+) napredni sistem za cuvanje indirektnog osvetljenja u 3D prostoru scene. Zamislite ih kao 3D "lightmape" -- umesto 2D tekstura na povrsinima, ovo je 3D mreza sa informacijama o osvetljenju u svakoj tacki prostora.

Volumetric Lightmaps su evolucija starijeg Indirect Lighting Cache sistema i pruaju znacajno bolje rezultate.

24.9.2 Kako Funkcionisu: 3D Grid SH Uzoraka

Volumetric Lightmaps koriste 3D mrezu (grid) u kojoj svaka celija sadrzi skup sfericnih harmonika (SH) koeficijenata koji opisuju indirektno osvetljenje u tom delu prostora.

Struktura:

Volumetric Lightmap Grid:

  +---------+---------+---------+
  |  SH[0]  |  SH[1]  |  SH[2]  |    Gornji sloj (Z = 2)
  +---------+---------+---------+
  |  SH[3]  |  SH[4]  |  SH[5]  |
  +---------+---------+---------+

  +---------+---------+---------+
  |  SH[6]  |  SH[7]  |  SH[8]  |    Srednji sloj (Z = 1)
  +---------+---------+---------+
  |  SH[9]  |  SH[10] |  SH[11] |
  +---------+---------+---------+

  +---------+---------+---------+
  |  SH[12] |  SH[13] |  SH[14] |    Donji sloj (Z = 0)
  +---------+---------+---------+
  |  SH[15] |  SH[16] |  SH[17] |
  +---------+---------+---------+

Svaka celija (SH[n]) sadrzi L2 (treci nivo) sfericne harmonike sa koeficijentima za svaki kanal boje (R, G, B).

24.9.3 Kako Pruzaju GI Dinamickim Objektima

Kada se dinamicki objekat (na primer, igracov karakter) nalazi u sceni sa baked osvetljenjem, Volumetric Lightmaps mu pruzaju indirektno osvetljenje na sledeci nacin:

  1. Pozicioniranje: Engine odredjuje poziciju objekta u svetskom prostoru
  2. Lookup: Pozicija se prevodi u koordinate unutar volumetric lightmap mreze
  3. Interpolacija: SH koeficijenti iz okolnih celija se trilinearno interpoliraju
  4. Evaluacija: Interpolirani SH koeficijenti se evaluiraju sa normalom svake tacke na povrsini objekta
  5. Primena: Rezultirajuci indirektni osvetljaj se dodaje na objekat

Prednosti nad starijim ILC:

Aspekt ILC (stari) Volumetric Lightmaps
Preciznost Niza Veca (finija mreza)
Adaptivnost Osnovna Adaptivna rezolucija
Light leaking Cest Smanjen
Vizuelni kvalitet Prihvatljiv Dobar
Per-pixel evaluacija Ne Da (per-pixel interpolacija)

Per-pixel vs Per-object:

Kljucna prednost Volumetric Lightmaps nad ILC-om je per-pixel evaluacija. Dok ILC tipicno racuna jedno osvetljenje za ceo objekat (ili par probe-ova), Volumetric Lightmaps evaluiraju osvetljenje za svaki piksel na objektu. To znaci da veliki dinamicki objekat (na primer, vozilo) moze da ima razlicito indirektno osvetljenje na razlicitim delovima -- prednji deo moze biti u svetloj oblasti, a zadnji u tamnoj.

24.9.4 Rezolucija i Memorija

Volumetric Lightmaps koriste hijerarhijsku strukturu (brick-based) koja omogucava adaptivnu rezoluciju:

Podesavanja rezolucije:

U World Settings > Lightmass:

Primer:
  Detail Cell Size = 200 cm: Gruba mreza, malo memorije, brzo
  Detail Cell Size = 100 cm: Srednja preciznost
  Detail Cell Size = 50 cm:  Visoka preciznost, vise memorije
  Detail Cell Size = 25 cm:  Vrlo visoka, znacajna memorija

Kalkulacija memorije:

Memorija za volumetric lightmape zavisi od:

  1. Velicine scene (koliko prostora treba pokriti)
  2. Detail cell size (koliko sitne su celije)
  3. Gustina geometrije (vise geometrije = vise adaptivnih celija)

Gruba formula:

Broj celija ~ (Volumen scene) / (Cell Size)^3

Memorija po celiji ~ 9 SH koeficijenata x 3 boje x 2 bytes = ~54 bytes
                     + skylight SH + metadata

Ukupna memorija ~ Broj celija x ~100-200 bytes

Primer:

Scena: 50m x 50m x 10m = 25,000 m^3

Sa cell size = 2m:
  Broj celija ~ 25,000 / 8 = 3,125
  Memorija ~ 3,125 x 200 bytes = 625 KB

Sa cell size = 0.5m:
  Broj celija ~ 25,000 / 0.125 = 200,000
  Memorija ~ 200,000 x 200 bytes = 40 MB

Napomena: Ovo su grube procene. Stvarna potrosnja zavisi od adaptivne strukture -- guste oblasti ce imati vise celija, retke manje.

24.9.5 Prakticna Podesavanja

Lightmass Importance Volume:

Ovo je obavezan actor koji definise oblast u kojoj ce Lightmass generisati volumetric lightmap uzorke. Bez njega, Lightmass ce pokusati da pokrije celu mapu, sto je rasipanje resursa.

Kako postaviti:

  1. U Place Actors panelu, trazite Lightmass Importance Volume
  2. Postavite ga u scenu
  3. Skalirajte ga da obuhvati samo igrivu oblast (oblast kroz koju se igrac krece)
  4. Mozete imati vise Lightmass Importance Volume-a za razlicite delove mape

Volume Lightmap Importance Volume:

Pored osnovnog Lightmass Importance Volume-a, mozete koristiti Volumetric Lightmap Density Volume za kontrolu gustine uzoraka u specificnim oblastima:

24.9.6 Vizualizacija i Debugging

UE5 pruza alate za vizualizaciju volumetric lightmapa:

  1. Show > Visualize > Volumetric Lightmap: Prikazuje celije volumetric lightmape sa bojama koje predstavljaju sacuvano osvetljenje
  2. Show > Advanced > Volumes: Prikazuje granice Lightmass Importance Volume-a

Cesti problemi sa volumetric lightmapama:

  1. Previse gruba rezolucija: Osvetljenje na dinamickim objektima se menja naglo umesto glatko

    • Resenje: Smanjite Detail Cell Size
  2. Light leaking: Svetlost prodire kroz zidove

    • Resenje: Dodajte deblju geometriju, smanjite cell size u problematicnoj oblasti
  3. Prevelika memorija: Scena zauzima previse memorije za volumetric lightmape

    • Resenje: Povecajte Detail Cell Size, smanjite obim Lightmass Importance Volume-a

24.9.7 Volumetric Lightmaps vs Lumen

Vredno je napomenuti da ako koristite Lumen (Poglavlje 25), volumetric lightmape obicno nisu potrebne jer Lumen pruza real-time GI za i staticne i dinamicke objekte. Volumetric Lightmaps su relevantne kada:


24.10 Workflow: Od Pocetka do Kraja

Hajde da sve ovo stavimo u prakticni workflow. Ovo je korak-po-korak vodic za baking osvetljenja u UE5 projektu.

Korak 1: Priprema Scene

Korak 2: Postavljanje Svetala

Korak 3: Lightmass Importance Volume

Korak 4: Podesavanje Lightmap Rezolucija

Korak 5: World Settings

U World Settings > Lightmass:

Korak 6: Preview Build

Korak 7: Iteracija

Korak 8: Production Build

Korak 9: Finalna Provera


24.11 Napredne Teme

24.11.1 Lightmap Encoding u UE5

UE5 koristi specificne formate za cuvanje lightmapa:

Directional Lightmaps:

UE5 podrazumevano koristi directional lightmaps koje cuvaju ne samo intenzitet vec i dominantan pravac svetlosti na svakom texelu. Ovo omogucava normal mapping sa baked osvetljenjem -- lightmapa ne izgleda ravno, vec reaguje na normalu povrsine.

Struktura:

Simple Lightmaps:

Za platforme sa ogranicenom memorijom (mobile), mozete koristiti non-directional lightmape koje cuvaju samo intenzitet bez pravca. Ovo zauzima manje memorije ali ne podrzava normal mapping.

U Project Settings > Rendering > Lighting: pronaci cete opcije za lightmap encoding.

24.11.2 Lightmass Portals

Za scene sa indirektnim osvetljenjem koje dolazi kroz male otvore (prozore), Lightmass Portal actori mogu znacajno poboljsati kvalitet i smanjiti vreme pecenja:

  1. Postavite Lightmass Portal na svaki prozor
  2. Portali govore Lightmassu: "Ovde je vazan izvor indirektnog osvetljenja"
  3. Lightmass ce usmriti vise uzoraka ka tim oblastima

Ovo je posebno korisno za archviz scene gde je vecina svetlosti dolazi kroz prozore.

24.11.3 Precomputed Visibility

Mada nije direktno osvetljenje, Precomputed Visibility se cesto bake-uje zajedno sa lightmapama:

24.11.4 Mixed Lighting Mode

UE5 podrzava Mixed lighting mode gde:

Ovo je najpopularniji pristup za vecinu projekata koji koriste baking jer daje najbolji odnos kvaliteta i performansi.


24.12 Rezime: Kada Koristiti Sta?

Scenarij Preporuceno resenje Obrazlozenje
Mobilna igra Potpuno baked (Static lights) Performanse su prioritet
VR iskustvo Baked + minimalna dinamika Framerate je kritican
Archviz Potpuno baked, maximum kvalitet Statican sadrzaj, vizuelni kvalitet je kljucan
PC/Console igra (standard) Lumen ili hibridni pristup Dinamicnost je vazna
Open world igra Lumen Baking je nepraktican za ogromne scene
Multiplayer FPS Hibridni ili Lumen Zavisno od budgeta i platforme
Filmski kvalitet (Cinematic) Lumen + ray tracing Maksimalan kvalitet u realnom vremenu

24.13 Kljucni Pojmovi

Termin Definicija
Baking (Pecenje) Proces pre-kalkulacije osvetljenja offline i cuvanje rezultata u teksturama
Lightmap 2D tekstura koja cuva informacije o osvetljenju za povrsinu objekta
Lightmap UV UV koordinate (obicno channel 1) koje definisu kako se lightmap tekstura mapira na mesh
Texel Jedan piksel u teksturi (texture pixel)
Texel Density Broj texela po jedinici povrsine u svetu (texels per world unit)
Lightmap Resolution Dimenzija lightmap teksture (sirina x visina u texelima)
Lightmap Atlas Velika tekstura koja sadrzi lightmape vise objekata zapakovane zajedno
Lightmass UE sistem za baking osvetljenja (postoji u CPU i GPU varijanti)
GPU Lightmass Path tracing-based lightmap baker koji koristi GPU za dramaticno brze pecenje
Path Tracing Tehnika renderinga koja prati putanje svetlosnih zraka kroz scenu
Global Illumination (GI) Simulacija indirektnog osvetljenja (svetlost koja se odbija od povrsina)
Indirect Lighting Cache (ILC) Stariji sistem za pruzanje baked indirektnog osvetljenja dinamickim objektima
Volumetric Lightmaps 3D mreza SH uzoraka za pruzanje indirektnog osvetljenja dinamickim objektima
Spherical Harmonics (SH) Matematicke bazne funkcije na sferi za kompaktno kodiranje direkcijskog osvetljenja
Irradiance Volume 3D mreza koja cuva informacije o indirektnom osvetljenju u prostoru
Light Leaking Artefakt gde svetlost "prodire" kroz geometriju gde ne bi trebalo
Shadow Seams Vidljive linije na granicama izmedju lightmapa razlicitih objekata
Lightmass Importance Volume Actor koji definise oblast u kojoj Lightmass generise uzorke
Lightmass Portal Actor koji oznacava otvore (prozore) za usmeravanje uzoraka indirektnog osvetljenja
Stationary Light Svetlo koje ne moze da se pomera ali ima i baked i dinamicke komponente
Static Light Potpuno baked svetlo bez ikakve dinamicke komponente
Denoiser AI-bazirani filter koji uklanja sum iz path-traced rezultata
UV Padding Razmak izmedju UV ostrva koji sprecava bleeding artefakte
Bilinear Filtering Tehnika interpolacije izmedju susednih texela pri sampliranju teksture
RGBM Encoding Format za cuvanje HDR vrednosti u standardnom RGBA8 formatu

24.14 Reference i Dalje Citanje

Unreal Engine Dokumentacija

Knjige i Clanci

Video Resursi

Povezana Poglavlja u Ovoj Knjizi


U sledecem poglavlju, Poglavlje 25, istrazicemo Lumen -- UE5-ov revolucionarni sistem za potpuno dinamicko globalno osvetljenje. Videcemo kako Lumen resava iste probleme koje baking pokriva, ali u realnom vremenu, sa potpunom dinamicnoscu. Razumevanje bakinga koje ste stekli u ovom poglavlju ce vam pomoci da shvatite zasto je Lumen toliko impresivan -- i gde baking i dalje ima prednost.