Az alfa BC7 textúra mérete megegyezik a BC7 alfa nélküli méretével

Tehát készítettem egy textúrát. Mentettem az RGB-t BC7 tömörítéssel, majd hozzáadott alfa-csatornát [tükrös térkép] változó szürkeárnyalatos szintekkel, és a fájlt ismét RGBA formátumban mentette BC7 tömörítéssel. A kapott fájl mérete megegyezik az alfa nélküli fájl méretével, mégis tartalmaz további információkat – alfa csatornát. Hogyan lehetséges? Nem lehet tortát enni és süteményt enni, ahogy megértem, ezért vannak-e kompromisszumok az azonos méret biztosítása érdekében?

A Photoshopot használom az Intel DDS beépülő moduljával.

Válasz

A BC7 mindig hatékonyan kódol 4 csatornát. Ez része a formátum természetének. Az alfa bekapcsolása azt jelenti, hogy a kompresszor beolvassa és felhasználja az alfa értéket a forrásképedben, de ez mind.

Egy adott dimenzió összes BC7 tömörített képe azonos méretű, mivel a BC7 minden 4×4-et tömörít a texels csoport 128 bitre. De ez nem azt jelenti, hogy ugyanaz a minőségük .

A BC7 adaptív kódolási formátum. Míg mindegyik blokknak rögzített mérete van (térben és bitenként is), mindegyik blokk eltárolja, hogy a blokkolt csatornák hányszor tömörülnek, és hogyan korrelálnak egymással. A sajátosságok összetettek , de az általános fejlemény, hogy a kompresszor blokkonként kiszámítja, hogy az adott blokkhoz milyen tömörítési mód működik a legjobban. Ha a kompresszor meg tud nézni egy blokkot, és látja, hogy az összes texel alfa értéke 1.0, akkor a 128 bitből több bitet költhet a színekre és kevesebbet az alfára.

Mint ilyen, egy textúra " alfa nélkül " pontosan olyan, mint egy alfával ellátott textúra, ahol minden texel alfa értéke 1. Ezek a blokkok költik a legtöbbjüket bitek a texelek nem alfa részein, csak néhány bitet pazarolnak egy " mód " mezőbe, amely tudatja a dekompresszorral, hogy az alfa konstans 1.0.

Ez azt is jelenti, hogy ha a textúrájának változó alfája van, de egyes részeinek állandó alfája van, akkor a BC7 ezeket az állandó alfa területeket kevesebb bittel kódolhatja, így több biteket lehet fejleszteni a továbbfejlesztett színkódolásra.

Tehát nem szabad úgy éreznie, hogy probléma van, mert a két tömörítő kapcsoló azonos bájtszámmal jelent meg.

Válasz

Itt van egy ar cikk a BCn formátumról: kattintson rám . Nathan Reed írta, aki meglehetősen aktív ezen az oldalon. Tehát valószínűleg elhalad, és további kérdésekkel válaszolhat a kérdésére, bár azt hiszem, hogy a cikk mindent megmagyaráz, amit tudnia kell.

Úgy tűnik, hogy a kérdésed szempontjából a legrelevánsabb rész ez a cikk:

A BC jelentése „blokktömörítés”, és a BCn formátumok mind a 4 × 4 pixel blokk. Az összes kép fel van osztva ezekre a kis blokkokra, és mindegyik blokk önálló – az összes dekódoláshoz szükséges adatok egy összefüggő darabban vannak a memóriában . Ezenkívül az egyes tömörített blokkok mérete rögzített – akár 8, akár 16 bájt , attól függően, hogy melyik BCn formátumot használják. Ez 4: 1 vagy 8: 1 tömörítési arányt képvisel, ha a forráskép 8 bites RGBA formátumban van.

Mindaddig, amíg a pixel a szám nem változik, a textúra mérete sem változik. Minél több csatornát használ (azonban a BC7 csak a 3-at és a 4-et támogatja a a Microsoft dokumentációja alapján ), annál kevesebb információ tárolható színes csatornánként egy Blokk. Ez azt jelenti, hogy több információt veszít a tömörítés miatt, ha RGB helyett RGBA-t használ.

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük