Basis Universal: kompletny przewodnik po uniwersalnej kompresji tekstur
Basis Universal to rewolucyjny system kompresji tekstur, który rozwiązuje jedno z największych wyzwań w tworzeniu grafiki wieloplatformowej: zarządzanie różnymi formatami kompresji tekstur na różnych platformach i urządzeniach. Opracowany przez Binomial LLC i obecnie utrzymywany jako projekt open source, Basis Universal zapewnia pojedynczy skompresowany format pliku tekstur, który można transkodować w czasie wykonywania do dowolnego natywnego formatu kompresji GPU.
Co to jest Baza Uniwersalna?
Basis Universal to „super skompresowany” system kompresji tekstur GPU, który tworzy wysoce skompresowane pliki tekstur pośrednich. Pliki te można szybko transkodować w czasie wykonywania do dowolnego formatu skompresowanego za pomocą procesora GPU obsługiwanego przez platformę docelową, w tym ETC1, ETC2, ASTC, BC1-7 i PVRTC.
Kluczową innowacją Basis Universal jest możliwość przechowywania danych tekstur w formacie niezależnym od platformy, a następnie transkodowania ich do optymalnego formatu natywnego dla urządzenia docelowego. Oznacza to, że programiści mogą dostarczać pojedynczy plik tekstury, który działa wszędzie, od telefonów komórkowych, przez komputery stacjonarne, aż po konsole do gier.
Basis Universal obsługuje dwa podstawowe tryby kompresji: ETC1S (dla maksymalnej kompresji) i UASTC (dla najwyższej jakości). Obydwa tryby zapewniają doskonałe współczynniki kompresji przy jednoczesnym zachowaniu jakości obrazu odpowiedniej dla nowoczesnych aplikacji graficznych.
Kluczowe cechy podstawy uniwersalnej
Uniwersalne transkodowanie
Pojedynczy skompresowany plik można transkodować do dowolnego natywnego formatu GPU (ETC1/2, ASTC, BC1-7, PVRTC) w czasie wykonywania
Wysoki współczynnik kompresji
Tryb ETC1S zapewnia wyjątkowe współczynniki kompresji (do 10:1 lub lepsze) przy dobrej jakości obrazu
Tryb UASTC
Kompresja UASTC (Universal ASTC) zapewnia jakość konkurencyjną w stosunku do formatów BC7 i ASTC
Szybkie transkodowanie
Transkodowanie w czasie wykonywania jest niezwykle szybkie (zazwyczaj milisekundy na teksturę) przy minimalnym obciążeniu pamięci
Podstawowe uniwersalne tryby kompresji
Basis Universal oferuje dwa różne tryby kompresji, każdy zoptymalizowany pod kątem różnych zastosowań:
Tryb ETC1S
Zapewnia bardzo wysoki współczynnik kompresji, zazwyczaj od 6:1 do 10:1, przy dobrej jakości obrazu. Idealny do większości rozproszonych tekstur, elementów interfejsu użytkownika i treści, gdzie rozmiar pliku jest ważniejszy niż doskonała wierność wizualna.
Najlepsze do: aplikacji mobilnych, treści internetowych, rozproszonych tekstur, elementów interfejsu użytkownika
Tryb UASTC
Zapewnia doskonałą jakość obrazu porównywalną lub lepszą niż BC7 i ASTC, przy współczynnikach kompresji od 3:1 do 4:1. Idealny do tekstur o dużej szczegółowości, normalnych map i treści, w których jakość wizualna jest najważniejsza.
Najlepsze do: normalnych map, szczegółowych tekstur, zasobów bohaterów, aplikacji na PC/konsolę
Podstawowy uniwersalny przepływ pracy
Typowy przepływ pracy w Basis Universal składa się z trzech głównych etapów:
1. Kompresja źródła
Kompresuj tekstury źródłowe (PNG, TGA itp.) do plików .basis przy użyciu trybu ETC1S lub UASTC. Zwykle odbywa się to podczas procesu tworzenia zasobu.
2. Transkodowanie w czasie wykonywania
Podczas uruchamiania lub ładowania aplikacji transkoduj pliki .basis do optymalnego formatu natywnego dla platformy docelowej (ETC2 dla Androida, ASTC dla iOS, BC7 dla Windows itp.).
3. Renderowanie GPU
Używaj transkodowanych danych tekstur bezpośrednio za pomocą natywnego sprzętu do kompresji tekstur procesora graficznego, zapewniając optymalną wydajność.
Zalety Podstawy Uniwersalnej
Pojedynczy rurociąg aktywów
Wyeliminuj potrzebę utrzymywania wielu wersji formatów tekstur dla różnych platform
Zmniejszony rozmiar opakowania
Znacznie mniejsze pakiety aplikacji w porównaniu z dostarczaniem wielu wariantów formatu
Niższe wykorzystanie przepustowości
Szybsze pobieranie i mniejsze zużycie danych, szczególnie ważne w przypadku aplikacji internetowych i mobilnych
Elastyczność platformy
Z łatwością kieruj reklamy na nowe platformy bez konieczności ponownej kompresji tekstur źródłowych
Ograniczenia i rozważania
Transkodowanie narzutów
Wymaga transkodowania w czasie wykonywania, co zwiększa niewielki koszt wydajności podczas ładowania tekstur
Utrata kompresji
Podobnie jak w przypadku każdej kompresji stratnej, występuje pewna utrata jakości w porównaniu z nieskompresowanymi teksturami
Wymagania dotyczące pamięci
Transkodowanie wymaga pamięci tymczasowej zarówno dla skompresowanych, jak i transkodowanych danych
Złożoność integracji
Wymaga integracji bibliotek Basis Universal i kodu transkodującego w czasie wykonywania
Idealne przypadki użycia
Aplikacje WebGL
Idealny do internetowych aplikacji 3D, gdzie kluczowe znaczenie ma wdrażanie jednego pliku i szybkie ładowanie
Wieloplatformowe urządzenia mobilne
Idealny dla aplikacji mobilnych przeznaczonych dla systemów Android i iOS z jednym potokiem tekstur
Gry Web3 i Blockchain
Doskonały do gier opartych na blockchainie, gdzie wielkość zasobów i prędkość transferu mają kluczowe znaczenie
Gry wieloplatformowe
Upraszcza zarządzanie zasobami w grach przeznaczonych na wiele platform i sklepów z aplikacjami
Podstawa uniwersalna a inne formaty
Porównanie Basis Universal z tradycyjnymi podejściami:
Tradycyjne podejście
Dostarczaj różne warianty formatu (ETC2 dla Androida, ASTC dla iOS, BC7 dla Windows) → Większy rozmiar paczki, złożony potok zasobów
Podstawa podejścia uniwersalnego
Wysyłaj pojedyncze pliki .basis → Transkoduj w czasie wykonywania do optymalnego formatu → Mniejsze pakiety, prostszy potok
Przechowywanie: 50-80% zmniejszenie wymagań dotyczących przechowywania tekstur
Przepustowość: zmniejszenie przepustowości pobierania o 50–90%.
Czas kompilacji: Szybsze kompilacje dzięki pojedynczemu etapowi kompresji
Jakość: jakość wizualna porównywalna z formatami natywnymi
Najlepsze praktyki
- Użyj trybu ETC1S dla większości rozproszonych tekstur i elementów interfejsu użytkownika, gdzie ważny jest rozmiar pliku
- Używaj trybu UASTC do normalnych map, szczegółowych tekstur i zasobów bohaterów, gdzie jakość wizualna ma kluczowe znaczenie
- Transkoduj tekstury podczas ładowania zasobów, a nie podczas uruchamiania aplikacji, aby uniknąć blokowania
- Przy wyborze pomiędzy trybami ETC1S i UASTC należy wziąć pod uwagę formaty kompresji platformy docelowej
- Testuj transkodowane tekstury na platformach docelowych, aby upewnić się, że jakość wizualna spełnia wymagania
- Jeśli to możliwe, przechowuj transkodowane tekstury w pamięci podręcznej, aby uniknąć wielokrotnego transkodowania tych samych zasobów
Wniosek
Basis Universal stanowi znaczący postęp w technologii kompresji tekstur, rozwiązując długotrwały problem zarządzania wieloma formatami tekstur na różnych platformach. Uniwersalne podejście do transkodowania zapewnia korzyści zarówno techniczne, jak i biznesowe, od zmniejszonych rozmiarów pakietów po uproszczone potoki zasobów.
W przypadku aplikacji wieloplatformowych, doświadczeń internetowych i scenariuszy, w których rozmiar pobierania i przepustowość są krytyczne, Basis Universal oferuje atrakcyjne rozwiązanie, które nie wpływa negatywnie na jakość obrazu ani wydajność. W miarę jak branża graficzna w dalszym ciągu zmierza w kierunku rozwoju wieloplatformowego, narzędzia takie jak Basis Universal będą coraz bardziej niezbędne do wydajnego zarządzania teksturami.
Dalsza lektura i zasoby
Poszerzaj swoją wiedzę, korzystając z tych wiarygodnych zasobów:
- Podstawowe uniwersalne repozytorium GitHub - Oficjalne repozytorium Basis Uniwersalne z kodem źródłowym i dokumentacją
- Podstawowa dokumentacja uniwersalna - Obszerna dokumentacja i przykłady użycia
- Uniwersalne transkodery Khronos Basis - Biblioteka transkodowania obsługiwana przez Khronos dla platform internetowych i mobilnych
- Podstawowy uniwersalny dokument techniczny - Oryginalna praca naukowa opisująca algorytm kompresji Basis Universal
- Przewodnik po kompresji tekstur WebGL - Przewodnik Google dotyczący kompresji tekstur w aplikacjach internetowych