Lykätty varjostus - Deferred shading
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:
- Alan Wake
- Assassin's Creed III
- BioShock Infinite
- Hämärtää
- Brink
- Crackdown ja Crackdown 2
- Crysis 2
- Kuollut tila , Dead Space 2 ja Dead Space 3
- Deus Ex: Ihmisen vallankumous
- Lohikäärmeen dogma
- Kiltasodat 2
- Halo: Saavuta
- inFamous ja inFamous 2
- Pieni suuri planeetta
- Metal Gear Solid V: Ground Zeroes
- Metal Gear Solid V: Phantom Pain
- Vaihto 2 VAPAUTETTU
- Red Dead Redemption
- Vastussarja
- Rochard
- StarCraft II
- Kartoittamaton ja kartoittamaton 2
- Voittaa
- Tsushiman aave
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.
- Amnesia: Pimeä laskeutuminen
- Battlefield 3
- Dota 2
- Dungeons
- Digitaalinen taistelusimulaattori (DCS) World 2.5
- Grand Theft Auto IV
- Killzone 2 ja Killzone 3
- Mafia II
- Miner Wars 2081
- Metro 2033
- Rift
- Shrek
- Splinter Cell: Vakaumus
- STALKER pelisarja: Shadow of Chernobyl , Clear Sky ja Call of Pripyat
- tyhjä taulu
- Trine
- Trine 2
- Viva Pinata
Pelimoottorit, joissa on lykätty varjostus tai renderointitekniikat
- AlasinSeuraava
- Chrome-moottori
- CryEngine 3
- Fox-moottori
- Pakkaset 2
- Pelin aloitus
- Haemimont Games Engine (HGE)
- I-Novae
- Leadwerks
- MT Framework
- Rockstar Advanced -pelimoottori
- Vääntömomentti 3D
- Ykseys
- Epätodellinen moottori 4
- Näkemys
- Creation Engine alkaen Fallout 4: stä ja Skyrim SE: stä
- Mafia-moottori (varhainen illuusio-moottori) Mafia III: sta ja Mafia: Definitive Edition -versiosta
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.