Dxt tömörítés játékok, savepearlharbor
Ebben a cikkben azt szeretném megosztani a tapasztalatokat a fejlesztés a mobil játékok, mióta a Windows Phone fejlesztői fogok beszélni kapcsolatos tapasztalatok ebben a rendszerben.
Memória és textúra
Ha már részt vesz a fejlődés a mobil játékok, a fő gonosz nem hiányoznak a CPU / GPU erőforrások, valamint a memóriába. Meg kell gondolni, memória mobil fejlesztés az első helyen. A Windows Phone 7, a korlátozás 100 MB-Window Phone 8 jobb volt, de nem sokkal:
1. táblázat A letöltési sebesség képeket.
256 Texture 128 * 128
1 eredetű 2048 * 2048
1 eredetű 2048 * 2047
A szemléltető grafikon különböző módszerek a rakodási idő függvényében (ábra. 1)
1. ábra: A telek különböző terhelési technikák az idő.
2. táblázat méretei képek
Méret 256 textúra 128 * 128
Texture mérete 2048 * 2048 tömörítés nélkül
Texture mérete 2048 * 2048, kompressziós
Amint látjuk a tömörítés nagyon hatékonyan bemutatni Dxt kísérletek. Nézzük meg részletesebben.
DXT kompressziós (is nevezik S3 tömörítés) valójában nagyon egyszerű. Itt van, hogyan működik:
- A kép blokkokra osztjuk 4x4
- Minden egyes blokk, van két legfontosabb szín
- Get két szín van tárolva 16 bit, az RGB formátumban 5.6.5
- Az egyes 16 pixel a 2 blokk van tárolva bites érték, ami azt jelzi, hogy milyen messze van a kettő között alapszín
Ez az egyszerű rendszer, kiderül, meglepően jól működik sok valós képek a világ.
Öt lehetőség DXT tömörítés:
- DXT1 működik mint azt fentebb kifejtettük, plusz néhány extra mágikus kódolni alfa csatorna
- DXT3 is színkódolt mint DXT1, és tárolja a 4-bites alfa értéket pixelenként
- DXT5 is színkódolt mint DXT1, valamint a hasonló rendszert kódolásához használatos alfa
- DXT2 DXT4, és nem nagyon jól átgondolt kísérlet egységesítése és nem az, hogy a hatékony nem. Be kell állítani, hogy azok nem léteznek
DXT1 használ 64 bit 4 × 4 blokk. Összehasonlítva a 32-bites tömörítetlen textúra 8x több tömörítési arányt. DXT2-5 128 bit a 4 × 4 blokk, hogy ad egy 4-szeres sűrítési arány.
És most a rossz hír: DXT tömörítés - ez egy veszteséges. Néha nagyon nagy lehet. Tény, hogy nagyon jól működik a képek, és a többire nem.
Tehát, ha a használni kívánt tömörítési Dxt mondani az XNA, amikor beállítja a tulajdonát textúra Texture méret paraméter DxtCompressed, Content Pipeline automatikusan kiválasztja között DXT1 és DXT5, attól függően, hogy a textúra alfa-csatorna. Ha nem tartalmaz alfa csatornát, illetve tartalmaz homogén alfa csatornát fogja használni DXT1, hogy a legjobb tömörítési arányt, de ha a textúra tartalmaz frakcionált értékek alfa-csatorna, akkor válassza DXT5 helyett.
Tekintsük részletesebben az egyes tömörítési módszerek:
Nézzük a 2. ábra az alábbiak szerint:
A bal oldali kép az eredeti. Jobb DXT1 szemlélteti tömörítési formátum.
2. ábra: példa Dxt1 tömörítés.
Vizuálisan a tömörített kép eltér az eredeti, ami tömörítés eredménye elfogadható a legtöbb felhasználó számára. A tömörítés azonban jelentősen csökkenti a méret a textúra.
Ebben az esetben a 256 KB 32 KB.
Azonban, minden nem olyan rózsás a textúra (3. ábra):
Ábra 3. példa Dxt1 tömörítés.
A fő probléma az előfordulása a zaj a szövegben, egy külön sáv is látható a háttérben színátmenet.
4. ábra: A zajok a szövegben.
Az 5. ábra azt mutatja, hogyan tömörítés befolyásolja a színét. A bal oldalon látható a 16 árnyalatú piros, tiszta piros a tiszta fekete. A jobb oldalon látható a négy szín, melyek eredményeként kapott a DXT tömörítés a 16 árnyalatú.
5. ábra A hatás a tömörítést a színes.
6. ábra mutatja, hogy mi történik, ha különböző színek nem ugyanabban a sorban a színteret. Ebben az extrém esetben minden RGB paletta volna használni (piros, zöld és kék). Nyilvánvaló, hogy ennek eredményeként a interpolált színek nem egyeznek meg az eredeti. Általában a régióban 4 × 4 pixel nem olyan széles színválaszték, de ez azt mutatja, hogy a textúra különböző színekben többet szenvednek.
6. ábra: A hatás a tömörítést a színes.
DXT1 tömörítés általában jól működik zajos textúra, és nem olyan jó tiszta képeket és a színátmenetek. A trükk az, hogy használja, ahol csak lehetséges, és azt csak azok a textúrák, ahol tömörítési hibák nagyon kívánatos.
DXT5 formátumtól eltérő formátumú DXT3 úgy, hogy információt tárol az alfa csatorna, ahogy tárolja színes információkat.
További információk a alfacsatorna használ paletta hasonló tárolt digitális információt. Ez a paletta tartalmaz: egy minimális és maximális értékét az alfa csatorna. Két lehetőség van, hogy a 6. és 4. referencia pont.
6 több alfa értékeket interpoláljuk a minimum és maximum. Így lehetővé teszi a fokozatos változás alfa érték.
A második kiviteli alak teszi interpolációs csak 4 további alfa értékek között a minimális és maximális érték, hanem felveszi a alfa értékek 0 és 1 (a teljesen átlátszó és nem átlátszó). Egyes textúrák akkor adja a legjobb eredményt.
7. ábra példa Dxt5 tömörítés.
Mint látható, az élek nem jól kezelik egyes részein.
8. ábra: tépett szélek Dxt5 tömörítés.
Texture mérete csökkent a 256 KB 64 KB.
Minőségi veszteségek valós képeken nem olyan jelentős, és lehet figyelmen kívül hagyni a legtöbb kép.
Segítségével Dxt tömörítés lehetővé teszi, hogy:
- Csökkentse a méret a telepítőcsomag
- Méretének csökkentése memóriakihasználás
- Arányának növelése „rajz” képek
Az ő projekt létrehozása után egy textúra atlasz, kapok a kiadási .jpg / .png / .bmp és szatén leírás .xml / .txt / .json. Mivel én vagyok a XNA / Monogame kompressziót .xnb használom XNA 4.0 Content Compiler egésze nagyon világos és egyszerű megoldás a Dxt tömörítés csak akkor kell befejezni ContentBuilder'e másik ingatlan létrehozásakor buildProject: