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)

Dxt tömörítés játékok, savepearlharbor

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):

Dxt tömörítés játékok, savepearlharbor

Á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ú.

Dxt tömörítés játékok, savepearlharbor

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.

Dxt tömörítés játékok, savepearlharbor

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.

Dxt tömörítés játékok, savepearlharbor

7. ábra példa Dxt5 tömörítés.

Mint látható, az élek nem jól kezelik egyes részein.

Dxt tömörítés játékok, savepearlharbor

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:

Kapcsolódó cikkek