Google i Binomial opublikowały kod źródłowy Basis

podstawa

Niedawno Google i Binomial ogłosiły, że otworzyły kod źródłowy Podstawa uniwersalna, który to kodek do wydajnej kompresji tekstur i związanego z nimi formatu pliku .basis do rozpowszechniania tekstur opartych na obrazach i filmach. Referencyjny kod implementacji jest napisany w C ++ i jest udostępniany na licencji Apache 2.0.

Podstawa uniwersalna uzupełnia system kompresji danych Draco 3D i próbujesz rozwiązać problem z dostarczaniem tekstur dla GPU.

Do tej pory programiści byli ograniczeni wyborem między formatami niskiego poziomu, które zapewniają wysoką wydajność, ale są specyficzne dla GPU i zajmują dużą ilość miejsca na dysku, a innymi formatami, które pozwalają zmniejszyć rozmiar, ale nie mogą konkurować z teksturami GPU pod względem wydajności.

O podstawie

Format Basis Universal pozwala na osiągnięcie poziomów wydajności natywnych tekstur GPU, ale zapewnia wyższy poziom kompresji.

Podstawa jest formatem pośrednim, który przed użyciem zapewnia szybkie transkodowanie do różnych formatów tekstur GPU niskiego poziomu które są używane zarówno w systemach stacjonarnych, jak i urządzeniach mobilnych.

Obecnie przesyłanie strumieniowe jest obsługiwane w formatach PVRTC1 (4bpp RGB), BC7 (tryb 6 RGB), BC1-5, ETC1 i ETC2. Oczekuje się, że w przyszłości będą obsługiwane tryby A.STC (RGB lub RGBA) i 4/5 RGBA dla BC7 i 4bpp RGBA dla PVRTC1.

Tekstury w tym formacie zajmują od 6 do 8 razy mniej pamięci wideo i wymagają około dwa razy mniej danych niż typowe tekstury oparte na formacie JPEG i 10-25% mniej niż tekstury w trybie RDO.

Na przykład przy rozmiarze obrazu JPEG 891 KB i teksturach ETC1 1 MB rozmiar danych w formacie podstawowym wynosi 469 KB w trybie najwyższej jakości.

Podczas umieszczania tekstur w pamięci wideo, tekstury użyte w testach w formatach JPEG i PNG zajmowały 16 MB pamięci, podczas gdy tekstury w formacie podstawowym wymagały 2 MB pamięci w przypadku transmisji w BC1, PVRTC1 i ETC1, oraz 4 MB w przypadku transmisji w AC7.

Dwumianowe uniwersalne tekstury

Proces konwersji istniejących aplikacji do Basis Universal jest dość prosty:

Po prostu przekoduj istniejące tekstury lub obrazy w nowym formacie za pomocą narzędzia „baseu” dostarczonego przez projekt, wybierając wymagany poziom jakości.

Również w aplikacji przed kodem należy zainicjować koder, który jest odpowiedzialny za przetłumaczenie formatu pośredniego na aktualny format kompatybilny z GPU.

W tym samym czasie obrazy z całego łańcucha przetwarzania pozostają skompresowane, w tym pobieranie w skompresowanej formie do GPU. Zamiast proaktywnie przekodowywać cały obraz, GPU wybiórczo dekoduje tylko niezbędne części obrazu.

Obsługuje zapisywanie w tablicach tekstur w jednym pliku (mapa kostek), tekstury zbiorcze, tablice tekstur, poziomy mipmap, strumienie wideo lub dowolne fragmenty tekstur.

Na przykład można spakować w jeden plik serii obrazów, aby utworzyć małe filmy lub połączyć wiele tekstur przy użyciu wspólnej palety dla wszystkich obrazów i deduplikacji typowych szablonów obrazów.

Google chce, aby podstawa stała się standardem

Implementacja kodera Basis Universal obsługuje kodowanie wielowątkowe przy użyciu OpenMP. Rekoder działa tylko w trybie jednoprzewodowym.

Ponadto dekoder przeglądarki Basis Universal jest dostępny w formacie internetowym, które mogą być używane w aplikacjach internetowych opartych na WebGL.

Ostatecznie Google zamierza wspierać Basis Universal we wszystkich głównych przeglądarkach i promować ją jako przenośny format tekstur dla WebGL i przyszłej specyfikacji WebGPU, koncepcyjnie podobny do Vulkan, Metal i Direct3D API 12.

Zauważono, że możliwość integracji wideo z jego post-processingiem tylko po stronie GPU sprawia, że ​​Basis Universal jest interesującym rozwiązaniem do tworzenia dynamicznych interfejsów użytkownika w WebAssembly i WebGL, które mogą jednocześnie odzwierciedlać setki małych filmów przy minimalnym obciążeniu CPU.

Nawet możliwość korzystania z instrukcji SIMD w WebAssembly z tradycyjnymi kodekami, taki poziom wydajności nie jest jeszcze osiągalny, więc wideo oparte na teksturach może być używane w obszarach, w których normalne wideo nie ma zastosowania.

źródło: https://opensource.googleblog.com/


Bądź pierwszym który skomentuje

Zostaw swój komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

*

*

  1. Odpowiedzialny za dane: Miguel Ángel Gatón
  2. Cel danych: kontrola spamu, zarządzanie komentarzami.
  3. Legitymacja: Twoja zgoda
  4. Przekazywanie danych: Dane nie będą przekazywane stronom trzecim, z wyjątkiem obowiązku prawnego.
  5. Przechowywanie danych: baza danych hostowana przez Occentus Networks (UE)
  6. Prawa: w dowolnym momencie możesz ograniczyć, odzyskać i usunąć swoje dane.