Google i Binomial open source Basis Univerzalni sistem kompresije teksture

Google i Binom otvorio izvorni kod Univerzalna osnova, kodek za efikasnu kompresiju teksture i pripadajući univerzalni ".basis" format datoteke za distribuciju tekstura zasnovanih na slikama i videu. Referentni kod implementacije je napisan u C++ i isporučuje se licenciran pod Apache 2.0.

Osnova Universal nadopunjuje prethodno objavljeno Draco 3D sistem kompresije podataka i pokušava da reši problem sa snabdevanjem tekstura za GPU. Do sada su programeri bili ograničeni na izbor između niskorazinskih formata koji postižu visoke performanse, ali su specifični za GPU i zauzimaju puno prostora na disku, i drugih formata koji postižu smanjenje veličine, ali ne mogu konkurirati GPU teksturama u performansama.

Format Basis Universal vam omogućava da postignete performanse izvornih GPU tekstura, ali pruža viši nivo kompresije.
Basis je srednji format koji omogućava brzo transkodiranje GPU tekstura u različite formate niskog nivoa za upotrebu na desktop sistemima i mobilnim uređajima prije upotrebe. Trenutno su podržani PVRTC1 (4bpp RGB), BC7 (6 RGB režim), BC1-5, ETC1 i ETC2 formati. Očekuje se buduća podrška za ASTC format (RGB ili RGBA) i 4/5 RGBA modove za BC7 i 4bpp RGBA za PVRTC1.

Google i Binomial open source Basis Univerzalni sistem kompresije teksture

Teksture u osnovnom formatu zauzimaju 6-8 puta manje video memorije i zahtijevaju prijenos približno upola manje podataka od tipičnih tekstura zasnovanih na JPEG formatu i 10-25% manje od tekstura u RDO modu. Na primjer, s veličinom JPEG slike od 891 KB i ETC1 teksturom od 1 MB, veličina podataka u osnovnom formatu je 469 KB u načinu najvišeg kvaliteta. Prilikom postavljanja tekstura u video memoriju, JPEG i PNG teksture korištene u testovima su trošile 16 MB memorije, dok su teksture u
Osnovi je potrebno 2 MB memorije za prijevod u BC1, PVRTC1 i ETC1 i 4 MB za prijevod u BC7.

Google i Binomial open source Basis Univerzalni sistem kompresije teksture

Proces migracije postojećih aplikacija na Basis Universal je prilično jednostavan. Dovoljno je prekodirati postojeće teksture ili slike u novi format pomoću uslužnog programa „basisu“ koji je osiguran u projektu, odabirom potrebne razine kvalitete. Zatim, u aplikaciji, prije koda za renderiranje, trebate inicijalizirati baseu transkoder, koji je odgovoran za prevođenje srednjeg formata u format koji podržava trenutni GPU. U isto vrijeme, slike u cijelom lancu obrade ostaju komprimirane, uključujući i učitavanje u komprimiranom obliku u GPU. Umjesto preventivnog transkodiranja cijele slike, GPU selektivno dekodira samo potrebne dijelove slike.

Podržava čuvanje heterogenih nizova tekstura (cubemaps), volumetrijskih tekstura, nizova tekstura, nivoa mipmapa, video sekvenci ili proizvoljnih fragmenata teksture u jednoj datoteci. Na primjer, moguće je spakovati seriju slika u jednu datoteku za kreiranje malih video zapisa ili kombinirati nekoliko tekstura koristeći zajedničku paletu za sve slike i deduplicirati tipične predloške slika. Implementacija Basis Universal kodera podržava višenitno kodiranje koristeći OpenMP. Transkoder trenutno radi samo u single-thread modu.

dodatno na raspolaganju Osnova Univerzalni dekoder za pretraživače, isporučen u WebAssembly formatu, koji se može koristiti u WebGL-baziranim web aplikacijama. Na kraju, Google namjerava podržati Basis Universal u svim glavnim pretraživačima i promovirati ga kao prijenosni format teksture za WebGL i buduću specifikaciju WebGPU, konceptualno sličan API-jima Vulkan, Metal i Direct3D 12.

Napominje se da mogućnost ugrađivanja videa sa njegovom naknadnom obradom samo na strani GPU-a čini Basis Universal zanimljivim rješenjem za kreiranje dinamičkih korisničkih interfejsa na WebAssembly i WebGL, koji istovremeno mogu prikazati stotine malih video zapisa uz minimalno opterećenje CPU-a. Sve dok se SIMD instrukcije ne mogu koristiti u WebAssembly-u sa tradicionalnim kodecima, ovaj nivo performansi još nije dostižan, tako da se video baziran na teksturi može koristiti u područjima gdje konvencionalni video nije primjenjiv. Kod sa dodatnim optimizacijama za video trenutno je u pripremi za objavljivanje, uključujući mogućnost korištenja I-okviri i P-okviri s podrškom za adaptivni padding (CR).

izvor: opennet.ru

Dodajte komentar