Powrót do bloga
Formaty

Basis Universal: kompletny przewodnik po uniwersalnej kompresji tekstur

15 min. przeczytaj

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:

Wypróbuj nasze narzędzia