Esityksen sisältö. Peruskäsitteitä. 3D Grafiikka tietokonepeleissä. Piirto- ja taustapuskuri

Samankaltaiset tiedostot
Luku 6: Grafiikka. 2D-grafiikka 3D-liukuhihna Epäsuora valaistus Laskostuminen Mobiililaitteet Sisätilat Ulkotilat

Tilanhallintatekniikat

Graikka yleisesti tietokonepeleissä

Tietokonegrafiikka. Jyry Suvilehto T Johdatus tietoliikenteeseen ja multimediatekniikkaan kevät 2014

Luento 3: 3D katselu. Sisältö

T Johdatus tietoliikenteeseen ja multimediatekniikkaan Tietokonegrafiikka

TIES471 Reaaliaikainen renderöinti

Tampereen yliopisto Tietokonegrafiikka 2013 Tietojenkäsittelytiede Harjoitus

TIES471 Reaaliaikainen renderöinti

Luento 4: Näkyvyystarkastelut ja varjot

Visualisoinnin perusteet

Algoritmit 2. Luento 3 Ti Timo Männikkö

Peilaus pisteen ja suoran suhteen Pythonin Turtle moduulilla

Algoritmit 2. Luento 3 Ti Timo Männikkö

Luento 10: Näkyvyystarkastelut ja varjot. Sisältö

Luento 6: Piilopinnat ja Näkyvyys

Sisältö. Luento 6: Piilopinnat. Peruskäsitteet (jatkuu) Peruskäsitteitä. Yksinkertaisia tapauksia. Yksinkertaiset tapaukset jatkuu

T Vuorovaikutteinen tietokonegrafiikka Tentti

Algoritmit 1. Luento 9 Ti Timo Männikkö

Algoritmit 1. Luento 10 Ke Timo Männikkö

Luento 2: Tiedostot ja tiedon varastointi

Tampereen yliopisto Tietokonegrafiikka 2013 Tietojenkäsittelytiede Harjoitus

Datatähti 2019 loppu

Videon tallentaminen Virtual Mapista

Videon tallentaminen Virtual Mapista

Reaaliaikaiset varjoalgoritmit. Atso Kauppinen

Reaaliaikainen karvapeitteen piirtäminen näytönohjaimella

Pintamallintaminen ja maastomallinnus

Yleistä vektoreista GeoGebralla

5. Grafiikkaliukuhihna: (1) geometriset operaatiot

JYRSIN SISÄLLYSLUETTELO:

Algoritmit 2. Luento 6 Ke Timo Männikkö

Algoritmit 1. Luento 10 Ke Timo Männikkö

Käsiteltävät asiat LIITE 3 1. Tehtävänä on mallintaa lipputanko ja siihen lippu ohjeiden mukaan. Cloth. Wind Garment Maker

Vektorien pistetulo on aina reaaliluku. Esimerkiksi vektorien v = (3, 2, 0) ja w = (1, 2, 3) pistetulo on

Text Mining. Käyttöopas

Yksinkertaistaminen normaalitekstuureiksi

JOHDATUS TEKOÄLYYN TEEMU ROOS

Tuotetietojen täydentäminen sähköpisteelle

10. Esitys ja kuvaus

Algoritmit 2. Luento 7 Ti Timo Männikkö

6.5. Renderöintijärjestys

Luento 7: Lokaalit valaistusmallit

3D-Maailman tuottaminen

2. Seuraavassa kuvassa on verkon solmujen topologinen järjestys: x t v q z u s y w r. Kuva 1: Tehtävän 2 solmut järjestettynä topologisesti.

MAB3 - Harjoitustehtävien ratkaisut:

Luento 6: Geometrinen mallinnus

2.2. Kohteiden konstruktiivinen avaruusgeometrinen esitys

Kenguru 2012 Junior sivu 1 / 8 (lukion 1. vuosi)

Algoritmit 2. Luento 6 To Timo Männikkö

815338A Ohjelmointikielten periaatteet Harjoitus 3 vastaukset

Tietokonegrafiikan perusteet

