TIES471 Reaaliaikainen renderöinti

Samankaltaiset tiedostot
TIES471 Reaaliaikainen renderöinti

Tilanhallintatekniikat

Tampereen yliopisto Tietokonegrafiikka 2013 Tietojenkäsittelytiede Harjoitus

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

8.7. Kolmiulotteiset tekstuuritekniikat. Kolmiulotteinen kohina eli häiriö. Turbulenssin simulointi. turbulence

8. Kuvaustekniikat. Tämän kuvauksen esittäminen ei ole kuitenkaan suoraviivaista. Niinpä se käydään läpi kaksivaiheisena

Luento 3: 3D katselu. Sisältö

y=-3x+2 y=2x-3 y=3x+2 x = = 6

TIES471 Reaaliaikainen renderöinti

10. Esitys ja kuvaus

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

Lieriö ja särmiö Tarkastellaan pintaa, joka syntyy, kun tasoa T leikkaava suora s liikkuu suuntansa

Virheen kasautumislaki

Luento 7: Lokaalit valaistusmallit

5. Grafiikkaliukuhihna: (1) geometriset operaatiot

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

Osoita, että kaikki paraabelit ovat yhdenmuotoisia etsimällä skaalauskuvaus, joka vie paraabelin y = ax 2 paraabelille y = bx 2. VASTAUS: , b = 2 2

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

Visualisoinnin perusteet

Numeeriset menetelmät TIEA381. Luento 6. Kirsi Valjus. Jyväskylän yliopisto. Luento 6 () Numeeriset menetelmät / 33

PRELIMINÄÄRIKOE PITKÄ MATEMATIIKKA

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

Insinöörimatematiikka D, laskuharjoituksien esimerkkiratkaisut

Luento 6: Geometrinen mallinnus

TL5503 DSK, laboraatiot (1.5 op) Kuvasignaalit. Jyrki Laitinen

SIGNAALITEORIAN KERTAUSTA OSA 2

Spektri- ja signaalianalysaattorit

T Johdatus tietoliikenteeseen ja multimediatekniikkaan Tietokonegrafiikka

x 5 15 x 25 10x 40 11x x y 36 y sijoitus jompaankumpaan yhtälöön : b)

10.2. Säteenjäljitys ja radiositeettialgoritmi. Säteenjäljitys

12. Laskostumisen teoria ja käytäntö

Avaruusgeometrian perusteita

1. OHJAAMATON OPPIMINEN JA KLUSTEROINTI

Videon tallentaminen Virtual Mapista

12.5. Vertailua. Silmäillään laskostumisen estoa tietokonegrafiikan kannalta. Kuva luonnehtii vaihtoehtoja.

Tekijä Pitkä matematiikka

1. OHJAAMATON OPPIMINEN JA KLUSTEROINTI

9. Vektorit. 9.1 Skalaarit ja vektorit. 9.2 Vektorit tasossa

MS-A0003/A0005 Matriisilaskenta Laskuharjoitus 2 / vko 45

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

AV-muotojen migraatiotyöpaja - ääni. KDK-pitkäaikaissäilytys seminaari / Juha Lehtonen

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

T Vuorovaikutteinen tietokonegrafiikka Tentti

TEEMU ROOS (KALVOT MUOKATTU PATRIK HOYERIN LUENTOMATERIAALISTA)

Taso 1/5 Sisältö ESITIEDOT: vektori, koordinaatistot, piste, suora

MS-A0205/MS-A0206 Differentiaali- ja integraalilaskenta 2 Luento 10: Napa-, sylinteri- ja pallokoordinaatistot. Pintaintegraali.

Numeeriset menetelmät TIEA381. Luento 8. Kirsi Valjus. Jyväskylän yliopisto. Luento 8 () Numeeriset menetelmät / 35

12. Derivointioperaattoreista geometrisissa avaruuksissa

KJR-C1001: Statiikka L2 Luento : voiman momentti ja voimasysteemit

Kanta ja Kannan-vaihto

Muuntavat analogisen signaalin digitaaliseksi Vertaa sisääntulevaa signaalia referenssijännitteeseen Sarja- tai rinnakkaismuotoinen Tyypilliset

MAA7 Kurssikoe Jussi Tyni Tee B-osion konseptiin pisteytysruudukko! Kaikkiin tehtäviin välivaiheet näkyviin! Laske huolellisesti!

Preliminäärikoe Tehtävät Pitkä matematiikka / 3

