Mikä on tekstuuripuristus?

Tietokonegrafiikan suhteen tekstuuripakkaus on tapa ottaa kuva, jota käytetään kohteen tekstuurina, yleensä kolmiulotteisessa (3D) -näkymässä, ja vähentää kuvan vaatimaa muistia. Toisin kuin perinteiset kuvanpakkausalgoritmit, tekstuuripakkausmenetelmät pyrkivät tarjoamaan tavan pitää pakattu kuva muistissa ja sallivat samalla ohjelman käyttää tiettyjä kuvapisteitä ilman, että niiden pitäisi purkaa kuvaa kokonaan. Tähän voidaan päästä useilla tavoilla, mukaan lukien lohkon katkaisukoodaus (BTC). Useimmiten eri näytönohjainten ja muiden laitteiden valmistajat tukevat tekstuurin pakkaamista suoraan laitteistoon, mikä johtaa useisiin yleisiin pakkausalgoritmeihin, joissa on eri laitteiston valmistajien nimet.

Yksi syy siihen, miksi tekstuuripakkaus on kehitetty ja siitä on tullut yleinen tekniikka 3D-grafiikassa, on se, että pakkaamattomien kuvakuvioiden tallentaminen korkeamman resoluution näytöillä tarkoitettuihin kohtauksiin voi kestää useita kymmeniä gigatavua muistia. Lisäksi kädessä pidettävissä digitaalisissa laitteissa on yleensä rajallinen määrä muistia, joka muuten ei pystyisi pitämään 3D -kohtauksen vaadittuja kuvia. Tekstuuripakkaus vähentää järjestelmässä tarvittavan muistin määrää, joten voidaan käyttää enemmän tekstuureja tai laadukkaampia tekstuureja.

Kaikkein perustyyppinen tekstuuripakkaus tunnetaan lohkon katkaisukoodauksena. Tämä menetelmä ottaa kuvan ja jakaa sen pieniksi pikselilohkoiksi ja löytää lohkon kaksi väriä, jotka ovat kauimpana väriavaruuden näkökulmasta. Lohkon varsinaisille kuvapisteille annetaan sitten numeerinen arvo, joka osoittaa niiden värin suhteessa kahteen äärimmäiseen väriin. Kaavio pakkaa kuvan, koska pikselin poikkeaman tallentamiseen tarvittavat bittimäärät lohkossa ovat pienempiä kuin mitä tarvitaan todellisen värin tallentamiseen. Tuloksena oleva pakkaus tarjoaa myös mahdollisuuden indeksoida pikselit suoraan pakatusta kuvasta tarpeen mukaan.

Laitteistosta, ohjelmistosta ja muista tekijöistä riippuen tekstuuripakkaus voi tapahtua ajon aikana tai se voidaan suorittaa etukäteen ja tallentaa tiedostona. Dynaamisesti luodut tekstuurit on aina pakattava suorituksen aikana. Pakatun tekstuurin lataaminen tiedostosta voi aluksi olla nopeampaa, mutta se voi myös aiheuttaa ongelmia, jos laitteisto ei tue tiettyä pakkaustapaa.