Lykätty varjostus - Deferred shading

Image
Hajavärinen G-puskuri
Image
Z-puskuri
Image
Pinta Normaali G-puskuri
Image
Lopullinen säveltäminen (tässä kuvassa näytettyjen varjojen laskemiseksi on käytettävä muita tekniikoita, kuten varjon kartoitus , varjostimet tai varjostuksen voimakkuus yhdessä lykätyn varjostuksen kanssa).

Alalla 3D-grafiikka , laskennallinen varjostus on näytön tila varjostus tekniikka, joka suoritetaan toisella mallinnus syötön, kun kärki ja pikselin shadereita suoritetaan. Michael Deering ehdotti sitä ensimmäisen kerran vuonna 1988.

Lykätyn varjostimen ensimmäisellä kerralla kerätään vain varjostuslaskennassa tarvittavat tiedot. Kunkin pinnan sijainnit, normaalit ja materiaalit renderoidaan geometriseen puskuriin ( G-puskuri ) käyttäen " renderöi tekstuuriksi ". Tämän jälkeen Pixel Shader laskee suora ja epäsuora valaistus kunkin pikselin käyttäen tietoa rakenne puskureita on näytön tilaa .

Näytön tilaa suuntaava purenta voidaan tehdä osa laskennallisista varjostuksen putki antaa suuntaavuus varjoihin ja interreflections.

Edut

Laskennan varjostuksen ensisijainen etu on kohtausgeometrian irrottaminen valaistuksesta. Vaaditaan vain yksi geometrian läpäisy, ja jokainen valo lasketaan vain niille pikseleille, joihin se todella vaikuttaa. Tämä antaa mahdollisuuden tuottaa useita valoja näkymässä ilman merkittävää suorituskykyä. Lähestymistavalla on joitain muita etuja. Näitä etuja voivat olla monimutkaisten valaistusresurssien yksinkertaisempi hallinta, muiden monimutkaisten varjostinresurssien hallinnan helppous ja ohjelmistojen renderöinnin yksinkertaistaminen.

Haitat

Yksi keskeinen haittapuoli lykätyssä renderöinnissä on kyvyttömyys käsitellä läpinäkyvyyttä algoritmissa, vaikka tämä ongelma on yleinen ongelma Z-puskuroiduissa kohtauksissa ja sitä yleensä hoidetaan viivästyttämällä ja lajittelemalla näkymän läpinäkyvien osien renderointia. Syvyyskuorintaa voidaan käyttää tilauksesta riippumattoman läpinäkyvyyden saavuttamiseksi lykätyssä renderöinnissä, mutta lisäerien ja g-puskurikoon kustannuksella. Moderni laitteisto, joka tukee DirectX 10: ää ja uudempia, pystyy usein suorittamaan erät riittävän nopeasti ylläpitämään interaktiivisia kehysnopeuksia. Kun halutaan tilauksesta riippumatonta läpinäkyvyyttä (yleisesti kuluttajasovelluksille), viivästetty varjostus ei ole yhtä tehokas kuin eteenpäin varjostaminen samalla tekniikalla.

Toinen vakava haitta on vaikeus käyttää useita materiaaleja. On mahdollista käyttää monia erilaisia ​​materiaaleja, mutta se vaatii enemmän dataa tallennettavaksi G-puskuriin, joka on jo melko suuri ja vie suuren määrän muistin kaistanleveyttä.

Vielä yksi haittapuoli on, että johtuen valaistusvaiheen erottamisesta geometrisesta vaiheesta, laitteiston anti-aliasing ei tuota enää oikeita tuloksia, koska interpoloidut alinäytteet aiheuttaisivat järjetön sijainti-, normaali- ja tangenttimääritteet. Yksi tavallisimmista tekniikoista tämän rajoituksen poistamiseksi on käyttää reunan tunnistusta lopullisessa kuvassa ja käyttää sitten epätarkkuutta reunojen yli, mutta viime aikoina on kehitetty kehittyneempiä prosessin jälkeisiä reunojen tasoitustekniikoita, kuten MLAA (käytetty Killzone 3: ssa ja Dragonissa) Age II , muun muassa), FXAA (käytetty Crysis 2: ssa , FEAR 3: ssa , Duke Nukem Forever ), SRAA , DLAA (käytetty Star Wars: The Force Unleashed II: ssa ) ja post MSAA (käytetty Crysis 2 : ssa oletuksena anti-aliasing) ratkaisu). Vaikka se ei ole reunojen tasoitusmenetelmä, ajallinen anti-aliasing (käytetään Halo Reach- ja Unreal Engine -malleissa ) voi myös auttaa antamaan reunoille tasaisemman ulkonäön. DirectX 10 esitteli ominaisuuksia, jotka antavat varjostimille pääsyn yksittäisiin näytteisiin moninäytteisillä renderöintikohteilla (ja syvyyspuskurit versiossa 10.1), antaen tämän sovellusliittymän käyttäjille pääsyn laitteiston antialiaseihin lykätyssä varjossa. Nämä ominaisuudet antavat niille myös mahdollisuuden soveltaa HDR-luminanssikartoitusta oikein aliased-reunoihin, joissa API: n aiemmissa versioissa anti-aliasingin edut saattavat olla menetetty.

Laskettu valaistus

Laskennallinen valaistus (tunnetaan myös nimellä Light Pre-Pass) on modifiointi Laskennan varjostuksesta. Tässä tekniikassa käytetään kolmea siirtoa kahden sijasta lykätyssä varjostuksessa. Ensimmäisellä kerralla kohtauksen geometrian yli vain normaalit ja heijastuskerroin kirjoitetaan väripuskuriin. Näytön tila, "lykätty" läpäisy kerää sitten haja- ja heijastustiedot erikseen, joten viimeinen kulku on tehtävä kohtausgeometrian yli lopullisen kuvan tuottamiseksi pikselikohtaisella varjostuksella. Laskennallisen valaistuksen ilmeinen etu on dramaattinen G-puskurin koon pieneneminen. Ilmeinen kustannus on tarve tehdä kohtausgeometria kahdesti yhden sijasta. Lisäkustannuksena on, että lykätyn läpäisyn lykätyssä valaistuksessa on annettava haja- ja heijastussäteily erikseen, kun taas lykätyn läpäisyn lykätyssä varjostuksessa on annettava vain yksi yhdistetty säteilyarvo.

G-puskurin koon pienenemisestä johtuen tällä tekniikalla voidaan osittain voittaa yksi viivästetyn varjostuksen vakava haitta - useita materiaaleja. Toinen ratkaistavissa oleva ongelma on MSAA. Laskettua valaistusta voidaan käyttää DirectSA 9 -laitteiston MSAA: n kanssa.

Laskennallinen valaistus kaupallisissa peleissä

Tekniikan käyttö on lisääntynyt videopeleissä sen mahdollistaman hallinnan takia, että se käyttää suurta määrää dynaamisia valoja ja vähentää tarvittavien varjostinohjeiden monimutkaisuutta. Joitakin esimerkkejä viivästettyä valaistusta käyttävistä peleistä ovat:

Lykätty varjostus kaupallisissa peleissä

Verrattuna viivästettyyn valaistukseen tämä tekniikka ei ole kovin suosittu suurten muistikoko- ja kaistanleveysvaatimusten takia, etenkin seitsemännen sukupolven konsoleissa, joissa graafisen muistin koko ja kaistanleveys ovat rajalliset ja usein pullonkauloja.

Pelimoottorit, joissa on lykätty varjostus tai renderointitekniikat

Historia

Ajatuksen lykätystä varjostuksesta esittivät Michael Deering ja hänen kollegansa alun perin vuonna 1988 julkaistussa artikkelissa Kolmioprosessori ja normaali vektorivarjostin: VLSI-järjestelmä korkean suorituskyvyn grafiikkaa varten . Vaikka lehdessä ei koskaan käytetä sanaa "lykätty", otetaan käyttöön keskeinen käsite; kukin pikseli on varjostettu vain kerran syvyyden tarkkuuden jälkeen. Saito ja Takahashi esittivät vuonna 1990 paperissa lykätyn varjostuksen, sellaisena kuin me sen tunnemme, käyttäen G-puskureita, vaikka he eivät myöskään käytä sanaa "lykätty". Ensimmäinen viivästetty varjostettu videopeli oli Shrek , Xboxin julkaisutuote, joka toimitettiin vuonna 2001. Noin 2004 alkoi ilmestyä hyödykegrafiikkalaitteistoja. Tekniikka sai myöhemmin suosiota sovelluksissa, kuten videopeleissä , ja siitä tuli lopulta valtavirta vuosina 2008--2010.

Viitteet