Light map ( shadow map ; engleză lightmap ) este o metodă de iluminare a spațiului în aplicații 3D, care constă în faptul că se creează o textură care conține informații despre iluminarea modelelor tridimensionale [1] [2] .
Metoda economisește semnificativ resursele computerului, deoarece aplicația nu trebuie să calculeze incidența luminii în timp real. În ceea ce privește realismul, rezultatul utilizării acestei metode este mult superior utilizării luminii dinamice, în care căderea luminii și a umbrelor sunt calculate înainte de fiecare cadru. Acest lucru se datorează faptului că majoritatea aplicațiilor de cartografiere a luminii 3D iau în considerare reflexiile luminii și incidența lor ulterioară pe alte suprafețe, similar cu modul în care se comportă lumina în lumea reală. Cu toate acestea, această metodă este valabilă numai în cazul obiectelor statice. Hărțile luminoase pentru modelele în mișcare sunt create numai dacă sursa de lumină este atașată la un model în mișcare, iar rezultatul iluminării nu depinde de mișcarea și rotația sa.
Hărțile luminoase sunt aproape întotdeauna aliniate cu texturi poligonale normale, iar fiecare texel de hartă corespunde la 4-32 de texeli de textură. Dimensiunile hărții sunt determinate de dimensiunile dreptunghiului minim de delimitare a poligonului ale cărui laturi sunt paralele cu vectorii de textură.
Într-o formă sau alta, hărțile luminoase sunt folosite în aproape toate aplicațiile moderne 3D în timp real. Această metodă este folosită pentru a crea toată iluminarea statică într-o scenă. Iluminarea este generată pentru geometria statică înainte de începerea ciclului de randare și este în mare parte neschimbată în timpul redării . Pe echipamentele moderne, implementarea luminii complet dinamice folosind hărți luminoase este imposibilă din cauza intensității ridicate a resurselor procesului de creare a hărților luminoase. Această abordare este văzută ca baza pentru majoritatea celorlalți algoritmi de randare a umbrelor în timp real.
Când este creată, harta este umplută cu pixeli negri. În plus, pentru fiecare texel al hărții luminoase, sunt găsite coordonatele tridimensionale ale unui punct de pe poligon. Pentru acest punct, este necesar să se construiască o listă cu toate sursele de lumină care îi afectează iluminarea: vectorii din acest punct până la sursele de lumină sunt verificați pentru intersecția cu geometria scenei și, dacă intersecția are loc, atunci această sursă de lumină nu luminează. punctul (în raport cu acesta, punctul este în umbră) . Sursele rămase măresc valoarea texelului hărții luminoase cu o sumă în funcție de modelul de iluminare utilizat și de poziția sursei de lumină față de punct. Filtrarea biliniară este adesea aplicată hărților luminoase pentru a îmbunătăți aspectul unei imagini . Aceste operații se repetă pentru fiecare poligon de scenă iluminată.
În timpul redării , hărțile luminoase pot fi suprapuse cu o a doua trecere, folosind amestecarea alfa . Dacă aveți echipament multitextur , puteți aplica textura și harta luminii într-o singură trecere.
Această metodă de iluminare este acceptată de motoarele de joc precum id Tech , Unreal Engine , Lithtech , GoldSrc , Xash3D , Source , X-Ray , Unity