Kompresja tekstur DXT

Uwaga! Informacje na tej stronie mają ponad 5 lat. Nadal je udostępniam, ale prawdopodobnie nie odzwierciedlają one mojej aktualnej wiedzy ani przekonań.

# Kompresja tekstur DXT

Sat
08
Nov 2008

W amatorskich grach tekstury zapisujemy zwykle w "tradycyjnych" formatach plików, np. TGA. Ci, którzy piszą w DirectX mają ten komfort, że ich biblioteka potrafi sama z siebie wczytywać różne formaty plików. Pośród nich jest DDS - naturalny format DirectX-a, którego możliwości są takie jak różnorodność formatów dostępnych dla tekstur przechowywanych w pamięci. Programy graficzne można skłonić do obsługi tego formatu instalując darmową wtyczkę (do Photoshopa, do GIMP-a). Można też konwertować tekstury na ten format za pomocą DirectX Texture Tool - programu dołączonego do DX SDK.

Pośród formatów, w jakich może być obrazek zapisany w pliku DDS (jak i wczytana z niego do pamięci tekstura) warto wymienić formaty skompresowane DXT. Stosowana w nich kompresja używa bardzo ciekawego algorytmu, w niczym niepodobnego do np. JPEG. Każdy blok 4x4 teksele jest zapisany w postaci dwóch kolorów R5G6B5 oraz, dla każdego teksela, dwóch bitów mówiących o interpolacji między tymi kolorami. W ten sprytny sposób można w takim bloku zapisać równie dobrze płynny gradient, co ostrą krawędź. Format DXT1 służy do tekstur nieprzezroczystych lub z 1-bitowym kanałem Alfa, a DXT5 obsługuje zróżnicowane wartości Alfa. DXT1 poświęca 8 bajtów na blok, a DXT5 - 16 bajtów na blok. Niestety, do kompresji normal map żaden z nich się nie nadaje i dlatego badacze próbują na różne sposoby rozwiązać ten problem.

Podsumowując, warto stosować format pliku DDS, a użycie odpowiedniego formatu tekstury zaoszczędzi miejsca zarówno na dysku, jak i w pamięci karty graficznej (tam też tekstury DXT leżą nadal w postaci skompresowanej!), bez zauważalnej straty jakości.

Formaty tekstur DDS

Comments | #rendering Share

Comments

STAT NO AD
[Stat] [STAT NO AD] [Download] [Dropbox] [pub] [Mirror] [Privacy policy]
Copyright © 2004-2019