Rasterikarttojen ja liiteaineistojen päivitysohje SpatialWeb5 Karttapaikka

Palomuurit. Palomuuri. Teoriaa. Pakettitason palomuuri. Sovellustason palomuuri

Monikulmiot 1/5 Sisältö ESITIEDOT: kolmio

Tasogeometriaa GeoGebran piirtoalue ja työvälineet

Algoritmit 2. Luento 4 To Timo Männikkö

Action Request System

Ohjelmoinnin peruskurssi Y1

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z Å Ä Ö

Transkribuksen pikaopas

Dataorientoituneen renderöijän toteuttaminen OpenGL:llä

Kenguru 2012 Student sivu 1 / 8 (lukion 2. ja 3. vuosi)

EMVHost Online SUBJECT: EMVHOST ONLINE CLIENT - AUTOMAATTISIIRROT COMPANY: EMVHost Online Client sovelluksen käyttöohje AUTHOR: DATE:

3D-renderöinti OpenGL-ohjelmointirajapinnalla

PRELIMINÄÄRIKOE PITKÄ MATEMATIIKKA

JOHDATUS TEKOÄLYYN TEEMU ROOS

LIITE 1 1. Tehtävänä on mallintaa kitara ohjeiden mukaan käyttäen Edit Poly-tekniikkaa.

T Johdatus Tietoliikenteeseen ja Multimediaan

1. (a) Seuraava algoritmi tutkii, onko jokin luku taulukossa monta kertaa:

TIEA341 Funktio-ohjelmointi 1, kevät 2008

X7 MU1 uudet piirteet

STS Uuden Tapahtuma-dokumentin teko

Tietokonegrafiikan perusteet

Kirjoita oma versio funktioista strcpy ja strcat, jotka saavat parametrinaan kaksi merkkiosoitinta.

4.1 Kaksi pistettä määrää suoran

TIES471 Reaaliaikainen renderöinti

Tietokone. Tietokone ja ylläpito. Tietokone. Tietokone. Tietokone. Tietokone

Yleistä. Nyt käsitellään vain taulukko (array), joka on saman tyyppisten muuttujien eli alkioiden (element) kokoelma.

Päivitetty Text Mining -käyttöopas

4. Esittäminen ja visualisointi (renderöinti)

Sisältö. 22. Taulukot. Yleistä. Yleistä

KDK: Finna ja pitkäaikaissäilytys

Algoritmit 2. Luento 4 Ke Timo Männikkö

Electronisen nopeus ja matkamittarin kalibrointi laite huippunopeus muistilla.

Ohjelmoinnin perusteet Y Python

Controlling the Camera of 3D World by Using Real Time Face Tracking

NOOX xperio herätyskello valvontakamera

815338A Ohjelmointikielten periaatteet Harjoitus 6 Vastaukset

Käyttöopas RoofCon Viewer

Algoritmit 2. Luento 9 Ti Timo Männikkö

CEM DT-3353 Pihtimittari

1/6 TEKNIIKKA JA LIIKENNE FYSIIKAN LABORATORIO V

Algoritmi III Vierekkäisten kuvioiden käsittely. Metsätehon tuloskalvosarja 7a/2018 LIITE 3 Timo Melkas Kirsi Riekki Metsäteho Oy

Diplomi-insinööri- ja arkkitehtikoulutuksen yhteisvalinta 2017 Insinöörivalinnan matematiikan koe , Ratkaisut (Sarja A)

Verkon värittämistä hajautetuilla algoritmeilla

Uudet ominaisuudet. Versio 2.00

USB-valikko. Työn puskurointi. PCL-työn tunnis. PS-työn tunnist. MAC binaari PS. NPA-tila. USB-puskuri. Tulostaminen. Värien käyttäminen

Transkriptio:

Esityksen sisältö 3D Grafiikka tietokonepeleissä Peruskäsitteitä Korkean tason rakenne Piirron alkeisobjektit Tekstuurit Valotus Laitteistopiirtoliukuhihna Yhteenveto Peruskäsitteitä Piirto- ja taustapuskuri Piirto- ja taustapuskuri Näkyvyys Syvyys- ja Stencil-puskuri Kolmiot Verteksit Koordinaattiavaruudet Tekstuurit Varjostimet Materiaalit Molempien tehtävä on taltioida pikselien väriarvoja Piirtopuskuri näkyy ruudulla Taustapuskuri on muistialue koneen muistista Kuva piirretään taustapuskuriin estää osittain piirretyn kuvan näkymisen käyttäjälle Taustapuskuri vaidetaan piirtopuskurin kanssa Voidaan vaihtaa tai voidaan kopioida Taustapuskuri on isompi, jos käytetään reunan pehmennystä (anti-aliasing) pienennetään ja suodatetaan piirtopuskuriin

Kappaleiden näkyvyys ja syvyyspuskuri Stencil-puskuri Syvyyspuskuri (depth buffer) on saman kokoinen kuin taustapuskuri Syvyyspuskuri tallentaa Z-arvon Kutsutaan usein Z-puskuriksi Pikselin syvyysarvoa verrataan puskurin arvoon Mikäli uuden pikselin syvyysarvo on suurempi kun puskurin arvo, niin tällöin arvo hylätään, sillä se on kauempana kamerasta Muutoin arvo on edempänä ja pikseli on näkyvillä ja tällöin ylikirjotetaan uusi arvo sekä syvyyspuskuriin että korvataan väri taustapuskurista Apupuskuri Yleensä 8-bitin syvyinen Yleensä yhdistetään 24-bittiseen syvyyspuskuriin Käytetään moninaisiin tehtäviin, kuten läpinäkyvyyteen ja muihin erikoistehosteisiin Käytetään paljon erilaisissa peitto- ja leikkausalgoritmeissa Kolmiot Verteksit Perusalkio (primitive) piirtoliukuhihnoissa Kaikki monimutkaisemmat kappaleet perustuvat kolmioihin ja niistä muodostuviin sarjoihin, pois lukien kuitenkin viivat ja pisteoliot (point sprites) Kolmio on alkeellisin perusalkio, joka määrittää tason Erilaisilla kolmiotasosarjoilla voidaan määrittää dataa, kuten tekstuureja, värejä jne... Avaruuden pisteitä, joissa on seuraavia lisämääreitä: Värit (usein RGBA) Tason normaali Tekstuurikoordinaatit Muuta dataa, jota varjostimet tarvitsevat Kolmiot muodostuvat kolmesta verteksistä Verteksit määrittävät miten kolmiot varjostetaan

Eri koordinaattiavaruudet Leikkausavaruus Maailma-avaruus (World space) Mielivaltainen yleinen peliavaruus Objektiavaruus (Object space) Maailma-avaruuden lapsi Origo sijaitsee objektin asemapisteessä ja on objektin asennon suuntainen Tallennetaan verteksien paikat ja normaalit -avaruus n versio objektiavaruudesta Leikkausavaruus (clipping space) on muunnettu versio kamera-avaruudesta Ruudun reunat muodostavat 4-leikkaustasoa Lähin ja kaukaisin taso Tarvitaan syvyyspuskurin tarkkuuden kontrollointiin Kokonaisuudessa tarvitaan siis 6 leikkaustasoa Tekee leikkauksen laitteistolle helpommaksi -avaruuden ja leikkausavaruuden yhteispeli Näyttö- ja tangenttiavaruus avaruuden näkyvyyskaavio kolmiot tulevat leikkaantumaan Leikkaus avaruuden näkyvyyskaavio Näyttöavaruus Leikkausavaruuden pikselit projisoituna näyttöavaruuteen Todellisia pikseleitä, valmiina renderöintiin Tangenttiavaruus Määritetty jokaisessa pisteessä verkko-objektin (mesh) pinnalla Yleensä liukuvasti interpoloitu koko pinnalle Pinnan normaali on yksi akseli Tangentti ja binormaali makaavat pitkin pintaa Tangenttien normaalit ovat mallintajan määräämiä Hyödyllinen valotuksen laskennassa

Tekstuurit Varjostimet Tekseli taulukko Kuten pikseli, mutta vain tekstuurissa Yleensä R,G,B,A mutta voi sisältää muitakin arvoja 1D, 2D, 3D taulukko 2D on kaikkein yleisin Yksinkertaisimmillaan 2D bittikarttakuva Yleensä neliö ja kahden potenssi Varjostinohjelma ajetaan jokaiselle verteksille ja pikselille Muodostaa pikselien värin ja verteksien paikat Suhteellisen pieniä ohjelmia Yleensä kymmenestä satoihin operaatioihin Ei suoraa yhteyttä eri varjostimien välillä Laitteistot kehittyvät nopeasti Materiaalit Piirron ajoitus pelissä Kokoelma määrityksiä, kuinka kolmiot piirretään Tarkka sisältö hyvin sovellusriippuvaista Suuri kokoelma tietoa ja erilaisia tiloja Verteksi ja pikseli varjostimet Tekstuurit Yleisiä muuttujia ja kuvaus verteksien datasta Ei sisällä todellista verteksien dataa Piirtonopeus vaihtelee voimakkaasti tilanteen mukaan Jotkut 3D maailmat monimutkaisempia kuin toiset Yleisesti 15-60 ruutua/sekunnissa Pelin päivitys vakionopeuksista n nopeuden ei pidä vaikuttaa peliin Moninpelissä jokaisella on oma näkymä, mutta vain yksi yhteinen peli Pelin päivitys pidettävä erillään piirrosta

Verkko-objektit Tilavuusjaottelu Kolmioita Verteksejä Yksi materiaali (yleensä) Atominen yksikkö piirrossa Ei täysin atominen, riippuu laitteistosta Yksi pelin ylemmän tason objekti voi sisältää useita verkko-objekteja Kaikkea ei voida piirtää aivan joka piirrolla Paljon objekteja hidastaa liikaa On määritettävä tarkasti mitä on näkyvillä Jaetaan pelimaailma alueisiin Määritetään mitkä alueet ovat näkyvillä Piirretään jokainen näkyvä alue On useita erilaisia tapoja jakaa maailma alueisiin Tilavuusjaottelu - porttitekniikka Tilavuusjaottelu porttitekniikka Porttitekniikassa solmut liittyvät toisiinsa porttien avulla Usein monikulmio, mutta voi olla mikä muoto tahansa Tarkistetaan onko solmun yksikään portti näkyvissä. Mikäli näin on, piirretään solmu Tarkistetaan onko portteja muihin solmuihin näkyvissä Toistetaan ylläkuvattu muille solmuille Näkökenttä Tutkitaan kaksi ensimmäistä porttia?? Solmu Portti Näkyvissä Ei näkyvissä Ei tutkittu

Tilavuusjaottelu porttitekniikka Tilavuusjaottelu porttitekniikka Solmu Portti Solmu Portti Molemmat näkyvissä Näkyvissä Ei näkyvissä Ei testattu Merkitään solmu näkyväksi, testataan kaikki portit jotka lähtevät solmusta?? Näkyvissä Ei näkyvissä Ei testattu Tilavuusjaottelu porttitekniikka Tilavuusjaottelu porttitekniikka Solmu Portti Solmu Portti Yksiportti näkyvissä, yksi ei näkyvissä Näkyvissä Ei näkyvissä Ei testattu Merkitään solmu näkyväksi, toista solmua ei tutkita pidemmälle (sillä portti on kiinni). Tutkitaan kaikki portit näkyvästä solmusta??? Näkyvissä Ei näkyvissä Ei testattu

Tilavuusjaottelu porttitekniikka Tilavuusjaottelu porttitekniikka Solmu Portti Solmu Portti Yksi näkyvä, kaksi ei näkyvää Näkyvissä Ei näkyvissä Ei testattu Merkitään solmu näkyväksi, tarkistetaan uuden solmun portit? Näkyvissä Ei näkyvissä Ei testattu Tilavuusjaottelu porttitekniikka Tilavuusjaottelu - porttitekniikka Yksi portti ei näkyvä Ei enempää näkyviä solmuja tai portteja tarkistettavaksi. Voidaan piirtää näkymä. Solmu Portti Näkyvissä Ei näkyvissä Ei testattu Porttitekniikka on yksinkertainen ja nopea Vähäinen muistin käyttö Automaattinen tuottaminen vaikeaa Vaikeaa saada selville, missä solmussa piste on Pitää jatkuvasti pitää kirjaa objektin liikkeistä porteissa Parhaimmillaan sisätiloissa Ulkotiloissa liian paljon portteja käsiteltäväksi

Tilavuusjaottelu - PVS Piirtoalkeisobjektit Mahdollinen näkyvyysjoukko (potentially visible set) Perustuu mihin tahansa olemassaolevaan solmujärjestelmään Jokaiseen solmuun tallennettu siitä näkyvät solmut Staattinen lista Etukäteislaskenta hidastaa kentän lataamista Ei huomioi kulloistakin näkymää Ei voida käyttää liikkuvien objektien kanssa Todella nopea (ei rekursiota, ei laskentaa) yhdistellään muihin Silti vaaditaan näkyvyys tarkastelu leikkaus Nauhat, listat ja viuhkat Indeksoidut alkeisobjektit Verteksivälimuisti Neliöt ja pisteoliot nauhat (strips), listat (lists), viuhkat (fans) Kolmiosarjojen rakennetta 1 Kolmio lista 8 2 3 7 4 6 9 Kolmionauha 2 4 5 1 3 5 3 2 4 5 1 6 Kolmioviuhka 6 7 8 2 1 4 5 6 Viivalista 3 1 2 3 4 5 6 Viivanauha Listat eivät jaa mitään verteksejä Verteksien määrä = kolmioiden määrä * 3 Nauhat ja viuhkat jakavat verteksejä Verteksi määrä = kolmiomäärä + 2 Vähentää muistin kulutusta Nopeuttaa toistuvia verteksien käsittelyrutiineja

Käytännössä hukkadataa syntyy... Indeksoidut alkeisobjektit 32 kolmiota, 25 verteksiä 4 nauhaa, 40 verteksiä 25 verteksistä syntyy 40 verteksiä, jolloin on 60% redundanssia! Verteksit tallennettuna erilliseen taulukkoon Ei redundanssia Kutsutaan verteksipuskuriksi tai verteksitaulukoksi Kolmiot viittaavat indekseihin eivät vertekseihin Indeksi on vain kokonaisluku (integer) Tyypillisesti 16 bittinen Indeksien monistaminen halpaa Verteksivälimuisti Nelikulmiot ja pisteoliot Verteksejä käsitellään verteksivarjostimilla Tuloksia käytetään usealle kolmiolle Vältetään uudelleenkäsittelyä jokaisen kolmion kohdalla Tallennus videomuistiin liian hidasta, joten tallennetaan tulokset pieneen välimuistiin Vaatii alkeisobjektien indeksointia Välimuisti tyypillisesti 16-32 verteksin kokoinen Tällä saavutetaan yleensä noin 95% kattavuus Nelikulmiot tuettuja joissain API toteutuksissa Piirretään kuten kaksi kolmiota Voimme ajatella nelikulmion olevan pieni kolmioviuhka Ei merkittävästi tehokkaampaa Pisteoliot ovat yksittäisiä verteksejä Ruudun suuntainen neliö, ei vain koostu kahdesta kolmiosta Harmittavia laitteistorajoitteita Harvoin vaivan arvoista

Tekstuurit Tekstuuri formaatit yleisesti Tekstuurit formaatit Tekstuurin kiinnitys (texture mapping) Tekstuuriin piirtäminen (texture rendering) Tekstuurit muodostuvat tekseleistä (texels) Tekselit koostuvat usein komponenteista R,G,B ja A Kaikki formaatit eivät sisällä kaikkia komponentteja Eri formaateilla on erilaisia bittisyvyyksiä eri komponenteille Yleisiä formaatteja: A8R8G8B8, R5G6B5, A32f ja A16R16G16B16f DXT1: pakattu 4x4 RGB lohko: 64 bits Tekstuuri formaattien ulottuvuudet Tektuurien kiinnitysavaruudet Tekselit on järjestetty monella eri tavalla Tekstuureilla on usein 'mipmap' ketjuja Mipmapin koko on puolet alkuperäisistä ulottuvuuksista Täydellinen mipmap-ketju sisältää kaikki eri kokoiset mipmapit aina kokoon 1 asti Tekstuurien kiinnitys (texture mapping) Tekstuuri koordinaatit U, V, W Vain U tarvitaan 1D kartassa ja U,V 2D avaruudessa U,V,W tyypillisesti tallennettu vertekseihin tai laskettu varjostimissa Arvot välillä [0,1]

Tekstuuriin piirtäminen Valotus Tekstuurit on yleensä tehty erilliseen pakettiin Ladataan levyltä Mutta mikä tahansa 2D kuva voi olla tekstuuri Voidaan asettaa tekstuuri piirron kohteeksi ja näyttää sitten piirrettyä tekstuuria Komponentit Valotus ympäristö Useat valonlähteet Staattinen valotuskartta (lightmap) Leviävä materiaali valotus (diffuse material lighting) Normaali tekstuuri kiinnitys (normal mapping) Komponentit Valotusympäristö Valotuksessa on kolme tekijää: Mitkä valot paistaa pinnalle? Kuinka materiaali käyttäytyy valon kanssa? Mitkä osat lopulta näkyvät kameraan? Reaaliaikainen piirto yhdistää kaksi viimeistä Ilmenee verteksi- ja pikselivarjostuksessa Moni algoritmi toimii molemmissa Vastaa ensimmäiseen kysymykseen: Mikä valo paistaa pinnalle? Perusmalli on suuntaamaton kevyt valaistus Paikka Intensiteetti eli voimakkuus Väri Fysiikka mallit käyttävät käänteissääntöä Kirkkaus = valonvoimakkkuus / etäisyys 2

Valotusympäristö Useat valonlähteet Mutta tästä saadaan suuri kirkkausalue ja monitorien kirkkausalue on rajoittunut Käytännössä tämä näyttää pahalta Monet käyttävät käänteistä etäisyyttä Vaaleus = valon vaaleus / etäisyys Lisäämällä minimietäisyys estetään puhkipalaminen Maksimietäisyys lisätään tehokkuus syistä Järjestelmissä on kymmenistä tuhansiin valoja Mahdotonta laskea jokaisen vaikutusta joka piksellile arvioidaan eniten vaikuttuvat valot Ympäröivä valo (ambient light) Yksi väri lisätään jokaiseen valoon Vähentään kontrastia 3D maailmasta hyväksyttävissä päivänvalo tilanteissa Staattinen valotuskartta Hajoava materiaalivalo Yleensä varasto etukäteen lasketulle valotukselle Mahdollisia käyttökohteita: Mahdollistaa kevyen perusvalotuksen tekemisen Valo on imeytynyttä ja uudelleen säteilevää Uudelleen säteilee joka suuntaan joten ei väliä missä kamera on Sama valonvoimakkkuus osuu kameraan Staattinen normaalikarttojen (normal map) korostaminen Ei sovellu liikkuviin kohteisiin Valonvoimakkuus on pistetulo pinnan ja valovektorin välillä (Lamberin yleinen valo)

Normaalikartat Laitteistopiirtoliukuhihna Pinnan normaalivektorit tallennettu vertekseihin Muutokset pieniä vierekkäisten verteksien välillä Pinta näyttää tasaiselta Todelliset pinnat epätasaisia Suuret erot pintojen normaalien välillä Saattaa tarvita paljon lisää verteksejä Normaalikartat taltioivat pinnan normaaleja tekstuurissa Tarkistusnormaalit jokaiselle pikselille Suoritetaan valotuslaskuja pikselivarjostimessa Syötteiden kokoaminen Verteksivarjostaminen Alkeisobjektien kokoaminen, valinta ja leikkaus Projektio ja rasterointi Pikselivarjostus Z-, Stencil- ja piirtopuskurit Varjostinkielet Laitteistopiirtoliukuhihna Syötteiden kokoaminen Käsittelemme yleisen liukuhihnamallin On hyvin yleinen, mutta eri vaiheet vaihtelevat suuresti eri toteutuksissa Myöskin valitettavasti ei ole mitään 'ajatonta tietoa' Laitteistot muuttuvat erittäin nopeasti Tilojen vaihto Tekstuurit, varjostimet, sulautus tyypit (blend modes) Virrat syötedataan Verteksipuskurit Toiminnallinen malli ainoastaan Ei toteutettavissa sellaisenaan tehokkaasti Moni vaihe oikeasti siirretty laitteistolle Indeksipuskurit Vakiodata Yhdistetään alkeisobjekteihin

Verteksivarjostin Alkeisobjektien kokoaminen, valinta ja leikkaus Verteksidata ruokkii verteksivarjostajaa Ohjelmaa ajetaan keskeytyksettä kunnes se on valmis Yksi verteksi kerrallaan käsitellään Verteksivarjostin ei näe useita verteksejä eikä myöskään verteksirakenteita Tulokset tallennetaan verteksivälimuistiin vaste (output) sijainnin tulee olla näkyvyys alueella Verteksit luetaan välimuistista Kasataan kolmioiksi Valitaan verteksit Valinta-alue Taustapinta (verteksien järjestys myötäpäivään) Leikkaus suoritetaan ei valituille kolmioille Jatketaan niiden kolmioiden kanssa, jotka eivät leikkaannu pois ruudusta Projektio ja rasterointi Pikselivarjostus Verteksit projisoidaan ruutuavaruuteen Todelliseen pikselikoordinaatistoon Kolmiot on rasteroitu Etsitään pikselit, jotka todella vaikuttavat Etsitään syvyysarvot näille pikseleille Löydetään interpoloidut atribuuttitiedot Tekstuuri koordinaatit Kaikki muu pidetään vertekseissä Syöttää pikselit varjostimelle Ohjelma ajetaan kertaallaalleen joka pikselille annetulla interpoloidulla verteksidatalla Voi lukea tekstuureja Paluuarvona palauttaa pikselin värin Voi myös mahdollisesti palauttaa uuden syvyysarvon Voi myös tuhota pikseleitä (estää piirron)

Z-, Stencil, piirtopuskuri sekoitus Varjostusohjelmat Z- ja stencil-testit suoritetaan Pikselejä saatetaan tuhota testeissä Jos ei, niin uudet Z- ja stencil-arvot kirjoitetaan Jos taustapuskuri käytössä Kirjoitetaan uusi väri taustapuskuriin Mikäli sekoitus käytössä, uusi arvo sekoitetaan Monia erilaisia varjostusmahdollisuuksia Aikaisemmin kielet lähellä assemblyä Erilainen assembly jokaiselle varjostin versiolle Nykyään käytetään c-kielen tyylisiä kieliä Piilottaa paljon toteutuksen yksityiskohtia Toimii suuren laitejoukon kanssa Vaatii todella tarkkaa kehityksen seurausta Yhteenvetoa liukuhihnasta Yhteenveto Kuljetaan läpi koko 3D maailman Ohitetaan ei näkyvät solmut Piirretään objektit, jotka näkyvät Verteksit muutetaan näyttöavaruuteen Käytetään verteksivarjostusohjelmia Tehdään kolmioita vertekseistä Rasteroidaan kolmiot pikseleiksi Valotus tehdään yhdistelemällä Osa tehdään verteksivarjostimessa Osa tehdään pikselivarjostimessa Lopputuloksena ovat uudet värit joka pikselille Poisluetaan pikselit, jotka eivät ole näkyvillä Kirjoitetaan tai sekoitetaan (blend) taustapuskuriin

Loppukevennys Credits Yhtään pikseliä ei ole vahingoitettu tämän esitelmän teossa Kiitos mielenkiinnosta ja anteeksi kärsimyksistä =) kirjoittanut Credits Credits kirjoittanut kirjoittanut

Credits Credits kirjoittanut kirjoittanut Credits Credits kirjoittanut kirjoittanut

Credits kirjoittanut Credits Credits