Lyskort - Lightmap

Image
En kompleks scene med tilsvarende lyskort (vist til højre).
Image
Terning med et enkelt lyskort (vist til højre).

Et lyskort er en datastruktur, der bruges til lyskortlægning , en form for overfladecaching , hvor overfladenes lysstyrke i en virtuel scene er forudberegnet og gemt i teksturkort til senere brug. Lyskort anvendes oftest på statiske objekter i applikationer, der bruger 3D-computergrafik i realtid , f.eks. Videospil , for at give lyseffekter som global belysning til en relativt lav beregningsomkostning.

Historie

John Carmack 's Quake var den første computer spil til at bruge lightmaps at forøge gengivelse . Inden lyskort blev opfundet, baserede realtidsapplikationer udelukkende på Gouraud -skygge for at interpolere toppunktsbelysning til overflader. Dette tillod kun lavfrekvent belysningsinformation og kunne oprette klipningsartefakter tæt på kameraet uden perspektiv-korrekt interpolation. Diskontinuitetsmasker blev undertiden brugt især med radiosity -løsninger til adaptivt at forbedre opløsningen af ​​toppunktbelysningsinformation, men meromkostningerne ved primitiv opsætning til rasterisering i realtid var generelt uoverkommelige. Quakes software rasterizer brugte overfladecaching til at anvende belysningsberegninger i teksturrum en gang, når polygoner oprindeligt dukkede op i visningsfrustumet (effektivt oprettede midlertidige 'tændte' versioner af de aktuelt synlige teksturer, da seeren forhandlede scenen).

Efterhånden som forbruger 3d-grafikhardware, der var i stand til multitexturing , blev lyskortlægning mere populær, og motorer begyndte at kombinere lyskort i realtid som et sekundært multiply-blend teksturlag ...

Begrænsninger

Lightmaps er sammensat af lumels (Lumination -elementer), der er analoge med texels i Texture Mapping . Mindre lumeller giver et lysmap med højere opløsning , hvilket giver finere belysningsdetaljer til prisen for reduceret ydelse og øget hukommelsesforbrug. For eksempel ville en lyskorteskala på 4 lumel pr. Verdensenhed give en lavere kvalitet end en skala på 16 lumel pr. Verdensenhed. Ved brug af teknikken skal niveaudesignere og 3d -kunstnere derfor ofte gå på kompromis mellem ydeevne og kvalitet; Hvis lyskort i høj opløsning bruges for ofte, kan applikationen muligvis forbruge for store systemressourcer, hvilket påvirker ydelsen negativt. Lightmap -opløsning og skalering kan også være begrænset af mængden af ​​diskplads, båndbredde/downloadtid eller teksturhukommelse, der er tilgængelig for applikationen. Nogle implementeringer forsøger at pakke flere lyskort sammen i en proces kendt som atlasering for at hjælpe med at omgå disse begrænsninger.

Lyskortopløsning og skala er to forskellige ting. Opløsningen er det område, i pixels, der er tilgængeligt til lagring af en eller flere overflades lyskort. Antallet af individuelle overflader, der kan passe på et lyskort, bestemmes af skalaen. Lavere skalaværdier betyder højere kvalitet og mere plads på et lyskort. Højere skalaværdier betyder lavere kvalitet og mindre plads. En overflade kan have et lyskort, der har det samme område, så et forhold på 1: 1 eller mindre, så lyskortet strækkes for at passe.

Lyskort i spil er normalt farvede teksturkort eller pr. Toppunktfarver. De er normalt flade uden oplysninger om lysets retning, mens nogle spilmotorer bruger flere lyskort til at give omtrentlige retningsoplysninger, der kan kombineres med normale kort. Lightmaps kan også gemme separate forberegnede komponenter i belysningsinformation til semi-dynamisk belysning med shaders, såsom omgivende okklusion og sollysskygning.

Skabelse

Når du opretter lyskort, kan en hvilken som helst belysningsmodel bruges, fordi belysningen er fuldstændig forudberegnet, og ydeevne i realtid ikke altid er en nødvendighed. En række forskellige teknikker, herunder okklusion af omgivelserne , direkte belysning med samplede skyggekanter og fulde radiosity bounce light -løsninger bruges typisk. Moderne 3D-pakker indeholder specifikke plugins til anvendelse af lyskort-UV-koordinater, atlasering af flere overflader i enkelt teksturark og gengivelse af selve kortene. Alternativt kan spillemotorrørledninger omfatte brugerdefinerede værktøjer til oprettelse af lyskort. En yderligere overvejelse er brugen af ​​komprimerede DXT -teksturer, der er genstand for blokering af artefakter - individuelle overflader må ikke kollidere på 4x4 texel -bidder for de bedste resultater.

I alle tilfælde er bløde skygger for statisk geometri mulige, hvis der bruges enkle okklusionstest (f.eks. Grundlæggende strålesporing ) til at bestemme, hvilke lumeller der er synlige for lyset. Skyggernes faktiske blødhed bestemmes imidlertid af, hvordan motoren interpolerer lumeldataene på tværs af en overflade og kan resultere i et pixeleret udseende, hvis lumellerne er for store. Se teksturfiltrering .

Lyskort kan også beregnes i realtid for farvede lyseffekter af god kvalitet, der ikke er tilbøjelige til defekter ved Gouraud-skygge, selvom skabelse af skygger stadig skal udføres ved hjælp af en anden metode som stencilskygge-volumener eller skygge-kortlægning , som stråling i realtid -sporing er stadig for langsom til at udføre på moderne hardware i de fleste 3D -motorer.

Photon -kortlægning kan bruges til at beregne global belysning for lyskort.

Alternativer

Vertex belysning

I toppunktsbelysning beregnes belysningsoplysninger pr. Toppunkt og gemmes i vertex -farveattributter . De to teknikker kan kombineres, f.eks. Vertex -farveværdier gemt for detaljerede masker, mens lette kort kun bruges til grovere geometri.

Diskontinuitetskortlægning

Ved diskontinuitetskortlægning kan scenen yderligere underopdeles og klippes langs store ændringer i lys og mørke for bedre at definere skygger.

Se også

Referencer

  1. ^ Abrash, Michael. "Quakes Lighting Model: Surface Caching" . www.bluesnews.com . Hentet 2015-09-07 .
  2. ^ Channa, Keshav (21. juli 2003). "flipcode - Light Mapping - Theory and Implementation" . www.flipcode.com . Hentet 2015-09-07 .
  3. ^ "Texture Atlasing Whitepaper" (PDF) . nvidia.com . NVIDIA . 2004-07-07 . Hentet 2015-09-07 .
  4. ^ Jason Mitchell, Gary McTaggart, Chris Green, Shading in Valves Source Engine . ( PDF ) Hentet 7. juni 2019.
  5. ^ 16. november 2003. Dynamiske lyskort i OpenGL . Joshbeam.com Hentet 7. juli 2014.