2.2. Kohteiden konstruktiivinen avaruusgeometrinen esitys

Polaarisatelliittidataan perustuva lumentunnistusalgoritmi (valmiin työn esittely)

TIMO SALOKAS MICROSOFTIN DIRECTX-TEKNIIKKA JA ANTIALIASOINTI. Kandidaatintyö

KJR-C1001 Statiikka ja dynamiikka. Luento Susanna Hurme

Suorien ja tasojen geometriaa Suorien ja tasojen yhtälöt

Signaalien generointi

Johdatus tekoälyn taustalla olevaan matematiikkaan

11. kierros. 1. Lähipäivä

IIR-suodattimissa ongelmat korostuvat, koska takaisinkytkennästä seuraa virheiden kertautuminen ja joissakin tapauksissa myös vahvistuminen.

MS-A0202 Differentiaali- ja integraalilaskenta 2 (SCI) Luento 1: Parametrisoidut käyrät ja kaarenpituus

Lineaarialgebra ja matriisilaskenta II Syksy 2009 Laskuharjoitus 1 ( ) Ratkaisuehdotuksia Vesa Ala-Mattila

JOHDATUS TEKOÄLYYN TEEMU ROOS

Suora 1/5 Sisältö ESITIEDOT: vektori, koordinaatistot, piste

Numeeriset menetelmät TIEA381. Luento 7. Kirsi Valjus. Jyväskylän yliopisto. Luento 7 () Numeeriset menetelmät / 43

Anna jokaisen kohdan vastaus kolmen merkitsevän numeron tarkkuudella muodossa

AV-muotojen migraatiotyöpaja - video. KDK-pitkäaikaissäilytys seminaari / Juha Lehtonen

Tampereen yliopisto Tietokonegrafiikka 2013 Tietojenkäsittelytiede Harjoitus

MS-A0204 Differentiaali- ja integraalilaskenta 2 (ELEC2) Luento 9: Muuttujanvaihto taso- ja avaruusintegraaleissa

yleisessä muodossa x y ax by c 0. 6p

S OPTIIKKA 1/10 Laboratoriotyö: Polarisaatio POLARISAATIO. Laboratoriotyö

Demo 1: Simplex-menetelmä

Haitallinen valikoituminen: Kahden tyypin malli

Differentiaali- ja integraalilaskenta 2 Laskuharjoitus 4 / vko 40

A-osa. Ratkaise kaikki tämän osan tehtävät. Tehtävät arvostellaan pistein 0-6. Taulukkokirjaa saa käyttää apuna, laskinta ei.

SGN Signaalinkäsittelyn perusteet Välikoe Heikki Huttunen

y x1 σ t 1 = c y x 1 σ t 1 = y x 2 σ t 2 y x 2 x 1 y = σ(t 2 t 1 ) x 2 x 1 y t 2 t 1

BM20A5800 Funktiot, lineaarialgebra ja vektorit Harjoitus 4, Syksy 2016

Videon tallentaminen Virtual Mapista

Tuntematon järjestelmä. Adaptiivinen suodatin

Kojemeteorologia. Sami Haapanala syksy Fysiikan laitos, Ilmakehätieteiden osasto

JOHDATUS TEKOÄLYYN TEEMU ROOS

Vanhoja koetehtäviä. Analyyttinen geometria 2016

Ei välttämättä, se voi olla esimerkiksi Reuleaux n kolmio:

MS-A0305 Differentiaali- ja integraalilaskenta 3 Luento 3: Vektorikentät

MATEMATIIKKA 5 VIIKKOTUNTIA. PÄIVÄMÄÄRÄ: 8. kesäkuuta 2009

Juuri 3 Tehtävien ratkaisut Kustannusosakeyhtiö Otava päivitetty

Oppimateriaali oppilaalle ja opettajalle : GeoGebra oppilaan työkaluna ylioppilaskirjoituksissa 2016 versio 0.8

Vektorilaskenta, tentti

JOHDATUS TEKOÄLYYN TEEMU ROOS

Viikko 2: Ensimmäiset ennustajat Matti Kääriäinen

Luento 7: 3D katselu. Sisältö

Käyttöliittymän muokkaus

Tekijä Pitkä matematiikka Pisteen (x, y) etäisyys pisteestä (0, 2) on ( x 0) Pisteen (x, y) etäisyys x-akselista, eli suorasta y = 0 on y.

