GPU: n kuvapuskurit: tyypit, luonne ja ominaisuudet

Kuvapuskurit GPU: lla

Oletko koskaan miettinyt, mihin tietokoneesi, konsolin tai PostPC-laitteiden näytöllä olevat kuvat on tallennettu? No, kuvapuskureissa, mutta mikä on niiden luonne ja mistä se koostuu? Kuinka se vaikuttaa tietokoneidemme suorituskykyyn, mitä kohtauksen renderointimuotoja on ja mitkä ovat niiden erot?

A GPU tuottaa valtavan määrän tietoa sekunnissa useiden kuvien muodossa, jotka siirtyvät verkkokalvolle nopeasti televisiosta, näiden kuvien koko ja tallennettu ja käsitelty tieto ovat valtavat. VRAM-muistiin tallennetut kuvapuskurit ovat yksi syy, miksi tarvitaan suuren kaistanleveyden muistia.

Mikä on kuvapuskuri?

Búferes de Imagen

Kuvapuskuri on osa VRAM-muistia, johon jokaisen seuraavan kehyksen näytöllä olevan pikselin tiedot tallennetaan, tämä puskuri tallennetaan VRAM-muistiin ja GPU tuottaa sen x millisekunnin välein.

Nykyiset GPU: t toimivat vähintään kahden kuvapuskurin kanssa, ensimmäisessä GPU kirjoittaa seuraavan ruudulla näkyvän kehyksen, toisessa on edellinen jo kehitetty kehys, joka lähetetään näytölle.

Búferes de Imagen

Takapuskuria tai takapuskuria kutsutaan GPU: n luomaksi ja etupuskuri tai etupuskuri on se, jonka näytönohjain lukee ja lähettää videolähtöön. Vaikka etupuskuri tallentaa jokaiselle pikselille punaisen, vihreän ja sinisen komponentin arvon, takapuskuriin se voi tallentaa neljännen komponentin, alfan, joka tallentaa pikselin läpinäkyvyyden tai puoliläpinäkyvyyden arvon.

Mikä on näytönohjain?

Näyttöohjain on osa GPU: sta löydettyä laitteistoa, ja sen tehtävänä on lukea kuvapuskuri VRAM-muistissa ja muuntaa tiedot signaaliksi, jonka videolähtö, tyypistä riippumatta, voi ymmärtää.

Tällaisissa järjestelmissä NVIDIA G-SYNC, AMD FreeSync / Adaptive Sync ja vastaavat, näytön ohjain ei vain lähetä tietoja näytölle tai televisioon, vaan myös ohjaa, kun kukin kehys alkaa ja päättyy.

Kuvapuskurit ja perinteinen 3D-renderointi

Vaikka näytöt ovat 2D-tilassa, 3D-kohtauksia on piirretty niihin reaaliajassa yli XNUMX vuoden ajan. Tätä varten on tarpeen jakaa takapuskuri kahteen eriytettyyn puskuriin:

  • Väripuskuri: Jos kunkin pikselin väri- ja alfa-komponenttien arvo on merkitty.
  • Syvyyspuskuri: Jokaisen pikselin syvyysarvo on osoitettu.

3D-näkymää renderöinnin yhteydessä voidaan havaita, että useilla pikseleillä on erilaiset arvot syvyyspuskurissa, mutta ne ovat samassa paikassa kahdessa muussa ulottuvuudessa. Tällöin nämä ylimääräiset pikselit on hävitettävä, koska katsoja ei näe niitä hävittäminen tehdään vertaamalla kunkin pikselin sijaintia syvyyspuskurissa ja heittämällä niiden kanssa pois kamerasta kauimpana olevat pikselit.

Syvyyspuskuri

Búferes de imagen Z-puskuri

Syvyyspuskuri tai tunnetaan paremmin nimellä Z-puskuri tallentaa 3D-kohtauksen jokaisen pikselin etäisyyden näkökulmaan tai kameraan nähden. Tämä voidaan luoda yhdessä näistä kahdesta hetkestä.

  • Rasterivaiheen jälkeen ja ennen tekstuurivaihetta.
  • Teksturointivaiheen jälkeen.

Koska laskennallisesti raskain vaihe on Pixel / Fragment Shader, Z-puskurin luominen heti kohtauksen teksturoinnin jälkeen tarkoittaa väriarvon laskemista ja siksi satojen tuhansien ja jopa miljoonien pikselien pikseli tai fragmentti varjostin ei ole näkyvissä .

Läpinäkyvät säteiden jäljitys

Ennen teksturointia sen tekeminen on se, että ilman värin ja läpinäkyvyyden, alfa-kanavan arvoja, voimme huomata, että yksi läpinäkyvä pikseli toisen jälkeen hylätään etukäteen, joten se ei ole näkyvissä lopullisessa kohtauksessa.

Tämän välttämiseksi kehittäjät renderöivät kohtauksen yleensä kahteen osaan, ensimmäinen ei renderöi objekteja läpinäkyvän tai osittain läpinäkyvän objektin takana, kun taas toinen renderöi vain nämä objektit.

Kuvan puskurointi ja laiska renderöinti

Yksi uutuuksista, joka nähtiin 2000-luvun lopulla grafiikan renderoinnissa, oli lykätty renderöinti tai lykätty renderointi, joka koostui ensin siitä, että kohtaus renderoitiin luomalla sarja lisäpuskureita nimeltä G-puskuri, ja sitten seuraavassa vaiheessa laske näkymä.

Usean kuvapuskurin tarvitseminen moninkertaistaa muistin vaatimukset ja vaatii siksi suurempaa muistimäärää tallennusta varten, samoin kuin täyttöasteen ja siten suuremman kaistanleveyden.

ohitettavat luces

Mutta laiska renderöinti tehtiin korjaamaan yksi klassisen rasteroinnin suorituskykyongelmista, joissa jokainen pikselin arvonmuutos, joko luminanssista tai krominanssista, merkitsee uudelleenkirjoittamista kuvapuskuriin, mikä tarkoittaa valtavaa määrää VRAM: ssä lähetettävät tiedot

Laiskan hahmonnuksen ansiosta valojen määrän kustannukset näkymässä siirtyvät eksponentiaalisesta logaritmiseen, mikä vähentää laskennallisia kustannuksia, kun renderoidaan kohtauksia, joissa on useita valonlähteitä.

Kuvapuskurit varjokarttana

Mapas Sombras Z-puskuri

Koska rasterointi ei ole kovin hyvä epäsuoran valaistuksen laskemisessa, on löydettävä temppuja varjo-karttojen luomiseksi niihin.

Yksinkertaisin tapa on tehdä kohtaus, joka ottaa valon tai varjon lähteen, kuin se olisi kamera, mutta täydellisen kuvan renderoinnin sijaan syntyy vain syvyyspuskuri, jota käytetään myöhemmin varjokarttana.

Tämä järjestelmä katoaa lähivuosina Ray Tracingin lisääntymisen ansiosta, mikä mahdollistaa varjojen luomisen reaaliajassa paljon tarkemmin, vaatii vähemmän laskentatehoa ja ilman tarvetta luoda valtavaa varjokarttaa VRAM: ssä.