Format ASTC: najlepszy przewodnik po kompresji tekstur
ASTC (Adaptive Scalable Structure Compression) to najbardziej zaawansowany i elastyczny format kompresji tekstur dostępny obecnie. Opracowany przez firmę ARM i przyjęty jako oficjalny standard Khronos, ASTC zapewnia niespotykaną dotąd kontrolę nad jakością i współczynnikami kompresji, co czyni go idealnym wyborem dla nowoczesnej grafiki mobilnej i stacjonarnej.
Co to jest ASTC?
ASTC to format kompresji tekstur oparty na blokach stratnych, zaprojektowany w celu zastąpienia starszych formatów, takich jak ETC, PVRTC i DXT/BCn. Został specjalnie zaprojektowany, aby zapewnić pojedynczy, ujednolicony format, który działa na wszystkich platformach i obsługuje szeroki zakres kompromisów jakość/rozmiar.
W przeciwieństwie do poprzednich formatów ze stałymi współczynnikami kompresji, ASTC umożliwia programistom wybór spośród 14 różnych rozmiarów bloków 2D (od 4×4 do 12×12) i wielu poziomów jakości, oferując precyzyjną kontrolę nad równowagą pomiędzy jakością obrazu a zużyciem pamięci.
ASTC obsługuje zawartość LDR (Low Dynamic Range) i HDR (High Dynamic Range), 1-4 kanały kolorów oraz tekstury 2D i 3D. Ta wszechstronność sprawia, że nadaje się do praktycznie każdego typu tekstury w nowoczesnych aplikacjach graficznych.
Kluczowe cechy ASTC
Elastyczne rozmiary bloków
14 różnych rozmiarów bloków 2D od 4×4 (8 bpp) do 12×12 (0,89 bpp), umożliwiających precyzyjną kontrolę nad współczynnikiem kompresji i jakością
Regulowana jakość
Wiele poziomów jakości kodowania (szybkie, średnie, dokładne, wyczerpujące), aby zrównoważyć czas kodowania i wierność wizualną
Obsługa HDR
Natywna obsługa tekstur High Dynamic Range, niezbędna w nowoczesnych przepływach pracy PBR (renderowanie oparte na fizyce).
Wydajny sprzętowo
Zaprojektowany do wydajnej dekompresji sprzętowej przy minimalnym zużyciu energii i wykorzystaniu przepustowości pamięci
Wyjaśnienie rozmiarów bloków ASTC
Rozmiar bloku ASTC określa współczynnik kompresji i jakość. Mniejsze bloki zachowują więcej szczegółów, ale oferują mniejszą kompresję:
| Rozmiar bloku | Bity/piksel | Jakość | Najlepszy przypadek użycia |
|---|---|---|---|
| 4x4 | 8.00 | Najwyższy | Szczegółowe tekstury, normalne mapy |
| 5x5 | 5.12 | Wysoki | Wysokiej jakości tekstury kolorów |
| 6x6 | 3.56 | Średnio-wysoki | Zrównoważona jakość/rozmiar (zalecane ustawienie domyślne) |
| 8x8 | 2.00 | Średni | Tekstury tła, elementy interfejsu użytkownika |
| 12x12 | 0.89 | Niżej | Maksymalna kompresja dla dużych tekstur |
Poziomy jakości kodowania
Kodery ASTC obsługują wiele ustawień jakości, które wpływają na czas kodowania i jakość wydruku:
Szybko
~1-2 sekundyNajszybsze kodowanie i dobra jakość. Nadaje się do szybkiej iteracji podczas programowania.
Średni
~5-10 sekundZrównoważona jakość i szybkość. Zalecane do większości przypadków użycia i kompilacji produkcyjnych.
Dokładny
~30-60 sekundWysokiej jakości kompresja z bardziej wyczerpującym wyszukiwaniem. Dobre dla zasobów bohaterów i ostatecznych wersji.
Wyczerpujący
~2-5 minutMaksymalna jakość przy bardzo wolnym kodowaniu. Używaj w przypadku krytycznych zasobów, gdzie jakość jest najważniejsza.
Zalety ASTC
Obsługa platformy uniwersalnej
Obsługiwane na wszystkich nowoczesnych mobilnych procesorach graficznych (OpenGL ES 3.2+, Vulkan), zastępując wiele formatów specyficznych dla platformy jednym rozwiązaniem.
Niezrównana elastyczność
14 rozmiarów bloków i wiele poziomów jakości zapewniają większą kontrolę niż jakikolwiek inny format kompresji, optymalizując pod kątem każdego typu tekstury.
Najwyższa jakość
Zaawansowane algorytmy kompresji zapewniają lepszą jakość obrazu niż ETC, PVRTC lub DXT przy porównywalnych przepływnościach.
Nowoczesne funkcje
Obsługa HDR, tekstury 3D i optymalne kodowanie materiałów PBR sprawiają, że ASTC jest przyszłościowe dla nowoczesnych technik renderowania.
ASTC kontra inne formaty
Porównanie ASTC z tradycyjnymi formatami kompresji tekstur:
w porównaniu z ETC1/ETC2
ETC to starszy format Androida ze stałą kompresją 4:1 (ETC1) lub 8:1 (ETC2 RGBA).
Przewaga ASTC: ASTC oferuje lepszą jakość przy tej samej przepływności i obsługuje większe współczynniki kompresji (0,89-8 bpp w porównaniu z 4-8 bpp)
przeciwko PVRTC
PVRTC to starszy format systemu iOS z kompresją 2 lub 4 bitów na piksel.
Przewaga ASTC: ASTC zapewnia lepszą jakość, większą elastyczność i pozwala uniknąć artefaktów granic bloków PVRTC
vs DXT/BCn
DXT/BCn to standard dla komputerów stacjonarnych z 4-8 bitami na piksel dla różnych formatów.
Przewaga ASTC: ASTC dorównuje lub przewyższa jakość BCn, oferując jednocześnie niższą przepływność (do 0,89 bpp) dla urządzeń mobilnych
Jak korzystać z formatu ASTC
Używanie ASTC w swoich projektach jest proste dzięki naszym narzędziom online:
Kodowanie do ASTC
- Prześlij swój obraz źródłowy (PNG, JPG) — działa w dowolnych wymiarach
- Wybierz rozmiar bloku w oparciu o wymagania dotyczące jakości/rozmiaru (w większości przypadków zalecane jest 6 × 6)
- Wybierz jakość kodowania (średnia do opracowania, dokładna/wyczerpująca do produkcji)
- Pobierz plik .astc i zintegruj go ze swoim projektem
Dekodowanie plików ASTC
- Prześlij plik .astc, aby sprawdzić jego zawartość
- Wyświetl zdekompresowaną teksturę z informacjami o rozmiarze bloku i formacie
- Eksportuj do formatu PNG w celu edycji lub weryfikacji jakości
Najlepsze praktyki
- Użyj bloków 6×6 jako punktu wyjścia (3,56 bpp) – zapewnia to doskonałą równowagę jakość/rozmiar dla większości tekstur
- Wybierz mniejsze bloki (4 × 4, 5 × 5), aby uzyskać tekstury krytyczne dla szczegółów, takie jak normalne mapy lub tekst interfejsu użytkownika
- Użyj większych bloków (8×8, 10×10, 12×12) do tła, skyboxów lub tekstur oglądanych z daleka
- Testuj różne poziomy jakości — często wystarczający jest „średni”, „dokładny” lub „wyczerpujący” używaj tylko w przypadku zasobów bohaterów
- Rozważ użycie różnych rozmiarów bloków dla różnych typów tekstur w tej samej aplikacji, aby zoptymalizować wykorzystanie pamięci
- Zawsze przeglądaj skompresowane tekstury na urządzeniach docelowych — postrzeganie jakości różni się w zależności od zawartości i warunków oglądania
Wniosek
ASTC reprezentuje szczyt technologii kompresji tekstur, oferując niezrównaną elastyczność, jakość i obsługę platformy. Jego adaptacyjny charakter umożliwia programistom precyzyjne dostrojenie kompresji dla każdego zasobu, optymalizując równowagę między wiernością wizualną a zużyciem pamięci.
Niezależnie od tego, czy tworzysz na platformy mobilne, stacjonarne czy konsolowe, ASTC zapewnia przyszłościowe rozwiązanie, które można skalować od urządzeń z niższej półki po wysokiej klasy grafikę. Nasze narzędzia online ASTC ułatwiają eksperymentowanie z różnymi ustawieniami i znalezienie idealnej konfiguracji dla potrzeb Twojego projektu.
Dalsza lektura i odniesienia
Zanurz się głębiej w ASTC, korzystając z tych wiarygodnych zasobów:
- Specyfikacja ASTC (Khronos) - Oficjalna specyfikacja formatu ASTC i informacje techniczne
- Kodek ewaluacyjny ARM ASTC - Referencyjna implementacja kodera i dokumentacja firmy ARM
- Adaptacyjna skalowalna kompresja tekstur (Wikipedia) - Kompleksowy przegląd technologii i przyjęcia ASTC
- ASTC: Najlepsza kompresja tekstur - Dokumentacja programistów ARM dotycząca najlepszych praktyk ASTC
- Przewodnik po kompresji Unity ASTC - Praktyczny przewodnik po korzystaniu z ASTC w silnikach gier