LIITE ELITE Ti ohjelmistoversio 5.0

3 TOISEN ASTEEN POLYNOMIFUNKTIO

Transkriptio:

TIES471 Reaaliaikainen renderöinti

Laskuharjoitus 1 Lataa kirja 3D Math Primer for Graphics and Game development https://tfetimes.com/wp-content/uploads/2015/04/f.dunn-i.parberry-3d-math-primer-for-graphics-and-game-development.pdf Tee tehtävät 1-10 (9.5 Exercises) kirjan sivulta 146. Palauta tehtävät maanantain 18.4 luennolla. Oikein tehdystä tehtävästä 0.1 lisäpistettä tenttiin (Max. 10*0.1=1) Palauta tehtävät maanantaihin 25.4 mennessä

6.2 Näytteistäminen (sampling) Näytteistämisprosessin tarkoituksena on esittää informaatio (data) digitaalisesti. Näytteistämisessä informaation määrä vähenee. Näytteistetty signaali rekonstruoidaan alkuperäiseksi signaaliksi digitaalisen suodatuksen avulla. Näytteistämistä suoritettaessa voi esiintyä aliasoitumista. Aliasoitumista esiintyy, jos signaalia näytteistetään liian matalalla taajuudella. Nyquist rajoitus: (kuva)signaalin näytteenottotiheys pitää olla vähintään kaksi kertaa yhtäsuuri kuin näytteistettävän signaalin maksimitaajuus. Nyquistin rajoitus vaatii signaalille kaistarajoituksen (bandlimit).

6.2 Näytteistäminen (sampling) 3D-renderöinti voidaan kuvitella kolmiulotteisen näkymän näytteistysprosessiksi, joka tuottaa kaksiulotteisen kuvan pikselit. Erityisesti tekstuurimappauksessa uudelleen näytteistyksellä on suuri merkitys. Kolmiulotteinen näkymä ei ole koskaan (normaalisti) kaistarajoitettu, kun renderöinin näytteistys tehdään pisteillä; vastoin Nyquistin rajoitusta.

6.2 Näyttöperustainen antialiasointi Yleinen strategia näyttöperustaiseen antialiasointiin on käyttää näytteistysmallia koko näytölle ja laskea pikseliarvo painottamalla ja yhteenlaskemalla näytteet : n p x, y = w i c(i, x, y) i=1 missä n on pikselikohtainen näytteiden määrä funktio c(i,x,y) on näytteen väri w i näytteen on painokerroin [0..1] Jokainen näyte otetaan eri alueelta (pikseliruudukko) näytöltä ja mahdollisesti näytteistysmalli voi vaihdella pikselien välillä.

6.2 Näyttöperustainen antialiasointi Antialiasointialgoritmit, jotka laskevat enemmän kuin yhden näytteen per pikseli, kutsutaan ylinäytteistysmenetelmiksi (supersampling). Yksinkertaisin koko näkymän antialiasointi menetelmä (FSAA) renderöi koko näkymän suuremmalla resoluutiolla, jonka jälkeen vierekkäiset näytteiden keskiarvot määrävät lopullisen kuvan. Esimerkki haluttu renderöinti resoluutio on 1000 x 800 pikseliä. FSAA renderöi 2000 x 1600, käytetään 2x2 pikseliruutuja, otetaan neljä näytettä per pikseli. Menetelmä MAKSAA, koska jokainen näyte joudutaan varjostamaan ja Z- puskuroimaan.

6.2 Näyttöperustainen antialiasointi MSAA - multisample antialiasing (optimoitu supersampling) http://www.opengl.org/wiki/multisampling CSAA - coverage sampling antialiasing http://www.nvidia.com/object/coverage-sampled-aa.html HRAA - high resolution antialiasing http://www.nvidia.com/object/feature_hraa.html

6.3 Gamma-korjaus Gamma-arvo kertoo pikselin numeerisen arvon ja sen todellisen valontiheyden suhteen. Gammakorjaus poistaa kontrastieroja ja epälineaarisuuksia lopullisesta pikselikuvasta. Gammakorjaukseen sijaan käytetään nykyään ICC-profiileja: http://en.wikipedia.org/wiki/icc_profile

6.4 Kuvaperustainen teksturointi Kuvateksturoinnissa kaksiulotteinen kuva liitetään monikulmion pintaan. Grafiikkaprosessoreiden käyttämä tekstuurikoko on yleensä 2 m x 2 n tekseliä, missä m ja n ovat positiivisia kokonaislukuja. Modernit GPU:t sallivat mielivaltaiset tekstuurikoot. DirectX 10:ssä maksimi tekstuurikoko on 8192 2 tekseliä. Tarkoituksena on estää lopullisen renderöidyn kuvan aliasoituminen, johon tarvitaan näytteistystä ja suodatusta. Tärkeää on erottaa suodatetaanko varjostusfunktion syötteitä vai tulosteita. Tekstuurien suodatus toimii hyvin, jos varjostusfunktion syötteet ja tulosteet liittyvät toisiinsa lineaarisesti (heijastus ja diffuusi). Tässä tapauksessa yksittäisten tekstuuriarvojen suodatus vastaa lopullisten värien suodatusta.

6.4 Tekstuurien suurennos Yleisimmät suodatustekniikat (filtering) tekstuurien suurennokseen ovat lähin naapuri (nearest neighbour) ja bi-lineaarinen interpolointi. Lähin-naapuri suurennusmenetelmälle on luonteenomaista, että yksittäiset tekselit saattavat tulla näkyviksi; pikselöityminen. Pikselöityminen tapahtuu, koska suurennuksessa jokainen pikseli(keskus) saa lähimmän tekselin arvo, joka johtaa karkeaan ulkonäköön. Bi-lineaarinen suodatuksessa pikselille haetaan neljä vierekkäistä tekseliä ja lineaarisesti interpoloidaan ne kaksiulotteisesti. Tuloksena saadaan pikselille sekoitettu arvo. Kuutiollinen konvoluutio (cubic convolution) käyttää alueotantaa, jossa lasketaan tekstuurin tekselijoukon (4x4, 5x5) painotettu keskiarvo. Menetelmällä saadaan huomattavasti parempi tulos tekstuurin suurennoksessa.

6.4 Tekstuurien suurennos Bi-lineaarinen suodatuksessa pikselille haetaan neljä vierekkäistä tekseliä ja lineaarisesti interpoloidaan ne kaksiulotteisesti. Tuloksena saadaan sekoitettu arvo pikselille. (x l,y t ) (x r,y t ) (p u,p v ) (x l,y b ) (x r,y b ) b p u, p v = 1 u 1 v t(x l, yb) + u (1 v )t(x l, yb) + 1 u v t(x l, yt) + u v t(x r, yt) missä (p u, p v ) on pikselin paikka b(p u, p v ) on pikselin sekoitettu arvo (x,y) on tekselin paikka (kokonaislukuja) t(x, y) on tekselin väri u ja v ovat pikselin desimaalit

6.4 Tekstuurien suurennos Etäisyyskenttä on (etumerkillinen) skaalarikenttä yli avaruuden tai pinnan, johon kappale on sidottu. Etäisyyskentät arvot kertovat etäisyyden kappaleen lähimpään rajapisteeseen. Arvo on negatiivinen kappaleen sisällä sijaitseville pisteille ja positiivinen ulkopuolella oleville. Renderöitäessä etäisyyskentän arvot lineaarisesti interpoloidaan. (Team Fortress 2). http://www.valvesoftware.com/publications/2007/siggraph2007_alphatestedmagnification.pdf

6.5 Tekstuurien pienennös Pienennettäessä (minification) tekstuuria useat tekselit saattavat peittää saman pikselin. Tekseleiden vaikutusta tiettyyn pikseliin on vaikea määrittää; reaaliajassa käytännössä mahdotonta. Lähin naapuri (nearest neighbour) pienennös toimii kuten vastaava suurennus suodatin tekee. Menetelmä valitsee tekselin, joka on pikselin päällä. Tämä suodatin voi aiheuttaa aliasoitumisen.

6.5 Mip-kartoitus (mipmapping) Mip-kartoituksessa (mipmapping) alkuperäisestä tekstuurista tehdään joukko pienennetty versioita. Tekstuurin pienennykset jaetaan eri tasoille. Ensimmäisen (alimman) tason pienennys on neljännes alkuperäisestä. Pienennys suoritetaan laskemalla alkuperäisen tekstuurin neljän vierekkäisen tekselin keskiarvo. Prosessia jatketaan rekursiivisesti kunnes tekstuurin korkeus tai leveys on yhden tekselin (korkein taso). http://www.gamedev.net/page/resources/_/technical/directx-and-xna/mip-mapping-in-direct3d-r1233 Mipmap -kartan pystyakseli on kolmas tekstuurikoordinaatti (d). Koordinaatti ei ole välttämättä lineaarinen. Sitä käytetään tasojen näytteistyksessä. Hyvälaatuinen suodatus (Gaussian) ja gamma-korjaus takaavat korkealaatuisen mip-kartan.

