BC7-tekstuurilla alfalla on sama koko kuin BC7 ilman alfaa

Joten olen tehnyt tekstuurin. Olen tallentanut RGB: n BC7-pakkauksella, lisäsi sitten alfa-kanavan [silmälasikartta] vaihtelevilla harmaasävyillä ja tallensi tiedoston uudelleen RGBA: na BC7-pakkauksella. Tuloksena olevan tiedoston koko on sama kuin ilman alfaa, mutta se sisältää kuitenkin lisätietoja -alfa-kanavan. Kuinka se on mahdollista? Et voi syödä kakkua ja syödä kakkua ymmärrän, joten onko kompromisseja tehty saman koon varmistamiseksi?

Käytän Photoshopia Intel DDS -laajennuksella.

Vastaus

BC7 koodaa aina tehokkaasti 4 kanavaa. Se on osa muodon luonnetta. Alfan ottaminen käyttöön tarkoittaa, että kompressori lukee ja käyttää alfa-arvoa lähdekuvassasi, mutta se on kaikki.

Kaikilla tietyn ulottuvuuden BC7-pakatuilla kuvilla on sama koko, koska BC7 pakkaa kaikki 4×4 ryhmä tekstiilejä 128-bittisiksi. Mutta se ei tarkoita, että niillä on sama laatu .

BC7 on adaptiivinen koodausmuoto. Vaikka jokaisella lohkolla on kiinteä koko (sekä spatiaalisesti että bittisesti), kukin lohko tallentaa, kuinka monta lohkoa lohko todella puristuu ja miten ne korreloivat keskenään. -ominaisuudet ovat monimutkaisia , mutta yleisesti ottaen ylöspäin on, että kompressori selvittää lohkokohtaisesti, mikä pakkausmenetelmä toimii parhaiten tietylle lohkolle. Jos kompressori voi katsoa lohkoa ja nähdä, että kaikkien texelien alfa on 1.0, se voi käyttää enemmän 128 bitin bittejä väreihin ja vähemmän alfaan.

Sellaisena rakenne " ilman alfaa " on täsmälleen sama kuin rakenne, jossa on alfa, jossa jokaisella tekstillä on alfa 1. Nämä lohkot käyttävät suurimman osan bittiä tekstelien muissa kuin alfa-osissa, vain tuhlaamalla muutama bitti " -tilassa ", joka antaa dekompressorille tietää, että alfa on vakio 1.0.

Tämä tarkoittaa myös sitä, että jos tekstuurissasi on vaihteleva alfa, mutta sen osissa on vakio alfa, BC7 voi koodata nämä vakioalfa-alueet vähemmän biteillä, jotta enemmän bittiä voidaan käyttää parannettuun värikoodaukseen.

Joten sinun ei pitäisi tuntua ongelmalta, koska kahdella pakkauskytkimellä oli sama tavumäärä.

Vastaa

Tässä on ar artikkeli BCn-muodosta: napsauta minua . Sen on kirjoittanut Nathan Reed, joka on melko aktiivinen tällä sivustolla. Joten hän todennäköisesti ohittaa ja saattaa vastata kysymykseesi tarkemmin, vaikka luulen, että artikkeli selittää kaiken mitä sinun tarvitsee tietää.

Kysymyksesi kannalta tärkein osa näyttää olevan tämä osio artikkeli:

BC tarkoittaa ”lohkojen pakkaus”, ja kaikki BCn-muodot toimivat 4 × 4 pikselilohkoa. Kaikki kuvat viipaloidaan näihin pieniin lohkoihin, ja kukin lohko on itsenäinen – kaikki sen purkamiseen tarvittavat tiedot ovat yhdessä vierekkäisessä muistissa . Lisäksi jokaisen pakatun lohkon koko on kiinteä – joko 8 tai 16 tavua , riippuen siitä, mitä BCn-muotoa käytetään. Tämä edustaa pakkaussuhdetta 4: 1 tai 8: 1, jos lähdekuva on 8-bittinen RGBA-muoto.

Niin kauan kuin pikselisi määrä ei muutu, myös tekstuurin koko ei muutu. Kuitenkin, mitä enemmän kanavia käytät (BC7 tukee vain 3 ja 4 Microsoftin ohjeiden mukaan ), sitä vähemmän tietoja voit tallentaa värikanavaa kohden lohko. Tämä tarkoittaa, että menetät enemmän tietoja pakkauksen vuoksi käytettäessä RGBA: ta RGB: n sijaan.

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *