Grafisk rørledning

En grafisk pipeline , i 3D datagrafikk , er en sekvens av operasjoner designet for å returnere og oppdatere et punktgrafikkbilde , med utgangspunkt i de tredimensjonale objektene som er tilstede i scenen. [1] For å realisere bitmap-bildet kan rørledningen implementere en eller flere algoritmer som Z-buffering , reyes-gjengivelse , strålesporing og andre algoritmer.

Classic 3D Graphics Pipeline

Enhver betydelig bruk av datamaskinen dedikert til studiet av geometri innebærer ønsket om å endelig visualisere objekter på en grafisk enhet. Figur 1 viser noen standardterminologier for det første trinnet i en klassisk tredimensjonal grafisk pipeline, som kommer fra den matematiske representasjonen av et objekt i bildet på enheten. [2] Objekter i verden er beskrevet av brukeren med henvisning til et verdenskoordinatsystem . Verden projiseres deretter på en utsiktsplan fra et gitt synspunkt ( viewpoint ), som vi vil anta er posisjonen til et kamera eller øyet. Vi har en assosiasjon mellom visningsplanet og kameraets koordinatsystem. Det som sees fra utsiktspunktet langs den positive z-aksen til kamerakoordinatsystemet spesifiserer synsretningen . Et vindu i visningsplanet spesifiserer interesseområdet. Betraktningsvolumet eller visningspyramiden er det uendelige volumet sporet av strålene som starter fra utsiktspunktet og passerer gjennom punktene i vinduet.

For å begrense utdataene til objekter kan man ofte bruke et nær ( nær , foran eller hit ) og et fjernt ( langt , bak eller yon ) klippeplan . [2] Volumet som ligger innenfor displayvolumet og mellom disse to planene kalles et trunkert displayvolum eller trunkert displaypyramide. Bare de delene av objektene som ligger i dette volumet og som projiseres inn i vinduet vil bli vist. Å bestemme de delene av et objekt kalles klipping . I prinsippet kan koordinatsystemene - til verden, kameraet og det visuelle planet - skilles. I praksis antas det imidlertid at kameraets koordinatakser og betraktningsplanets koordinatsystem er parallelle og z-aksene er vinkelrett på det visuelle planet. [2] Det antas også at x- og y-aksene deres er parallelle med sidene av vinduet. [2]

Det siste trinnet i å kartlegge et objekt til en grafikkenhet involverer en kartlegging som transformerer koordinatene til det visuelle planet til koordinatene til den fysiske enheten. [2] Dette er generelt sett på som en to-trinns prosess. Til å begynne med transformerer et første kart vinduet til en visningsport (som er et underrektangel av et fast rektangel kalt den logiske skjermen ), og deretter transformerer et andre kart koordinatene til den logiske skjermen til koordinatene til den fysiske enheten. Noen ganger er den logiske skjermen allerede definert i form av disse koordinatene, slik at det andre kartet ikke er nødvendig. Andre ganger er den satt lik et fast rektangel som enhetskvadrat , i så fall kan vi si at visningsporten er spesifisert i normaliserte enhetskoordinater (NDC). Den klassiske 3D-grafikkrørledningen kan deretter oppsummeres som vist i figur 3.

Advarsel: skillet mellom "vindu" og "viewport" er ofte uskarpt, og noen ganger kalles det som bør kalles en viewport et vindu. Vinduet spesifiserer hva som vises i brukerkoordinatene, og visningsporten spesifiserer hvor det noe vises. [2] Se figur 2.

Rørledningen kan lages i programvare eller maskinvare , selv om alle moderne grafikkort av hastighets- og ytelsesgrunner har flere mer eller mindre avanserte grafikkledninger. Selv om det er mange implementeringer av en grafisk pipeline, deler alle disse implementeringene ned arbeidet i fire hovedoperasjoner (oppsummerer det ovenstående):

Eksempel på skyggeleggingstrinn i en grafikkpipeline

En hypotetisk arbeidsprosess, med shaders inni, kan være følgende [3] :

  1. CPU - en sender instruksjonene og 3D-koordinatene til scenen til GPUen
  2. I den programmerbare vertex shaderen transformeres geometrien og noen lyseffekter påføres
  3. Geometriskyggeren, hvis den er til stede, transformerer geometrien til scenen ytterligere
  4. Geometrien er gjengitt i trekanter, som videre transformeres til firinger (hver firdel er en primitiv på 2x2 piksler)
  5. Ytterligere effekter påføres via pikselskyggeren
  6. Synlighetstesten ( z-test ) utføres: hvis en piksel er synlig, skrives den til rammebufferen for utgang til skjermen.

Ledelse

Grafikkrørledningen kan administreres direkte av programmet gjennom direkte tilgang til maskinvaren eller den kan administreres gjennom grafikkbiblioteker som gir manipulasjonsprimitiver som brukes av programmet. [2] I de fleste tilfeller brukes grafikkbiblioteker selv om disse introduserer en liten ytelsesstraff, slik at programmet kan dra nytte av grafikkortene på markedet uten å måtte skrive en spesifikk versjon av programmet for hver type grafikkort. De mest populære tredimensjonale grafikkbibliotekene er OpenGL og DirectX .

Merknader

  1. ^ Marshner, Shirley, Fundamentals of Computer Graphics , 4. utgave ..
  2. ^ a b c d e f g Max K. Agoston, Computer Graphics & Geometric Modeling - Implementarion & Algorithms .
  3. ^ M. Bailey, S. Cunningham, Graphics Shaders: Theory and Practice , 2. utgave ..

Bibliografi

Relaterte elementer

Andre prosjekter