6.5 Mip-kartoitus (mipmapping) Koordinaatin d laskennan tarkoituksena on selvittää kuinka pitää näytteistää mip-kartan akselilla. Tavoitteena on saada pikseli-tekseli suhteeksi 1:1 (Nyquist rajoitus). Pikselin liittyessä useampaan tekseliin d:n arvo kasvaa, jolloin pienempää ja epätarkempaa tekstuuria käytetään. Arvo d on analoginen mip-kartan tekstuuritason kanssa; se kertoo tasojen välisen etäisyyden. Ylempi ja alempi tekstuuritaso ja etäisyys (d) näytteistetään. Molempien tasojen interpoloidun näytteet tallennetaan paikkaan (w,v), joka lineaarisesti interpoloidaan suhteessa tasojen väliseen etäisyyteen d. Prosessia kutsutaan trilineaariseksi interpoloinniksi. Koordinaatti d:hen liitetään tarkkuuden tason poikkeama (Level Of Detail, bias). LOD bias lisätään d:hen ja sillä voidaan vaikuttaa tekstuurin tarkkuuteen.

6.5 Anisotrooppinen suodatus Anisotropisen suodatuksen idea on, että pikseli takaisin projisoidaan. Saatu nelikulmio näytteistetään useamman kerran ja näytteet yhdistetään. Jokaisella mip-kartan näytteellä on paikka ja neliön muotoinen alue. Algoritmi käyttää useampaa aluetta kattamaan takaisin projisoidun neliökulmion. Nelikulmion lyhemmän sivun perusteella voidaan määrittää koordinaatti d, jolloin keskiarvoistettu alue on pienempi ja tarkempi jokaiselle mip-kartan näytteelle.

6.6 Tilavuustekstuurit Kuvaperustaisessa tilavuusteksturoinnissa tekstuuriavaruus laajennetaan kolmiulotteiseksi (u,v,w). Esimerkiksi lääketieteellisessä kuvantamisessa data voidaan esittää 3D-hilassa, jossa monikulmiota liikuttamalla voidaan tarkastella kaksiulotteisia otteita (tekstuuri). Tilavuusteksturoinnin avulla voidaan esittää tilavuusperustaisia valoja. Pinnan pisteen valaistus voidaan laskea selvittämällä sen arvo tilavuuden sisällä käyttäen valonsuuntaa. Grafiikkaprosessorit tukevat mip-kartoitusta tilavuustekstuureille. Yhden mipmap-tason suodatus pitää suorittaa tri-lineaarisella interpoloinnilla ja quad-lineaarisella interpoloinnilla. Tilavuustekstuurien käyttö pinnan teksturointiin on tehotonta, koska suurta osaa näytteistä ei käytetä. http://http.developer.nvidia.com/gpugems/gpugems_ch39.html

6.6 Kuutiotekstuurit (cube maps) Kuutiotekstuuri sisältää kuusi neliönmuotoista tekstuuria, jotka ovat liitetty kuution tahoihin. Kuutiotekstuuri määritellään vektorilla (px,py,pz), joka kertoo säteen suunnan kuution keskipisteestä ulospäin. Kuutiotekstuurit ovat käteviä esittämään arvoja, jotka kertovat funktion suunnan. Kuutiotekstuureja käytetään ympäristönkartoitusessa (environment mapping). Artefakteja voi esiintyä kohdissa, joissa kuution tahot yhdistyvät (sivut). Kuutiokartojen pitäisi olla jatkuvia, mutta grafiikkaprosessorit eivät tue bilineaarista interpolointia rajakohtien yli. http://www.nvidia.com/object/cube_map_ogl_tutorial.html

6.7 Tekstuurien välimuisti (texture caching) Monimutkainen sovellus voi sisältää huomattavan määrän tekstuureja. Nopea tekstuurimuistiin määrää vaihtelee järjestelmästä toiseen, mutta käytännössä sitä ei ole koskaan tarpeeksi. Tekstuurien välimuistin hallintatekniikoilla haetaan tasapainoa tekstuurien muistiin latauksella ja niiden muistin tarpeelle kerrallaan. Yleisiä neuvoja tekstuurien käyttöön: tekstuurit on hyvä pitää pieninä, mutta kuitenkin sen verran suurina ettei suurennuksessa tule ongelmia. Monikulmiot kannattaa pitää ryhmiteltynä tekstuurien käytön mukaan. Esimerkiksi näkymän teksturoidut monikulmiot voivat sijaita aluksi kaukana; sovellus lataa mip-kartasta (mipmapping) oikean tason tekstuurit renderöitäviksi.

6.7 Tekstuurien välimuisti (texture caching) Viimeksi vähiten käytetty (LRU=Least Reacently Used) strategia on yksi yleisesti käytetty tekstuurivälimuistitekniikka. Menetelmässä jokaiselle grafiikkaprosessorin muistiin ladatulle tekstuurille annetaan aikaleima, joka kertoo milloin tekstuuria on viimeksi käsitelty renderöinissä. Kun muistia pitää vapauttaa uudelle tekstuurille, ylikirjoitetaan vanhimman aikaleiman omaava tekstuuri. LRU:n yksinkertaisuudesta johtuen, se ei toimi tapauksessa jolloin jokainen tekstuuri pitää vaihtaa jokaisella näyttö päivityksellä. Tässä tilanteessa on hyvä käyttää viimeksi eniten käytetty tekstuuri (MRU) strategiaa. Hyvin laajoissa näkymissä (lentokonesimulaattorit) tekstuurit hajoitetaan pienemmiksi palasiksi, jotta laitteisto pystyy käsittelemään niitä. Clip-kartta (clipmap) rakenne soveltuu erinomaisesti suurin näkymiin. Clip-kartassa koko tekstuuri data käsitellään mip-karttana (mip-map). Renderöinti kevenee, koska mip-kartan alempien tasojen suurempia tekstuurien käyttö on vähäistä (DirectX 10 tuki). http://http.developer.nvidia.com/gpugems2/gpugems2_chapter02.html

6.8 Tekstuurien pakkaus Tekstuuripakkauksella pienennetään muistinkaistanleveyteen ja tekstuurien välimuistiin liittyviä ongelmia. Grafiikkaprosessori pystyy purkamaan pakatut tekstuurit "lennossa", jolloin tarvitaan vähemmän tekstuurimuistia ja samalla tekstuurivälimuistin määrä kasvaa. Huomattavan tärkeää on muistinkaistanleveyteen kohdistuva vaikutus (1. kotitehtävä!) S3 kehitti tekstuurien pakkaukseen S3TC algoritmin (DXTC), jossa tekstuurikuva pakataan erillisiin lohkoihin, joita päästään käsittelemään erikseen. DirectX (DXTC): http://msdn.microsoft.com/en-us/library/bb694531%28v=vs.85%29.aspx OpenGL: https://www.opengl.org/wiki/s3_texture_compression OpenGL ES:ssä käytetään Ericsson texture compression (ETC) algoritmia tekstuurien pakkaukseen.

6.9 Proseduraalinen teksturointi Nykyiset grafiikkaprosessoriarkkitehtuurit tarjoavat mahdollisuuden muodostaa tekstuureja laskennallisesti johtuen tehokkaasta (ja halvasta) laskentakapasiteetista. Esimerkiksi tilavuustekstuurit (volume textures) on järkevää muodostaa proseduraalisesti, koska ne kuluttavat merkittävästi tekstuurimuistia. http://en.wikipedia.org/wiki/procedural_texture

6.9 Tekstuurianimaatio Tekstuurikoordinaatteja voidaan muuntaa verteksi- ja pikselivarjostimilla, mikä mahdollistaa esimerkiksi zoomauksen, pyöritykset, leikkaukset ja muodonmuutokset (morphing). Tekstuurianimaatioolla voidaan toteuttaa monimutkaisempi ilmiöitä kuten vesiputouksia ja tulipaloja.

6.10 Materiaalin mappaus Tekstuuri on materiaalin ominaisuus, joka vaikuttaa varjostusfunktioon : L O v = ( c diff π + m + 8 8π cosm θ h c spec ) ELcosθ i missä m on pinnan sileyttä kuvaava parametri ja väritermit c diff ja c spec ovat vakioita. Todellisen maailman kappaleissa materiaalin ominaisuudet vaihtelevat yli kappaleen pinnan; diffuusitermi c diff ja heijastustermi c spec muuttuvat. Pikselivarjostimella voidaan lukea tekstuurin väriarvot ja muuttaa termejä ennen varjostinfunktion toteuttamista. Tekstuuria, jolla vaikutetaan diffuusitermiin sanotaan diffuusivärikartaksi (diffuse map), vastaavasti heijastustermiä heijastusvärikartaksi (specular map, gloss map).

6.2 Alfa mappaus Läpinäkyvyys, alfa-kanava, kompositio

6.11 Kyhmytys (bumb mapping) Kyhmytystekniikat (bumb mapping) toteutetaan yleensä pikselikohtaisesti. Kyhmytys "parantaa" kappaleiden kolmiulotteista vaikutelmaa, mutta ei niin merkittävästi kuten itse geometria. Kappale yksityiskohdat voidaan luokitella kolmeen mittasuhdeluokkaan: * makro-ominaisuus, joka kattaa pikselijoukon * meso-ominaisuus, joka kattaa "muutaman" pikselin * mikro-ominaisuus, joka kattaa pikseliä pienemmät yksiköt Renderöitäessä ominaisuudet ovat joustavia riippuen katsojan etäisyydestä kappaleeseen. Varjostinmallia käytetään simuloimaan pinnan mikroskooppisia vuorovaikutuksia; kiiltävät kappaleet ovat mikroskooppiselta pinnaltaan sileitä kun vastaavasti diffusoivat pinnat ovat karkeita.

6.11 Kyhmytys (bumb mapping) Meso-geometria kuvaa omaisuuksia mainittujen skaalojen välillä. Se kuvaa yksityiskohtaa, joka on liian vaikeaa renderöidä yksittäisillä monikulmioilla, mutta sellaisia, jotka katsoja pystyy erottamaan muutaman pikselin kattavan pinnan kaarevuuden; kasvojen rypyt, lihaksisto. Tällaisten ominaisuuksien renderöintiin käytetään kyhmytystekniikoita. Kyhmytyksen perusajatus on pinnan normaalin muunnos tekstuurin avulla. Pinnan geometrian normaali säilyy samana, mutta valaistusyhtälön normaalia muutetaan "varoen". Kyhmytyksessä, muutettavan normaalin pitää vaihtaa suuntaa jonkin kehyksen suhteen. Kehysreferenssinä käytetään tangenttiavaruuden kantaa, joka on tallennettu jokaiseen verteksiin. Kehysreferenssillä muunnetaan valo pinnan malliavaruuteen ja lasketaan vaikutus pinnan normaaliin. Monikulmiopinnalle, johon on liitetty normaalikartta (normal map) vertekseihin tallentaan myös tangentti ja bitangentti vektorit.

6.11 Kyhmytys (bumb mapping) Tangentti ja bitangentti vektorit vastaavat normaalikartan akseleita malliavaruudessa. Tarkoituksena on muuntaa valonsuuntaa normaalikartan suhteen. Muunnosmatriisi: t B p = t x t y t z 0 b x b y b z 0 n x n y n z 0 0 0 0 0 b n Matriisi muuntaa siis verteksiin liittyvän valon suunnan maailmankoordinaatistosta tangenttiavaruuteen. Vektoreiden ei tarvitse olla kohtisuorassa toisinsa nähden.

6.12 Normaalimappaus (normal mapping) Suositeltava implementointi kyhmytykselle (bumb-mapping) on normaalikartan tallennus. Normaalikartan tallennus keventää huomattavasti pikselikohtaista varjostuslaskentaa. Normaalikartan tallennukseen tarvitaan kolme komponenttia (x,y,z), jotka voidaan esittää värinä (RGB); yksi värikanava kuvaa yhden suunnan poikkeamaa. Normaalikartan arvot (x,y,z) skaalataan [-1,1]; 8 bitin tekstuurille (0=-1.0, 255=1.0). Esimerkki: väri [128,128,255] vastaa vaalean sinistä, joka kuvaa tasaisen pinnan, jonka normaali on [0,0,1]. Kartasta voidaan hakea jokaiselle pikselille normaali ja soveltaa sitä suoraan varjostinfunktion laskennassa, koska normaalin orientaatio on tekstuurin suhteen. Normaalikarttojen suodatus on vaikeampaa kuin väritekstuurien, koska normaalin ja varjostetun värin suhde ei ole lineaarinen. Standardi suodatus johtaa aliasoitumiseen.