Udskudt belysning og skygge

Deferred lighting and shading , deferred rendering ( engelsk  deferred shading ) er en softwareteknik (metode) i tredimensionel computergrafik , der håndterer belysning og skyggelægning af en visuel scene. Som et resultat af driften af ​​den udskudte belysnings- og skyggealgoritme opdeles beregningsprocessen i mindre dele, som skrives til den mellemliggende bufferhukommelse og derefter kombineres. Den væsentligste forskel mellem udskudt belysning og skygge og standardbelysningsmetoder er, at disse metoder straks skriver resultatet af skyggeren til farverammebufferen. Implementeringer i moderne grafikbehandlingshardware har en tendens til at bruge flere gengivelsesmål (engelsk  multiple render targets - MRT ) for at undgå redundante toppunktstransformationer. Typisk, når alle de nødvendige buffere er bygget, læses de (normalt som en inputtekstur) fra en skyggealgoritme (såsom en lysligning) og kombineres for at skabe resultatet. I dette tilfælde reduceres den beregningsmæssige kompleksitet og hukommelsesbåndbredde, der kræves for at gengive scenen, til synlige dele, hvilket reducerer kompleksiteten af ​​den belyste scene.

Den primære fordel ved udskudt gengivelse er kompatibilitet med "grov" og "tidlig" Z-buffertest , andre fordele er endnu ikke blevet tilstrækkeligt undersøgt. Disse fordele kan omfatte lettere styring af komplekse lysressourcer, nem styring af andre komplekse shader-ressourcer og forenkling af softwaregengivelsespipeline.

En af de vigtigste ulemper ved den udskudte gengivelsesteknik er manglende evne til at håndtere gennemsigtighed i algoritmen, selvom dette problem også er fælles for Z-buffring; vejen ud af dette problem er at forsinke og sortere gengivelsen af ​​de gennemsigtige dele af scenen [1] . En anden løsning er at bruge Direct3D 11/OpenGL 4.3 compute shaders til at implementere den ordreuafhængige gennemsigtighedsalgoritme.

En anden ret vigtig ulempe ved udskudt gengivelse er dens uforenelighed med anti -aliasing . Da belysningstrinnet er adskilt fra geometristadiet, fører hardware-anti-aliasing ikke til korrekte resultater. Selvom det første gennemløb, der bruges ved gengivelse af basisegenskaber (diffus behandling, højdekort), kan bruge anti-aliasing, er anti-aliasing ikke anvendeligt til fuld belysning. En af de typiske teknikker til at overvinde denne begrænsning er metoden til kantdetektion ( en:edge detection ) af det endelige billede og derefter påføring af sløring på kanterne (borders) [2] . Denne ulempe var dog relevant for Direct3D 9. I senere versioner blev det muligt at læse og skrive individuelle prøver af MSAA-teksturer (Gengivelsesmål - i Direct3D 10, dybdebuffere - i Direct3D 10.1) Dette gjorde det muligt for udviklere at implementere deres egne MSAA-algoritmer for udskudt belysning. Eksempler på spil med udskudt belysning og MSAA-understøttelse er Battlefield 3, Crysis 3, Grand Theft Auto V.

Den udskudte gengivelsesteknik bliver i stigende grad brugt i computerspil, da den giver mulighed for et ubegrænset antal lys og reducerer kompleksiteten af ​​de nødvendige shader-instruktioner. Især "Advanced Technology Group", et team af specialister fra Sony Computer Entertainment , har forsket i dette område og hjælper udviklere med at integrere denne teknologi i grafikmotorer . PhyreEngine , en gratis grafikmotor udviklet af Sony Computer Entertainment, har understøttelse af udskudt belysning og skygge. Eksempler på spil, der bruger udskudt gengivelse og understøttes af Sony Computer Entertainment er Killzone 2 af Guerrilla Games , LittleBigPlanet af Media Molecule og inFamous af Sucker Punch Productions . Udskudte spil, som Sony ikke har bidraget til, inkluderer STALKER -serien af ​​GSC Game World , Dead Space af Electronic Arts [3] og Tabula Rasa af NCSoft [4] . Udskudt lys- og skyggeteknologi bruges i Crytek 's CryEngine 3 -spilmotor .

Historie

Ideen om udskudt belysning og skygge blev oprindeligt introduceret af Michael Deering ( en: Michael Deering ) og hans kolleger [5] i et papir med titlen "Trekantprocessoren og normal vektorskygge: et VLSI-system til højtydende grafik", udgivet i 1988 [6] . Selvom ordet "forsinket" ikke bruges nogen steder i papiret, har det der præsenterede koncept først for nylig fundet praktisk anvendelse i applikationer som computerspil [7] .

Noter

  1. NVIDIA SDK 9.51 - Udvalgte kodeeksempler . NVIDIA (17. januar 2007). Hentet 28. marts 2007. Arkiveret fra originalen 29. marts 2012.
  2. Selvstudie om udskudt skygge (link ikke tilgængeligt) . Det pavelige katolske universitet i Rio de Janeiro. Hentet 14. februar 2008. Arkiveret fra originalen 29. marts 2012. 
  3. Dead Space af Electronic Arts . NVIDIA. Hentet 14. februar 2008. Arkiveret fra originalen 29. marts 2012.
  4. Udskudt skygge i Tabula Rasa (downlink) . NVIDIA. Hentet 14. februar 2008. Arkiveret fra originalen 29. marts 2012. 
  5. Deering, Michael; Stephanie Winner, Bic Schediwy, Chris Duffy, Neil Hunt. Trekantprocessoren og normal vektorskygge: et VLSI-system til højtydende grafik  //  ACM SIGGRAPH Computer Graphics: journal. — ACM Tryk. — Bd. 22 , nr. 4 . - S. 21-30 .
  6. Udskudt skygge (PDF). NVIDIA. Hentet 28. marts 2007. Arkiveret fra originalen 29. marts 2012.
  7. Klint, Josh. Udskudt gengivelse i Leadwerks Engine . — Leadwerks.

Links